This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
AUTHORS updates.
[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#
93bc48fa 23# Generated on Tue Jun 19 02:14:42 EET DST 2001 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
dfe9444c
AD
68 p_=\;
69 fi
39e571d4 70fi
a0d0e21e
LW
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
81
82for p in $paths
83do
8e07c86e
AD
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
87 esac
88done
89
8e07c86e 90PATH=.$p_$PATH
2304df62
AD
91export PATH
92
dfe9444c
AD
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
ff0cee69 99if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
2304df62 109 fi
dfe9444c 110fi
cf04f91f
JH
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
dfe9444c
AD
118case "$inksh/$needksh" in
119/[a-z]*)
c4f23d77 120 ENV=''
dfe9444c
AD
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
a0d0e21e
LW
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 136EOM
dfe9444c
AD
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
2304df62 148
bfb7748a
AD
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
2304df62
AD
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
8e07c86e 161cd UU && rm -f ./*
2304df62 162
6b356c8e
JH
163ccname=''
164ccversion=''
b4eb6b3d
JH
165ccsymbols=''
166cppccsymbols=''
167cppsymbols=''
5440bc8e
JH
168from=''
169run=''
170targetarch=''
171to=''
172usecrosscompile=''
9c839522 173perllibs=''
b4eb6b3d
JH
174dynamic_ext=''
175extensions=''
176known_extensions=''
177nonxs_ext=''
178static_ext=''
179useopcode=''
180useposix=''
ecfc5424 181d_bsd=''
40a7a20a 182d_eunice=''
2304df62
AD
183d_xenix=''
184eunicefix=''
185Mcc=''
dfe9444c 186ar=''
2304df62
AD
187awk=''
188bash=''
189bison=''
190byacc=''
191cat=''
192chgrp=''
193chmod=''
194chown=''
ecfc5424 195comm=''
2304df62
AD
196compress=''
197cp=''
198cpio=''
199cpp=''
200csh=''
201date=''
202echo=''
203egrep=''
204emacs=''
205expr=''
206find=''
207flex=''
2304df62 208grep=''
8ff267be 209gzip=''
2304df62
AD
210inews=''
211ksh=''
212less=''
213line=''
214lint=''
215ln=''
216lp=''
217lpr=''
218ls=''
219mail=''
220mailx=''
dfe9444c 221make=''
2304df62
AD
222mkdir=''
223more=''
224mv=''
693762b4 225nm=''
2304df62
AD
226nroff=''
227perl=''
228pg=''
229pmake=''
230pr=''
231rm=''
232rmail=''
233sed=''
234sendmail=''
2304df62
AD
235shar=''
236sleep=''
237smail=''
238sort=''
239submit=''
240tail=''
241tar=''
242tbl=''
693762b4 243tee=''
2304df62
AD
244test=''
245touch=''
246tr=''
247troff=''
248uname=''
249uniq=''
250uuname=''
251vi=''
252zcat=''
8ff267be 253zip=''
b4eb6b3d
JH
254full_ar=''
255full_sed=''
a0d0e21e 256libswanted=''
2304df62
AD
257hint=''
258myuname=''
85e6fe83
LW
259osname=''
260osvers=''
2304df62
AD
261Author=''
262Date=''
263Header=''
264Id=''
265Locker=''
266Log=''
267RCSfile=''
268Revision=''
269Source=''
270State=''
dfe9444c
AD
271_a=''
272_exe=''
273_o=''
4633a7c4
LW
274archobjs=''
275exe_ext=''
276firstmakefile=''
277lib_ext=''
278obj_ext=''
279path_sep=''
b4eb6b3d 280afs=''
a6d26a0d 281afsroot=''
b4eb6b3d
JH
282alignbytes=''
283ansi2knr=''
284archlib=''
285archlibexp=''
286d_archlib=''
287installarchlib=''
288archname=''
289myarchname=''
290d_atolf=''
291d_atoll=''
292baserev=''
293bin=''
294binexp=''
295installbin=''
296bincompat5005=''
297d_bincompat5005=''
298byteorder=''
2304df62 299cc=''
2304df62
AD
300ccflags=''
301cppflags=''
302ldflags=''
303lkflags=''
8e07c86e 304locincpth=''
2304df62 305optimize=''
b4eb6b3d 306cf_email=''
2304df62
AD
307cf_by=''
308cf_time=''
b4eb6b3d 309charsize=''
2304df62 310contains=''
b4eb6b3d 311cpp_stuff=''
2304df62
AD
312cpplast=''
313cppminus=''
314cpprun=''
315cppstdin=''
74cac757 316d__fwalk=''
b4eb6b3d
JH
317d_access=''
318d_accessx=''
319d_alarm=''
320d_attribut=''
321d_bcmp=''
322d_bcopy=''
323d_bzero=''
324d_casti32=''
325castflags=''
326d_castneg=''
327d_chown=''
328d_chroot=''
329d_chsize=''
330d_closedir=''
331d_void_closedir=''
4e0554ec 332d_cmsghdr_s=''
b4eb6b3d
JH
333d_const=''
334cryptlib=''
335d_crypt=''
336d_csh=''
337full_csh=''
338d_cuserid=''
339d_dbl_dig=''
2ef53570 340d_dbminitproto=''
b4eb6b3d
JH
341d_difftime=''
342d_dlerror=''
a0d0e21e 343d_dlopen=''
b4eb6b3d
JH
344d_dlsymun=''
345d_dosuid=''
346d_suidsafe=''
347d_drand48proto=''
348d_dup2=''
349d_eaccess=''
350d_endgrent=''
351d_endhent=''
352d_endnent=''
353d_endpent=''
354d_endpwent=''
355d_endsent=''
356d_fchmod=''
357d_fchown=''
358d_fcntl=''
9d9004a9 359d_fcntl_can_lock=''
b4eb6b3d
JH
360d_fd_macros=''
361d_fd_set=''
362d_fds_bits=''
363d_fgetpos=''
364d_flexfnam=''
365d_flock=''
2ef53570 366d_flockproto=''
b4eb6b3d
JH
367d_fork=''
368d_fpos64_t=''
369d_frexpl=''
370d_fs_data_s=''
371d_fseeko=''
372d_fsetpos=''
373d_fstatfs=''
411ab01c 374d_fsync=''
b4eb6b3d
JH
375d_ftello=''
376d_ftime=''
377d_gettimeod=''
378d_Gconvert=''
379d_getcwd=''
380d_getespwnam=''
381d_getfsstat=''
382d_getgrent=''
383d_getgrps=''
384d_gethbyaddr=''
385d_gethbyname=''
386d_gethent=''
387aphostname=''
388d_gethname=''
389d_phostname=''
390d_uname=''
391d_gethostprotos=''
4e0554ec 392d_getitimer=''
b4eb6b3d
JH
393d_getlogin=''
394d_getmnt=''
395d_getmntent=''
396d_getnbyaddr=''
397d_getnbyname=''
398d_getnent=''
399d_getnetprotos=''
0c0643d0 400d_getpagsz=''
b4eb6b3d
JH
401d_getpent=''
402d_getpgid=''
403d_getpgrp2=''
404d_bsdgetpgrp=''
405d_getpgrp=''
406d_getppid=''
407d_getprior=''
408d_getpbyname=''
409d_getpbynumber=''
410d_getprotoprotos=''
411d_getprpwnam=''
412d_getpwent=''
413d_getsent=''
414d_getservprotos=''
415d_getspnam=''
416d_getsbyname=''
417d_getsbyport=''
a4f3eea9 418d_gnulibc=''
b4eb6b3d
JH
419d_hasmntopt=''
420d_htonl=''
421d_iconv=''
422d_inetaton=''
423d_int64_t=''
424d_isascii=''
425d_isnan=''
426d_isnanl=''
427d_killpg=''
428d_lchown=''
429d_ldbl_dig=''
430d_link=''
431d_locconv=''
432d_lockf=''
433d_longdbl=''
434longdblsize=''
435d_longlong=''
436longlongsize=''
437d_lseekproto=''
438d_lstat=''
439d_madvise=''
440d_mblen=''
441d_mbstowcs=''
442d_mbtowc=''
443d_memchr=''
444d_memcmp=''
445d_memcpy=''
446d_memmove=''
447d_memset=''
448d_mkdir=''
449d_mkdtemp=''
450d_mkfifo=''
451d_mkstemp=''
452d_mkstemps=''
453d_mktime=''
454d_mmap=''
455mmaptype=''
456d_modfl=''
e67aeab1 457d_modfl_pow32_bug=''
b4eb6b3d
JH
458d_mprotect=''
459d_msg=''
460d_msgctl=''
461d_msgget=''
4e0554ec 462d_msghdr_s=''
b4eb6b3d
JH
463d_msgrcv=''
464d_msgsnd=''
465d_msync=''
466d_munmap=''
467d_nice=''
468d_off64_t=''
469d_open3=''
470d_fpathconf=''
471d_pathconf=''
472d_pause=''
473d_pipe=''
474d_poll=''
2304df62 475d_portable=''
b4eb6b3d
JH
476d_old_pthread_create_joinable=''
477old_pthread_create_joinable=''
478d_pthread_yield=''
479d_sched_yield=''
480sched_yield=''
481d_qgcvt=''
482d_readdir=''
483d_rewinddir=''
484d_seekdir=''
485d_telldir=''
486d_readlink=''
4e0554ec 487d_readv=''
640374d0 488d_realpath=''
4e0554ec 489d_recvmsg=''
b4eb6b3d
JH
490d_rename=''
491d_rmdir=''
492d_safebcpy=''
493d_safemcpy=''
494d_sanemcmp=''
ef9f17be 495d_sbrkproto=''
b4eb6b3d
JH
496d_select=''
497d_sem=''
498d_semctl=''
499d_semget=''
500d_semop=''
4e0554ec 501d_sendmsg=''
b4eb6b3d
JH
502d_setegid=''
503d_seteuid=''
504d_setgrent=''
505d_setgrps=''
506d_sethent=''
4e0554ec 507d_setitimer=''
b4eb6b3d
JH
508d_setlinebuf=''
509d_setlocale=''
510d_setnent=''
511d_setpent=''
512d_setpgid=''
513d_setpgrp2=''
514d_bsdsetpgrp=''
515d_setpgrp=''
516d_setprior=''
517d_setproctitle=''
518d_setpwent=''
519d_setregid=''
520d_setresgid=''
521d_setresuid=''
522d_setreuid=''
523d_setrgid=''
524d_setruid=''
525d_setsent=''
526d_setsid=''
527d_setvbuf=''
528d_sfio=''
529usesfio=''
530d_shm=''
531d_shmat=''
532d_shmatprototype=''
533shmattype=''
534d_shmctl=''
535d_shmdt=''
536d_shmget=''
537d_sigaction=''
983dbef6 538d_sigprocmask=''
b4eb6b3d 539d_sigsetjmp=''
49a78c82 540d_sockatmark=''
2ef53570 541d_sockatmarkproto=''
b4eb6b3d
JH
542d_msg_ctrunc=''
543d_msg_dontroute=''
544d_msg_oob=''
545d_msg_peek=''
546d_msg_proxy=''
547d_oldsock=''
548d_scm_rights=''
549d_socket=''
550d_sockpair=''
551sockethdr=''
552socketlib=''
553d_socklen_t=''
554d_socks5_init=''
555d_sqrtl=''
eef837ea 556d_sresgproto=''
640374d0 557d_sresuproto=''
b4eb6b3d
JH
558d_statblks=''
559d_statfs_f_flags=''
560d_statfs_s=''
561d_fstatvfs=''
562d_statvfs=''
563d_stdio_cnt_lval=''
564d_stdio_ptr_lval=''
a7ffa9b9
NC
565d_stdio_ptr_lval_nochange_cnt=''
566d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
567d_stdiobase=''
568d_stdstdio=''
569stdio_base=''
570stdio_bufsiz=''
571stdio_cnt=''
572stdio_filbuf=''
573stdio_ptr=''
574d_index=''
575d_strchr=''
576d_strcoll=''
577d_strctcpy=''
578d_strerrm=''
579d_strerror=''
580d_sysernlst=''
581d_syserrlst=''
b3c85772 582d_strftime=''
b4eb6b3d
JH
583d_strtod=''
584d_strtol=''
585d_strtold=''
586d_strtoll=''
28e5dec8 587d_strtoq=''
b4eb6b3d
JH
588d_strtoul=''
589d_strtoull=''
590d_strtouq=''
591d_strxfrm=''
592d_symlink=''
593d_syscall=''
2ef53570 594d_syscallproto=''
b4eb6b3d
JH
595d_sysconf=''
596d_system=''
597d_tcgetpgrp=''
598d_tcsetpgrp=''
599d_telldirproto=''
600d_time=''
601timetype=''
602clocktype=''
603d_times=''
604d_truncate=''
605d_tzname=''
4e0554ec
JH
606d_u32align=''
607d_ualarm=''
b4eb6b3d
JH
608d_umask=''
609d_semctl_semid_ds=''
610d_semctl_semun=''
611d_union_semun=''
4e0554ec 612d_usleep=''
2ef53570 613d_usleepproto=''
b4eb6b3d
JH
614d_ustat=''
615d_vfork=''
616usevfork=''
617d_voidsig=''
618signal_t=''
619d_volatile=''
620d_charvspr=''
621d_vprintf=''
622d_wait4=''
623d_waitpid=''
624d_wcstombs=''
625d_wctomb=''
4e0554ec 626d_writev=''
b4eb6b3d 627dlext=''
85e6fe83
LW
628cccdlflags=''
629ccdlflags=''
2304df62 630dlsrc=''
232e078e 631ld=''
85e6fe83 632lddlflags=''
2304df62 633usedl=''
b4eb6b3d
JH
634doublesize=''
635ebcdic=''
636fflushNULL=''
637fflushall=''
638fpossize=''
639fpostype=''
5b463ca7 640gccosandvers=''
8a27cf78 641gccversion=''
b4eb6b3d
JH
642gidformat=''
643gidsign=''
644gidsize=''
645gidtype=''
646groupstype=''
647h_fcntl=''
648h_sysfile=''
649i_arpainet=''
650db_hashtype=''
651db_prefixtype=''
640374d0
JH
652db_version_major=''
653db_version_minor=''
654db_version_patch=''
b4eb6b3d
JH
655i_db=''
656i_dbm=''
657i_rpcsvcdbm=''
658d_dirnamlen=''
659direntrytype=''
660i_dirent=''
a0d0e21e 661i_dld=''
b4eb6b3d
JH
662i_dlfcn=''
663i_fcntl=''
664i_float=''
665i_gdbm=''
666d_grpasswd=''
667i_grp=''
668i_iconv=''
669i_ieeefp=''
670i_inttypes=''
671i_libutil=''
672i_limits=''
673i_locale=''
674i_machcthr=''
675i_malloc=''
676i_math=''
677i_memory=''
678i_mntent=''
679i_ndbm=''
680i_netdb=''
681i_neterrno=''
682i_netinettcp=''
683i_niin=''
684i_sysin=''
685i_poll=''
686i_prot=''
687i_pthread=''
688d_pwage=''
689d_pwchange=''
690d_pwclass=''
691d_pwcomment=''
692d_pwexpire=''
693d_pwgecos=''
694d_pwpasswd=''
695d_pwquota=''
696i_pwd=''
697i_sfio=''
698i_shadow=''
699i_socks=''
700i_stddef=''
701i_stdlib=''
702i_string=''
703strings=''
704i_sunmath=''
705i_sysaccess=''
706i_sysdir=''
707i_sysfile=''
708d_voidtty=''
709i_bsdioctl=''
710i_sysfilio=''
711i_sysioctl=''
712i_syssockio=''
713i_syslog=''
714i_sysmman=''
715i_sysmode=''
716i_sysmount=''
717i_sysndir=''
718i_sysparam=''
719i_sysresrc=''
720i_syssecrt=''
721i_sysselct=''
722i_sysstat=''
723i_sysstatfs=''
724i_sysstatvfs=''
725i_systimes=''
726i_systypes=''
727i_sysuio=''
728i_sysun=''
729i_sysutsname=''
730i_sysvfs=''
731i_syswait=''
732i_sgtty=''
733i_termio=''
734i_termios=''
735i_systime=''
736i_systimek=''
737i_time=''
738timeincl=''
739i_unistd=''
740i_ustat=''
741i_utime=''
742i_values=''
743i_stdarg=''
744i_varargs=''
745i_varhdr=''
746i_vfork=''
747inc_version_list=''
748inc_version_list_init=''
749installprefix=''
750installprefixexp=''
751installstyle=''
752installusrbinperl=''
753intsize=''
754longsize=''
755shortsize=''
4b661809 756issymlink=''
2304df62 757libc=''
b4eb6b3d
JH
758ldlibpthname=''
759libperl=''
760shrpenv=''
761useshrplib=''
a0d0e21e 762glibpth=''
2304df62 763libpth=''
8e07c86e 764loclibpth=''
2304df62
AD
765plibpth=''
766xlibpth=''
1cfa4ec7 767ignore_versioned_solibs=''
2304df62 768libs=''
43999f95
JH
769libsdirs=''
770libsfiles=''
771libsfound=''
13b3f787 772libspath=''
85e6fe83 773lns=''
b4eb6b3d
JH
774d_PRIEUldbl=''
775d_PRIFUldbl=''
776d_PRIGUldbl=''
777d_PRIeldbl=''
778d_PRIfldbl=''
779d_PRIgldbl=''
780d_SCNfldbl=''
781sPRIEUldbl=''
782sPRIFUldbl=''
783sPRIGUldbl=''
784sPRIeldbl=''
785sPRIfldbl=''
786sPRIgldbl=''
787sSCNfldbl=''
788lseeksize=''
789lseektype=''
8ff267be 790make_set_make=''
b4eb6b3d
JH
791d_mymalloc=''
792freetype=''
793mallocobj=''
794mallocsrc=''
795malloctype=''
796usemymalloc=''
797installman1dir=''
798man1dir=''
799man1direxp=''
800man1ext=''
801installman3dir=''
802man3dir=''
803man3direxp=''
804man3ext=''
805modetype=''
806multiarch=''
807mydomain=''
808myhostname=''
809phostname=''
2304df62
AD
810c=''
811n=''
b4eb6b3d
JH
812d_eofnblk=''
813eagain=''
814o_nonblock=''
815rd_nodata=''
2cc61e15 816need_va_copy=''
b4eb6b3d
JH
817netdb_hlen_type=''
818netdb_host_type=''
819netdb_name_type=''
820netdb_net_type=''
821groupcat=''
822hostcat=''
823passcat=''
824orderlib=''
825ranlib=''
826d_perl_otherlibdirs=''
827otherlibdirs=''
2304df62
AD
828package=''
829spackage=''
b4eb6b3d
JH
830pager=''
831api_revision=''
832api_subversion=''
833api_version=''
834api_versionstring=''
835patchlevel=''
151e6568 836perl_patchlevel=''
b4eb6b3d
JH
837revision=''
838subversion=''
839version=''
840perl5=''
841perladmin=''
842perlpath=''
843d_nv_preserves_uv=''
844d_nv_preserves_uv_bits=''
845i16size=''
846i16type=''
847i32size=''
848i32type=''
849i64size=''
850i64type=''
851i8size=''
852i8type=''
853ivsize=''
854ivtype=''
855nvsize=''
856nvtype=''
857u16size=''
858u16type=''
859u32size=''
860u32type=''
861u64size=''
862u64type=''
863u8size=''
864u8type=''
865uvsize=''
866uvtype=''
867ivdformat=''
868nvEUformat=''
869nvFUformat=''
870nvGUformat=''
871nveformat=''
872nvfformat=''
873nvgformat=''
874uvXUformat=''
875uvoformat=''
876uvuformat=''
877uvxformat=''
878pidtype=''
879prefix=''
880prefixexp=''
881installprivlib=''
882privlib=''
883privlibexp=''
884prototype=''
885ptrsize=''
886d_PRIXU64=''
887d_PRId64=''
888d_PRIi64=''
889d_PRIo64=''
890d_PRIu64=''
891d_PRIx64=''
892sPRIXU64=''
893sPRId64=''
894sPRIi64=''
895sPRIo64=''
896sPRIu64=''
897sPRIx64=''
898d_quad=''
899quadkind=''
900quadtype=''
901uquadtype=''
902drand01=''
903randbits=''
904randfunc=''
905randseedtype=''
906seedfunc=''
907installscript=''
908scriptdir=''
909scriptdirexp=''
910selectminbits=''
911selecttype=''
8ff267be 912sh=''
b4eb6b3d
JH
913sig_count=''
914sig_name=''
915sig_name_init=''
916sig_num=''
917sig_num_init=''
76d3c696 918sig_size=''
b4eb6b3d
JH
919installsitearch=''
920sitearch=''
921sitearchexp=''
922installsitebin=''
923sitebin=''
924sitebinexp=''
925installsitelib=''
926sitelib=''
927sitelib_stem=''
928sitelibexp=''
929siteprefix=''
930siteprefixexp=''
931sizesize=''
932sizetype=''
a0d0e21e 933so=''
b4eb6b3d 934socksizetype=''
2304df62
AD
935sharpbang=''
936shsharp=''
937spitshell=''
dfe9444c 938src=''
b4eb6b3d
JH
939ssizetype=''
940startperl=''
2304df62 941startsh=''
b4eb6b3d
JH
942stdchar=''
943d_stdio_stream_array=''
944stdio_stream_array=''
945sysman=''
5ff3f7a4 946trnl=''
b4eb6b3d
JH
947uidformat=''
948uidsign=''
949uidsize=''
950uidtype=''
951archname64=''
952use64bitall=''
953use64bitint=''
954ccflags_uselargefiles=''
955ldflags_uselargefiles=''
956libswanted_uselargefiles=''
957uselargefiles=''
958uselongdouble=''
959usemorebits=''
960usemultiplicity=''
2304df62 961nm_opt=''
40a7a20a 962nm_so_opt=''
2304df62
AD
963runnm=''
964usenm=''
b4eb6b3d 965useperlio=''
29209bc5 966usesocks=''
b4eb6b3d
JH
967d_oldpthreads=''
968use5005threads=''
969useithreads=''
9514c62b 970usereentrant=''
b4eb6b3d 971usethreads=''
2304df62 972incpath=''
2304df62
AD
973mips_type=''
974usrinc=''
b4eb6b3d
JH
975d_vendorarch=''
976installvendorarch=''
977vendorarch=''
978vendorarchexp=''
979d_vendorbin=''
980installvendorbin=''
981vendorbin=''
982vendorbinexp=''
983d_vendorlib=''
984installvendorlib=''
985vendorlib=''
986vendorlib_stem=''
987vendorlibexp=''
988usevendorprefix=''
989vendorprefix=''
990vendorprefixexp=''
d56c5707 991versiononly=''
b4eb6b3d
JH
992defvoidused=''
993voidflags=''
994pm_apiversion=''
995xs_apiversion=''
3659ebf1
JH
996yacc=''
997yaccflags=''
2304df62
AD
998CONFIG=''
999
ecfc5424
AD
1000define='define'
1001undef='undef'
1002smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1003rmlist=''
1004
1005: We must find out about Eunice early
1006eunicefix=':'
1007if test -f /etc/unixtovms; then
1008 eunicefix=/etc/unixtovms
1009fi
1010if test -f /etc/unixtovms.exe; then
1011 eunicefix=/etc/unixtovms.exe
1012fi
1013
b4eb6b3d 1014i_whoami=''
6b356c8e
JH
1015ccname=''
1016ccversion=''
9c839522 1017perllibs=''
b4eb6b3d
JH
1018: set useposix=false in your hint file to disable the POSIX extension.
1019useposix=true
1020: set useopcode=false in your hint file to disable the Opcode extension.
1021useopcode=true
dfe9444c 1022: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 1023_exe=''
dfe9444c
AD
1024: Extra object files, if any, needed on this platform.
1025archobjs=''
b4eb6b3d 1026archname=''
ff935051
JH
1027: Possible local include directories to search.
1028: Set locincpth to "" in a hint file to defeat local include searches.
1029locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1030locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1031:
1032: no include file wanted by default
1033inclwanted=''
1034
b4eb6b3d 1035groupstype=''
64615a5e 1036libnames=''
732c9516
JH
1037: change the next line if compiling for Xenix/286 on Xenix/386
1038xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1039: Possible local library directories to search.
1040loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1041loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1042
1043: general looking path for locating libraries
5869b1f1 1044glibpth="/lib /usr/lib $xlibpth"
732c9516 1045glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1046test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1047test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1048
1049: Private path used by Configure to find libraries. Its value
1050: is prepended to libpth. This variable takes care of special
1051: machines, like the mips. Usually, it should be empty.
1052plibpth=''
1053
1cfa4ec7
GS
1054: default library list
1055libswanted=''
921b2963 1056: some systems want to use only the non-versioned libso:s
1cfa4ec7 1057ignore_versioned_solibs=''
b4eb6b3d
JH
1058archname64=''
1059ccflags_uselargefiles=''
1060ldflags_uselargefiles=''
1061libswanted_uselargefiles=''
1062: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1063: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1064: set usethreads on the Configure command line to enable threads.
cd040c5e 1065usereentrant='undef'
b4eb6b3d
JH
1066: full support for void wanted by default
1067defvoidused=15
1068
ecfc5424 1069: List of libraries we want.
693762b4 1070: If anyone needs -lnet, put it in a hint file.
997d70a2 1071libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1072libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1073libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1074libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1075: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1076: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1077glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1078glibpth="/usr/shlib $glibpth"
1079: Do not use vfork unless overridden by a hint file.
1080usevfork=false
1081
8ff267be 1082: Find the basic shell for Bourne shell scripts
1083case "$sh" in
1084'')
8ff267be 1085 case "$SYSTYPE" in
1086 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1087 *) xxx='/bin/sh';;
1088 esac
1089 if test -f "$xxx"; then
1090 sh="$xxx"
1091 else
1092 : Build up a list and do a single loop so we can 'break' out.
1093 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1094 for xxx in sh bash ksh pdksh ash; do
1095 for p in $pth; do
1096 try="$try ${p}/${xxx}"
1097 done
1098 done
1099 for xxx in $try; do
1100 if test -f "$xxx"; then
1101 sh="$xxx";
8ff267be 1102 break
1103 elif test -f "$xxx.exe"; then
1104 sh="$xxx";
8ff267be 1105 break
1106 fi
1107 done
1108 fi
1109 ;;
1110esac
1111
1112case "$sh" in
1113'') cat <<EOM >&2
1114$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1115
8ff267be 1116Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1117Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1118we'll try to straighten this all out.
8ff267be 1119EOM
1120 exit 1
1121 ;;
1122esac
1123
760ac839 1124: see if sh knows # comments
73614538 1125if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1126 shsharp=true
1127 spitshell=cat
760ac839
LW
1128 xcat=/bin/cat
1129 test -f $xcat || xcat=/usr/bin/cat
5440bc8e
JH
1130 echo "#!$xcat" >sharp
1131 $eunicefix sharp
1132 chmod +x sharp
1133 ./sharp > today
760ac839 1134 if test -s today; then
760ac839
LW
1135 sharpbang='#!'
1136 else
5440bc8e
JH
1137 echo "#! $xcat" > sharp
1138 $eunicefix sharp
1139 chmod +x sharp
1140 ./sharp > today
760ac839 1141 if test -s today; then
760ac839
LW
1142 sharpbang='#! '
1143 else
760ac839
LW
1144 sharpbang=': use '
1145 fi
1146 fi
1147else
dfe9444c 1148 echo " "
8ff267be 1149 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1150 shsharp=false
1151 cd ..
1152 echo "exec grep -v '^[ ]*#'" >spitshell
1153 chmod +x spitshell
1154 $eunicefix spitshell
1155 spitshell=`pwd`/spitshell
1156 cd UU
1157 echo "I presume that if # doesn't work, #! won't work either!"
1158 sharpbang=': use '
1159fi
5440bc8e 1160rm -f sharp today
760ac839
LW
1161
1162: figure out how to guarantee sh startup
8ff267be 1163case "$startsh" in
1164'') startsh=${sharpbang}${sh} ;;
1165*)
760ac839 1166esac
5440bc8e 1167cat >sharp <<EOSS
760ac839
LW
1168$startsh
1169set abc
1170test "$?abc" != 1
1171EOSS
1172
5440bc8e
JH
1173chmod +x sharp
1174$eunicefix sharp
1175if ./sharp; then
8ff267be 1176 : echo "Yup, it does."
760ac839 1177else
dfe9444c
AD
1178 echo "Hmm... '$startsh' does not guarantee sh startup..."
1179 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1180fi
5440bc8e 1181rm -f sharp
760ac839 1182
aebf16e7
AD
1183
1184: Save command line options in file UU/cmdline.opt for later use in
1185: generating config.sh.
1186cat > cmdline.opt <<EOSH
1187# Configure command line arguments.
1188config_arg0='$0'
1189config_args='$*'
1190config_argc=$#
1191EOSH
1192argn=1
1193for arg in "$@"; do
1194 cat >>cmdline.opt <<EOSH
1195config_arg$argn='$arg'
1196EOSH
1197 argn=`expr $argn + 1`
1198done
1199
2304df62
AD
1200: produce awk script to parse command line options
1201cat >options.awk <<'EOF'
1202BEGIN {
02e93a22 1203 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1204
1205 len = length(optstr);
1206 for (i = 1; i <= len; i++) {
1207 c = substr(optstr, i, 1);
1208 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1209 if (a == ":") {
1210 arg[c] = 1;
1211 i++;
1212 }
1213 opt[c] = 1;
1214 }
1215}
1216{
1217 expect = 0;
1218 str = $0;
1219 if (substr(str, 1, 1) != "-") {
1220 printf("'%s'\n", str);
1221 next;
1222 }
1223 len = length($0);
1224 for (i = 2; i <= len; i++) {
1225 c = substr(str, i, 1);
1226 if (!opt[c]) {
1227 printf("-%s\n", substr(str, i));
1228 next;
1229 }
1230 printf("-%s\n", c);
1231 if (arg[c]) {
1232 if (i < len)
1233 printf("'%s'\n", substr(str, i + 1));
1234 else
1235 expect = 1;
1236 next;
1237 }
1238 }
1239}
1240END {
1241 if (expect)
1242 print "?";
1243}
1244EOF
1245
1246: process the command line options
4633a7c4
LW
1247set X `for arg in "$@"; do echo "X$arg"; done |
1248 sed -e s/X// | awk -f options.awk`
2304df62
AD
1249eval "set $*"
1250shift
1251rm -f options.awk
1252
1253: set up default values
1254fastread=''
1255reuseval=false
1256config_sh=''
1257alldone=''
1258error=''
1259silent=''
1260extractsh=''
ecfc5424 1261override=''
16d20bd9 1262knowitall=''
02e93a22 1263rm -f optdef.sh posthint.sh
28757baa 1264cat >optdef.sh <<EOS
1265$startsh
1266EOS
2304df62 1267
dfe9444c 1268
2304df62
AD
1269: option parsing
1270while test $# -gt 0; do
1271 case "$1" in
1272 -d) shift; fastread=yes;;
1273 -e) shift; alldone=cont;;
1274 -f)
1275 shift
1276 cd ..
1277 if test -r "$1"; then
1278 config_sh="$1"
1279 else
a0d0e21e 1280 echo "$me: cannot read config file $1." >&2
2304df62
AD
1281 error=true
1282 fi
1283 cd UU
1284 shift;;
1285 -h) shift; error=true;;
1286 -r) shift; reuseval=true;;
dfe9444c 1287 -s) shift; silent=true; realsilent=true;;
2304df62 1288 -E) shift; alldone=exit;;
16d20bd9 1289 -K) shift; knowitall=true;;
ecfc5424 1290 -O) shift; override=true;;
dfe9444c 1291 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1292 -D)
1293 shift
1294 case "$1" in
1295 *=)
1296 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1297 echo "$me: ignoring -D $1" >&2
1298 ;;
ecfc5424 1299 *=*) echo "$1" | \
1aef975c
AD
1300 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1301 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1302 esac
1303 shift
1304 ;;
1305 -U)
1306 shift
1307 case "$1" in
1aef975c 1308 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1309 *=*)
1310 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1311 echo "$me: ignoring -U $1" >&2
1312 ;;
1aef975c 1313 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1314 esac
1315 shift
1316 ;;
02e93a22
JH
1317 -A)
1318 shift
1319 xxx=''
1320 yyy="$1"
02e93a22 1321 zzz=''
5f83a3e9 1322 uuu=undef
02e93a22 1323 case "$yyy" in
5f83a3e9
JH
1324 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1325 case "$zzz" in
1326 *:*) zzz='' ;;
1327 *) xxx=append
1328 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1329 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1330 esac
1331 ;;
1332 esac
1333 case "$xxx" in
1334 '') case "$yyy" in
1335 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1336 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1337 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1338 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1339 *) xxx=`echo $yyy|sed 's!:.*!!'`
1340 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1341 esac
1342 ;;
1343 esac
02e93a22
JH
1344 case "$xxx" in
1345 append)
5f83a3e9 1346 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1347 clear)
5f83a3e9 1348 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1349 define)
1350 case "$zzz" in
1351 '') zzz=define ;;
1352 esac
5f83a3e9 1353 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1354 eval)
5f83a3e9 1355 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1356 prepend)
5f83a3e9 1357 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1358 undef)
1359 case "$zzz" in
1360 '') zzz="$uuu" ;;
1361 esac
5f83a3e9
JH
1362 echo "$yyy=$zzz" >> posthint.sh ;;
1363 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1364 esac
bde6b06b 1365 shift
02e93a22 1366 ;;
dfe9444c 1367 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1368 exit 0;;
2304df62 1369 --) break;;
a0d0e21e 1370 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1371 *) break;;
1372 esac
1373done
1374
1375case "$error" in
1376true)
1377 cat >&2 <<EOM
2afac517 1378Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1379 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1380 -d : use defaults for all answers.
1381 -e : go on without questioning past the production of config.sh.
1382 -f : specify an alternate default configuration file.
1383 -h : print this help message and exit (with an error status).
1384 -r : reuse C symbols value if possible (skips costly nm extraction).
1385 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1386 -D : define symbol to have some value:
1387 -D symbol symbol gets the value 'define'
1388 -D symbol=value symbol gets the value 'value'
2304df62 1389 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1390 -K : do not use unless you know what you are doing.
ecfc5424 1391 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1392 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1393 -U : undefine symbol:
1394 -U symbol symbol gets the value 'undef'
1395 -U symbol= symbol gets completely empty
02e93a22 1396 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1397 -A symbol=value append " "value to symbol
02e93a22
JH
1398 -A append:symbol=value append value to symbol
1399 -A define:symbol=value define symbol to have value
02e93a22
JH
1400 -A clear:symbol define symbol to be ''
1401 -A define:symbol define symbol to be 'define'
1402 -A eval:symbol=value define symbol to be eval of value
1403 -A prepend:symbol=value prepend value to symbol
1404 -A undef:symbol define symbol to be 'undef'
1405 -A undef:symbol= define symbol to be ''
2304df62
AD
1406 -V : print version number and exit (with a zero status).
1407EOM
1408 exit 1
1409 ;;
1410esac
1411
dfe9444c
AD
1412: Sanity checks
1413case "$fastread$alldone" in
1414yescont|yesexit) ;;
1415*)
aaeb8e51
GS
1416 case "$extractsh" in
1417 true) ;;
1418 *)
1419 if test ! -t 0; then
1420 echo "Say 'sh Configure', not 'sh <Configure'"
1421 exit 1
1422 fi
1423 ;;
1424 esac
dfe9444c
AD
1425 ;;
1426esac
1427
2304df62
AD
1428exec 4>&1
1429case "$silent" in
1430true) exec 1>/dev/null;;
1431esac
1432
ecfc5424 1433: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1434touch optdef.sh
1435. ./optdef.sh
02e93a22
JH
1436: create the posthint manipulation script and leave the file out there...
1437touch posthint.sh
a0d0e21e 1438
2304df62 1439: set package name
85e6fe83 1440package=perl5
b4eb6b3d
JH
1441first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1442last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1443case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1444ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1445*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1446esac
2304df62 1447
2304df62
AD
1448: Some greps do not return status, grrr.
1449echo "grimblepritz" >grimble
1450if grep blurfldyick grimble >/dev/null 2>&1 ; then
1451 contains=contains
1452elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1453 contains=grep
1454else
1455 contains=contains
1456fi
1457rm -f grimble
1458: the following should work in any shell
1459case "$contains" in
1460contains*)
1461 echo " "
1462 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1463 cat >contains <<'EOSS'
1464grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1465EOSS
1466chmod +x contains
1467esac
1468
dfe9444c
AD
1469: Find the path to the source tree
1470case "$src" in
1471'') case "$0" in
b233458b
JH
1472 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1473 case "$src" in
1474 /*) ;;
8504afb7 1475 .) ;;
b233458b
JH
1476 *) src=`cd ../$src && pwd` ;;
1477 esac
1478 ;;
dfe9444c
AD
1479 *) src='.';;
1480 esac;;
1481esac
1482case "$src" in
1483'') src=/
1484 rsrc=/
1485 ;;
1486/*) rsrc="$src";;
1487*) rsrc="../$src";;
1488esac
1489if test -f $rsrc/Configure && \
1490 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1491then
1492 : found it, so we are ok.
1493else
1494 rsrc=''
1495 for src in . .. ../.. ../../.. ../../../..; do
1496 if test -f ../$src/Configure && \
1497 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1498 then
1499 rsrc=../$src
1500 break
1501 fi
1502 done
1503fi
1504case "$rsrc" in
1505'')
1506 cat <<EOM >&4
1507
1508Sorry, I can't seem to locate the source dir for $package. Please start
1509Configure with an explicit path -- i.e. /some/path/Configure.
1510
1511EOM
1512 exit 1
1513 ;;
1514../.) rsrc='..';;
1515*)
1516 echo " "
1517 echo "Sources for $package found in \"$src\"." >&4
1518 ;;
1519esac
1520
1521: script used to extract .SH files with variable substitutions
1522cat >extract <<'EOS'
a02608de 1523PERL_CONFIG_SH=true
dfe9444c 1524echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1525if test -f MANIFEST; then
1526 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1527else
1528 echo "(Looking for .SH files under the source directory.)"
1529 set x `(cd $src; find . -name "*.SH" -print)`
1530fi
1531shift
1532case $# in
15330) set x `(cd $src; echo *.SH)`; shift;;
1534esac
1535if test ! -f $src/$1; then
1536 shift
1537fi
1538mkdir_p='
1539name=$1;
1540create="";
1541while test $name; do
1542 if test ! -d "$name"; then
1543 create="$name $create";
1544 name=`echo $name | sed -e "s|^[^/]*$||"`;
1545 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1546 else
1547 name="";
1548 fi;
1549done;
1550for file in $create; do
1551 mkdir $file;
1552done
1553'
1554for file in $*; do
1555 case "$src" in
1556 ".")
1557 case "$file" in
1558 */*)
1559 dir=`expr X$file : 'X\(.*\)/'`
1560 file=`expr X$file : 'X.*/\(.*\)'`
1561 (cd $dir && . ./$file)
1562 ;;
1563 *)
1564 . ./$file
1565 ;;
1566 esac
1567 ;;
1568 *)
1569 case "$file" in
1570 */*)
1571 dir=`expr X$file : 'X\(.*\)/'`
1572 file=`expr X$file : 'X.*/\(.*\)'`
1573 (set x $dir; shift; eval $mkdir_p)
1574 sh <$src/$dir/$file
1575 ;;
1576 *)
1577 sh <$src/$file
1578 ;;
1579 esac
1580 ;;
1581 esac
1582done
1583if test -f $src/config_h.SH; then
1584 if test ! -f config.h; then
1585 : oops, they left it out of MANIFEST, probably, so do it anyway.
1586 . $src/config_h.SH
1587 fi
1588fi
1589EOS
1590
1591: extract files and exit if asked to do so
1592case "$extractsh" in
1593true)
1594 case "$realsilent" in
1595 true) ;;
1596 *) exec 1>&4;;
1597 esac
1598 case "$config_sh" in
1599 '') config_sh='config.sh';;
1600 esac
1601 echo " "
1602 echo "Fetching answers from $config_sh..."
1603 cd ..
1604 . $config_sh
1605 test "$override" && . ./optdef.sh
1606 echo " "
1607 . UU/extract
1608 rm -rf UU
24ccb310 1609 echo "Extraction done."
dfe9444c
AD
1610 exit 0
1611 ;;
1612esac
1613
1614: Eunice requires " " instead of "", can you believe it
1615echo " "
1616: Here we go...
1617echo "Beginning of configuration questions for $package."
1618
1619trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1620
2304df62
AD
1621: first determine how to suppress newline on echo command
1622echo " "
1623echo "Checking echo to see how to suppress newlines..."
1624(echo "hi there\c" ; echo " ") >.echotmp
1625if $contains c .echotmp >/dev/null 2>&1 ; then
1626 echo "...using -n."
1627 n='-n'
1628 c=''
1629else
1630 cat <<'EOM'
1631...using \c
1632EOM
1633 n=''
1634 c='\c'
1635fi
1636echo $n "The star should be here-->$c"
1637echo '*'
1638rm -f .echotmp
1639
1640: Now test for existence of everything in MANIFEST
1641echo " "
dfe9444c 1642if test -f $rsrc/MANIFEST; then
2304df62 1643 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1644 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1645 rm -f missing
dfe9444c 1646 tmppwd=`pwd`
2304df62 1647 for filelist in x??; do
dfe9444c 1648 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1649 done
1650 if test -s missing; then
1651 cat missing >&4
1652 cat >&4 <<'EOM'
1653
1654THIS PACKAGE SEEMS TO BE INCOMPLETE.
1655
1656You have the option of continuing the configuration process, despite the
1657distinct possibility that your kit is damaged, by typing 'y'es. If you
1658do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1659and contact the author (perlbug@perl.org).
2304df62
AD
1660
1661EOM
1662 echo $n "Continue? [n] $c" >&4
1663 read ans
1664 case "$ans" in
1665 y*)
1666 echo "Continuing..." >&4
1667 rm -f missing
1668 ;;
1669 *)
1670 echo "ABORTING..." >&4
1671 kill $$
1672 ;;
1673 esac
1674 else
dfe9444c 1675 echo "Looks good..."
2304df62
AD
1676 fi
1677else
1678 echo "There is no MANIFEST file. I hope your kit is complete !"
1679fi
1680rm -f missing x??
1681
5ff3f7a4
GS
1682echo " "
1683: Find the appropriate value for a newline for tr
1684if test -n "$DJGPP"; then
1685 trnl='\012'
1686fi
1687if test X"$trnl" = X; then
1688 case "`echo foo|tr '\n' x 2>/dev/null`" in
1689 foox) trnl='\n' ;;
1690 esac
1691fi
1692if test X"$trnl" = X; then
1693 case "`echo foo|tr '\012' x 2>/dev/null`" in
1694 foox) trnl='\012' ;;
1695 esac
1696fi
1697if test X"$trnl" = X; then
1698 cat <<EOM >&2
1699
1700$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1701
1702EOM
1703 exit 1
1704fi
1705
2304df62
AD
1706: compute the number of columns on the terminal for proper question formatting
1707case "$COLUMNS" in
1708'') COLUMNS='80';;
1709esac
1710
1711: set up the echo used in my read
1712myecho="case \"\$xxxm\" in
1713'') echo $n \"\$rp $c\" >&4;;
1714*) case \"\$rp\" in
1715 '') echo $n \"[\$xxxm] $c\";;
1716 *)
1717 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1718 echo \"\$rp\" >&4
1719 echo $n \"[\$xxxm] $c\" >&4
1720 else
1721 echo $n \"\$rp [\$xxxm] $c\" >&4
1722 fi
1723 ;;
1724 esac;;
1725esac"
1726
1727: now set up to do reads with possible shell escape and default assignment
1728cat <<EOSC >myread
28757baa 1729$startsh
2304df62
AD
1730xxxm=\$dflt
1731$myecho
1732ans='!'
1733case "\$fastread" in
1734yes) case "\$dflt" in
1735 '') ;;
1736 *) ans='';
1737 case "\$silent-\$rp" in
1738 true-) ;;
1739 *) echo " " >&4;;
1740 esac;;
1741 esac;;
1742*) case "\$silent" in
1743 true) case "\$rp" in
1744 '') ans='';;
1745 esac;;
1746 esac;;
1747esac
1748while expr "X\$ans" : "X!" >/dev/null; do
1749 read answ
1750 set x \$xxxm
1751 shift
dfe9444c 1752 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1753 case "\$answ" in
dfe9444c
AD
1754 "!")
1755 sh 1>&4
1756 echo " "
1757 $myecho
1758 ;;
1759 !*)
1760 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1761 shift
1762 sh 1>&4 -c "\$*"
1763 echo " "
1764 $myecho
1765 ;;
2304df62
AD
1766 "\$ans")
1767 case "\$ans" in
ecfc5424
AD
1768 \\&*)
1769 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1770 shift
1771 case "\$1" in
1772 -d)
1773 fastread=yes
40a7a20a 1774 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1775 ;;
1776 -*)
40a7a20a 1777 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1778 ;;
1779 esac
1780 $myecho
1781 ans=!
1782 ;;
2304df62
AD
1783 esac;;
1784 *)
1785 case "\$aok" in
1786 y)
1787 echo "*** Substitution done -- please confirm."
1788 xxxm="\$ans"
c9795ab7 1789 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1790 xxxm="\$ans"
1791 ans=!
1792 ;;
1793 *)
1794 echo "*** Error -- try again."
1795 ans=!
1796 ;;
1797 esac
1798 $myecho
1799 ;;
1800 esac
1801 case "\$ans\$xxxm\$nostick" in
1802 '')
1803 ans=!
1804 $myecho
1805 ;;
1806 esac
1807done
1808case "\$ans" in
1809'') ans="\$xxxm";;
1810esac
1811EOSC
1812
1813: create .config dir to save info across Configure sessions
1814test -d ../.config || mkdir ../.config
1815cat >../.config/README <<EOF
1816This directory created by Configure to save information that should
dfe9444c 1817persist across sessions for $package.
2304df62
AD
1818
1819You may safely delete it if you wish.
1820EOF
1821
9507cadf 1822xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1823case "$usedevel" in
0107c034 1824$define|true|[yY]*) ;;
9507cadf 1825*) case "$xversion" in
0107c034
JH
1826 *[13579])
1827 cat >&4 <<EOH
1828*** WHOA THERE!!! ***
1829
1830 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1831 The version of this $package distribution is $xversion, that is, odd,
1832 (as opposed to even) and that signifies a development release.
3d5d58b1 1833 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1834
1835 Do ***NOT*** install this into production use.
1836 Data corruption and crashes are possible.
1837
1838 It is most seriously suggested that you do not continue any further
1839 unless you want to help in developing and debugging Perl.
1840
6adc6a45
JH
1841 If you *still* want to build perl, you can answer 'y' now,
1842 or pass -Dusedevel to Configure.
1843
0107c034
JH
1844EOH
1845 rp='Do you really want to continue?'
1846 dflt='n'
1847 . ./myread
1848 case "$ans" in
8feeef0e
JH
1849 [yY]) echo >&4 "Okay, continuing."
1850 usedevel="$define" ;;
0107c034
JH
1851 *) echo >&4 "Okay, bye."
1852 exit 1
1853 ;;
1854 esac
1855 ;;
1856 esac
1857 ;;
1858esac
8feeef0e
JH
1859case "$usedevel" in
1860$define|true|[yY]*)
1861 case "$versiononly" in
1862 '') versiononly="$define" ;;
1863 esac
1864 case "$installusrbinperl" in
1865 '') installusrbinperl="$undef" ;;
1866 esac
1867 ;;
1868esac
0107c034 1869
2304df62
AD
1870: general instructions
1871needman=true
1872firsttime=true
760ac839 1873user=`(logname) 2>/dev/null`
dfe9444c
AD
1874case "$user" in
1875'') user=`whoami 2>&1`;;
760ac839 1876esac
2304df62
AD
1877if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1878 firsttime=false
1879 echo " "
1880 rp='Would you like to see the instructions?'
1881 dflt=n
1882 . ./myread
1883 case "$ans" in
1884 [yY]*) ;;
1885 *) needman=false;;
1886 esac
1887fi
1888if $needman; then
1889 cat <<EOH
4e2a5f63 1890
2304df62 1891This installation shell script will examine your system and ask you questions
a0d0e21e 1892to determine how the perl5 package should be installed. If you get
2304df62
AD
1893stuck on a question, you may use a ! shell escape to start a subshell or
1894execute a command. Many of the questions will have default answers in square
1895brackets; typing carriage return will give you the default.
1896
1897On some of the questions which ask for file or directory names you are allowed
1898to use the ~name construct to specify the login directory belonging to "name",
1899even if you don't have a shell which knows about that. Questions where this is
1900allowed will be marked "(~name ok)".
1901
1902EOH
1903 rp=''
1904 dflt='Type carriage return to continue'
1905 . ./myread
1906 cat <<'EOH'
1907
1908The prompter used in this script allows you to use shell variables and
1909backticks in your answers. You may use $1, $2, etc... to refer to the words
1910in the default answer, as if the default line was a set of arguments given to a
1911script shell. This means you may also use $* to repeat the whole default line,
1912so you do not have to re-type everything to add something to the default.
1913
1914Everytime there is a substitution, you will have to confirm. If there is an
1915error (e.g. an unmatched backtick), the default answer will remain unchanged
1916and you will be prompted again.
1917
1918If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1919the questions and use the computed defaults (or the previous answers if there
1920was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1921You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1922on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1923
1924EOH
1925 . ./myread
1926 cat <<EOH
1927
1928Much effort has been expended to ensure that this shell script will run on any
1929Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1930Configure and run it again. If you can't run Configure for some reason,
1931you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1932have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1933
1934This installation script affects things in two ways:
1935
19361) it may do direct variable substitutions on some of the files included
1937 in this kit.
19382) it builds a config.h file for inclusion in C programs. You may edit
1939 any of these files as the need arises after running this script.
1940
1941If you make a mistake on a question, there is no easy way to back up to it
1942currently. The easiest thing to do is to edit config.sh and rerun all the SH
1943files. Configure will offer to let you do this before it runs the SH files.
1944
1945EOH
1946 dflt='Type carriage return to continue'
1947 . ./myread
1948 case "$firsttime" in
1949 true) echo $user >>../.config/instruct;;
1950 esac
1951fi
1952
2304df62
AD
1953: find out where common programs are
1954echo " "
1955echo "Locating common programs..." >&4
1956cat <<EOSC >loc
1957$startsh
1958case \$# in
19590) exit 1;;
1960esac
1961thing=\$1
1962shift
1963dflt=\$1
1964shift
1965for dir in \$*; do
1966 case "\$thing" in
1967 .)
1968 if test -d \$dir/\$thing; then
1969 echo \$dir
1970 exit 0
1971 fi
1972 ;;
1973 *)
a0d0e21e 1974 for thisthing in \$dir/\$thing; do
ecfc5424 1975 : just loop through to pick last item
a0d0e21e 1976 done
25f94b33 1977 if test -f \$thisthing; then
a0d0e21e 1978 echo \$thisthing
2304df62
AD
1979 exit 0
1980 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1981 if test -n "$DJGPP"; then
1982 echo \$dir/\$thing.exe
1983 else
1984 : on Eunice apparently
1985 echo \$dir/\$thing
1986 fi
2304df62
AD
1987 exit 0
1988 fi
1989 ;;
1990 esac
1991done
1992echo \$dflt
1993exit 1
1994EOSC
1995chmod +x loc
1996$eunicefix loc
1997loclist="
1998awk
1999cat
b4eb6b3d
JH
2000comm
2001cp
2304df62
AD
2002echo
2003expr
2004grep
a0d0e21e 2005ls
dfe9444c 2006make
b4eb6b3d 2007mkdir
2304df62
AD
2008rm
2009sed
b4eb6b3d 2010sort
85e6fe83 2011touch
2304df62 2012tr
b4eb6b3d 2013uniq
2304df62
AD
2014"
2015trylist="
2016Mcc
dfe9444c 2017ar
3659ebf1 2018bison
b4eb6b3d 2019byacc
2304df62 2020cpp
b4eb6b3d 2021csh
2304df62
AD
2022date
2023egrep
8ff267be 2024gzip
b4eb6b3d 2025less
8ff267be 2026ln
b4eb6b3d 2027more
693762b4 2028nm
b4eb6b3d
JH
2029nroff
2030pg
2304df62
AD
2031test
2032uname
8ff267be 2033zip
2304df62 2034"
8e07c86e 2035pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2036pth="$pth /lib /usr/lib"
2037for file in $loclist; do
dfe9444c
AD
2038 eval xxx=\$$file
2039 case "$xxx" in
2040 /*|?:[\\/]*)
2041 if test -f "$xxx"; then
2042 : ok
2043 else
2044 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2045 xxx=`./loc $file $file $pth`
2046 fi
2047 ;;
2048 '') xxx=`./loc $file $file $pth`;;
2049 *) xxx=`./loc $xxx $xxx $pth`;;
2050 esac
2304df62
AD
2051 eval $file=$xxx
2052 eval _$file=$xxx
2053 case "$xxx" in
2054 /*)
2055 echo $file is in $xxx.
2056 ;;
8e07c86e
AD
2057 ?:[\\/]*)
2058 echo $file is in $xxx.
2059 ;;
2304df62 2060 *)
25f94b33
AD
2061 echo "I don't know where '$file' is, and my life depends on it." >&4
2062 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2063 exit 1
2304df62
AD
2064 ;;
2065 esac
2066done
2067echo " "
2068echo "Don't worry if any of the following aren't found..."
2069say=offhand
2070for file in $trylist; do
dfe9444c
AD
2071 eval xxx=\$$file
2072 case "$xxx" in
2073 /*|?:[\\/]*)
2074 if test -f "$xxx"; then
2075 : ok
2076 else
2077 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2078 xxx=`./loc $file $file $pth`
2079 fi
2080 ;;
2081 '') xxx=`./loc $file $file $pth`;;
2082 *) xxx=`./loc $xxx $xxx $pth`;;
2083 esac
2304df62
AD
2084 eval $file=$xxx
2085 eval _$file=$xxx
2086 case "$xxx" in
2087 /*)
2088 echo $file is in $xxx.
2089 ;;
8e07c86e
AD
2090 ?:[\\/]*)
2091 echo $file is in $xxx.
2092 ;;
2304df62
AD
2093 *)
2094 echo "I don't see $file out there, $say."
2095 say=either
2096 ;;
2097 esac
2098done
2099case "$egrep" in
2100egrep)
2101 echo "Substituting grep for egrep."
2102 egrep=$grep
2103 ;;
2104esac
8ff267be 2105case "$ln" in
2106ln)
2107 echo "Substituting cp for ln."
2108 ln=$cp
2109 ;;
2110esac
2304df62
AD
2111case "$test" in
2112test)
2113 echo "Hopefully test is built into your sh."
2114 ;;
2115*)
73614538 2116 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2117 echo "Using the test built into your sh."
2304df62
AD
2118 test=test
2119 _test=test
2120 fi
2121 ;;
2122esac
2123case "$echo" in
2124echo)
2125 echo "Hopefully echo is built into your sh."
2126 ;;
2127'') ;;
2128*)
2129 echo " "
2130echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2131 $echo $n "hi there$c" >foo1
2132 echo $n "hi there$c" >foo2
2133 if cmp foo1 foo2 >/dev/null 2>&1; then
2134 echo "They are compatible. In fact, they may be identical."
2135 else
2136 case "$n" in
2137 '-n') n='' c='\c';;
2138 *) n='-n' c='';;
2139 esac
2140 cat <<FOO
2141They are not compatible! You are probably running ksh on a non-USG system.
2142I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2143have echo built in and we may have to run some Bourne shell scripts. That
2144means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2145
2146FOO
2147 $echo $n "The star should be here-->$c"
2148 $echo "*"
2149 fi
2150 $rm -f foo1 foo2
2151 ;;
2152esac
2153
2573c5f9
JH
2154cat <<EOS >checkcc
2155$startsh
2156EOS
2157cat <<'EOSC' >>checkcc
2158case "$cc" in
2159'') ;;
2160*) $rm -f try try.*
2161 $cat >try.c <<EOM
2162int main(int argc, char *argv[]) {
2163 return 0;
2164}
2165EOM
e4778687 2166 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2167 :
2168 else
2169 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2170 despair=yes
2171 trygcc=yes
2172 case "$cc" in
2173 *gcc*) trygcc=no ;;
2174 esac
2175 case "`$cc -v -c try.c 2>&1`" in
2176 *gcc*) trygcc=no ;;
2177 esac
2178 if $test X"$trygcc" = Xyes; then
2179 if gcc -o try -c try.c; then
2180 echo " "
2181 echo "You seem to have a working gcc, though." >&4
2182 rp="Would you like to use it?"
2183 dflt=y
2184 if $test -f myread; then
2185 . ./myread
2186 else
2187 if $test -f UU/myread; then
2188 . ./UU/myread
2189 else
2190 echo "Cannot find myread, sorry. Aborting." >&2
2191 exit 1
2192 fi
2193 fi
2194 case "$ans" in
e723fc21 2195 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2196 esac
2197 fi
2198 fi
2199 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2200 $cat >&4 <<EOM
2201You need to find a working C compiler.
2202Either (purchase and) install the C compiler supplied by your OS vendor,
2203or for a free C compiler try http://gcc.gnu.org/
2204I cannot continue any further, aborting.
2205EOM
2573c5f9
JH
2206 exit 1
2207 fi
2208 fi
2209 $rm -f try try.*
2210 ;;
2211esac
2212EOSC
2213
a0d0e21e
LW
2214: determine whether symbolic links are supported
2215echo " "
2216$touch blurfl
2217if $ln -s blurfl sym > /dev/null 2>&1 ; then
2218 echo "Symbolic links are supported." >&4
2219 lns="$ln -s"
2220else
2221 echo "Symbolic links are NOT supported." >&4
2222 lns="$ln"
2223fi
2224$rm -f blurfl sym
2225
dafca956
JH
2226: determine whether symbolic links are supported
2227echo " "
2228case "$lns" in
2229*"ln -s")
2230 echo "Checking how to test for symbolic links..." >&4
2231 $lns blurfl sym
4b661809 2232 if $test "X$issymlink" = X; then
73614538 2233 sh -c "PATH= test -h sym" >/dev/null 2>&1
5d644a95
MB
2234 if test $? = 0; then
2235 issymlink="test -h"
2236 fi
2237 fi
2238 if $test "X$issymlink" = X; then
73614538 2239 if $test -h >/dev/null 2>&1; then
5d644a95
MB
2240 issymlink="$test -h"
2241 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2242 fi
dafca956 2243 fi
4b661809 2244 if $test "X$issymlink" = X; then
dafca956 2245 if $test -L sym 2>/dev/null; then
5d644a95 2246 issymlink="$test -L"
dafca956
JH
2247 fi
2248 fi
4b661809 2249 if $test "X$issymlink" != X; then
5d644a95 2250 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2251 else
2252 echo "I do not know how you can test for symbolic links." >&4
2253 fi
2254 $rm -f blurfl sym
2255 ;;
2256*) echo "No symbolic links, so not testing for their testing..." >&4
2257 ;;
2258esac
2259echo " "
2260
2261
2262case "$mksymlinks" in
2263$define|true|[yY]*)
2264 case "$src" in
2265 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2266 exit 1
2267 ;;
4b661809 2268 *) case "$lns:$issymlink" in
7a800fca 2269 *"ln -s:"*"test -"?)
dafca956
JH
2270 echo "Creating the symbolic links..." >&4
2271 echo "(First creating the subdirectories...)" >&4
2272 cd ..
2273 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2274 read directory
2275 test -z "$directory" && break
2276 mkdir -p $directory
2277 done
2278 # Sanity check 1.
2279 if test ! -d t/base; then
2280 echo "Failed to create the subdirectories. Aborting." >&4
2281 exit 1
2282 fi
2283 echo "(Then creating the symlinks...)" >&4
2284 awk '{print $1}' $src/MANIFEST | while true; do
2285 read filename
2286 test -z "$filename" && break
2287 if test -f $filename; then
5d644a95 2288 if $issymlink $filename; then
dafca956
JH
2289 rm -f $filename
2290 fi
2291 fi
2292 if test -f $filename; then
2293 echo "$filename already exists, not symlinking."
2294 else
2295 ln -s $src/$filename $filename
2296 fi
2297 done
2298 # Sanity check 2.
2299 if test ! -f t/base/commonsense.t; then
2300 echo "Failed to create the symlinks. Aborting." >&4
2301 exit 1
2302 fi
2303 cd UU
2304 ;;
2305 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2306 ;;
2307 esac
2308 ;;
2309 esac
2310 ;;
2311esac
2312
5440bc8e
JH
2313
2314case "$usecrosscompile" in
2315$define|true|[yY]*)
93bc48fa 2316 $echo "Cross-compiling..."
5440bc8e
JH
2317 croak=''
2318 case "$cc" in
2319 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2320 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2321 ar=$targetarch-ar
2322 # leave out ld, choosing it is more complex
2323 nm=$targetarch-nm
2324 ranlib=$targetarch-ranlib
93bc48fa
JH
2325 $echo 'extern int foo;' > try.c
2326 set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2327 shift
2328 if $test $# -gt 0; then
2329 incpth="$incpth $*"
2330 incpth="$echo $incpth|$sed 's/^ //'"
2331 echo "Guessing incpth $incpth" >&4
2332 for i in $*; do
2333 j=`$echo $i|$sed 's,/include$,/lib,'`
2334 if $test -d $j; then
2335 libpth="$libpth $j"
2336 fi
2337 done
2338 libpth="$echo $libpth|$sed 's/^ //'"
2339 echo "Guessing libpth $libpth." >&4
2340 fi
2341 $rm -f try.c
5440bc8e
JH
2342 ;;
2343 esac
2344 case "$targetarch" in
93bc48fa
JH
2345 '') echo "Targetarch not defined." >&4; croak=y ;;
2346 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2347 esac
2348 case "$incpth" in
93bc48fa
JH
2349 '') echo "Incpth not defined." >&4; croak=y ;;
2350 *) echo "Using incpth $incpth." >&4 ;;
5440bc8e
JH
2351 esac
2352 case "$libpth" in
93bc48fa
JH
2353 '') echo "Libpth not defined." >&4; croak=y ;;
2354 *) echo "Using libpth $libpth." >&4 ;;
5440bc8e 2355 esac
93bc48fa
JH
2356 case "$usrinc" in
2357 '') for i in $incpth; do
2358 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2359 usrinc=$i
2360 echo "Guessing usrinc $usrinc." >&4
2361 break
2362 fi
2363 done
2364 case "$usrinc" in
2365 '') echo "Usrinc not defined." >&4; croak=y ;;
2366 esac
2367 ;;
2368 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2369 esac
93bc48fa
JH
2370 case "$targethost" in
2371 '') echo "Targethost not defined." >&4; croak=y ;;
2372 *) echo "Using targethost $targethost." >&4
5440bc8e 2373 esac
93bc48fa
JH
2374 locincpth=' '
2375 loclibpth=' '
5440bc8e 2376 case "$croak" in
93bc48fa 2377 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2378 esac
2379 case "$src" in
2380 /*) run=$src/Cross/run
2381 to=$src/Cross/to
2382 from=$src/Cross/from
2383 ;;
93bc48fa 2384 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e
JH
2385 run=$pwd/Cross/run
2386 to=$pwd/Cross/to
2387 from=$pwd/Cross/from
2388 ;;
2389 esac
2390 case "$targetrun" in
2391 '') targetrun=ssh ;;
2392 esac
2393 case "$targetto" in
2394 '') targetto=scp ;;
2395 esac
2396 case "$targetfrom" in
2397 '') targetfrom=scp ;;
2398 esac
2399 run=$run-$targetrun
2400 to=$to-$targetto
2401 from=$from-$targetfrom
93bc48fa
JH
2402 case "$targetdir" in
2403 '') targetdir=/tmp
2404 echo "Guessing targetdir $targetdir." >&4
2405 ;;
2406 esac
5440bc8e 2407 case "$targetuser" in
93bc48fa
JH
2408 '') targetuser=root
2409 echo "Guessing targetuser $targetuser." >&4
2410 ;;
5440bc8e
JH
2411 esac
2412 case "$targetfrom" in
2413 scp) q=-q ;;
2414 *) q='' ;;
2415 esac
2416 case "$targetrun" in
2417 ssh|rsh)
2418 cat >$run <<EOF
2419#!/bin/sh
2420exe=\$1
2421shift
2422$to \$exe
2423$targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
2424EOF
2425 ;;
93bc48fa 2426 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2427 exit 1
2428 ;;
2429 esac
2430 case "$targetto" in
2431 scp|rcp)
2432 cat >$to <<EOF
2433#!/bin/sh
2434for f in \$@
2435do
2436 $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
2437done
2438exit 0
2439EOF
2440 ;;
2441 cp) cat >$to <<EOF
2442#!/bin/sh
2443cp \$@ $targetdir/.
2444EOF
2445 ;;
93bc48fa 2446 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2447 exit 1
2448 ;;
2449 esac
2450 case "$targetfrom" in
2451 scp|rcp)
2452 cat >$from <<EOF
2453#!/bin/sh
2454for f in \$@
2455do
2456 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2457done
2458exit 0
2459EOF
2460 ;;
2461 cp) cat >$from <<EOF
2462#!/bin/sh
2463for f in \$@
2464do
2465 cp $targetdir/\$f . || exit 1
2466done
2467exit 0
2468EOF
2469 ;;
93bc48fa 2470 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2471 exit 1
2472 ;;
2473 esac
93bc48fa
JH
2474 if $test ! -f $run; then
2475 echo "Target 'run' script '$run' not found." >&4
5440bc8e
JH
2476 else
2477 chmod a+rx $run
2478 fi
93bc48fa
JH
2479 if $test ! -f $to; then
2480 echo "Target 'to' script '$to' not found." >&4
5440bc8e
JH
2481 else
2482 chmod a+rx $to
2483 fi
93bc48fa
JH
2484 if $test ! -f $from; then
2485 echo "Target 'from' script '$from' not found." >&4
5440bc8e
JH
2486 else
2487 chmod a+rx $from
2488 fi
93bc48fa 2489 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2490 exit 1
2491 fi
2492 cat >&4 <<EOF
93bc48fa
JH
2493Using '$run' for remote execution, and '$from' and '$to'
2494for remote file transfer.
5440bc8e
JH
2495EOF
2496 ;;
2497*) run=''
2498 to=:
2499 from=:
2500 usecrosscompile='undef'
2501 targetarch=''
2502 ;;
2503esac
2504
ecfc5424
AD
2505: see whether [:lower:] and [:upper:] are supported character classes
2506echo " "
ecfc5424
AD
2507case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2508ABYZ)
2509 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2510 up='[:upper:]'
2511 low='[:lower:]'
2512 ;;
28e8609d
JH
2513*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2514 # (0xc9 and 0xd1), therefore that is a nice testing point.
2515 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2516 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2517 ij) up='[A-Z]'
2518 low='[a-z]'
2519 ;;
2520 esac
2521 fi
2522 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2523 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2524 ij) up='A-Z'
2525 low='a-z'
2526 ;;
2527 esac
2528 fi
2529 if test "X$up" = X -o "X$low" = X; then
2530 case "`echo IJ | od -x 2>/dev/null`" in
2531 *C9D1*|*c9d1*)
2532 echo "Hey, this might be EBCDIC." >&4
2533 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2534 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2535 ij) up='[A-IJ-RS-Z]'
2536 low='[a-ij-rs-z]'
2537 ;;
2538 esac
2539 fi
2540 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2541 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2542 ij) up='A-IJ-RS-Z'
2543 low='a-ij-rs-z'
2544 ;;
2545 esac
2546 fi
2547 ;;
2548 esac
2549 fi
2550esac
3eaeeeae 2551case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2552ij)
2553 echo "Using $up and $low to convert case." >&4
2554 ;;
ecfc5424 2555*)
28e8609d
JH
2556 echo "I don't know how to translate letters from upper to lower case." >&4
2557 echo "Your tr is not acting any way I know of." >&4
2558 exit 1
2559 ;;
ecfc5424
AD
2560esac
2561: set up the translation script tr, must be called with ./tr of course
2562cat >tr <<EOSC
2563$startsh
2564case "\$1\$2" in
2565'[A-Z][a-z]') exec $tr '$up' '$low';;
2566'[a-z][A-Z]') exec $tr '$low' '$up';;
2567esac
2568exec $tr "\$@"
2569EOSC
2570chmod +x tr
2571$eunicefix tr
2572
2304df62
AD
2573: Try to determine whether config.sh was made on this system
2574case "$config_sh" in
2575'')
43999f95
JH
2576myuname=`$uname -a 2>/dev/null`
2577$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2578# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2579# because the A-Z/a-z are not consecutive.
a0d0e21e 2580myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2581 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2582newmyuname="$myuname"
2304df62 2583dflt=n
16d20bd9
AD
2584case "$knowitall" in
2585'')
2586 if test -f ../config.sh; then
2587 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2588 eval "`grep myuname= ../config.sh`"
2589 fi
2590 if test "X$myuname" = "X$newmyuname"; then
2591 dflt=y
2592 fi
2304df62 2593 fi
16d20bd9
AD
2594 ;;
2595*) dflt=y;;
2596esac
2304df62
AD
2597
2598: Get old answers from old config file if Configure was run on the
2599: same system, otherwise use the hints.
2600hint=default
2601cd ..
2602if test -f config.sh; then
16d20bd9
AD
2603 echo " "
2604 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2605 . UU/myread
2606 case "$ans" in
f83701cd
AD
2607 n*|N*) echo "OK, I'll ignore it."
2608 mv config.sh config.sh.old
2609 myuname="$newmyuname"
2610 ;;
2304df62 2611 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2612 tmp_n="$n"
2613 tmp_c="$c"
85cad39c 2614 tmp_sh="$sh"
2304df62
AD
2615 . ./config.sh
2616 cp config.sh UU
ecfc5424
AD
2617 n="$tmp_n"
2618 c="$tmp_c"
85cad39c 2619 : Older versions did not always set $sh. Catch re-use of such
2620 : an old config.sh.
2621 case "$sh" in
2622 '') sh="$tmp_sh" ;;
2623 esac
2304df62
AD
2624 hint=previous
2625 ;;
2626 esac
2627fi
2573c5f9 2628. ./UU/checkcc
2304df62
AD
2629if test ! -f config.sh; then
2630 $cat <<EOM
2631
4e2a5f63
AD
2632First time through, eh? I have some defaults handy for some systems
2633that need some extra help getting the Configure answers right:
2304df62
AD
2634
2635EOM
dfe9444c 2636 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2637 dflt=''
2638 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2639 : tests or hints, please send them to perlbug@perl.org
2304df62 2640 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2641 $test -f /irix && osname=irix
85e6fe83
LW
2642 $test -f /xenix && osname=sco_xenix
2643 $test -f /dynix && osname=dynix
2644 $test -f /dnix && osname=dnix
5f05dabc 2645 $test -f /lynx.os && osname=lynxos
2646 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2647 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2648 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2649 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2650 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2651 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2652 $test -d /usr/apollo/bin && osname=apollo
2653 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2654 $test -d /usr/include/minix && osname=minix
e060872b 2655 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2656 osname=machten
4633a7c4 2657 if $test -x /sbin/version; then
dfe9444c 2658 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2659 $sed -e 's/[A-Za-z]$//'`
2660 elif $test -x /usr/etc/version; then
dfe9444c 2661 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2662 $sed -e 's/[A-Za-z]$//'`
2663 else
2664 osvers="$2.$3"
2665 fi
2666 fi
aaacdc8b
GS
2667
2668 $test -f /sys/posix.dll &&
2669 $test -f /usr/bin/what &&
2670 set X `/usr/bin/what /sys/posix.dll` &&
2671 $test "$3" = UWIN &&
2672 osname=uwin &&
2673 osvers="$5"
2674
2304df62
AD
2675 if $test -f $uname; then
2676 set X $myuname
2677 shift
2678
2304df62 2679 case "$5" in
85e6fe83 2680 fps*) osname=fps ;;
2304df62
AD
2681 mips*)
2682 case "$4" in
85e6fe83
LW
2683 umips) osname=umips ;;
2684 *) osname=mips ;;
2304df62 2685 esac;;
85e6fe83
LW
2686 [23]100) osname=mips ;;
2687 next*) osname=next ;;
ecfc5424 2688 i386*)
c6912327
JH
2689 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2690 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2691 osname='sco'
2692 osvers=$tmp
2693 elif $test -f /etc/kconfig; then
ecfc5424 2694 osname=isc
bd628c73 2695 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2696 osvers=4
2697 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2698 osvers=3
2304df62 2699 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2700 osvers=2
ecfc5424
AD
2701 fi
2702 fi
2000072c 2703 tmp=''
ecfc5424 2704 ;;
c4f23d77
AD
2705 pc*)
2706 if test -n "$DJGPP"; then
2707 osname=dos
2708 osvers=djgpp
2709 fi
2710 ;;
2304df62
AD
2711 esac
2712
2713 case "$1" in
a0d0e21e
LW
2714 aix) osname=aix
2715 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2716 case "$tmp" in
1aef975c 2717 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2718 '<3240'|'<>3240') osvers=3.2.0 ;;
2719 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2720 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2721 *) osvers=$tmp;;
a0d0e21e
LW
2722 esac
2723 ;;
aaacdc8b
GS
2724 bsd386) osname=bsd386
2725 osvers=`$uname -r`
2726 ;;
2727 cygwin*) osname=cygwin
2728 osvers="$3"
2729 ;;
23f87696
SZ
2730 *dc.osx) osname=dcosx
2731 osvers="$3"
2732 ;;
a0d0e21e
LW
2733 dnix) osname=dnix
2734 osvers="$3"
2735 ;;
2736 domainos) osname=apollo
2737 osvers="$3"
2738 ;;
2739 dgux) osname=dgux
2740 osvers="$3"
2741 ;;
760ac839 2742 dynixptx*) osname=dynixptx
e58e581d 2743 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2744 ;;
a0d0e21e
LW
2745 freebsd) osname=freebsd
2746 osvers="$3" ;;
2747 genix) osname=genix ;;
2748 hp*) osname=hpux
bfb7748a 2749 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2750 ;;
a78b0d02 2751 irix*) osname=irix
a0d0e21e
LW
2752 case "$3" in
2753 4*) osvers=4 ;;
2754 5*) osvers=5 ;;
ecfc5424 2755 *) osvers="$3" ;;
a0d0e21e
LW
2756 esac
2757 ;;
2758 linux) osname=linux
2759 case "$3" in
a0d0e21e
LW
2760 *) osvers="$3" ;;
2761 esac
2762 ;;
28e8609d
JH
2763 MiNT) osname=mint
2764 ;;
2765 netbsd*) osname=netbsd
ecfc5424
AD
2766 osvers="$3"
2767 ;;
4e81affe
MM
2768 news-os) osvers="$3"
2769 case "$3" in
2770 4*) osname=newsos4 ;;
2771 *) osname=newsos ;;
2772 esac
2773 ;;
aaacdc8b 2774 next*) osname=next ;;
28bb1e2c 2775 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2776 POSIX-BC | posix-bc ) osname=posix-bc
2777 osvers="$3"
a0d0e21e 2778 ;;
ae3afa4e
TH
2779 powerux | power_ux | powermax_os | powermaxos | \
2780 powerunix | power_unix) osname=powerux
2781 osvers="$3"
2782 ;;
aaacdc8b
GS
2783 qnx) osname=qnx
2784 osvers="$4"
2785 ;;
a0d0e21e
LW
2786 solaris) osname=solaris
2787 case "$3" in
2788 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2789 *) osvers="$3" ;;
a0d0e21e
LW
2790 esac
2791 ;;
85e6fe83
LW
2792 sunos) osname=sunos
2793 case "$3" in
85e6fe83
LW
2794 5*) osname=solaris
2795 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2796 *) osvers="$3" ;;
2304df62
AD
2797 esac
2798 ;;
a0d0e21e 2799 titanos) osname=titanos
85e6fe83 2800 case "$3" in
a0d0e21e
LW
2801 1*) osvers=1 ;;
2802 2*) osvers=2 ;;
2803 3*) osvers=3 ;;
2804 4*) osvers=4 ;;
ecfc5424 2805 *) osvers="$3" ;;
2304df62
AD
2806 esac
2807 ;;
85e6fe83 2808 ultrix) osname=ultrix
ecfc5424 2809 osvers="$3"
2304df62 2810 ;;
28757baa 2811 osf1|mls+) case "$5" in
fed7345c
AD
2812 alpha)
2813 osname=dec_osf
2aa76180
JH
2814 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2815 case "$osvers" in
2816 [1-9].[0-9]*) ;;
2817 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2818 esac
ecfc5424
AD
2819 ;;
2820 hp*) osname=hp_osf1 ;;
2821 mips) osname=mips_osf1 ;;
85e6fe83
LW
2822 esac
2823 ;;
0337d152
BG
2824 unixware) osname=svr5
2825 osvers="$4"
2826 ;;
2827 uts) osname=uts
a0d0e21e
LW
2828 osvers="$3"
2829 ;;
85e6fe83 2830 $2) case "$osname" in
2304df62 2831 *isc*) ;;
a0d0e21e 2832 *freebsd*) ;;
5f05dabc 2833 svr*)
a0d0e21e
LW
2834 : svr4.x or possibly later
2835 case "svr$3" in
2836 ${osname}*)
2837 osname=svr$3
2838 osvers=$4
2839 ;;
2840 esac
2841 case "$osname" in
2842 svr4.0)
2843 : Check for ESIX
2844 if test -f /stand/boot ; then
2845 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2846 if test -n "$INITPROG" -a -f "$INITPROG"; then
2847 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2848 if test -n "$isesix"; then
a0d0e21e
LW
2849 osname=esix4
2850 fi
2851 fi
2852 fi
2853 ;;
2854 esac
2855 ;;
2304df62 2856 *) if test -f /etc/systemid; then
a0d0e21e
LW
2857 osname=sco
2858 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2859 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2860 osvers=$1.$2.$3
c4f23d77 2861 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2862 osvers=$1.$2
c4f23d77 2863 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2864 osvers=$1
2304df62 2865 fi
a0d0e21e
LW
2866 else
2867 case "$osname" in
2868 '') : Still unknown. Probably a generic Sys V.
2869 osname="sysv"
2870 osvers="$3"
2871 ;;
2872 esac
2304df62
AD
2873 fi
2874 ;;
2875 esac
2876 ;;
a0d0e21e
LW
2877 *) case "$osname" in
2878 '') : Still unknown. Probably a generic BSD.
2879 osname="$1"
2880 osvers="$3"
2881 ;;
2882 esac
2883 ;;
2304df62
AD
2884 esac
2885 else
dfe9444c
AD
2886 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2887 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2888 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2889 osname=news_os
2304df62 2890 fi
dfe9444c 2891 $rm -f UU/kernel.what
8e07c86e
AD
2892 elif test -d c:/.; then
2893 set X $myuname
2894 osname=os2
2895 osvers="$5"
2304df62
AD
2896 fi
2897 fi
85e6fe83 2898
5440bc8e
JH
2899 case "$targetarch" in
2900 '') ;;
2901 *) hostarch=$osname
2902 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2903 osvers=''
2904 ;;
2905 esac
2906
a0d0e21e
LW
2907 : Now look for a hint file osname_osvers, unless one has been
2908 : specified already.
2909 case "$hintfile" in
2910 ''|' ')
1e127011 2911 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2912 : Also try without trailing minor version numbers.
1e127011
DD
2913 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2914 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2915 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2916 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2917 case "$file" in
2918 '') dflt=none ;;
2919 *) case "$osvers" in
2920 '') dflt=$file
2921 ;;
dfe9444c 2922 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2923 dflt=$file
dfe9444c 2924 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2925 dflt=$xfile
dfe9444c 2926 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2927 dflt=$xxfile
dfe9444c 2928 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2929 dflt=$xxxfile
dfe9444c 2930 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2931 dflt=$xxxxfile
dfe9444c 2932 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2933 dflt="${osname}"
2934 else
2935 dflt=none
2936 fi
2937 ;;
2938 esac
85e6fe83
LW
2939 ;;
2940 esac
4e2a5f63
AD
2941 if $test -f Policy.sh ; then
2942 case "$dflt" in
2943 *Policy*) ;;
2944 none) dflt="Policy" ;;
2945 *) dflt="Policy $dflt" ;;
2946 esac
2947 fi
85e6fe83 2948 ;;
a0d0e21e 2949 *)
ecfc5424 2950 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2951 ;;
2304df62 2952 esac
1aef975c 2953
4e2a5f63
AD
2954 if $test -f Policy.sh ; then
2955 $cat <<EOM
2956
2957There's also a Policy hint file available, which should make the
2958site-specific (policy) questions easier to answer.
2959EOM
2960
2961 fi
2962
2304df62
AD
2963 $cat <<EOM
2964
2965You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2966A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2967is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2968
2969EOM
4e2a5f63 2970
2304df62 2971 rp="Which of these apply, if any?"
dfe9444c 2972 . UU/myread
85e6fe83
LW
2973 tans=$ans
2974 for file in $tans; do
4e2a5f63
AD
2975 if $test X$file = XPolicy -a -f Policy.sh; then
2976 . Policy.sh
2977 $cat Policy.sh >> UU/config.sh
2978 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2979 . $src/hints/$file.sh
2980 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 2981 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
2982 : nothing
2983 else
85e6fe83
LW
2984 : Give one chance to correct a possible typo.
2985 echo "$file.sh does not exist"
2986 dflt=$file
2987 rp="hint to use instead?"
dfe9444c 2988 . UU/myread
85e6fe83 2989 for file in $ans; do
dfe9444c
AD
2990 if $test -f "$src/hints/$file.sh"; then
2991 . $src/hints/$file.sh
2992 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2993 elif $test X$ans = X -o X$ans = Xnone ; then
2994 : nothing
2995 else
2996 echo "$file.sh does not exist -- ignored."
2997 fi
2998 done
2304df62
AD
2999 fi
3000 done
85e6fe83 3001
2304df62 3002 hint=recommended
85e6fe83 3003 : Remember our hint file for later.
dfe9444c 3004 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3005 hintfile="$file"
85e6fe83 3006 else
a0d0e21e 3007 hintfile=''
85e6fe83 3008 fi
2304df62
AD
3009fi
3010cd UU
3011;;
3012*)
3013 echo " "
3014 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3015 tmp_n="$n"
3016 tmp_c="$c"
2304df62
AD
3017 cd ..
3018 cp $config_sh config.sh 2>/dev/null
a78b0d02 3019 chmod +w config.sh
2304df62
AD
3020 . ./config.sh
3021 cd UU
3022 cp ../config.sh .
ecfc5424
AD
3023 n="$tmp_n"
3024 c="$tmp_c"
2304df62
AD
3025 hint=previous
3026 ;;
3027esac
1aef975c 3028test "$override" && . ./optdef.sh
2304df62
AD
3029
3030: Restore computed paths
3031for file in $loclist $trylist; do
3032 eval $file="\$_$file"
3033done
3034
85e6fe83 3035cat << EOM
a0d0e21e 3036
85e6fe83 3037Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3038The default value is probably right if the name rings a bell. Otherwise,
3039since spelling matters for me, either accept the default or answer "none"
3040to leave it blank.
a0d0e21e 3041
85e6fe83 3042EOM
85e6fe83 3043case "$osname" in
a0d0e21e 3044 ''|' ')
85e6fe83 3045 case "$hintfile" in
a0d0e21e 3046 ''|' '|none) dflt=none ;;
ecfc5424 3047 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3048 esac
3049 ;;
3050 *) dflt="$osname" ;;
3051esac
3052rp="Operating system name?"
3053. ./myread
3054case "$ans" in
ecfc5424
AD
3055none) osname='' ;;
3056*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3057esac
8ff267be 3058echo " "
3059case "$osvers" in
3060 ''|' ')
3061 case "$hintfile" in
3062 ''|' '|none) dflt=none ;;
3063 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3064 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3065 case "$dflt" in
3066 ''|' ') dflt=none ;;
3067 esac
3068 ;;
3069 esac
3070 ;;
3071 *) dflt="$osvers" ;;
3072esac
3073rp="Operating system version?"
3074. ./myread
3075case "$ans" in
3076none) osvers='' ;;
3077*) osvers="$ans" ;;
3078esac
3079
02e93a22
JH
3080
3081. ./posthint.sh
3082
2304df62 3083: who configured the system
59b83a6f 3084cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3085cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3086case "$cf_by" in
3087"")
8ff267be 3088 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3089 case "$cf_by" in
3090 "") cf_by=unknown ;;
8ff267be 3091 esac ;;
3092esac
2304df62 3093
b4eb6b3d
JH
3094: set up the script used to warn in case of inconsistency
3095cat <<EOS >whoa
3096$startsh
3097EOS
3098cat <<'EOSC' >>whoa
3099dflt=y
3100echo " "
3101echo "*** WHOA THERE!!! ***" >&4
3102echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3103rp=" Keep the $hint value?"
3104. ./myread
3105case "$ans" in
3106y) td=$was; tu=$was;;
3107esac
3108EOSC
3109
3110: function used to set $1 to $val
3111setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3112case "$val$was" in
3113$define$undef) . ./whoa; eval "$var=\$td";;
3114$undef$define) . ./whoa; eval "$var=\$tu";;
3115*) eval "$var=$val";;
3116esac'
3117
3118case "$usethreads" in
3119$define|true|[yY]*) dflt='y';;
3120*) dflt='n';;
3121esac
3122cat <<EOM
3123
3124Perl can be built to take advantage of threads on some systems.
3125To do so, Configure can be run with -Dusethreads.
3126
3127Note that threading is a highly experimental feature, and
3128some known race conditions still remain. If you choose to try
3129it, be very sure to not actually deploy it for production
3130purposes. README.threads has more details, and is required
3131reading if you enable threads.
3132
3133If this doesn't make any sense to you, just accept the default '$dflt'.
3134EOM
3135rp='Build a threading Perl?'
3136. ./myread
3137case "$ans" in
3138y|Y) val="$define" ;;
3139*) val="$undef" ;;
3140esac
3141set usethreads
3142eval $setvar
3143
3144case "$usethreads" in
3145$define)
3146 $cat <<EOM
3147
3148As of 5.5.640, Perl has two different internal threading implementations,
3149the 5.005 version (5005threads) and an interpreter-based version
3150(ithreads) that has one interpreter per thread. Both are very
3151experimental. This arrangement exists to help developers work out
3152which one is better.
3153
3154If you're a casual user, you probably don't want interpreter-threads
3155at this time. There doesn't yet exist a way to create threads from
3156within Perl in this model, i.e., "use Thread;" will NOT work.
3157EOM
3158 : Default to ithreads unless overridden on command line or with
3159 : old config.sh
3160 dflt='y'
3161 case "$use5005threads" in
3162 $define|true|[yY]*) dflt='n';;
3163 esac
3164 case "$useithreads" in
3165 $undef|false|[nN]*) dflt='n';;
3166 esac
3167 rp='Use interpreter-based ithreads?'
3168 . ./myread
3169 case "$ans" in
3170 y|Y) val="$define" ;;
3171 *) val="$undef" ;;
3172 esac
3173 set useithreads
3174 eval $setvar
3175 : Now set use5005threads to the opposite value.
3176 case "$useithreads" in
3177 $define) val="$undef" ;;
3178 *) val="$define" ;;
3179 esac
3180 set use5005threads
3181 eval $setvar
3182 ;;
3183*)
3184 useithreads="$undef"
3185 use5005threads="$undef"
3186 ;;
3187esac
3188
c915ce7f
JH
3189case "$useithreads$use5005threads" in
3190"$define$define")
3191 $cat >&4 <<EOM
3192
3193You cannot have both the ithreads and the 5.005 threads enabled
3194at the same time. Disabling the 5.005 threads since they are
3195much less stable than the ithreads.
3196
3197EOM
3198 use5005threads="$undef"
3199 ;;
3200esac
3201
b4eb6b3d
JH
3202case "$d_oldpthreads" in
3203'') : Configure tests would be welcome here. For now, assume undef.
3204 val="$undef" ;;
3205*) val="$d_oldpthreads" ;;
3206esac
3207set d_oldpthreads
3208eval $setvar
3209
3210
3211case "$usethreads" in
3212"$define"|true|[yY]*)
3213: Look for a hint-file generated 'call-back-unit'. If the
3214: user has specified that a threading perl is to be built,
3215: we may need to set or change some other defaults.
3216 if $test -f usethreads.cbu; then
3217 echo "Your platform has some specific hints for threaded builds, using them..."
3218 . ./usethreads.cbu
3219 else
3220 $cat <<EOM
3221(Your platform doesn't have any specific hints for threaded builds.
3222 Assuming POSIX threads, then.)
3223EOM
3224 fi
3225 ;;
3226esac
3227
3228cat <<EOM
3229
3230Perl can be built so that multiple Perl interpreters can coexist
3231within the same Perl executable.
3232EOM
3233
3234case "$useithreads" in
3235$define)
3236 cat <<EOM
3237This multiple interpreter support is required for interpreter-based threads.
3238EOM
3239 val="$define"
3240 ;;
3241*) case "$usemultiplicity" in
3242 $define|true|[yY]*) dflt='y';;
3243 *) dflt='n';;
3244 esac
3245 echo " "
3246 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3247 rp='Build Perl for multiplicity?'
3248 . ./myread
3249 case "$ans" in
3250 y|Y) val="$define" ;;
3251 *) val="$undef" ;;
3252 esac
3253 ;;
3254esac
3255set usemultiplicity
3256eval $setvar
3257
e5e20432
JH
3258: make some quick guesses about what we are up against
3259echo " "
3260$echo $n "Hmm... $c"
3261echo exit 1 >bsd
3262echo exit 1 >usg
3263echo exit 1 >v7
3264echo exit 1 >osf1
3265echo exit 1 >eunice
3266echo exit 1 >xenix
3267echo exit 1 >venix
3268echo exit 1 >os2
3269d_bsd="$undef"
3270$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3271if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3272then
3273 echo "Looks kind of like an OSF/1 system, but we'll see..."
3274 echo exit 0 >osf1
381aa1ff 3275elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3276 xxx=`./loc addbib blurfl $pth`
3277 if $test -f $xxx; then
3278 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3279 echo exit 0 >bsd
3280 echo exit 0 >usg
3281 else
3282 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3283 echo "Looks kind of like an extended USG system, but we'll see..."
3284 else
3285 echo "Looks kind of like a USG system, but we'll see..."
3286 fi
3287 echo exit 0 >usg
3288 fi
3289elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3290 echo "Looks kind of like a BSD system, but we'll see..."
3291 d_bsd="$define"
3292 echo exit 0 >bsd
3293else
3294 echo "Looks kind of like a Version 7 system, but we'll see..."
3295 echo exit 0 >v7
3296fi
3297case "$eunicefix" in
3298*unixtovms*)
3299 $cat <<'EOI'
3300There is, however, a strange, musty smell in the air that reminds me of
3301something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3302EOI
3303 echo exit 0 >eunice
3304 d_eunice="$define"
3305: it so happens the Eunice I know will not run shell scripts in Unix format
3306 ;;
3307*)
3308 echo " "
3309 echo "Congratulations. You aren't running Eunice."
3310 d_eunice="$undef"
3311 ;;
3312esac
3313: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3314: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3315: semicolon as a patch separator
e5e20432
JH
3316case "$p_" in
3317:) ;;
3318*)
3319 $cat <<'EOI'
3320I have the feeling something is not exactly right, however...don't tell me...
3321lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3322(Or you may be running DOS with DJGPP.)
e5e20432
JH
3323EOI
3324 echo exit 0 >os2
3325 ;;
3326esac
3327if test -f /xenix; then
3328 echo "Actually, this looks more like a XENIX system..."
3329 echo exit 0 >xenix
3330 d_xenix="$define"
3331else
3332 echo " "
3333 echo "It's not Xenix..."
3334 d_xenix="$undef"
3335fi
3336chmod +x xenix
3337$eunicefix xenix
3338if test -f /venix; then
3339 echo "Actually, this looks more like a VENIX system..."
3340 echo exit 0 >venix
3341else
3342 echo " "
3343 if ./xenix; then
3344 : null
3345 else
3346 echo "Nor is it Venix..."
3347 fi
3348fi
3349chmod +x bsd usg v7 osf1 eunice xenix venix os2
3350$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3351$rm -f foo
3352
5869b1f1
JH
3353case "$cc" in
3354'') dflt=cc;;
3355*) dflt="$cc";;
3356esac
3357rp="Use which C compiler?"
3358. ./myread
3359cc="$ans"
e5e20432
JH
3360: Look for a hint-file generated 'call-back-unit'. Now that the
3361: user has specified the compiler, we may need to set or change some
3362: other defaults.
3363if $test -f cc.cbu; then
3364 . ./cc.cbu
3365fi
2573c5f9 3366. ./checkcc
8a27cf78 3367
e5e20432
JH
3368echo " "
3369echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3370$cat >try.c <<EOM
e5e20432
JH
3371#include <stdio.h>
3372int main() {
3373#ifdef __GNUC__
3374#ifdef __VERSION__
3375 printf("%s\n", __VERSION__);
3376#else
3377 printf("%s\n", "1");
3378#endif
3379#endif
3380 exit(0);
3381}
3382EOM
5440bc8e
JH
3383if $cc -o try $ccflags $ldflags try.c; then
3384 gccversion=`$run ./try`
e5e20432
JH
3385 case "$gccversion" in
3386 '') echo "You are not using GNU cc." ;;
fc68435e 3387 *) echo "You are using GNU cc $gccversion."
e723fc21 3388 ccname=gcc
fc68435e 3389 ;;
e5e20432
JH
3390 esac
3391else
3392 echo " "
3393 echo "*** WHOA THERE!!! ***" >&4
3394 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3395 case "$knowitall" in
3396 '')
3397 echo " You'd better start hunting for one and let me know about it." >&4
3398 exit 1
3399 ;;
3400 esac
3401fi
5440bc8e 3402$rm -f try try.*
e5e20432
JH
3403case "$gccversion" in
34041*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3405esac
5b463ca7
KS
3406case "$gccversion" in
3407'') gccosandvers='' ;;
10b4ebb5
JH
3408*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3409 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3410 gccshortvers=''
5b463ca7 3411 case "$gccosandvers" in
02903077
JH
3412 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3413 $osname$osvers) ;; # looking good
5b463ca7
KS
3414 $osname*) cat <<EOM >&4
3415
3416*** WHOA THERE!!! ***
3417
3418 Your gcc has not been compiled for the exact release of
3419 your operating system ($gccosandvers versus $osname$osvers).
3420
3421 In general it is a good idea to keep gcc synchronized with
3422 the operating system because otherwise serious problems
3423 may ensue when trying to compile software, like Perl.
3424
3425 I'm trying to be optimistic here, though, and will continue.
3426 If later during the configuration and build icky compilation
02903077
JH
3427 problems appear (headerfile conflicts being the most common
3428 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3429 your operating system release.
3430
3431EOM
3432 ;;
81575342 3433 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3434 esac
3435 ;;
3436esac
e723fc21
JH
3437case "$ccname" in
3438'') ccname="$cc" ;;
3439esac
e5e20432 3440
640374d0
JH
3441case "$gccversion" in
3442'') ;;
3443*) case "$ccflags" in
3444 *-Wall*) ;;
a126002e 3445 *) ccflags="$ccflags -Wall" ;;
640374d0
JH
3446 esac
3447 ;;
3448esac
3449
8a27cf78
JH
3450: see how we invoke the C preprocessor
3451echo " "
3452echo "Now, how can we feed standard input to your C preprocessor..." >&4
3453cat <<'EOT' >testcpp.c
3454#define ABC abc
3455#define XYZ xyz
3456ABC.XYZ
3457EOT
3458cd ..
3459if test ! -f cppstdin; then
3460 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3461 # AIX cc -E doesn't show the absolute headerfile
3462 # locations but we'll cheat by using the -M flag.
3463 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
3464 else
3465 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3466 fi
3467else
3468 echo "Keeping your $hint cppstdin wrapper."
3469fi
3470chmod 755 cppstdin
3471wrapper=`pwd`/cppstdin
3472ok='false'
3473cd UU
3474
3475if $test "X$cppstdin" != "X" && \
3476 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3477 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3478then
3479 echo "You used to use $cppstdin $cppminus so we'll use that again."
3480 case "$cpprun" in
3481 '') echo "But let's see if we can live without a wrapper..." ;;
3482 *)
3483 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3484 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3485 then
3486 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3487 ok='true'
3488 else
3489 echo "(However, $cpprun $cpplast does not work, let's see...)"
3490 fi
3491 ;;
3492 esac
3493else
3494 case "$cppstdin" in
3495 '') ;;
3496 *)
3497 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3498 ;;
3499 esac
3500fi
3501
3502if $ok; then
3503 : nothing
3504elif echo 'Maybe "'"$cc"' -E" will work...'; \
3505 $cc -E <testcpp.c >testcpp.out 2>&1; \
3506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507 echo "Yup, it does."
3508 x_cpp="$cc -E"
3509 x_minus='';
3510elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3511 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3512 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513 echo "Yup, it does."
3514 x_cpp="$cc -E"
3515 x_minus='-';
3516elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3517 $cc -P <testcpp.c >testcpp.out 2>&1; \
3518 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519 echo "Yipee, that works!"
3520 x_cpp="$cc -P"
3521 x_minus='';
3522elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3523 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3524 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3525 echo "At long last!"
3526 x_cpp="$cc -P"
3527 x_minus='-';
3528elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3529 $cpp <testcpp.c >testcpp.out 2>&1; \
3530 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3531 echo "It works!"
3532 x_cpp="$cpp"
3533 x_minus='';
3534elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3535 $cpp - <testcpp.c >testcpp.out 2>&1; \
3536 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3537 echo "Hooray, it works! I was beginning to wonder."
3538 x_cpp="$cpp"
3539 x_minus='-';
3540elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3541 $wrapper <testcpp.c >testcpp.out 2>&1; \
3542 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3543 x_cpp="$wrapper"
3544 x_minus=''
3545 echo "Eureka!"
3546else
3547 dflt=''
3548 rp="No dice. I can't find a C preprocessor. Name one:"
3549 . ./myread
3550 x_cpp="$ans"
3551 x_minus=''
3552 $x_cpp <testcpp.c >testcpp.out 2>&1
3553 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3554 echo "OK, that will do." >&4
3555 else
3556echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3557 exit 1
3558 fi
3559fi
3560
3561case "$ok" in
3562false)
3563 cppstdin="$x_cpp"
3564 cppminus="$x_minus"
3565 cpprun="$x_cpp"
3566 cpplast="$x_minus"
3567 set X $x_cpp
3568 shift
3569 case "$1" in
3570 "$cpp")
3571 echo "Perhaps can we force $cc -E using a wrapper..."
3572 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3573 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3574 then
3575 echo "Yup, we can."
3576 cppstdin="$wrapper"
3577 cppminus='';
3578 else
3579 echo "Nope, we'll have to live without it..."
3580 fi
3581 ;;
3582 esac
3583 case "$cpprun" in
3584 "$wrapper")
3585 cpprun=''
3586 cpplast=''
3587 ;;
3588 esac
3589 ;;
3590esac
3591
3592case "$cppstdin" in
3593"$wrapper"|'cppstdin') ;;
3594*) $rm -f $wrapper;;
3595esac
3596$rm -f testcpp.c testcpp.out
3597
bd9b35c9
JH
3598: decide how portable to be. Allow command line overrides.
3599case "$d_portable" in
3600"$undef") ;;
3601*) d_portable="$define" ;;
104d25b7 3602esac
85ab1d1d 3603
bd9b35c9
JH
3604: set up shell script to do ~ expansion
3605cat >filexp <<EOSS
3606$startsh
3607: expand filename
3608case "\$1" in
3609 ~/*|~)
3610 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3611 ;;
3612 ~*)
3613 if $test -f /bin/csh; then
3614 /bin/csh -f -c "glob \$1"
3615 failed=\$?
3616 echo ""
3617 exit \$failed
e5e20432 3618 else
bd9b35c9
JH
3619 name=\`$expr x\$1 : '..\([^/]*\)'\`
3620 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3621 if $test ! -d "\$dir"; then
3622 me=\`basename \$0\`
3623 echo "\$me: can't locate home directory for: \$name" >&2
3624 exit 1
3625 fi
3626 case "\$1" in
3627 */*)
3628 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3629 ;;
3630 *)
3631 echo \$dir
e5e20432
JH
3632 ;;
3633 esac
3634 fi
b691c02f 3635 ;;
4633a7c4 3636*)
bd9b35c9 3637 echo \$1
2304df62
AD
3638 ;;
3639esac
4633a7c4
LW
3640EOSS
3641chmod +x filexp
3642$eunicefix filexp
2304df62
AD
3643
3644: now set up to get a file name
28757baa 3645cat <<EOS >getfile
3646$startsh
3647EOS
3648cat <<'EOSC' >>getfile
2304df62
AD
3649tilde=''
3650fullpath=''
3651already=''
3652skip=''
3653none_ok=''
3654exp_file=''
a0d0e21e 3655nopath_ok=''
2304df62
AD
3656orig_rp="$rp"
3657orig_dflt="$dflt"
b233458b
JH
3658case "$gfpth" in
3659'') gfpth='.' ;;
3660esac
2304df62
AD
3661
3662case "$fn" in
ecfc5424 3663*\(*)
381aa1ff 3664 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3665 fn=`echo $fn | sed 's/(.*)//'`
3666 ;;
3667esac
3668
3669case "$fn" in
a0d0e21e
LW
3670*:*)
3671 loc_file=`expr $fn : '.*:\(.*\)'`
3672 fn=`expr $fn : '\(.*\):.*'`
3673 ;;
3674esac
3675
3676case "$fn" in
2304df62
AD
3677*~*) tilde=true;;
3678esac
3679case "$fn" in
3680*/*) fullpath=true;;
3681esac
3682case "$fn" in
3683*+*) skip=true;;
3684esac
3685case "$fn" in
3686*n*) none_ok=true;;
3687esac
3688case "$fn" in
3689*e*) exp_file=true;;
3690esac
a0d0e21e
LW
3691case "$fn" in
3692*p*) nopath_ok=true;;
3693esac
2304df62
AD
3694
3695case "$fn" in
3696*f*) type='File';;
3697*d*) type='Directory';;
a0d0e21e 3698*l*) type='Locate';;
2304df62
AD
3699esac
3700
3701what="$type"
3702case "$what" in
3703Locate) what='File';;
3704esac
3705
3706case "$exp_file" in
3707'')
3708 case "$d_portable" in
3709 "$define") ;;
3710 *) exp_file=true;;
3711 esac
3712 ;;
3713esac
3714
3715cd ..
3716while test "$type"; do
3717 redo=''
3718 rp="$orig_rp"
3719 dflt="$orig_dflt"
3720 case "$tilde" in
3721 true) rp="$rp (~name ok)";;
3722 esac
3723 . UU/myread
ecfc5424
AD
3724 if test -f UU/getfile.ok && \
3725 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3726 then
3727 value="$ans"
3728 ansexp="$ans"
3729 break
3730 fi
2304df62
AD
3731 case "$ans" in
3732 none)
3733 value=''
3734 ansexp=''
3735 case "$none_ok" in
3736 true) type='';;
3737 esac
3738 ;;
3739 *)
3740 case "$tilde" in
3741 '') value="$ans"
3742 ansexp="$ans";;
3743 *)
3744 value=`UU/filexp $ans`
3745 case $? in
3746 0)
3747 if test "$ans" != "$value"; then
ecfc5424 3748 echo "(That expands to $value on this system.)"
2304df62
AD
3749 fi
3750 ;;
3751 *) value="$ans";;
3752 esac
3753 ansexp="$value"
3754 case "$exp_file" in
3755 '') value="$ans";;
3756 esac
3757 ;;
3758 esac
3759 case "$fullpath" in
3760 true)
3761 case "$ansexp" in
3762 /*) value="$ansexp" ;;
23da6c43 3763 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3764 *)
3765 redo=true
3766 case "$already" in
3767 true)
3768 echo "I shall only accept a full path name, as in /bin/ls." >&4
3769 echo "Use a ! shell escape if you wish to check pathnames." >&4
3770 ;;
3771 *)
3772 echo "Please give a full path name, starting with slash." >&4
3773 case "$tilde" in
3774 true)
3775 echo "Note that using ~name is ok provided it expands well." >&4
3776 already=true
3777 ;;
3778 esac
3779 esac
3780 ;;
3781 esac
3782 ;;
3783 esac
3784 case "$redo" in
3785 '')
3786 case "$type" in
3787 File)
b233458b
JH
3788 for fp in $gfpth; do
3789 if test "X$fp" = X.; then
3790 pf="$ansexp"
3791 else
3792 pf="$fp/$ansexp"
3793 fi
3794 if test -f "$pf"; then
3795 type=''
3796 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3797 then
3798 echo "($value is not a plain file, but that's ok.)"
3799 type=''
3800 fi
3801 if test X"$type" = X; then
3802 value="$pf"
3803 break
3804 fi
3805 done
2304df62
AD
3806 ;;
3807 Directory)
b233458b
JH
3808 for fp in $gfpth; do
3809 if test "X$fp" = X.; then
f78bfc9c
JH
3810 dir="$ans"
3811 direxp="$ansexp"
b233458b 3812 else
dd858076 3813 dir="$fp/$ansexp"
f78bfc9c 3814 direxp="$fp/$ansexp"
b233458b 3815 fi
f78bfc9c 3816 if test -d "$direxp"; then
b233458b 3817 type=''
f78bfc9c 3818 value="$dir"
b233458b
JH
3819 break
3820 fi
3821 done
2304df62
AD
3822 ;;
3823 Locate)
40000a8c 3824 if test -d "$ansexp"; then
a0d0e21e
LW
3825 echo "(Looking for $loc_file in directory $value.)"
3826 value="$value/$loc_file"
40000a8c 3827 ansexp="$ansexp/$loc_file"
2304df62 3828 fi
40000a8c 3829 if test -f "$ansexp"; then
2304df62
AD
3830 type=''
3831 fi
a0d0e21e
LW
3832 case "$nopath_ok" in
3833 true) case "$value" in
3834 */*) ;;
3835 *) echo "Assuming $value will be in people's path."
3836 type=''
3837 ;;
3838 esac
3839 ;;
3840 esac
2304df62
AD
3841 ;;
3842 esac
3843
3844 case "$skip" in
3845 true) type='';
3846 esac
3847
3848 case "$type" in
3849 '') ;;
3850 *)
3851 if test "$fastread" = yes; then
3852 dflt=y
3853 else
3854 dflt=n
3855 fi
3856 rp="$what $value doesn't exist. Use that name anyway?"
3857 . UU/myread
3858 dflt=''
3859 case "$ans" in
3860 y*) type='';;
3861 *) echo " ";;
3862 esac
3863 ;;
3864 esac
3865 ;;
3866 esac
3867 ;;
3868 esac
3869done
3870cd UU
3871ans="$value"
3872rp="$orig_rp"
3873dflt="$orig_dflt"
ecfc5424 3874rm -f getfile.ok
b233458b 3875test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3876EOSC
3877
bd9b35c9
JH
3878: What should the include directory be ?
3879echo " "
3880$echo $n "Hmm... $c"
3881dflt='/usr/include'
3882incpath=''
3883mips_type=''
3884if $test -f /bin/mips && /bin/mips; then
3885 echo "Looks like a MIPS system..."
3886 $cat >usr.c <<'EOCP'
3887#ifdef SYSTYPE_BSD43
3888/bsd43
3889#endif
3890EOCP
8a27cf78 3891 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3892 dflt='/bsd43/usr/include'
3893 incpath='/bsd43'
3894 mips_type='BSD 4.3'
3895 else
3896 mips_type='System V'
3897 fi
3898 $rm -f usr.c usr.out
3899 echo "and you're compiling with the $mips_type compiler and libraries."
3900 xxx_prompt=y
3901 echo "exit 0" >mips
3902else
3903 echo "Doesn't look like a MIPS system."
3904 xxx_prompt=n
3905 echo "exit 1" >mips
3906fi
3907chmod +x mips
3908$eunicefix mips
3909case "$usrinc" in
3910'') ;;
3911*) dflt="$usrinc";;
3912esac
3913case "$xxx_prompt" in
3914y) fn=d/
3915 echo " "
3916 rp='Where are the include files you want to use?'
3917 . ./getfile
3918 usrinc="$ans"
8e07c86e 3919 ;;
bd9b35c9 3920*) usrinc="$dflt"
8e07c86e
AD
3921 ;;
3922esac
2304df62 3923
bd9b35c9
JH
3924: Set private lib path
3925case "$plibpth" in
3926'') if ./mips; then
3927 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3928 fi;;
3929esac
3930case "$libpth" in
3931' ') dlist='';;
3932'') dlist="$loclibpth $plibpth $glibpth";;
3933*) dlist="$libpth";;
3934esac
3935
3936: Now check and see which directories actually exist, avoiding duplicates
3937libpth=''
3938for xxx in $dlist
3939do
3940 if $test -d $xxx; then
3941 case " $libpth " in
3942 *" $xxx "*) ;;
3943 *) libpth="$libpth $xxx";;
3944 esac
3945 fi
3946done
3947$cat <<'EOM'
3948
3949Some systems have incompatible or broken versions of libraries. Among
3950the directories listed in the question below, please remove any you
3951know not to be holding relevant libraries, and add any that are needed.
3952Say "none" for none.
8e07c86e
AD
3953
3954EOM
bd9b35c9
JH
3955case "$libpth" in
3956'') dflt='none';;
8e07c86e 3957*)
bd9b35c9
JH
3958 set X $libpth
3959 shift
3960 dflt=${1+"$@"}
8e07c86e 3961 ;;
a0d0e21e 3962esac
bd9b35c9
JH
3963rp="Directories to use for library searches?"
3964. ./myread
3965case "$ans" in
3966none) libpth=' ';;
3967*) libpth="$ans";;
3968esac
a0d0e21e 3969
bd9b35c9
JH
3970: compute shared library extension
3971case "$so" in
3972'')
3973 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3974 dflt='sl'
dd4e71fd 3975 else
bd9b35c9 3976 dflt='so'
dd4e71fd
JH
3977 fi
3978 ;;
bd9b35c9 3979*) dflt="$so";;
dd4e71fd 3980esac
dd4e71fd
JH
3981$cat <<EOM
3982
bd9b35c9 3983On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3984you want to suppress searching of shared libraries for the remainder
bd9b35c9 3985of this configuration.
dd4e71fd
JH
3986
3987EOM
bd9b35c9
JH
3988rp='What is the file extension used for shared libraries?'
3989. ./myread
3990so="$ans"
dd4e71fd 3991
bd9b35c9
JH
3992: Define several unixisms.
3993: Hints files or command line option can be used to override them.
3994: The convoluted testing is in case hints files set either the old
3995: or the new name.
3996case "$_exe" in
3997'') case "$exe_ext" in
3998 '') ;;
3999 *) _exe="$exe_ext" ;;
dd4e71fd 4000 esac
bd9b35c9 4001 ;;
bfb7748a 4002esac
bd9b35c9
JH
4003case "$_a" in
4004'') case "$lib_ext" in
4005 '') _a='.a';;
4006 *) _a="$lib_ext" ;;
dd4e71fd
JH
4007 esac
4008 ;;
dd4e71fd 4009esac
bd9b35c9
JH
4010case "$_o" in
4011'') case "$obj_ext" in
4012 '') _o='.o';;
4013 *) _o="$obj_ext";;
4014 esac
4015 ;;
4016esac
4017case "$p_" in
4018'') case "$path_sep" in
4019 '') p_=':';;
4020 *) p_="$path_sep";;
4021 esac
4022 ;;
4023esac
4024exe_ext=$_exe
4025lib_ext=$_a
4026obj_ext=$_o
4027path_sep=$p_
dd4e71fd 4028
b4eb6b3d
JH
4029: Which makefile gets called first. This is used by make depend.
4030case "$firstmakefile" in
4031'') firstmakefile='makefile';;
4633a7c4 4032esac
4633a7c4 4033
0f0995ae
JH
4034case "$usesocks" in
4035$define|true|[yY]*) dflt='y';;
4036*) dflt='n';;
4037esac
bd9b35c9 4038cat <<EOM
4633a7c4 4039
bd9b35c9 4040Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4041Configure must be run with -Dusesocks. If you use SOCKS you also need
4042to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4043
0f0995ae 4044If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4045EOM
bd9b35c9
JH
4046rp='Build Perl for SOCKS?'
4047. ./myread
4048case "$ans" in
4049y|Y) val="$define" ;;
4050*) val="$undef" ;;
4051esac
4052set usesocks
4053eval $setvar
4054
cf829ab0
JH
4055case "$usesocks" in
4056$define|true|[yY]*) useperlio="$define";;
4057esac
4058
bd9b35c9
JH
4059: Looking for optional libraries
4060echo " "
4061echo "Checking for optional libraries..." >&4
4062case "$libs" in
4063' '|'') dflt='';;
4064*) dflt="$libs";;
4065esac
4066case "$libswanted" in
4067'') libswanted='c_s';;
4068esac
4069case "$usesocks" in
923fc586 4070"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4071esac
68435ea7
JH
4072libsfound=''
4073libsfiles=''
4074libsdirs=''
13b3f787
JH
4075libspath=''
4076for thisdir in $libpth $xlibpth; do
4077 test -d $thisdir && libspath="$libspath $thisdir"
4078done
bd9b35c9 4079for thislib in $libswanted; do
13b3f787 4080 for thisdir in $libspath; do
f7dd4e7f
JH
4081 xxx=''
4082 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4083 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4084 $test -f "$xxx" && eval $libscheck
4085 $test -f "$xxx" && libstyle=shared
4086 fi
4087 if test ! -f "$xxx"; then
4088 xxx=$thisdir/lib$thislib.$so
4089 $test -f "$xxx" && eval $libscheck
4090 $test -f "$xxx" && libstyle=shared
4091 fi
4092 if test ! -f "$xxx"; then
4093 xxx=$thisdir/lib$thislib$_a
4094 $test -f "$xxx" && eval $libscheck
4095 $test -f "$xxx" && libstyle=static
4096 fi
4097 if test ! -f "$xxx"; then
4098 xxx=$thisdir/$thislib$_a
4099 $test -f "$xxx" && eval $libscheck
4100 $test -f "$xxx" && libstyle=static
4101 fi
4102 if test ! -f "$xxx"; then
4103 xxx=$thisdir/lib${thislib}_s$_a
4104 $test -f "$xxx" && eval $libscheck
4105 $test -f "$xxx" && libstyle=static
09ea5ba9 4106 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4107 fi
4108 if test ! -f "$xxx"; then
4109 xxx=$thisdir/Slib$thislib$_a
4110 $test -f "$xxx" && eval $libscheck
4111 $test -f "$xxx" && libstyle=static
4112 fi
4113 if $test -f "$xxx"; then
43999f95 4114 case "$libstyle" in
f7dd4e7f
JH
4115 shared) echo "Found -l$thislib (shared)." ;;
4116 static) echo "Found -l$thislib." ;;
4117 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4118 esac
bd9b35c9
JH
4119 case " $dflt " in
4120 *"-l$thislib "*);;
f7dd4e7f 4121 *) dflt="$dflt -l$thislib"
43999f95
JH
4122 libsfound="$libsfound $xxx"
4123 yyy=`basename $xxx`
4124 libsfiles="$libsfiles $yyy"
1e127011 4125 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4126 case " $libsdirs " in
4127 *" $yyy "*) ;;
4128 *) libsdirs="$libsdirs $yyy" ;;
4129 esac
4130 ;;
bd9b35c9 4131 esac
f7dd4e7f
JH
4132 break
4133 fi
4134 done
4135 if $test ! -f "$xxx"; then
4136 echo "No -l$thislib."
bd9b35c9
JH
4137 fi
4138done
4139set X $dflt
4140shift
4141dflt="$*"
4142case "$libs" in
4143'') dflt="$dflt";;
4144*) dflt="$libs";;
4145esac
4146case "$dflt" in
4147' '|'') dflt='none';;
4148esac
4633a7c4 4149
bd9b35c9 4150$cat <<EOM
4633a7c4 4151
bd9b35c9
JH
4152In order to compile $package on your machine, a number of libraries
4153are usually needed. Include any other special libraries here as well.
4154Say "none" for none. The default list is almost always right.
8e07c86e 4155EOM
8e07c86e 4156
bd9b35c9
JH
4157echo " "
4158rp="What libraries to use?"
4159. ./myread
4160case "$ans" in
4161none) libs=' ';;
4162*) libs="$ans";;
4163esac
d71b2b6b 4164
bd9b35c9
JH
4165: determine optimization, if desired, or use for debug flag also
4166case "$optimize" in
4167' '|$undef) dflt='none';;
4168'') dflt='-O';;
4169*) dflt="$optimize";;
4170esac
4171$cat <<EOH
d71b2b6b 4172
bd9b35c9
JH
4173By default, $package compiles with the -O flag to use the optimizer.
4174Alternately, you might want to use the symbolic debugger, which uses
4175the -g flag (on traditional Unix systems). Either flag can be
4176specified here. To use neither flag, specify the word "none".
d71b2b6b 4177
bd9b35c9
JH
4178EOH
4179rp="What optimizer/debugger flag should be used?"
4180. ./myread
4181optimize="$ans"
4182case "$optimize" in
4183'none') optimize=" ";;
4184esac
4185
4186dflt=''
4187: We will not override a previous value, but we might want to
4188: augment a hint file
4189case "$hint" in
4190default|recommended)
4191 case "$gccversion" in
4192 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4193 esac
bd9b35c9
JH
4194 case "$optimize" in
4195 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4196 esac
bd9b35c9
JH
4197 case "$gccversion" in
4198 2*) if test -d /etc/conf/kconfig.d &&
4199 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4200 then
4201 dflt="$dflt -posix"
4202 fi
f0d04425 4203 ;;
bd9b35c9
JH
4204 esac
4205 case "$gccversion" in
4206 1*) ;;
4207 2.[0-8]*) ;;
4208 ?*) echo " "
4209 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4210 echo 'int main(void) { return 0; }' > gcctest.c
4211 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4212 echo "Yes, it does." 2>&1
4213 case "$ccflags" in
4214 *strict-aliasing*)
4215 echo "Leaving current flags $ccflags alone." 2>&1
4216 ;;
4217 *) dflt="$dflt -fno-strict-aliasing" ;;
4218 esac
4219 else
4220 echo "Nope, it doesn't, but that's ok." 2>&1
4221 fi
f0d04425 4222 ;;
e5e20432
JH
4223 esac
4224 ;;
4225esac
4226
bd9b35c9
JH
4227case "$mips_type" in
4228*BSD*|'') inclwanted="$locincpth $usrinc";;
4229*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4230esac
4231for thisincl in $inclwanted; do
4232 if $test -d $thisincl; then
4233 if $test x$thisincl != x$usrinc; then
4234 case "$dflt" in
422af00a
LC
4235 *" -I$thisincl "*);;
4236 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4237 esac
4238 fi
4239 fi
4240done
40a7a20a 4241
bd9b35c9
JH
4242inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4243 xxx=true;
4244elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4245 xxx=true;
4246else
4247 xxx=false;
4248fi;
4249if $xxx; then
4250 case "$dflt" in
4251 *$2*);;
4252 *) dflt="$dflt -D$2";;
4253 esac;
4254fi'
40a7a20a 4255
bd9b35c9 4256set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4257
bd9b35c9
JH
4258case "$usesocks" in
4259$define)
4260 ccflags="$ccflags -DSOCKS"
4261 ;;
4262esac
40a7a20a 4263
bd9b35c9
JH
4264case "$hint" in
4265default|recommended) dflt="$ccflags $dflt" ;;
4266*) dflt="$ccflags";;
4267esac
40a7a20a 4268
bd9b35c9
JH
4269case "$dflt" in
4270''|' ') dflt=none;;
4271esac
422af00a 4272
bd9b35c9 4273$cat <<EOH
40a7a20a 4274
bd9b35c9
JH
4275Your C compiler may want other flags. For this question you should include
4276-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4277but you should NOT include libraries or ld flags like -lwhatever. If you
4278want $package to honor its debug switch, you should include -DDEBUGGING here.
4279Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4280
bd9b35c9 4281To use no flags, specify the word "none".
40a7a20a 4282
bd9b35c9
JH
4283EOH
4284set X $dflt
4285shift
4286dflt=${1+"$@"}
4287rp="Any additional cc flags?"
4288. ./myread
4289case "$ans" in
4290none) ccflags='';;
4291*) ccflags="$ans";;
4292esac
8e07c86e 4293
bd9b35c9 4294: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4295case "$cppflags" in
4296'') cppflags="$ccflags" ;;
4297*) cppflags="$cppflags $ccflags" ;;
4298esac
bd9b35c9
JH
4299case "$gccversion" in
43001*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4301esac
bd9b35c9
JH
4302case "$mips_type" in
4303'');;
4304*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4305esac
4306case "$cppflags" in
4307'');;
4308*)
4309 echo " "
4310 echo "Let me guess what the preprocessor flags are..." >&4
4311 set X $cppflags
4312 shift
4313 cppflags=''
4314 $cat >cpp.c <<'EOM'
4315#define BLURFL foo
8e07c86e 4316
bd9b35c9
JH
4317BLURFL xx LFRULB
4318EOM
4319 previous=''
4320 for flag in $*
4321 do
4322 case "$flag" in
4323 -*) ftry="$flag";;
4324 *) ftry="$previous $flag";;
4325 esac
4326 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4327 >cpp1.out 2>/dev/null && \
4328 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4329 >cpp2.out 2>/dev/null && \
4330 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4331 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4332 then
4333 cppflags="$cppflags $ftry"
4334 previous=''
4335 else
4336 previous="$flag"
4337 fi
4338 done
4339 set X $cppflags
4340 shift
4341 cppflags=${1+"$@"}
4342 case "$cppflags" in
4343 *-*) echo "They appear to be: $cppflags";;
4344 esac
4345 $rm -f cpp.c cpp?.out
2afac517 4346 ;;
4347esac
8e07c86e 4348
bd9b35c9
JH
4349: flags used in final linking phase
4350case "$ldflags" in
4351'') if ./venix; then
4352 dflt='-i -z'
10a23457 4353 else
bd9b35c9 4354 dflt=''
10a23457 4355 fi
bd9b35c9
JH
4356 case "$ccflags" in
4357 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4358 esac
bd9b35c9
JH
4359 ;;
4360*) dflt="$ldflags";;
4361esac
4362
4363: Try to guess additional flags to pick up local libraries.
4364for thislibdir in $libpth; do
4365 case " $loclibpth " in
4366 *" $thislibdir "*)
4367 case "$dflt " in
4368 *"-L$thislibdir "*) ;;
4369 *) dflt="$dflt -L$thislibdir" ;;
4370 esac
c4f23d77
AD
4371 ;;
4372 esac
bd9b35c9 4373done
c4f23d77 4374
bd9b35c9
JH
4375case "$dflt" in
4376'') dflt='none' ;;
4377esac
c4f23d77 4378
bd9b35c9
JH
4379$cat <<EOH
4380
4381Your C linker may need flags. For this question you should
4382include -L/whatever and any other flags used by the C linker, but you
4383should NOT include libraries like -lwhatever.
4384
4385Make sure you include the appropriate -L/path flags if your C linker
4386does not normally search all of the directories you specified above,
4387namely
4388 $libpth
4389To use no flags, specify the word "none".
4390
4391EOH
4392
4393rp="Any additional ld flags (NOT including libraries)?"
4394. ./myread
4395case "$ans" in
4396none) ldflags='';;
4397*) ldflags="$ans";;
4398esac
4399rmlist="$rmlist pdp11"
4400
4401: coherency check
4402echo " "
4403echo "Checking your choice of C compiler and flags for coherency..." >&4
4404$cat > try.c <<'EOF'
4405#include <stdio.h>
4406int main() { printf("Ok\n"); exit(0); }
4407EOF
7a282f6d 4408set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4409shift
4410$cat >try.msg <<'EOM'
4411I've tried to compile and run the following simple program:
4412
4413EOM
4414$cat try.c >> try.msg
4415
4416$cat >> try.msg <<EOM
4417
4418I used the command:
4419
4420 $*
5440bc8e 4421 $run ./try
bd9b35c9
JH
4422
4423and I got the following output:
4424
4425EOM
4426dflt=y
73614538 4427if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4428 if $sh -c "$run ./try" >>try.msg 2>&1; then
4429 xxx=`$run ./try`
bd9b35c9
JH
4430 case "$xxx" in
4431 "Ok") dflt=n ;;
4432 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4433 case " $libs " in
4434 *" -lsfio "*)
4435 cat >> try.msg <<'EOQS'
4436If $libs contains -lsfio, and sfio is mis-configured, then it
4437sometimes (apparently) runs and exits with a 0 status, but with no
4438output! It may have to do with sfio's use of _exit vs. exit.
4439
4440EOQS
4441 rp="You have a big problem. Shall I abort Configure"
4442 dflt=y
4443 ;;
4444 esac
4445 ;;
4446 esac
4447 else
4448 echo "The program compiled OK, but exited with status $?." >>try.msg
4449 rp="You have a problem. Shall I abort Configure"
4450 dflt=y
4451 fi
4452else
4453 echo "I can't compile the test program." >>try.msg
4454 rp="You have a BIG problem. Shall I abort Configure"
4455 dflt=y
4456fi
4457case "$dflt" in
4458y)
4459 $cat try.msg >&4
4460 case "$knowitall" in
4461 '')
4462 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4463 ;;
bd9b35c9 4464 *) dflt=n;;
c4f23d77 4465 esac
bd9b35c9
JH
4466 echo " "
4467 . ./myread
4468 case "$ans" in
4469 n*|N*) ;;
4470 *) echo "Ok. Stopping Configure." >&4
4471 exit 1
c4f23d77
AD
4472 ;;
4473 esac
4474 ;;
bd9b35c9 4475n) echo "OK, that should do.";;
c4f23d77 4476esac
bd9b35c9 4477$rm -f try try.* core
c4f23d77 4478
b4eb6b3d
JH
4479: define an is-a-typedef? function
4480typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4481case "$inclist" in
4482"") inclist="sys/types.h";;
4483esac;
4484eval "varval=\$$var";
4485case "$varval" in
4486"")
4487 $rm -f temp.c;
4488 for inc in $inclist; do
4489 echo "#include <$inc>" >>temp.c;
4490 done;
4491 echo "#ifdef $type" >> temp.c;
4492 echo "printf(\"We have $type\");" >> temp.c;
4493 echo "#endif" >> temp.c;
4494 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4495 if $contains $type temp.E >/dev/null 2>&1; then
4496 eval "$var=\$type";
4497 else
4498 eval "$var=\$def";
4499 fi;
4500 $rm -f temp.?;;
4501*) eval "$var=\$varval";;
4502esac'
4503
4504: define an is-a-typedef? function that prompts if the type is not available.
4505typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4506case "$inclist" in
4507"") inclist="sys/types.h";;
4508esac;
4509eval "varval=\$$var";
4510case "$varval" in
4511"")
4512 $rm -f temp.c;
4513 for inc in $inclist; do
4514 echo "#include <$inc>" >>temp.c;
4515 done;
4516 echo "#ifdef $type" >> temp.c;
4517 echo "printf(\"We have $type\");" >> temp.c;
4518 echo "#endif" >> temp.c;
4519 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4520 echo " " ;
4521 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4522 if $contains $type temp.E >/dev/null 2>&1; then
4523 echo "$type found." >&4;
4524 eval "$var=\$type";
4525 else
4526 echo "$type NOT found." >&4;
4527 dflt="$def";
4528 . ./myread ;
4529 eval "$var=\$ans";
4530 fi;
4531 $rm -f temp.?;;
4532*) eval "$var=\$varval";;
4533esac'
4534
bd9b35c9
JH
4535: define a shorthand compile call
4536compile='
4537mc_file=$1;
4538shift;
08413ebc 4539$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4540: define a shorthand compile call for compilations that should be ok.
4541compile_ok='
4542mc_file=$1;
4543shift;
7a282f6d 4544$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4545
b4eb6b3d 4546: check for lengths of integral types
bd9b35c9 4547echo " "
b4eb6b3d
JH
4548case "$intsize" in
4549'')
4550 echo "Checking to see how big your integers are..." >&4
5440bc8e 4551 $cat >try.c <<'EOCP'
bd9b35c9
JH
4552#include <stdio.h>
4553int main()
4554{
b4eb6b3d
JH
4555 printf("intsize=%d;\n", (int)sizeof(int));
4556 printf("longsize=%d;\n", (int)sizeof(long));
4557 printf("shortsize=%d;\n", (int)sizeof(short));
4558 exit(0);
bd9b35c9 4559}
b4eb6b3d 4560EOCP
5440bc8e
JH
4561 set try
4562 if eval $compile_ok && $run ./try > /dev/null; then
4563 eval `$run ./try`
b4eb6b3d
JH
4564 echo "Your integers are $intsize bytes long."
4565 echo "Your long integers are $longsize bytes long."
4566 echo "Your short integers are $shortsize bytes long."
4567 else
4568 $cat >&4 <<EOM
4569!
4570Help! I can't compile and run the intsize test program: please enlighten me!
4571(This is probably a misconfiguration in your system or libraries, and
4572you really ought to fix it. Still, I'll try anyway.)
4573!
bd9b35c9 4574EOM
b4eb6b3d
JH
4575 dflt=4
4576 rp="What is the size of an integer (in bytes)?"
4577 . ./myread
4578 intsize="$ans"
4579 dflt=$intsize
4580 rp="What is the size of a long integer (in bytes)?"
4581 . ./myread
4582 longsize="$ans"
4583 dflt=2
4584 rp="What is the size of a short integer (in bytes)?"
4585 . ./myread
4586 shortsize="$ans"
4587 fi
4588 ;;
4589esac
5440bc8e 4590$rm -f try try.*
c1a7f87b 4591
b4eb6b3d
JH
4592: see what type lseek is declared as in the kernel
4593rp="What is the type used for lseek's offset on this system?"
4594set off_t lseektype long stdio.h sys/types.h
4595eval $typedef_ask
4596
4597echo " "
4598echo "Checking to see how big your file offsets are..." >&4
4599$cat >try.c <<EOCP
4600#include <sys/types.h>
4601#include <stdio.h>
4602int main()
4603{
4604 printf("%d\n", (int)sizeof($lseektype));
4605 return(0);
4606}
4607EOCP
4608set try
4609if eval $compile_ok; then
5440bc8e 4610 lseeksize=`$run ./try`
b4eb6b3d
JH
4611 echo "Your file offsets are $lseeksize bytes long."
4612else
4613 dflt=$longsize
4614 echo " "
4615 echo "(I can't seem to compile the test program. Guessing...)"
4616 rp="What is the size of your file offsets (in bytes)?"
4617 . ./myread
4618 lseeksize="$ans"
4619fi
4620$rm -f try.c try
4621
4622: see what type file positions are declared as in the library
4623rp="What is the type for file position used by fsetpos()?"
4624set fpos_t fpostype long stdio.h sys/types.h
4625eval $typedef_ask
4626
4627echo " "
4628case "$fpostype" in
4629*_t) zzz="$fpostype" ;;
4630*) zzz="fpos_t" ;;
4631esac
4632echo "Checking the size of $zzz..." >&4
4633cat > try.c <<EOCP
4634#include <sys/types.h>
4635#include <stdio.h>
4636int main() {
4637 printf("%d\n", (int)sizeof($fpostype));
4638 exit(0);
4639}
4640EOCP
4641set try
4642if eval $compile_ok; then
5440bc8e 4643 yyy=`$run ./try`
b4eb6b3d
JH
4644 case "$yyy" in
4645 '') fpossize=4
4646 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4647 ;;
4648 *) fpossize=$yyy
4649 echo "Your $zzz is $fpossize bytes long."
4650 ;;
4651 esac
4652else
4653 dflt="$longsize"
4654 echo " " >&4
4655 echo "(I can't compile the test program. Guessing...)" >&4
4656 rp="What is the size of your file positions (in bytes)?"
4657 . ./myread
4658 fpossize="$ans"
4659fi
4660
4661
4662
4663# Backward compatibility (uselfs is deprecated).
4664case "$uselfs" in
4665"$define"|true|[yY]*)
4666 cat <<EOM >&4
4667
4668*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4669EOM
4670 uselargefiles="$define"
4671 ;;
4672esac
4673
4674case "$lseeksize:$fpossize" in
46758:8) cat <<EOM
4676
4677You can have files larger than 2 gigabytes.
4678EOM
4679 val="$define" ;;
4680*) case "$uselargefiles" in
4681 "$undef"|false|[nN]*) dflt='n' ;;
4682 *) dflt='y' ;;
4683 esac
4684 cat <<EOM
4685
4686Perl can be built to understand large files (files larger than 2 gigabytes)
4687on some systems. To do so, Configure can be run with -Duselargefiles.
4688
4689If this doesn't make any sense to you, just accept the default '$dflt'.
4690EOM
4691 rp='Try to understand large files, if available?'
4692 . ./myread
4693 case "$ans" in
4694 y|Y) val="$define" ;;
4695 *) val="$undef" ;;
4696 esac
4697 ;;
4698esac
4699set uselargefiles
4700eval $setvar
4701case "$uselargefiles" in
4702"$define")
4703: Look for a hint-file generated 'call-back-unit'. If the
4704: user has specified that a large files perl is to be built,
4705: we may need to set or change some other defaults.
4706 if $test -f uselargefiles.cbu; then
4707 echo "Your platform has some specific hints for large file builds, using them..."
4708 . ./uselargefiles.cbu
4709 echo " "
4710 echo "Rechecking to see how big your file offsets are..." >&4
4711 $cat >try.c <<EOCP
4712#include <sys/types.h>
4713#include <stdio.h>
4714int main()
4715{
4716 printf("%d\n", (int)sizeof($lseektype));
4717 return(0);
4718}
4719EOCP
4720 set try
4721 if eval $compile_ok; then
5440bc8e 4722 lseeksize=`$run ./try`
b4eb6b3d
JH
4723 $echo "Your file offsets are now $lseeksize bytes long."
4724 else
4725 dflt="$lseeksize"
4726 echo " "
4727 echo "(I can't seem to compile the test program. Guessing...)"
4728 rp="What is the size of your file offsets (in bytes)?"
4729 . ./myread
4730 lseeksize="$ans"
4731 fi
4732 case "$fpostype" in
4733 *_t) zzz="$fpostype" ;;
4734 *) zzz="fpos_t" ;;
4735 esac
4736 $echo $n "Rechecking the size of $zzz...$c" >&4
4737 $cat > try.c <<EOCP
4738#include <sys/types.h>
4739#include <stdio.h>
4740int main() {
4741 printf("%d\n", (int)sizeof($fpostype));
4742 exit(0);
4743}
4744EOCP
4745 set try
4746 if eval $compile_ok; then
5440bc8e 4747 yyy=`$run ./try`
b4eb6b3d
JH
4748 dflt="$lseeksize"
4749 case "$yyy" in
4750 '') echo " "
4751 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4752 ;;
4753 *) fpossize=$yyy
4754 echo " $fpossize bytes." >&4
4755 ;;
4756 esac
4757 else
4758 dflt="$fpossize"
4759 echo " "
4760 echo "(I can't compile the test program. Guessing...)" >&4
4761 rp="What is the size of your file positions (in bytes)?"
4762 . ./myread
4763 fpossize="$ans"
4764 fi
4765 $rm -f try.c try
4766 fi
4767 ;;
4768esac
4769
4770
4771case "$usemorebits" in
4772"$define"|true|[yY]*)
4773 use64bitint="$define"
4774 uselongdouble="$define"
4775 usemorebits="$define"
4776 ;;
4777*) usemorebits="$undef"
4778 ;;
4779esac
4780
8dfa8df9
JH
4781: check for void type
4782echo " "
4783echo "Checking to see how well your C compiler groks the void type..." >&4
4784case "$voidflags" in
4785'')
4786 $cat >try.c <<'EOCP'
4787#if TRY & 1
4788void sub() {
4789#else
4790sub() {
4791#endif
4792 extern void moo(); /* function returning void */
4793 void (*goo)(); /* ptr to func returning void */
4794#if TRY & 8
4795 void *hue; /* generic ptr */
4796#endif
4797#if TRY & 2
4798 void (*foo[10])();
4799#endif
4800
4801#if TRY & 4
4802 if(goo == moo) {
4803 exit(0);
4804 }
4805#endif
4806 exit(0);
4807}
4808int main() { sub(); }
4809EOCP
4810 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4811 voidflags=$defvoidused
4812 echo "Good. It appears to support void to the level $package wants.">&4
4813 if $contains warning .out >/dev/null 2>&1; then
4814 echo "However, you might get some warnings that look like this:"
4815 $cat .out
4816 fi
4817 else
4818echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4819 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4820 echo "It supports 1..."
4821 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4822 echo "It also supports 2..."
4823 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4824 voidflags=7
4825 echo "And it supports 4 but not 8 definitely."
4826 else
4827 echo "It doesn't support 4..."
4828 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4829 voidflags=11
4830 echo "But it supports 8."
4831 else
4832 voidflags=3
4833 echo "Neither does it support 8."
4834 fi
4835 fi
4836 else
4837 echo "It does not support 2..."
4838 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4839 voidflags=13
4840 echo "But it supports 4 and 8."
4841 else
4842 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4843 voidflags=5
4844 echo "And it supports 4 but has not heard about 8."
4845 else
4846 echo "However it supports 8 but not 4."
4847 fi
4848 fi
4849 fi
4850 else
4851 echo "There is no support at all for void."
4852 voidflags=0
4853 fi
4854 fi
4855esac
4856case "$voidflags" in
4857"$defvoidused") ;;
4858*) $cat >&4 <<'EOM'
4859 Support flag bits are:
4860 1: basic void declarations.
4861 2: arrays of pointers to functions returning void.
4862 4: operations between pointers to and addresses of void functions.
4863 8: generic void pointers.
4864EOM
4865 dflt="$voidflags";
4866 rp="Your void support flags add up to what?"
4867 . ./myread
4868 voidflags="$ans"
4869 ;;
4870esac
4871$rm -f try.* .out
4872
4873: check for length of pointer
4874echo " "
4875case "$ptrsize" in
4876'')
4877 echo "Checking to see how big your pointers are..." >&4
4878 if test "$voidflags" -gt 7; then
4879 echo '#define VOID_PTR char *' > try.c
4880 else
4881 echo '#define VOID_PTR void *' > try.c
4882 fi
4883 $cat >>try.c <<'EOCP'
4884#include <stdio.h>
4885int main()
4886{
4887 printf("%d\n", (int)sizeof(VOID_PTR));
4888 exit(0);
4889}
4890EOCP
4891 set try
4892 if eval $compile_ok; then
5440bc8e 4893 ptrsize=`$run ./try`
8dfa8df9
JH
4894 echo "Your pointers are $ptrsize bytes long."
4895 else
4896 dflt='4'
4897 echo "(I can't seem to compile the test program. Guessing...)" >&4
4898 rp="What is the size of a pointer (in bytes)?"
4899 . ./myread
4900 ptrsize="$ans"
4901 fi
4902 ;;
4903esac
4904$rm -f try.c try
4905
4906: check for long long
4907echo " "
4908echo "Checking to see if you have long long..." >&4
4909echo 'int main() { long long x = 7; return 0; }' > try.c
4910set try
4911if eval $compile; then
4912 val="$define"
4913 echo "You have long long."
4914else
4915 val="$undef"
4916 echo "You do not have long long."
4917fi
4918$rm try.*
4919set d_longlong
4920eval $setvar
4921
4922: check for length of long long
4923case "${d_longlong}${longlongsize}" in
4924$define)
4925 echo " "
4926 echo "Checking to see how big your long longs are..." >&4
4927 $cat >try.c <<'EOCP'
4928#include <stdio.h>
4929int main()
4930{
4931 printf("%d\n", (int)sizeof(long long));
4932 return(0);
4933}
4934EOCP
4935 set try
4936 if eval $compile_ok; then
5440bc8e 4937 longlongsize=`$run ./try`
8dfa8df9
JH
4938 echo "Your long longs are $longlongsize bytes long."
4939 else
4940 dflt='8'
4941 echo " "
4942 echo "(I can't seem to compile the test program. Guessing...)"
4943 rp="What is the size of a long long (in bytes)?"
4944 . ./myread
4945 longlongsize="$ans"
4946 fi
4947 if $test "X$longsize" = "X$longlongsize"; then
4948 echo "(That isn't any different from an ordinary long.)"
4949 fi
4950 ;;
4951esac
4952$rm -f try.* try
4953
4954: determine filename position in cpp output
4955echo " "
4956echo "Computing filename position in cpp output for #include directives..." >&4
4957echo '#include <stdio.h>' > foo.c
4958$cat >fieldn <<EOF
4959$startsh
4960$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4961$grep '^[ ]*#.*stdio\.h' | \
4962while read cline; do
4963 pos=1
4964 set \$cline
4965 while $test \$# -gt 0; do
4966 if $test -r \`echo \$1 | $tr -d '"'\`; then
4967 echo "\$pos"
4968 exit 0
4969 fi
4970 shift
4971 pos=\`expr \$pos + 1\`
4972 done
4973done
4974EOF
4975chmod +x fieldn
4976fieldn=`./fieldn`
4977$rm -f foo.c fieldn
4978case $fieldn in
4979'') pos='???';;
49801) pos=first;;
49812) pos=second;;
49823) pos=third;;
4983*) pos="${fieldn}th";;
4984esac
4985echo "Your cpp writes the filename in the $pos field of the line."
4986
4987: locate header file
4988$cat >findhdr <<EOF
4989$startsh
4990wanted=\$1
4991name=''
4992for usrincdir in $usrinc
4993do
4994 if test -f \$usrincdir/\$wanted; then
4995 echo "\$usrincdir/\$wanted"
4996 exit 0
4997 fi
4998done
4999awkprg='{ print \$$fieldn }'
5000echo "#include <\$wanted>" > foo\$\$.c
5001$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5002$grep "^[ ]*#.*\$wanted" | \
5003while read cline; do
5004 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5005 case "\$name" in
5006 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5007 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5008 *) exit 2;;
5009 esac;
5010done;
5011#
5012# status = 0: grep returned 0 lines, case statement not executed
5013# status = 1: headerfile found
5014# status = 2: while loop executed, no headerfile found
5015#
5016status=\$?
5017$rm -f foo\$\$.c;
5018if test \$status -eq 1; then
5019 exit 0;
5020fi
5021exit 1
5022EOF
5023chmod +x findhdr
5024
5025: define an alternate in-header-list? function
5026inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5027cont=true; xxf="echo \"<\$1> found.\" >&4";
5028case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5029*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5030esac;
5031case $# in 4) instead=instead;; *) instead="at last";; esac;
5032while $test "$cont"; do
5033 xxx=`./findhdr $1`
5034 var=$2; eval "was=\$$2";
5035 if $test "$xxx" && $test -r "$xxx";
5036 then eval $xxf;
5037 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5038 cont="";
5039 else eval $xxnf;
5040 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5041 set $yyy; shift; shift; yyy=$@;
5042 case $# in 0) cont="";;
5043 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5044 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5045 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5046 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5047 esac;
5048done;
5049while $test "$yyy";
5050do set $yyy; var=$2; eval "was=\$$2";
5051 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5052 set $yyy; shift; shift; yyy=$@;
5053done'
5054
5055: see if inttypes.h is available
5056: we want a real compile instead of Inhdr because some systems
5057: have an inttypes.h which includes non-existent headers
5058echo " "
5059$cat >try.c <<EOCP
5060#include <inttypes.h>
5061int main() {
5062 static int32_t foo32 = 0x12345678;
5063}
5064EOCP
5065set try
5066if eval $compile; then
5067 echo "<inttypes.h> found." >&4
5068 val="$define"
5069else
5070 echo "<inttypes.h> NOT found." >&4
5071 val="$undef"
5072fi
5073$rm -f try.c try
5074set i_inttypes
5075eval $setvar
5076
5077: check for int64_t
5078echo " "
5079echo "Checking to see if you have int64_t..." >&4
5080$cat >try.c <<EOCP
5081#include <sys/types.h>
5082#$i_inttypes I_INTTYPES
5083#ifdef I_INTTYPES
5084#include <inttypes.h>
5085#endif
5086int main() { int64_t x = 7; }
5087EOCP
5088set try
5089if eval $compile; then
5090 val="$define"
5091 echo "You have int64_t."
5092else
5093 val="$undef"
5094 echo "You do not have int64_t."
5095fi
5096$rm -f try try.*
5097set d_int64_t
5098eval $setvar
5099
5100
5101echo " "
5102echo "Checking which 64-bit integer type we could use..." >&4
5103
5104case "$intsize" in
51058) val=int
5106 set quadtype
5107 eval $setvar
5108 val='"unsigned int"'
5109 set uquadtype
5110 eval $setvar
5111 quadkind=1
5112 ;;
5113*) case "$longsize" in
5114 8) val=long
5115 set quadtype
5116 eval $setvar
5117 val='"unsigned long"'
5118 set uquadtype
5119 eval $setvar
5120 quadkind=2
5121 ;;
5122 *) case "$d_longlong:$longlongsize" in
5123 define:8)
5124 val='"long long"'
5125 set quadtype
5126 eval $setvar
5127 val='"unsigned long long"'
5128 set uquadtype
5129 eval $setvar
5130 quadkind=3
5131 ;;
5132 *) case "$d_int64_t" in
5133 define)
5134 val=int64_t
5135 set quadtype
5136 eval $setvar
5137 val=uint64_t
5138 set uquadtype
5139 eval $setvar
5140 quadkind=4
5141 ;;
5142 esac
5143 ;;
5144 esac
5145 ;;
5146 esac
5147 ;;
5148esac
5149
5150case "$quadtype" in
5151'') echo "Alas, no 64-bit integer types in sight." >&4
5152 d_quad="$undef"
5153 ;;
5154*) echo "We could use '$quadtype' for 64-bit integers." >&4
5155 d_quad="$define"
5156 ;;
5157esac
5158
b4eb6b3d
JH
5159
5160case "$uselonglong" in
5161"$define"|true|[yY]*)
5162 cat <<EOM >&4
5163
5164*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5165EOM
5166 use64bitint="$define"
5167 ;;
5168esac
5169case "$use64bits" in
5170"$define"|true|[yY]*)
5171 cat <<EOM >&4
5172
5173*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5174EOM
5175 use64bitint="$define"
5176 ;;
5177esac
5178case "$use64bitints" in
5179"$define"|true|[yY]*)
5180 cat <<EOM >&4
5181
5182*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5183EOM
5184 use64bitint="$define"
5185 ;;
5186esac
5187case "$use64bitsint" in
5188"$define"|true|[yY]*)
5189 cat <<EOM >&4
5190
5191*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5192EOM
5193 use64bitint="$define"
5194 ;;
5195esac
5196case "$uselonglongs" in
5197"$define"|true|[yY]*)
5198 cat <<EOM >&4
5199
5200*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5201EOM
5202 use64bitint="$define"
5203 ;;
5204esac
5205case "$use64bitsall" in
5206"$define"|true|[yY]*)
5207 cat <<EOM >&4
5208
5209*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5210EOM
5211 use64bitall="$define"
5212 ;;
5213esac
5214
5215case "$ccflags" in
5216*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5217esac
5218case "$use64bitall" in
5219"$define"|true|[yY]*) use64bitint="$define" ;;
5220esac
5221
5222case "$longsize" in
52238) cat <<EOM
5224
5225You have natively 64-bit long integers.
5226EOM
5227 val="$define"
5228 ;;
5229*) case "$use64bitint" in
5230 "$define"|true|[yY]*) dflt='y';;
5231 *) dflt='n';;
5232 esac
8dfa8df9
JH
5233 case "$d_quad" in
5234 "$define") ;;
5235 *) dflt='n' ;;
5236 esac
b4eb6b3d
JH
5237 cat <<EOM
5238
5239Perl can be built to take advantage of 64-bit integer types
5240on some systems. To do so, Configure can be run with -Duse64bitint.
5241Choosing this option will most probably introduce binary incompatibilities.
5242
5243If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5244(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5245EOM
5246 rp='Try to use 64-bit integers, if available?'
5247 . ./myread
5248 case "$ans" in
5249 [yY]*) val="$define" ;;
5250 *) val="$undef" ;;
5251 esac
5252 ;;
5253esac
5254set use64bitint
5255eval $setvar
5256
5257case "$use64bitall" in
5258"$define"|true|[yY]*) dflt='y' ;;
5259*) case "$longsize" in
5260 8) dflt='y' ;;
5261 *) dflt='n' ;;
5262 esac
5263 ;;
5264esac
5265cat <<EOM
5266
5267You may also choose to try maximal 64-bitness. It means using as much
526864-bitness as possible on the platform. This in turn means even more
5269binary incompatibilities. On the other hand, your platform may not
5270have any more 64-bitness available than what you already have chosen.
5271
5272If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5273(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5274EOM
5275rp='Try to use maximal 64-bit support, if available?'
5276. ./myread
5277case "$ans" in
5278[yY]*) val="$define" ;;
5279*) val="$undef" ;;
5280esac
5281set use64bitall
5282eval $setvar
5283case "$use64bitall" in
5284"$define")
5285 case "$use64bitint" in
5286 "$undef")
5287 cat <<EOM
5288
5289Since you have chosen a maximally 64-bit build, I'm also turning on
5290the use of 64-bit integers.
5291EOM
5292 use64bitint="$define" ;;
5293 esac
5294 ;;
5295esac
5296
8dfa8df9
JH
5297case "$use64bitall" in
5298"$define"|true|[yY]*)
5299 case "$ptrsize" in
5300 4) cat <<EOM >&4
5301
5302*** You have chosen a maximally 64-bit build, but your pointers
5303*** are only 4 bytes wide, disabling maximal 64-bitness.
5304
5305EOM
5306 use64bitall="$undef"
5307 case "$use64bitint" in
5308 "$define"|true|[yY]*) ;;
5309 *) cat <<EOM >&4
5310
5311*** Downgrading from maximal 64-bitness to using 64-bit integers.
5312
5313EOM
5314 use64bitint="$define"
5315 ;;
5316 esac
5317 ;;
5318 esac
5319 ;;
5320esac
5321
b4eb6b3d
JH
5322case "$use64bitint" in
5323"$define"|true|[yY]*)
5324: Look for a hint-file generated 'call-back-unit'. If the
5325: user has specified that a 64-bit perl is to be built,
5326: we may need to set or change some other defaults.
5327 if $test -f use64bitint.cbu; then
5328 echo "Your platform has some specific hints for 64-bit integers, using them..."
5329 . ./use64bitint.cbu
5330 fi
5331 case "$longsize" in
5332 4) case "$archname64" in
5333 '') archname64=64int ;;
5334 esac
5335 ;;
5336 esac
5337 ;;
5338esac
5339
5340case "$use64bitall" in
5341"$define"|true|[yY]*)
5342: Look for a hint-file generated 'call-back-unit'. If the
5343: user has specified that a maximally 64-bit perl is to be built,
5344: we may need to set or change some other defaults.
5345 if $test -f use64bitall.cbu; then
5346 echo "Your platform has some specific hints for 64-bit builds, using them..."
5347 . ./use64bitall.cbu
5348 fi
5349 case "$longsize" in
5350 4) case "$archname64" in
5351 ''|64int) archname64=64all ;;
5352 esac
5353 ;;
5354 esac
5355 ;;
5356esac
5357
5358echo " "
5359echo "Checking for GNU C Library..." >&4
5440bc8e 5360cat >try.c <<EOM
b4eb6b3d
JH
5361#include <stdio.h>
5362int main()
5363{
5364#ifdef __GLIBC__
5365 exit(0);
5366#else
5367 exit(1);
5368#endif
5369}
5370EOM
5440bc8e
JH
5371set try
5372if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5373 val="$define"
5374 echo "You are using the GNU C Library"
5375else
5376 val="$undef"
5377 echo "You are not using the GNU C Library"
5378fi
5440bc8e 5379$rm -f try try.*
b4eb6b3d
JH
5380set d_gnulibc
5381eval $setvar
5382
5383: see if nm is to be used to determine whether a symbol is defined or not
5384case "$usenm" in
5385'')
5386 dflt=''
c1a7f87b
JH
5387 case "$d_gnulibc" in
5388 "$define")
5389 echo " "
5390 echo "nm probably won't work on the GNU C Library." >&4
5391 dflt=n
bd9b35c9 5392 ;;
c1a7f87b
JH
5393 esac
5394 case "$dflt" in
5395 '')
5396 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5397 echo " "
5398 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5399 echo "'nm' won't be sufficient on this sytem." >&4
5400 dflt=n
5401 fi
5402 ;;
5403 esac
5404 case "$dflt" in
5405 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5406 if $test $dflt -gt 20; then
5407 dflt=y
5408 else
5409 dflt=n
5410 fi
bd9b35c9
JH
5411 ;;
5412 esac
bd9b35c9
JH
5413 ;;
5414*)
c1a7f87b
JH
5415 case "$usenm" in
5416 true|$define) dflt=y;;
5417 *) dflt=n;;
5418 esac
bd9b35c9
JH
5419 ;;
5420esac
5421$cat <<EOM
5422
c1a7f87b
JH
5423I can use $nm to extract the symbols from your C libraries. This
5424is a time consuming task which may generate huge output on the disk (up
5425to 3 megabytes) but that should make the symbols extraction faster. The
5426alternative is to skip the 'nm' extraction part and to compile a small
5427test program instead to determine whether each symbol is present. If
5428you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5429this may be the best solution.
5430
5431You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5432
5433EOM
c1a7f87b
JH
5434rp="Shall I use $nm to extract C symbols from the libraries?"
5435. ./myread
5436case "$ans" in
5437[Nn]*) usenm=false;;
5438*) usenm=true;;
bd9b35c9 5439esac
bd9b35c9 5440
c1a7f87b
JH
5441runnm=$usenm
5442case "$reuseval" in
5443true) runnm=false;;
8e07c86e 5444esac
29209bc5 5445
c1a7f87b
JH
5446: nm options which may be necessary
5447case "$nm_opt" in
5448'') if $test -f /mach_boot; then
5449 nm_opt='' # Mach
5450 elif $test -d /usr/ccs/lib; then
5451 nm_opt='-p' # Solaris (and SunOS?)
5452 elif $test -f /dgux; then
5453 nm_opt='-p' # DG-UX
5454 elif $test -f /lib64/rld; then
5455 nm_opt='-p' # 64-bit Irix
5456 else
5457 nm_opt=''
5458 fi;;
5459esac
bd9b35c9 5460
c1a7f87b
JH
5461: nm options which may be necessary for shared libraries but illegal
5462: for archive libraries. Thank you, Linux.
5463case "$nm_so_opt" in
5464'') case "$myuname" in
5465 *linux*)
5466 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5467 nm_so_opt='--dynamic'
5468 fi
5469 ;;
bd9b35c9 5470 esac
c1a7f87b
JH
5471 ;;
5472esac
8e07c86e 5473
c1a7f87b
JH
5474case "$runnm" in
5475true)
5476: get list of predefined functions in a handy place
5477echo " "
5478case "$libc" in
5479'') libc=unknown
5480 case "$libs" in
5481 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5482 esac
ff935051
JH
5483 ;;
5484esac
c1a7f87b
JH
5485case "$libs" in
5486'') ;;
5487*) for thislib in $libs; do
5488 case "$thislib" in
5489 -lc|-lc_s)
5490 : Handle C library specially below.
5491 ;;
5492 -l*)
5493 thislib=`echo $thislib | $sed -e 's/^-l//'`
5494 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5495 :
5496 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5497 :
5498 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5499 :
5500 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5501 :
5502 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5503 :
5504 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5505 :
5506 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5507 :
5508 else
5509 try=''
5510 fi
5511 libnames="$libnames $try"
5512 ;;
5513 *) libnames="$libnames $thislib" ;;
34d1710f 5514 esac
c1a7f87b 5515 done
4633a7c4
LW
5516 ;;
5517esac
c1a7f87b
JH
5518xxx=normal
5519case "$libc" in
5520unknown)
5521 set /lib/libc.$so
5522 for xxx in $libpth; do
5523 $test -r $1 || set $xxx/libc.$so
5524 : The messy sed command sorts on library version numbers.
5525 $test -r $1 || \
5526 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5527 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5528 h
5529 s/[0-9][0-9]*/0000&/g
5530 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5531 G
5532 s/\n/ /' | \
381aa1ff 5533 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5534 eval set \$$#
5535 done
5536 $test -r $1 || set /usr/ccs/lib/libc.$so
5537 $test -r $1 || set /lib/libsys_s$_a
5538 ;;
5539*)
5540 set blurfl
5541 ;;
a4f3eea9 5542esac
c1a7f87b
JH
5543if $test -r "$1"; then
5544 echo "Your (shared) C library seems to be in $1."
5545 libc="$1"
5546elif $test -r /lib/libc && $test -r /lib/clib; then
5547 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5548 xxx=apollo
5549 libc='/lib/clib /lib/libc'
5550 if $test -r /lib/syslib; then
5551 echo "(Your math library is in /lib/syslib.)"
5552 libc="$libc /lib/syslib"
5553 fi
5554elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5555 echo "Your C library seems to be in $libc, as you said before."
5556elif $test -r $incpath/usr/lib/libc$_a; then
5557 libc=$incpath/usr/lib/libc$_a;
5558 echo "Your C library seems to be in $libc. That's fine."
5559elif $test -r /lib/libc$_a; then
5560 libc=/lib/libc$_a;
5561 echo "Your C library seems to be in $libc. You're normal."
5562else
5563 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5564 :
5565 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5566 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5567 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5568 :
5569 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5570 :
5571 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5572 :
5573 else
5574 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5575 fi
5576 if $test -r "$tans"; then
5577 echo "Your C library seems to be in $tans, of all places."
5578 libc=$tans
5579 else
5580 libc='blurfl'
5581 fi
5582fi
5583if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5584 dflt="$libc"
5585 cat <<EOM
a4f3eea9 5586
c1a7f87b
JH
5587If the guess above is wrong (which it might be if you're using a strange
5588compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5589
5590EOM
a4f3eea9 5591else
c1a7f87b 5592 dflt=''
381aa1ff 5593 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5594 cat >&4 <<EOM
5595I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5596
c1a7f87b
JH
5597EOM
5598 $sed 's/^/ /' libpath
5599 cat <<EOM
29209bc5 5600
c1a7f87b 5601None of these seems to contain your C library. I need to get its name...
a4f3eea9 5602
bd9b35c9 5603EOM
bd9b35c9 5604fi
c1a7f87b
JH
5605fn=f
5606rp='Where is your C library?'
5607. ./getfile
5608libc="$ans"
a4f3eea9 5609
c1a7f87b 5610echo " "
381aa1ff 5611echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5612set X `cat libnames`
5613shift
5614xxx=files
5615case $# in 1) xxx=file; esac
5616echo "Extracting names from the following $xxx for later perusal:" >&4
5617echo " "
5618$sed 's/^/ /' libnames >&4
5619echo " "
5620$echo $n "This may take a while...$c" >&4
a4f3eea9 5621
c1a7f87b
JH
5622for file in $*; do
5623 case $file in
5624 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5625 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5626 esac
c1a7f87b 5627done >libc.tmp
a4f3eea9 5628
c1a7f87b
JH
5629$echo $n ".$c"
5630$grep fprintf libc.tmp > libc.ptf
5631xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5632xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5633xxx='[ADTSIW]'
5634if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5635 eval $xscan;\
5636 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5637 eval $xrun
5638elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5639 eval $xscan;\
5640 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5641 eval $xrun
5642elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5643 eval $xscan;\
5644 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5645 eval $xrun
5646elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5647 eval $xscan;\
5648 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5649 eval $xrun
5650elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5651 eval $xscan;\
5652 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5653 eval $xrun
5654elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5655 eval $xscan;\
5656 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5657 eval $xrun
5658elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5659 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5660 eval $xscan;\
5661 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5662 eval $xrun
5663elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5664 eval $xscan;\
5665 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5666 eval $xrun
5667elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5668 eval $xscan;\
5669 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5670 eval $xrun
5671elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5672 eval $xscan;\
5673 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5674 eval $xrun
5675elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5676 eval $xscan;\
5677 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5678 eval $xrun
5679elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5680 eval $xscan;\
5681 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5682 eval $xrun
5683elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5684 eval $xscan;\
5685 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5686 eval $xrun
5687elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5688 eval $xscan;\
5689 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5690 eval $xrun
5691else
5692 $nm -p $* 2>/dev/null >libc.tmp
5693 $grep fprintf libc.tmp > libc.ptf
5694 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5695 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5696 then
5697 nm_opt='-p'
5698 eval $xrun
bd9b35c9 5699 else
c1a7f87b
JH
5700 echo " "
5701 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5702 com=''
5703 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5704 for thisname in $libnames $libc; do
5705 $ar t $thisname >>libc.tmp
5706 done
5707 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5708 echo "Ok." >&4
5709 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5710 # Repeat libc to extract forwarders to DLL entries too
5711 for thisname in $libnames $libc; do
5712 $ar tv $thisname >>libc.tmp
5713 # Revision 50 of EMX has bug in $ar.
5714 # it will not extract forwarders to DLL entries
5715 # Use emximp which will extract exactly them.
5716 emximp -o tmp.imp $thisname \
5717 2>/dev/null && \
5718 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5719 < tmp.imp >>libc.tmp
5720 $rm tmp.imp
5721 done
5722 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5723 echo "Ok." >&4
5724 else
5725 echo "$ar didn't seem to work right." >&4
5726 echo "Maybe this is a Cray...trying bld instead..." >&4
5727 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5728 then
5729 for thisname in $libnames; do
5730 bld t $libnames | \
5731 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5732 $ar t $thisname >>libc.tmp
5733 done
5734 echo "Ok." >&4
bd9b35c9 5735 else
c1a7f87b
JH
5736 echo "That didn't work either. Giving up." >&4
5737 exit 1
bd9b35c9 5738 fi
c1a7f87b 5739 fi
a4f3eea9 5740 fi
a4f3eea9 5741fi
c1a7f87b
JH
5742nm_extract="$com"
5743if $test -f /lib/syscalls.exp; then
5744 echo " "
5745 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5746 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5747fi
5748;;
5749esac
5750$rm -f libnames libpath
bd9b35c9 5751
c1a7f87b
JH
5752: is a C symbol defined?
5753csym='tlook=$1;
5754case "$3" in
5755-v) tf=libc.tmp; tc=""; tdc="";;
5756-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5757*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5758esac;
5759tx=yes;
5760case "$reuseval-$4" in
5761true-) ;;
5762true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5763esac;
5764case "$tx" in
5765yes)
5766 case "$runnm" in
5767 true)
5768 if $contains $tlook $tf >/dev/null 2>&1;
5769 then tval=true;
5770 else tval=false;
5771 fi;;
5772 *)
5773 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5774 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5775 then tval=true;
5776 else tval=false;
5777 fi;
5778 $rm -f t t.c;;
5779 esac;;
5780*)
5781 case "$tval" in
5782 $define) tval=true;;
5783 *) tval=false;;
5784 esac;;
5785esac;
5786eval "$2=$tval"'
bd9b35c9 5787
c1a7f87b
JH
5788: define an is-in-libc? function
5789inlibc='echo " "; td=$define; tu=$undef;
5790sym=$1; var=$2; eval "was=\$$2";
5791tx=yes;
5792case "$reuseval$was" in
5793true) ;;
5794true*) tx=no;;
5795esac;
5796case "$tx" in
5797yes)
5798 set $sym tres -f;
5799 eval $csym;
5800 case "$tres" in
5801 true)
5802 echo "$sym() found." >&4;
5803 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5804 *)
5805 echo "$sym() NOT found." >&4;
5806 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5807 esac;;
bd9b35c9 5808*)
c1a7f87b
JH
5809 case "$was" in
5810 $define) echo "$sym() found." >&4;;
5811 *) echo "$sym() NOT found." >&4;;
5812 esac;;
5813esac'
5814
b4eb6b3d
JH
5815: see if sqrtl exists
5816set sqrtl d_sqrtl
c1a7f87b
JH
5817eval $inlibc
5818
b4eb6b3d
JH
5819case "$ccflags" in
5820*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5821esac
b4eb6b3d
JH
5822
5823case "$uselongdouble" in
5824$define|true|[yY]*) dflt='y';;
5825*) dflt='n';;
5826esac
5827cat <<EOM
5828
5829Perl can be built to take advantage of long doubles which
5830(if available) may give more accuracy and range for floating point numbers.
5831
5832If this doesn't make any sense to you, just accept the default '$dflt'.
5833EOM
5834rp='Try to use long doubles if available?'
c1a7f87b
JH
5835. ./myread
5836case "$ans" in
b4eb6b3d
JH
5837y|Y) val="$define" ;;
5838*) val="$undef" ;;
5839esac
5840set uselongdouble
5841eval $setvar
bfb7748a 5842
b4eb6b3d
JH
5843case "$uselongdouble" in
5844true|[yY]*) uselongdouble="$define" ;;
5845esac
bfb7748a 5846
b4eb6b3d
JH
5847case "$uselongdouble" in
5848$define)
5849: Look for a hint-file generated 'call-back-unit'. If the
5850: user has specified that long doubles should be used,
5851: we may need to set or change some other defaults.
5852 if $test -f uselongdouble.cbu; then
5853 echo "Your platform has some specific hints for long doubles, using them..."
5854 . ./uselongdouble.cbu
5855 else
5856 $cat <<EOM
5857(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5858EOM
b4eb6b3d
JH
5859 fi
5860 ;;
5861esac
5862
5863case "$uselongdouble:$d_sqrtl" in
5864$define:$undef)
5865 $cat <<EOM >&4
5866
5867*** You requested the use of long doubles but you do not seem to have
5868*** the mathematic functions for long doubles. I'm disabling the use
5869*** of long doubles.
5870
5871EOM
5872 uselongdouble=$undef
5873 ;;
5874esac
5875
5876: check for length of double
5877echo " "
5878case "$doublesize" in
5879'')
5880 echo "Checking to see how big your double precision numbers are..." >&4
5881 $cat >try.c <<'EOCP'
5882#include <stdio.h>
5883int main()
5884{
5885 printf("%d\n", (int)sizeof(double));
5886 exit(0);
5887}
5888EOCP
5889 set try
5890 if eval $compile_ok; then
5440bc8e 5891 doublesize=`$run ./try`
b4eb6b3d
JH
5892 echo "Your double is $doublesize bytes long."
5893 else
5894 dflt='8'
5895 echo "(I can't seem to compile the test program. Guessing...)"
5896 rp="What is the size of a double precision number (in bytes)?"
5897 . ./myread
5898 doublesize="$ans"
5899 fi
5900 ;;
5901esac
5902$rm -f try.c try
5903
5904: check for long doubles
5905echo " "
5906echo "Checking to see if you have long double..." >&4
5907echo 'int main() { long double x = 7.0; }' > try.c
5908set try
5909if eval $compile; then
5910 val="$define"
5911 echo "You have long double."
5912else
5913 val="$undef"
5914 echo "You do not have long double."
5915fi
5916$rm try.*
5917set d_longdbl
5918eval $setvar
5919
5920: check for length of long double
5921case "${d_longdbl}${longdblsize}" in
5922$define)
5923 echo " "
5924 echo "Checking to see how big your long doubles are..." >&4
5925 $cat >try.c <<'EOCP'
5926#include <stdio.h>
5927int main()
5928{
5929 printf("%d\n", sizeof(long double));
5930}
5931EOCP
5932 set try
5933 set try
5934 if eval $compile; then
5440bc8e 5935 longdblsize=`$run ./try`
b4eb6b3d
JH
5936 echo "Your long doubles are $longdblsize bytes long."
5937 else
5938 dflt='8'
5939 echo " "
5940 echo "(I can't seem to compile the test program. Guessing...)" >&4
5941 rp="What is the size of a long double (in bytes)?"
5942 . ./myread
5943 longdblsize="$ans"
5944 fi
5945 if $test "X$doublesize" = "X$longdblsize"; then
5946 echo "(That isn't any different from an ordinary double.)"
5947 fi
5948 ;;
5949esac
5950$rm -f try.* try
5951
51de783f 5952case "$useperlio" in
5a3a8a02 5953$define|true|[yY]*|'') dflt='y';;
51de783f
JH
5954*) dflt='n';;
5955esac
5956cat <<EOM
5957
5958Previous version of $package used the standard IO mechanisms as
5a3a8a02 5959defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 5960alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
5961stdio mechanism is still available if needed. The abstraction layer
5962can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
5963Using PerlIO with sfio may cause problems with some extension modules.
5964
5965If this doesn't make any sense to you, just accept the default '$dflt'.
5966EOM
5a3a8a02 5967rp='Use the PerlIO abstraction layer?'
51de783f
JH
5968. ./myread
5969case "$ans" in
5970y|Y)
5971 val="$define"
5a3a8a02 5972 ;;
51de783f
JH
5973*)
5974 echo "Ok, doing things the stdio way."
5975 val="$undef"
5976 ;;
5977esac
5978set useperlio
5979eval $setvar
5980
5981case "$usesocks" in
5982$define|true|[yY]*)
5983 case "$useperlio" in
5984 $define|true|[yY]*) ;;
5985 *) cat >&4 <<EOM
5986
5987You are using the SOCKS proxy protocol library which means that you
5988should also use the PerlIO layer. You may be headed for trouble.
5989
5990EOM
5991 ;;
5992 esac
5993 ;;
5994esac
5995
5996
b4eb6b3d
JH
5997: determine the architecture name
5998echo " "
5999if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6000 tarch=`arch`"-$osname"
6001elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6002 if uname -m > tmparch 2>&1 ; then
6003 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6004 -e 's/$/'"-$osname/" tmparch`
6005 else
6006 tarch="$osname"
6007 fi
6008 $rm -f tmparch
6009else
6010 tarch="$osname"
6011fi
6012case "$myarchname" in
6013''|"$tarch") ;;
6014*)
6015 echo "(Your architecture name used to be $myarchname.)"
6016 archname=''
6017 ;;
6018esac
5440bc8e
JH
6019case "$targetarch" in
6020'') ;;
6021*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6022esac
b4eb6b3d
JH
6023myarchname="$tarch"
6024case "$archname" in
6025'') dflt="$tarch";;
6026*) dflt="$archname";;
6027esac
6028rp='What is your architecture name'
6029. ./myread
6030archname="$ans"
6031case "$usethreads" in
6032$define)
6033 echo "Threads selected." >&4
6034 case "$archname" in
6035 *-thread*) echo "...and architecture name already has -thread." >&4
6036 ;;
6037 *) archname="$archname-thread"
6038 echo "...setting architecture name to $archname." >&4
6039 ;;
6040 esac
6041 ;;
6042esac
6043case "$usemultiplicity" in
6044$define)
6045 echo "Multiplicity selected." >&4
6046 case "$archname" in
6047 *-multi*) echo "...and architecture name already has -multi." >&4
6048 ;;
6049 *) archname="$archname-multi"
6050 echo "...setting architecture name to $archname." >&4
6051 ;;
6052 esac
6053 ;;
6054esac
6055case "$use64bitint$use64bitall" in
6056*"$define"*)
6057 case "$archname64" in
6058 '')
6059 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6060 ;;
6061 *)
6062 case "$use64bitint" in
6063 "$define") echo "64 bit integers selected." >&4 ;;
6064 esac
6065 case "$use64bitall" in
6066 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6067 esac
6068 case "$archname" in
6069 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6070 ;;
6071 *) archname="$archname-$archname64"
6072 echo "...setting architecture name to $archname." >&4
6073 ;;
6074 esac
6075 ;;
6076 esac
6077esac
6078case "$uselongdouble" in
6079$define)
6080 echo "Long doubles selected." >&4
6081 case "$longdblsize" in
6082 $doublesize)
6083 "...but long doubles are equal to doubles, not changing architecture name." >&4
6084 ;;
6085 *)
6086 case "$archname" in
6087 *-ld*) echo "...and architecture name already has -ld." >&4
6088 ;;
6089 *) archname="$archname-ld"
6090 echo "...setting architecture name to $archname." >&4
6091 ;;
6092 esac
6093 ;;
6094 esac
6095 ;;
6096esac
51de783f
JH
6097case "$useperlio" in
6098$define)
6099 echo "Perlio selected." >&4
d46c9a2d
JH
6100 ;;
6101*)
6102 echo "Perlio not selected, using stdio." >&4
51de783f 6103 case "$archname" in
d46c9a2d 6104 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 6105 ;;
d46c9a2d 6106 *) archname="$archname-stdio"
51de783f
JH
6107 echo "...setting architecture name to $archname." >&4
6108 ;;
6109 esac
6110 ;;
6111esac
b4eb6b3d
JH
6112
6113: determine root of directory hierarchy where package will be installed.
6114case "$prefix" in
6115'')
6116 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6117 ;;
6118*)
6119 dflt="$prefix"
6120 ;;
6121esac
6122$cat <<EOM
6123
6124By default, $package will be installed in $dflt/bin, manual pages
6125under $dflt/man, etc..., i.e. with $dflt as prefix for all
6126installation directories. Typically this is something like /usr/local.
6127If you wish to have binaries under /usr/bin but other parts of the
6128installation under /usr/local, that's ok: you will be prompted
6129separately for each of the installation directories, the prefix being
6130only used to set the defaults.
6131
6132EOM
6133fn=d~
6134rp='Installation prefix to use?'
6135. ./getfile
6136oldprefix=''
6137case "$prefix" in
6138'') ;;
6139*)
6140 case "$ans" in
6141 "$prefix") ;;
6142 *) oldprefix="$prefix";;
6143 esac
6144 ;;
6145esac
6146prefix="$ans"
6147prefixexp="$ansexp"
6148
a6d26a0d
JH
6149case "$afsroot" in
6150'') afsroot=/afs ;;
6151*) afsroot=$afsroot ;;
6152esac
6153
b4eb6b3d
JH
6154: is AFS running?
6155echo " "
6156case "$afs" in
6157$define|true) afs=true ;;
6158$undef|false) afs=false ;;
a6d26a0d 6159*) if test -d $afsroot; then
b4eb6b3d
JH
6160 afs=true
6161 else
6162 afs=false
6163 fi
6164 ;;
6165esac
6166if $afs; then
6167 echo "AFS may be running... I'll be extra cautious then..." >&4
6168else
6169 echo "AFS does not seem to be running..." >&4
6170fi
6171
6172: determine installation prefix for where package is to be installed.
6173if $afs; then
6174$cat <<EOM
6175
6176Since you are running AFS, I need to distinguish the directory in which
6177files will reside from the directory in which they are installed (and from
6178which they are presumably copied to the former directory by occult means).
6179
6180EOM
6181 case "$installprefix" in
6182 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6183 *) dflt="$installprefix";;
6184 esac
6185else
6186$cat <<EOM
6187
6188In some special cases, particularly when building $package for distribution,
6189it is convenient to distinguish between the directory in which files should
6190be installed from the directory ($prefix) in which they
6191will eventually reside. For most users, these two directories are the same.
6192
6193EOM
6194 case "$installprefix" in
6195 '') dflt=$prefix ;;
6196 *) dflt=$installprefix;;
6197 esac
6198fi
6199fn=d~
6200rp='What installation prefix should I use for installing files?'
6201. ./getfile
6202installprefix="$ans"
6203installprefixexp="$ansexp"
6204
6205: set the prefixit variable, to compute a suitable default value
6206prefixit='case "$3" in
6207""|none)
6208 case "$oldprefix" in
6209 "") eval "$1=\"\$$2\"";;
6210 *)
6211 case "$3" in
6212 "") eval "$1=";;
6213 none)
6214 eval "tp=\"\$$2\"";
6215 case "$tp" in
6216 ""|" ") eval "$1=\"\$$2\"";;
6217 *) eval "$1=";;
6218 esac;;
6219 esac;;
6220 esac;;
6221*)
6222 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6223 case "$tp" in
6224 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6225 /*-$oldprefix/*|\~*-$oldprefix/*)
6226 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6227 *) eval "$1=\"\$$2\"";;
6228 esac;;
6229esac'
6230
6231
6232: get the patchlevel
6233echo " "
6234echo "Getting the current patchlevel..." >&4
6235if $test -r $rsrc/patchlevel.h;then
6236 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6237 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6238 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6239 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6240 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6241 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6242 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6243else
6244 revision=0
6245 patchlevel=0
6246 subversion=0
6247 api_revision=0
6248 api_version=0
6249 api_subversion=0
151e6568
MB
6250 perl_patchlevel=0
6251 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6252fi
151e6568
MB
6253if $test -r $rsrc/.patch ; then
6254 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6255 perl_patchlevel=`cat $rsrc/.patch`
6256 fi
6257fi
6258case "$perl_patchlevel" in
62590) ;;
6260'') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6261*) $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6262esac
b4eb6b3d
JH
6263case "$osname" in
6264dos|vms)
6265 : XXX Should be a Configure test for double-dots in filenames.
6266 version=`echo $revision $patchlevel $subversion | \
6267 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6268 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6269 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6270 ;;
6271*)
6272 version=`echo $revision $patchlevel $subversion | \
6273 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6274 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6275 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6276 ;;
6277esac
6278: Special case the 5.005_xx maintenance series, which used 5.005
6279: without any subversion label as a subdirectory in $sitelib
6280if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6281 api_versionstring='5.005'
6282fi
6283
6284: determine installation style
6285: For now, try to deduce it from prefix unless it is already set.
6286: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6287case "$installstyle" in
6288'') case "$prefix" in
6289 *perl*) dflt='lib';;
6290 *) dflt='lib/perl5' ;;
6291 esac
6292 ;;
6293*) dflt="$installstyle" ;;
6294esac
6295: Probably not worth prompting for this since we prompt for all
6296: the directories individually, and the prompt would be too long and
6297: confusing anyway.
6298installstyle=$dflt
6299
6300: determine where private library files go
6301: Usual default is /usr/local/lib/perl5/$version.
6302: Also allow things like /opt/perl/lib/$version, since
6303: /opt/perl/lib/perl5... would be redundant.
6304: The default "style" setting is made in installstyle.U
6305case "$installstyle" in
6306*lib/perl5*) set dflt privlib lib/$package/$version ;;
6307*) set dflt privlib lib/$version ;;
6308esac
6309eval $prefixit
6310$cat <<EOM
6311
6312There are some auxiliary files for $package that need to be put into a
6313private library directory that is accessible by everyone.
6314
6315EOM
6316fn=d~+
6317rp='Pathname where the private library files will reside?'
6318. ./getfile
6319privlib="$ans"
6320privlibexp="$ansexp"
6321: Change installation prefix, if necessary.
6322if $test X"$prefix" != X"$installprefix"; then
6323 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6324else
6325 installprivlib="$privlibexp"
6326fi
6327
6328: set the prefixup variable, to restore leading tilda escape
6329prefixup='case "$prefixexp" in
6330"$prefix") ;;
6331*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6332esac'
6333
6334: determine where public architecture dependent libraries go
6335set archlib archlib
6336eval $prefixit
6337: privlib default is /usr/local/lib/$package/$version
6338: archlib default is /usr/local/lib/$package/$version/$archname
6339: privlib may have an optional trailing /share.
6340tdflt=`echo $privlib | $sed 's,/share$,,'`
6341tdflt=$tdflt/$archname
6342case "$archlib" in
6343'') dflt=$tdflt
6344 ;;
6345*) dflt="$archlib"
6346 ;;
6347esac
6348$cat <<EOM
6349
6350$spackage contains architecture-dependent library files. If you are
6351sharing libraries in a heterogeneous environment, you might store
6352these files in a separate location. Otherwise, you can just include
6353them with the rest of the public library files.
6354
6355EOM
6356fn=d+~
6357rp='Where do you want to put the public architecture-dependent libraries?'
6358. ./getfile
6359archlib="$ans"
6360archlibexp="$ansexp"
6361if $test X"$archlib" = X"$privlib"; then
6362 d_archlib="$undef"
6363else
6364 d_archlib="$define"
6365fi
6366: Change installation prefix, if necessary.
6367if $test X"$prefix" != X"$installprefix"; then
6368 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6369else
6370 installarchlib="$archlibexp"
6371fi
6372
6373
6374: Binary compatibility with 5.005 is not possible for builds
6375: with advanced features
6376case "$usethreads$usemultiplicity" in
6377*define*)
6378 bincompat5005="$undef"
6379 d_bincompat5005="$undef"
6380 ;;
6381*) $cat <<EOM
6382
6383This version of Perl can be compiled for binary compatibility with 5.005.
6384If you decide to do so, you will be able to continue using most of the
6385extensions that were compiled for Perl 5.005.
6386
6387EOM
6388 case "$bincompat5005$d_bincompat5005" in
6389 *"$undef"*) dflt=n ;;
6390 *) dflt=y ;;
6391 esac
6392 rp='Binary compatibility with Perl 5.005?'
6393 . ./myread
6394 case "$ans" in
6395 y*) val="$define" ;;
6396 *) val="$undef" ;;
6397 esac
6398 set d_bincompat5005
6399 eval $setvar
6400 case "$d_bincompat5005" in
6401 "$define")
6402 bincompat5005="$define"
6403 ;;
6404 *) bincompat5005="$undef"
6405 d_bincompat5005="$undef"
6406 ;;
6407 esac
6408 ;;
6409esac
6410
6411
6412: see if setuid scripts can be secure
6413$cat <<EOM
6414
6415Some kernels have a bug that prevents setuid #! scripts from being
6416secure. Some sites have disabled setuid #! scripts because of this.
6417
6418First let's decide if your kernel supports secure setuid #! scripts.
6419(If setuid #! scripts would be secure but have been disabled anyway,
6420don't say that they are secure if asked.)
6421
6422EOM
6423
6424val="$undef"
6425if $test -d /dev/fd; then
6426 echo "#!$ls" >reflect
6427 chmod +x,u+s reflect
6428 ./reflect >flect 2>&1
6429 if $contains "/dev/fd" flect >/dev/null; then
6430 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6431 val="$define"
6432 else
6433 $cat <<EOM
6434If you are not sure if they are secure, I can check but I'll need a
6435username and password different from the one you are using right now.
6436If you don't have such a username or don't want me to test, simply
6437enter 'none'.
6438
6439EOM
6440 rp='Other username to test security of setuid scripts with?'
6441 dflt='none'
6442 . ./myread
6443 case "$ans" in
6444 n|none)
6445 case "$d_suidsafe" in
6446 '') echo "I'll assume setuid scripts are *not* secure." >&4
6447 dflt=n;;
6448 "$undef")
6449 echo "Well, the $hint value is *not* secure." >&4
6450 dflt=n;;
6451 *) echo "Well, the $hint value *is* secure." >&4
6452 dflt=y;;
6453 esac
c1a7f87b 6454 ;;
b4eb6b3d
JH
6455 *)
6456 $rm -f reflect flect
6457 echo "#!$ls" >reflect
6458 chmod +x,u+s reflect
6459 echo >flect
6460 chmod a+w flect
6461 echo '"su" will (probably) prompt you for '"$ans's password."
6462 su $ans -c './reflect >flect'
6463 if $contains "/dev/fd" flect >/dev/null; then
6464 echo "Okay, it looks like setuid scripts are secure." >&4
6465 dflt=y
6466 else
6467 echo "I don't think setuid scripts are secure." >&4
6468 dflt=n
6469 fi
6470 ;;
6471 esac
6472 rp='Does your kernel have *secure* setuid scripts?'
6473 . ./myread
6474 case "$ans" in
6475 [yY]*) val="$define";;
6476 *) val="$undef";;
6477 esac
6478 fi
6479else
6480 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6481 echo "(That's for file descriptors, not floppy disks.)"
6482 val="$undef"
6483fi
6484set d_suidsafe
6485eval $setvar
6486
6487$rm -f reflect flect
6488
6489: now see if they want to do setuid emulation
6490echo " "
6491val="$undef"
6492case "$d_suidsafe" in
6493"$define")
6494 val="$undef"
6495 echo "No need to emulate SUID scripts since they are secure here." >& 4
6496 ;;
6497*)
6498 $cat <<EOM
6499Some systems have disabled setuid scripts, especially systems where
6500setuid scripts cannot be secure. On systems where setuid scripts have
6501been disabled, the setuid/setgid bits on scripts are currently
6502useless. It is possible for $package to detect those bits and emulate
6503setuid/setgid in a secure fashion. This emulation will only work if
6504setuid scripts have been disabled in your kernel.
6505
6506EOM
6507 case "$d_dosuid" in
6508 "$define") dflt=y ;;
6509 *) dflt=n ;;
6510 esac
6511 rp="Do you want to do setuid/setgid emulation?"
6512 . ./myread
6513 case "$ans" in
6514 [yY]*) val="$define";;
6515 *) val="$undef";;
6516 esac
6517 ;;
6518esac
6519set d_dosuid
6520eval $setvar
6521
b4eb6b3d
JH
6522: see if this is a malloc.h system
6523set malloc.h i_malloc
6524eval $inhdr
6525
6526: see if stdlib is available
6527set stdlib.h i_stdlib
6528eval $inhdr
6529
6530: determine which malloc to compile in
6531echo " "
6532case "$usemymalloc" in
c4163172
JH
6533[yY]*|true|$define) dflt='y' ;;
6534[nN]*|false|$undef) dflt='n' ;;
6535*) case "$ptrsize" in
6536 4) dflt='y' ;;
6537 *) dflt='n' ;;
6538 esac
6539 ;;
8dfa8df9 6540esac
b4eb6b3d
JH
6541rp="Do you wish to attempt to use the malloc that comes with $package?"
6542. ./myread
6543usemymalloc="$ans"
6544case "$ans" in
6545y*|true)
6546 usemymalloc='y'
6547 mallocsrc='malloc.c'
6548 mallocobj="malloc$_o"
6549 d_mymalloc="$define"
6550 case "$libs" in
6551 *-lmalloc*)
6552 : Remove malloc from list of libraries to use
6553 echo "Removing unneeded -lmalloc from library list" >&4
6554 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6555 shift
6556 libs="$*"
6557 echo "libs = $libs" >&4
6558 ;;
6559 esac
6560 ;;
6561*)
6562 usemymalloc='n'
6563 mallocsrc=''
6564 mallocobj=''
6565 d_mymalloc="$undef"
6566 ;;
6567esac
6568
6569: compute the return types of malloc and free
6570echo " "
6571$cat >malloc.c <<END
6572#$i_malloc I_MALLOC
6573#$i_stdlib I_STDLIB
6574#include <stdio.h>
6575#include <sys/types.h>
6576#ifdef I_MALLOC
6577#include <malloc.h>
6578#endif
6579#ifdef I_STDLIB
6580#include <stdlib.h>
6581#endif
6582#ifdef TRY_MALLOC
6583void *malloc();
6584#endif
6585#ifdef TRY_FREE
6586void free();
6587#endif
6588END
6589case "$malloctype" in
6590'')
6591 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6592 malloctype='void *'
6593 else
6594 malloctype='char *'
6595 fi
6596 ;;
6597esac
6598echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6599
6600case "$freetype" in
6601'')
6602 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6603 freetype='void'
6604 else
6605 freetype='int'
6606 fi
6607 ;;
6608esac
6609echo "Your system uses $freetype free(), it would seem." >&4
6610$rm -f malloc.[co]
6611$cat <<EOM
6612
6613After $package is installed, you may wish to install various
6614add-on modules and utilities. Typically, these add-ons will
6615be installed under $prefix with the rest
6616of this package. However, you may wish to install such add-ons
6617elsewhere under a different prefix.
6618
6619If you do not wish to put everything under a single prefix, that's
6620ok. You will be prompted for the individual locations; this siteprefix
6621is only used to suggest the defaults.
6622
6623The default should be fine for most people.
6624
6625EOM
6626fn=d~+
6627rp='Installation prefix to use for add-on modules and utilities?'
6628: XXX Here might be another good place for an installstyle setting.
6629case "$siteprefix" in
6630'') dflt=$prefix ;;
6631*) dflt=$siteprefix ;;
6632esac
6633. ./getfile
6634: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6635oldsiteprefix=''
6636case "$siteprefix" in
6637'') ;;
6638*) case "$ans" in
6639 "$prefix") ;;
6640 *) oldsiteprefix="$prefix";;
6641 esac
6642 ;;
6643esac
6644siteprefix="$ans"
6645siteprefixexp="$ansexp"
6646
6647: determine where site specific libraries go.
6648: Usual default is /usr/local/lib/perl5/site_perl/$version
6649: The default "style" setting is made in installstyle.U
6650: XXX No longer works with Prefixit stuff.
6651prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6652case "$sitelib" in
6653'') case "$installstyle" in
6654 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6655 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6656 esac
6657 ;;
6658*) dflt="$sitelib"
6659 ;;
6660esac
6661$cat <<EOM
6662
6663The installation process will create a directory for
6664site-specific extensions and modules. Most users find it convenient
6665to place all site-specific files in this directory rather than in the
6666main distribution directory.
6667
6668EOM
6669fn=d~+
6670rp='Pathname for the site-specific library files?'
6671. ./getfile
6672sitelib="$ans"
6673sitelibexp="$ansexp"
6674sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6675: Change installation prefix, if necessary.
6676if $test X"$prefix" != X"$installprefix"; then
6677 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6678else
6679 installsitelib="$sitelibexp"
6680fi
6681
6682: determine where site specific architecture-dependent libraries go.
6683: sitelib default is /usr/local/lib/perl5/site_perl/$version
6684: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6685: sitelib may have an optional trailing /share.
6686case "$sitearch" in
6687'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6688 dflt="$dflt/$archname"
6689 ;;
6690*) dflt="$sitearch"
6691 ;;
6692esac
6693set sitearch sitearch none
6694eval $prefixit
6695$cat <<EOM
6696
6697The installation process will also create a directory for
6698architecture-dependent site-specific extensions and modules.
6699
6700EOM
6701fn=d~+
6702rp='Pathname for the site-specific architecture-dependent library files?'
6703. ./getfile
6704sitearch="$ans"
6705sitearchexp="$ansexp"
6706: Change installation prefix, if necessary.
6707if $test X"$prefix" != X"$installprefix"; then
6708 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6709else
6710 installsitearch="$sitearchexp"
6711fi
6712
6713$cat <<EOM
6714
6715The installation process will also create a directory for
6716vendor-supplied add-ons. Vendors who supply perl with their system
6717may find it convenient to place all vendor-supplied files in this
6718directory rather than in the main distribution directory. This will
6719ease upgrades between binary-compatible maintenance versions of perl.
6720
6721Of course you may also use these directories in whatever way you see
6722fit. For example, you might use them to access modules shared over a
6723company-wide network.
6724
6725The default answer should be fine for most people.
6726This causes further questions about vendor add-ons to be skipped
6727and no vendor-specific directories will be configured for perl.
6728
6729EOM
6730rp='Do you want to configure vendor-specific add-on directories?'
6731case "$usevendorprefix" in
6732define|true|[yY]*) dflt=y ;;
6733*) : User may have set vendorprefix directly on Configure command line.
6734 case "$vendorprefix" in
6735 ''|' ') dflt=n ;;
6736 *) dflt=y ;;
6737 esac
6738 ;;
6739esac
6740. ./myread
6741case "$ans" in
6742[yY]*) fn=d~+
6743 rp='Installation prefix to use for vendor-supplied add-ons?'
6744 case "$vendorprefix" in
6745 '') dflt='' ;;
6746 *) dflt=$vendorprefix ;;
6747 esac
6748 . ./getfile
6749 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6750 oldvendorprefix=''
6751 case "$vendorprefix" in
6752 '') ;;
6753 *) case "$ans" in
6754 "$prefix") ;;
6755 *) oldvendorprefix="$prefix";;
6756 esac
6757 ;;
6758 esac
6759 usevendorprefix="$define"
6760 vendorprefix="$ans"
6761 vendorprefixexp="$ansexp"
6762 ;;
6763*) usevendorprefix="$undef"
6764 vendorprefix=''
6765 vendorprefixexp=''
6766 ;;
6767esac
6768
6769case "$vendorprefix" in
6770'') d_vendorlib="$undef"
6771 vendorlib=''
6772 vendorlibexp=''
6773 ;;
6774*) d_vendorlib="$define"
6775 : determine where vendor-supplied modules go.
6776 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6777 case "$vendorlib" in
6778 '')
6779 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6780 case "$installstyle" in
6781 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6782 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6783 esac
6784 ;;
6785 *) dflt="$vendorlib"
6786 ;;
6787 esac
6788 fn=d~+
6789 rp='Pathname for the vendor-supplied library files?'
6790 . ./getfile
6791 vendorlib="$ans"
6792 vendorlibexp="$ansexp"
6793 ;;
6794esac
6795vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6796: Change installation prefix, if necessary.
6797if $test X"$prefix" != X"$installprefix"; then
6798 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6799else
6800 installvendorlib="$vendorlibexp"
6801fi
6802
6803case "$vendorprefix" in
6804'') d_vendorarch="$undef"
6805 vendorarch=''
6806 vendorarchexp=''
6807 ;;
6808*) d_vendorarch="$define"
6809 : determine where vendor-supplied architecture-dependent libraries go.
6810 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6811 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6812 : vendorlib may have an optional trailing /share.
6813 case "$vendorarch" in
6814 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6815 dflt="$dflt/$archname"
6816 ;;
6817 *) dflt="$vendorarch" ;;
6818 esac
6819 fn=d~+
6820 rp='Pathname for vendor-supplied architecture-dependent files?'
6821 . ./getfile
6822 vendorarch="$ans"
6823 vendorarchexp="$ansexp"
6824 ;;
6825esac
6826: Change installation prefix, if necessary.
6827if $test X"$prefix" != X"$installprefix"; then
6828 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6829else
6830 installvendorarch="$vendorarchexp"
6831fi
6832
6833: Final catch-all directories to search
6834$cat <<EOM
6835
6836Lastly, you can have perl look in other directories for extensions and
6837modules in addition to those already specified.
6838These directories will be searched after
6839 $sitearch
6840 $sitelib
6841EOM
6842test X"$vendorlib" != "X" && echo ' ' $vendorlib
6843test X"$vendorarch" != "X" && echo ' ' $vendorarch
6844echo ' '
6845case "$otherlibdirs" in
6846''|' ') dflt='none' ;;
6847*) dflt="$otherlibdirs" ;;
6848esac
6849$cat <<EOM
6850Enter a colon-separated set of extra paths to include in perl's @INC
6851search path, or enter 'none' for no extra paths.
6852
6853EOM
6854
6855rp='Colon-separated list of additional directories for perl to search?'
6856. ./myread
6857case "$ans" in
6858' '|''|none) otherlibdirs=' ' ;;
6859*) otherlibdirs="$ans" ;;
6860esac
6861case "$otherlibdirs" in
6862' ') val=$undef ;;
6863*) val=$define ;;
6864esac
6865set d_perl_otherlibdirs
6866eval $setvar
6867
6868: Cruising for prototypes
6869echo " "
6870echo "Checking out function prototypes..." >&4
6871$cat >prototype.c <<'EOCP'
6872int main(int argc, char *argv[]) {
6873 exit(0);}
6874EOCP
6875if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6876 echo "Your C compiler appears to support function prototypes."
6877 val="$define"
6878else
6879 echo "Your C compiler doesn't seem to understand function prototypes."
6880 val="$undef"
6881fi
6882set prototype
6883eval $setvar
6884$rm -f prototype*
6885
6886case "$prototype" in
6887"$define") ;;
6888*) ansi2knr='ansi2knr'
6889 echo " "
6890 cat <<EOM >&4
6891
6892$me: FATAL ERROR:
6893This version of $package can only be compiled by a compiler that
6894understands function prototypes. Unfortunately, your C compiler
6895 $cc $ccflags
6896doesn't seem to understand them. Sorry about that.
6897
6898If GNU cc is available for your system, perhaps you could try that instead.
6899
6900Eventually, we hope to support building Perl with pre-ANSI compilers.
6901If you would like to help in that effort, please contact <perlbug@perl.org>.
6902
6903Aborting Configure now.
6904EOM
6905 exit 2
6906 ;;
6907esac
6908
6909: determine where public executables go
6910echo " "
6911set dflt bin bin
6912eval $prefixit
6913fn=d~
6914rp='Pathname where the public executables will reside?'
6915. ./getfile
6916if $test "X$ansexp" != "X$binexp"; then
6917 installbin=''
6918fi
6919bin="$ans"
6920binexp="$ansexp"
6921: Change installation prefix, if necessary.
6922: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6923if $test X"$prefix" != X"$installprefix"; then
6924 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6925else
6926 installbin="$binexp"
6927fi
6928
6929: Find perl5.005 or later.
6930echo "Looking for a previously installed perl5.005 or later... "
6931case "$perl5" in
a938a3bb 6932'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6933 : Check if this perl is recent and can load a simple module
a938a3bb 6934 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6935 perl5=$tdir/perl
6936 break;
a938a3bb
IZ
6937 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6938 perl5=$tdir/perl5
b4eb6b3d
JH
6939 break;
6940 fi
6941 done
6942 ;;
6943*) perl5="$perl5"
6944 ;;
6945esac
6946case "$perl5" in
6947'') echo "None found. That's ok.";;
6948*) echo "Using $perl5." ;;
6949esac
6950
6951: Determine list of previous versions to include in @INC
6952$cat > getverlist <<EOPL
6953#!$perl5 -w
6954use File::Basename;
6955\$api_versionstring = "$api_versionstring";
6956\$version = "$version";
6957\$stem = "$sitelib_stem";
6958\$archname = "$archname";
6959EOPL
6960 $cat >> getverlist <<'EOPL'
6961# Can't have leading @ because metaconfig interprets it as a command!
6962;@inc_version_list=();
6963# XXX Redo to do opendir/readdir?
6964if (-d $stem) {
6965 chdir($stem);
6966 ;@candidates = glob("5.*");
6967}
6968else {
6969 ;@candidates = ();
6970}
6971
6972# XXX ToDo: These comparisons must be reworked when two-digit
6973# subversions come along, so that 5.7.10 compares as greater than
6974# 5.7.3! By that time, hope that 5.6.x is sufficiently
6975# widespread that we can use the built-in version vectors rather
6976# than reinventing them here. For 5.6.0, however, we must
6977# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6978foreach $d (@candidates) {
6979 if ($d lt $version) {
6980 if ($d ge $api_versionstring) {
6981 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6982 }
6983 elsif ($d ge "5.005") {
6984 unshift(@inc_version_list, grep { -d } $d);
6985 }
6986 }
6987 else {
6988 # Skip newer version. I.e. don't look in
6989 # 5.7.0 if we're installing 5.6.1.
6990 }
6991}
6992
6993if (@inc_version_list) {
6994 print join(' ', @inc_version_list);
6995}
6996else {
6997 # Blank space to preserve value for next Configure run.
6998 print " ";
6999}
7000EOPL
7001chmod +x getverlist
7002case "$inc_version_list" in
a938a3bb 7003'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
7004 dflt=`$perl5 getverlist`
7005 else
7006 dflt='none'
7007 fi
7008 ;;
7009$undef) dflt='none' ;;
6d1a7737 7010*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
7011esac
7012case "$dflt" in
7013''|' ') dflt=none ;;
7014esac
7015case "$dflt" in
70165.005) case "$bincompat5005" in
7017 $define|true|[yY]*) ;;
7018 *) dflt=none ;;
7019 esac
7020 ;;
7021esac
7022$cat <<'EOM'
7023
7024In order to ease the process of upgrading, this version of perl
7025can be configured to use modules built and installed with earlier
7026versions of perl that were installed under $prefix. Specify here
7027the list of earlier versions that this version of perl should check.
7028If Configure detected no earlier versions of perl installed under
7029$prefix, then the list will be empty. Answer 'none' to tell perl
7030to not search earlier versions.
7031
7032The default should almost always be sensible, so if you're not sure,
7033just accept the default.
7034EOM
7035
7036rp='List of earlier versions to include in @INC?'
7037. ./myread
7038case "$ans" in
7039[Nn]one|''|' ') inc_version_list=' ' ;;
7040*) inc_version_list="$ans" ;;
7041esac
7042case "$inc_version_list" in
7043''|' ')
7044 inc_version_list_init='0';;
7045*) inc_version_list_init=`echo $inc_version_list |
7046 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7047 ;;
7048esac
7049$rm -f getverlist
7050
7051: determine whether to install perl also as /usr/bin/perl
7052
7053echo " "
7054if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7055 $cat <<EOM
7056Many scripts expect perl to be installed as /usr/bin/perl.
7057I can install the perl you are about to compile also as /usr/bin/perl
7058(in addition to $installbin/perl).
7059EOM
7060 case "$installusrbinperl" in
7061 "$undef"|[nN]*) dflt='n';;
7062 *) dflt='y';;
7063 esac
7064 rp="Do you want to install perl as /usr/bin/perl?"
7065 . ./myread
7066 case "$ans" in
7067 [yY]*) val="$define";;
7068 *) val="$undef" ;;
7069 esac
7070else
7071 val="$undef"
7072fi
7073set installusrbinperl
7074eval $setvar
7075
7076: see if dld is available
7077set dld.h i_dld
7078eval $inhdr
7079
7080: see if dlopen exists
7081xxx_runnm="$runnm"
7082runnm=false
7083set dlopen d_dlopen
7084eval $inlibc
7085runnm="$xxx_runnm"
7086
7087: determine which dynamic loading, if any, to compile in
7088echo " "
7089dldir="ext/DynaLoader"
7090case "$usedl" in
7091$define|y|true)
7092 dflt='y'
7093 usedl="$define"
7094 ;;
7095$undef|n|false)
7096 dflt='n'
7097 usedl="$undef"
7098 ;;
7099*)
7100 dflt='n'
7101 case "$d_dlopen" in
7102 $define) dflt='y' ;;
7103 esac
7104 case "$i_dld" in
7105 $define) dflt='y' ;;
7106 esac
7107 : Does a dl_xxx.xs file exist for this operating system
7108 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7109 ;;
7110esac
7111rp="Do you wish to use dynamic loading?"
7112. ./myread
7113usedl="$ans"
7114case "$ans" in
7115y*) usedl="$define"
7116 case "$dlsrc" in
7117 '')
7118 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7119 dflt="$dldir/dl_${osname}.xs"
7120 elif $test "$d_dlopen" = "$define" ; then
7121 dflt="$dldir/dl_dlopen.xs"
7122 elif $test "$i_dld" = "$define" ; then
7123 dflt="$dldir/dl_dld.xs"
7124 else
7125 dflt=''
7126 fi
7127 ;;
7128 *) dflt="$dldir/$dlsrc"
7129 ;;
7130 esac
7131 echo "The following dynamic loading files are available:"
7132 : Can not go over to $dldir because getfile has path hard-coded in.
7133 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7134 rp="Source file to use for dynamic loading"
7135 fn="fne"
7136 gfpth="$src"
7137 . ./getfile
7138 usedl="$define"
7139 : emulate basename
7140 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7141
7142 $cat << EOM
7143
7144Some systems may require passing special flags to $cc -c to
7145compile modules that will be used to create a shared library.
7146To use no flags, say "none".
7147
7148EOM
7149 case "$cccdlflags" in
7150 '') case "$gccversion" in
7151 '') case "$osname" in
7152 hpux) dflt='+z' ;;
7153 next) dflt='none' ;;
7154 irix*) dflt='-KPIC' ;;
48bcfe03 7155 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
7156 sunos) dflt='-pic' ;;
7157 *) dflt='none' ;;
7158 esac
7159 ;;
7160 *) case "$osname" in
48bcfe03 7161 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
7162 *) dflt='-fpic' ;;
7163 esac ;;
7164 esac ;;
7165 ' ') dflt='none' ;;
7166 *) dflt="$cccdlflags" ;;
7167 esac
7168 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7169 . ./myread
7170 case "$ans" in
7171 none) cccdlflags=' ' ;;
7172 *) cccdlflags="$ans" ;;
7173 esac
7174
7175 cat << EOM
7176
7177Some systems use ld to create libraries that can be dynamically loaded,
7178while other systems (such as those using ELF) use $cc.
7179
7180EOM
7181 case "$ld" in
7182 '') $cat >try.c <<'EOM'
7183/* Test for whether ELF binaries are produced */
7184#include <fcntl.h>
7185#include <stdlib.h>
7186int main() {
7187 char b[4];
7188 int i = open("a.out",O_RDONLY);
7189 if(i == -1)
7190 exit(1); /* fail */
7191 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7192 exit(0); /* succeed (yes, it's ELF) */
7193 else
7194 exit(1); /* fail */
7195}
7196EOM
5440bc8e 7197 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7198 cat <<EOM
7199You appear to have ELF support. I'll use $cc to build dynamic libraries.
7200EOM
7201 dflt="$cc"
7202 else
7203 echo "I'll use ld to build dynamic libraries."
7204 dflt='ld'
7205 fi
7206 rm -f try.c a.out
7207 ;;
7208 *) dflt="$ld"
7209 ;;
7210 esac
7211
7212 rp="What command should be used to create dynamic libraries?"
7213 . ./myread
7214 ld="$ans"
7215
7216 cat << EOM
7217
7218Some systems may require passing special flags to $ld to create a
7219library that can be dynamically loaded. If your ld flags include
7220-L/other/path options to locate libraries outside your loader's normal
7221search path, you may need to specify those -L options here as well. To
7222use no flags, say "none".
7223
7224EOM
7225 case "$lddlflags" in
7226 '') case "$osname" in
7227 beos) dflt='-nostart' ;;
7228 hpux) dflt='-b';
7229 case "$gccversion" in
7230 '') dflt="$dflt +vnocompatwarnings" ;;
7231 esac
7232 ;;
7233 linux|irix*) dflt='-shared' ;;
7234 next) dflt='none' ;;
7235 solaris) dflt='-G' ;;
7236 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7237 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7238 *) dflt='none' ;;
7239 esac
7240 ;;
7241 *) dflt="$lddlflags" ;;
7242 esac
7243
7244 : Try to guess additional flags to pick up local libraries.
7245 : Be careful not to append to a plain 'none'
7246 case "$dflt" in
7247 none) dflt='' ;;
7248 esac
7249 for thisflag in $ldflags; do
7250 case "$thisflag" in
7251 -L*|-R*)
7252 case " $dflt " in
7253 *" $thisflag "*) ;;
7254 *) dflt="$dflt $thisflag" ;;
7255 esac
7256 ;;
7257 esac
7258 done
7259
7260 case "$dflt" in
7261 ''|' ') dflt='none' ;;
7262 esac
7263
7264 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7265 . ./myread
7266 case "$ans" in
7267 none) lddlflags=' ' ;;
7268 *) lddlflags="$ans" ;;
7269 esac
7270
7271 cat <<EOM
7272
7273Some systems may require passing special flags to $cc to indicate that
7274the resulting executable will use dynamic linking. To use no flags,
7275say "none".
7276
7277EOM
7278 case "$ccdlflags" in
7279 '') case "$osname" in
7280 hpux) dflt='-Wl,-E' ;;
7281 linux) dflt='-rdynamic' ;;
7282 next) dflt='none' ;;
7283 sunos) dflt='none' ;;
7284 *) dflt='none' ;;
7285 esac ;;
7286 ' ') dflt='none' ;;
7287 *) dflt="$ccdlflags" ;;
7288 esac
7289 rp="Any special flags to pass to $cc to use dynamic linking?"
7290 . ./myread
7291 case "$ans" in
7292 none) ccdlflags=' ' ;;
7293 *) ccdlflags="$ans" ;;
7294 esac
7295 ;;
7296*) usedl="$undef"
7297 ld='ld'
7298 dlsrc='dl_none.xs'
7299 lddlflags=''
7300 ccdlflags=''
7301 ;;
7302esac
7303
7304also=''
7305case "$usedl" in
7306$undef)
7307 # No dynamic loading being used, so don't bother even to prompt.
7308 useshrplib='false'
7309 ;;
7310*) case "$useshrplib" in
7311 '') case "$osname" in
48bcfe03 7312 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7313 dflt=y
7314 also='Building a shared libperl is required for dynamic loading to work on your system.'
7315 ;;
7316 next*)
7317 case "$osvers" in
7318 4*) dflt=y
7319 also='Building a shared libperl is needed for MAB support.'
7320 ;;
7321 *) dflt=n
7322 ;;
7323 esac
7324 ;;
7325 *) dflt=n
7326 ;;
7327 esac
7328 ;;
7329 $define|true|[Yy]*)
7330 dflt=y
7331 ;;
7332 *) dflt=n
7333 ;;
7334 esac
7335 $cat << EOM
7336
7337The perl executable is normally obtained by linking perlmain.c with
7338libperl${_a}, any static extensions (usually just DynaLoader), and
7339any other libraries needed on this system (such as -lm, etc.). Since
7340your system supports dynamic loading, it is probably possible to build
7341a shared libperl.$so. If you will have more than one executable linked
7342to libperl.$so, this will significantly reduce the size of each
7343executable, but it may have a noticeable affect on performance. The
7344default is probably sensible for your system.
7345$also
7346
7347EOM
7348 rp="Build a shared libperl.$so (y/n)"
7349 . ./myread
7350 case "$ans" in
7351 true|$define|[Yy]*)
7352 useshrplib='true' ;;
7353 *) useshrplib='false' ;;
7354 esac
7355 ;;
7356esac
7357
7358case "$useshrplib" in
7359true)
7360 case "$libperl" in
7361 '')
7362 # Figure out a good name for libperl.so. Since it gets stored in
7363 # a version-specific architecture-dependent library, the version
7364 # number isn't really that important, except for making cc/ld happy.
7365 #
7366 # A name such as libperl.so.3.1
7367 majmin="libperl.$so.$patchlevel.$subversion"
7368 # A name such as libperl.so.301
7369 majonly=`echo $patchlevel $subversion |
7370 $awk '{printf "%d%02d", $1, $2}'`
7371 majonly=libperl.$so.$majonly
7372 # I'd prefer to keep the os-specific stuff here to a minimum, and
7373 # rely on figuring it out from the naming of libc.
7374 case "${osname}${osvers}" in
7375 next4*)
7376 dflt=libperl.5.$so
7377 # XXX How handle the --version stuff for MAB?
7378 ;;
7379 linux*) # ld won't link with a bare -lperl otherwise.
7380 dflt=libperl.$so
7381 ;;
7382 cygwin*) # include version
7383 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7384 ;;
7385 *) # Try to guess based on whether libc has major.minor.
7386 case "$libc" in
7387 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7388 *libc.$so.[0-9]*) dflt=$majonly ;;
7389 *) dflt=libperl.$so ;;
7390 esac
7391 ;;
7392 esac
7393 ;;
7394 *) dflt=$libperl
7395 ;;
7396 esac
7397 cat << EOM
7398
7399I need to select a good name for the shared libperl. If your system uses
7400library names with major and minor numbers, then you might want something
7401like $majmin. Alternatively, if your system uses a single version
7402number for shared libraries, then you might want to use $majonly.
7403Or, your system might be quite happy with a simple libperl.$so.
7404
7405Since the shared libperl will get installed into a version-specific
7406architecture-dependent directory, the version number of the shared perl
7407library probably isn't important, so the default should be o.k.
7408
7409EOM
7410 rp='What name do you want to give to the shared libperl?'
7411 . ./myread
7412 libperl=$ans
7413 echo "Ok, I'll use $libperl"
7414 ;;
7415*)
7416 libperl="libperl${_a}"
7417 ;;
7418esac
7419
7420# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7421case "$shrpdir" in
7422'') ;;
7423*) $cat >&4 <<EOM
7424WARNING: Use of the shrpdir variable for the installation location of
7425the shared $libperl is not supported. It was never documented and
7426will not work in this version. Let me (perlbug@perl.org)
7427know of any problems this may cause.
7428
7429EOM
7430 case "$shrpdir" in
7431 "$archlibexp/CORE")
7432 $cat >&4 <<EOM
7433But your current setting of $shrpdir is
7434the default anyway, so it's harmless.
7435EOM
7436 ;;
7437 *)
7438 $cat >&4 <<EOM
7439Further, your current attempted setting of $shrpdir
7440conflicts with the value of $archlibexp/CORE
7441that installperl will use.
7442EOM
7443 ;;
7444 esac
7445 ;;
7446esac
7447
7448# How will the perl executable find the installed shared $libperl?
7449# Add $xxx to ccdlflags.
7450# If we can't figure out a command-line option, use $shrpenv to
7451# set env LD_RUN_PATH. The main perl makefile uses this.
7452shrpdir=$archlibexp/CORE
7453xxx=''
7454tmp_shrpenv=''
7455if "$useshrplib"; then
7456 case "$osname" in
7457 aix)
7458 # We'll set it in Makefile.SH...
7459 ;;
7460 solaris|netbsd)
7461 xxx="-R $shrpdir"
7462 ;;
7463 freebsd)
7464 xxx="-Wl,-R$shrpdir"
7465 ;;
7466 linux|irix*|dec_osf)
7467 xxx="-Wl,-rpath,$shrpdir"
7468 ;;
7469 next)
7470 # next doesn't like the default...
7471 ;;
7472 beos)
7473 # beos doesn't like the default, either.
7474 ;;
7475 hpux*)
7476 # hpux doesn't like the default, either.
7477 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7478 ;;
7479 *)
7480 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7481 ;;
7482 esac
7483 case "$xxx" in
7484 '') ;;
7485 *)
7486 # Only add $xxx if it isn't already in ccdlflags.
7487 case " $ccdlflags " in
7488 *" $xxx "*) ;;
7489 *) ccdlflags="$ccdlflags $xxx"
7490 cat <<EOM >&4
7491
7492Adding $xxx to the flags
7493passed to $ld so that the perl executable will find the
7494installed shared $libperl.
7495
7496EOM
7497 ;;
7498 esac
7499 ;;
7500 esac
7501fi
7502# Fix ccdlflags in AIX for building external extensions.
7503# (For building Perl itself bare -bE:perl.exp is needed,
7504# Makefile.SH takes care of this.)
7505case "$osname" in
7506aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7507esac
7508# Respect a hint or command-line value.
7509case "$shrpenv" in
7510'') shrpenv="$tmp_shrpenv" ;;
7511esac
7512case "$ldlibpthname" in
7513'') ldlibpthname=LD_LIBRARY_PATH ;;
7514none) ldlibpthname='' ;;
7515esac
7516
7517: determine where manual pages are on this system
7518echo " "
7519case "$sysman" in
7520'')
7521 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7522 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7523 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7524 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7525 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7526 sysman=`./loc . /usr/man/man1 $syspath`
7527 ;;
7528esac
7529if $test -d "$sysman"; then
7530 echo "System manual is in $sysman." >&4
7531else
7532 echo "Could not find manual pages in source form." >&4
7533fi
7534
7535: determine where manual pages go
7536set man1dir man1dir none
7537eval $prefixit
7538$cat <<EOM
7539
7540$spackage has manual pages available in source form.
7541EOM
7542case "$nroff" in
7543nroff)
7544 echo "However, you don't have nroff, so they're probably useless to you."
7545 case "$man1dir" in
7546 '') man1dir="none";;
7547 esac;;
7548esac
7549echo "If you don't want the manual sources installed, answer 'none'."
7550case "$man1dir" in
7551' ') dflt=none
7552 ;;
7553'')
7554 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7555 lookpath="$lookpath $prefixexp/man/p_man/man1"
7556 lookpath="$lookpath $prefixexp/man/u_man/man1"
7557 lookpath="$lookpath $prefixexp/man/man.1"
7558 case "$sysman" in
7559 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7560 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7561 esac
7562 set dflt
7563 eval $prefixup
7564 ;;
7565*) dflt="$man1dir"
7566 ;;
7567esac
7568echo " "
7569fn=dn+~
7570rp="Where do the main $spackage manual pages (source) go?"
7571. ./getfile
7572if $test "X$man1direxp" != "X$ansexp"; then
7573 installman1dir=''
7574fi
7575man1dir="$ans"
7576man1direxp="$ansexp"
7577case "$man1dir" in
7578'') man1dir=' '
7579 installman1dir='';;
7580esac
7581
7582: Change installation prefix, if necessary.
7583if $test X"$prefix" != X"$installprefix"; then
7584 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7585else
7586 installman1dir="$man1direxp"
7587fi
7588
7589: What suffix to use on installed man pages
7590
7591case "$man1dir" in
7592' ')
7593 man1ext='0'
7594 ;;
7595*)
7596 rp="What suffix should be used for the main $spackage man pages?"
7597 case "$man1ext" in
7598 '') case "$man1dir" in
7599 *1) dflt=1 ;;
7600 *1p) dflt=1p ;;
7601 *1pm) dflt=1pm ;;
7602 *l) dflt=l;;
7603 *n) dflt=n;;
7604 *o) dflt=o;;
7605 *p) dflt=p;;
7606 *C) dflt=C;;
7607 *L) dflt=L;;
7608 *L1) dflt=L1;;
7609 *) dflt=1;;
7610 esac
7611 ;;
7612 *) dflt="$man1ext";;
7613 esac
7614 . ./myread
7615 man1ext="$ans"
7616 ;;
7617esac
7618
7619: see if we can have long filenames
7620echo " "
7621first=123456789abcdef
7622$rm -f $first
7623if (echo hi >$first) 2>/dev/null; then
7624 if $test -f 123456789abcde; then
7625 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7626 val="$undef"
7627 else
7628 echo 'You can have filenames longer than 14 characters.'>&4
7629 val="$define"
7630 fi
7631else
7632 $cat <<'EOM'
7633You can't have filenames longer than 14 chars.
7634You can't even think about them!
7635EOM
7636 val="$undef"
7637fi
7638set d_flexfnam
7639eval $setvar
7640$rm -rf 123456789abcde*
7641
7642: determine where library module manual pages go
7643set man3dir man3dir none
7644eval $prefixit
7645$cat <<EOM
7646
7647$spackage has manual pages for many of the library modules.
7648EOM
7649
7650case "$nroff" in
7651nroff)
7652 $cat <<'EOM'
7653However, you don't have nroff, so they're probably useless to you.
7654EOM
7655 case "$man3dir" in
7656 '') man3dir="none";;
7657 esac;;
7658esac
7659
7660case "$d_flexfnam" in
7661undef)
7662 $cat <<'EOM'
7663However, your system can't handle the long file names like File::Basename.3.
7664EOM
7665 case "$man3dir" in
7666 '') man3dir="none";;
7667 esac;;
7668esac
7669
7670echo "If you don't want the manual sources installed, answer 'none'."
7671prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7672case "$man3dir" in
7673'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7674 if $test -d "$privlib/man/man3"; then
7675 cat <<EOM >&4
7676
7677WARNING: Previous versions of perl installed man3 pages into
7678$privlib/man/man3. This version will suggest a
7679new default of $dflt.
7680EOM
7681 tdflt=$dflt
7682 dflt='n'
7683 rp='Do you wish to preserve the old behavior?(y/n)'
7684 . ./myread
7685 case "$ans" in
7686 y*) dflt="$privlib/man/man3" ;;
7687 *) dflt=$tdflt ;;
7688 esac
7689 fi
7690 ;;
7691*) dflt="$man3dir" ;;
7692esac
7693case "$dflt" in
7694' ') dflt=none ;;
7695esac
7696echo " "
7697fn=dn+~
7698rp="Where do the $package library man pages (source) go?"
7699. ./getfile
7700man3dir="$ans"
7701man3direxp="$ansexp"
7702case "$man3dir" in
7703'') man3dir=' '
7704 installman3dir='';;
7705esac
7706
7707: Change installation prefix, if necessary.
7708if $test X"$prefix" != X"$installprefix"; then
7709 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7710else
7711 installman3dir="$man3direxp"
7712fi
7713
7714: What suffix to use on installed man pages
7715case "$man3dir" in
7716' ')
7717 man3ext='0'
7718 ;;
7719*)
7720 rp="What suffix should be used for the $package library man pages?"
7721 case "$man3ext" in
7722 '') case "$man3dir" in
7723 *3) dflt=3 ;;
7724 *3p) dflt=3p ;;
7725 *3pm) dflt=3pm ;;
7726 *l) dflt=l;;
7727 *n) dflt=n;;
7728 *o) dflt=o;;
7729 *p) dflt=p;;
7730 *C) dflt=C;;
7731 *L) dflt=L;;
7732 *L3) dflt=L3;;
7733 *) dflt=3;;
7734 esac
7735 ;;
7736 *) dflt="$man3ext";;
7737 esac
7738 . ./myread
7739 man3ext="$ans"
7740 ;;
7741esac
7742
7743: see if we have to deal with yellow pages, now NIS.
7744if $test -d /usr/etc/yp || $test -d /etc/yp; then
7745 if $test -f /usr/etc/nibindd; then
7746 echo " "
7747 echo "I'm fairly confident you're on a NeXT."
7748 echo " "
7749 rp='Do you get the hosts file via NetInfo?'
7750 dflt=y
7751 case "$hostcat" in
7752 nidump*) ;;
7753 '') ;;
7754 *) dflt=n;;
7755 esac
7756 . ./myread
7757 case "$ans" in
7758 y*) hostcat='nidump hosts .';;
7759 *) case "$hostcat" in
7760 nidump*) hostcat='';;
7761 esac
7762 ;;
7763 esac
7764 fi
7765 case "$hostcat" in
7766 nidump*) ;;
7767 *)
7768 case "$hostcat" in
7769 *ypcat*) dflt=y;;
7770 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7771 dflt=y
7772 else
7773 dflt=n
7774 fi;;
7775 *) dflt=n;;
7776 esac
7777 echo " "
7778 rp='Are you getting the hosts file via yellow pages?'
7779 . ./myread
7780 case "$ans" in
7781 y*) hostcat='ypcat hosts';;
7782 *) hostcat='cat /etc/hosts';;
7783 esac
7784 ;;
7785 esac
7786fi
7787case "$hostcat" in
7788'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7789esac
7790case "$groupcat" in
7791'') test -f /etc/group && groupcat='cat /etc/group';;
7792esac
7793case "$passcat" in
7794'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7795esac
7796
7797: now get the host name
7798echo " "
7799echo "Figuring out host name..." >&4
7800case "$myhostname" in
7801'') cont=true
7802 echo 'Maybe "hostname" will work...'
73614538 7803 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7804 myhostname=$tans
7805 phostname=hostname
7806 cont=''
7807 fi
7808 ;;
7809*) cont='';;
7810esac
7811if $test "$cont"; then
7812 if ./xenix; then
7813 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7814 if tans=`cat /etc/systemid 2>&1` ; then
7815 myhostname=$tans
7816 phostname='cat /etc/systemid'
7817 echo "Whadyaknow. Xenix always was a bit strange..."
7818 cont=''
7819 fi
7820 elif $test -r /etc/systemid; then
7821 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7822 fi
7823fi
7824if $test "$cont"; then
7825 echo 'No, maybe "uuname -l" will work...'
73614538 7826 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
7827 myhostname=$tans
7828 phostname='uuname -l'
7829 else
7830 echo 'Strange. Maybe "uname -n" will work...'
73614538 7831 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
7832 myhostname=$tans
7833 phostname='uname -n'
7834 else
7835 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 7836 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
7837 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7838 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7839 else
7840 case "$myhostname" in
7841 '') echo "Does this machine have an identity crisis or something?"
7842 phostname='';;
7843 *)
7844 echo "Well, you said $myhostname before..."
7845 phostname='echo $myhostname';;
7846 esac
7847 fi
7848 fi
7849 fi
7850fi
7851: you do not want to know about this
7852set $myhostname
7853myhostname=$1
7854
7855: verify guess
7856if $test "$myhostname" ; then
7857 dflt=y
7858 rp='Your host name appears to be "'$myhostname'".'" Right?"
7859 . ./myread
7860 case "$ans" in
7861 y*) ;;
7862 *) myhostname='';;
7863 esac
7864fi
7865
7866: bad guess or no guess
7867while $test "X$myhostname" = X ; do
7868 dflt=''
7869 rp="Please type the (one word) name of your host:"
7870 . ./myread
7871 myhostname="$ans"
7872done
7873
7874: translate upper to lower if necessary
7875case "$myhostname" in
7876*[A-Z]*)
7877 echo "(Normalizing case in your host name)"
7878 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7879 ;;
7880esac
7881
7882case "$myhostname" in
7883*.*)
7884 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7885 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7886 echo "(Trimming domain name from host name--host name is now $myhostname)"
7887 ;;
7888*) case "$mydomain" in
7889 '')
7890 {
7891 test "X$hostcat" = "Xypcat hosts" &&
7892 ypmatch "$myhostname" hosts 2>/dev/null |\
7893 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7894 $test -s hosts
7895 } || {
7896 test "X$hostcat" != "X" &&
7897 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7898 /[ ]$myhostname[ . ]/p" > hosts
7899 }
7900 tmp_re="[ . ]"
f08cbdd1
PP
7901 if $test -f hosts; then
7902 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7903 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7904 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7905 hosts | $sort | $uniq | \
7906 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7907 case `$echo X$dflt` in
7908 X*\ *) echo "(Several hosts in the database matched hostname)"
7909 dflt=.
7910 ;;
7911 X.) echo "(You do not have fully-qualified names in the hosts database)"
7912 ;;
7913 esac
7914 else
7915 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7916 dflt=.
f08cbdd1 7917 fi
b4eb6b3d
JH
7918 case "$dflt" in
7919 .)
7920 tans=`./loc resolv.conf X /etc /usr/etc`
7921 if $test -f "$tans"; then
7922 echo "(Attempting domain name extraction from $tans)"
7923 dflt=.`$sed -n -e 's/ / /g' \
7924 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7925 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7926 case "$dflt" in
7927 .) dflt=.`$sed -n -e 's/ / /g' \
7928 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7929 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7930 ;;
7931 esac
7932 fi
7933 ;;
7934 esac
7935 case "$dflt" in
7936 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 7937 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
7938 case "$dflt" in
7939 '') dflt='.';;
7940 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7941 esac
7942 ;;
7943 esac
59c9e5d6
PP
7944 case "$dflt$osname" in
7945 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 7946 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
7947 ;;
7948 esac
b4eb6b3d
JH
7949 case "$dflt" in
7950 .) echo "(Lost all hope -- silly guess then)"
7951 dflt='.uucp'
7952 ;;
7953 esac
7954 $rm -f hosts
7955 ;;
7956 *) dflt="$mydomain";;
7957 esac;;
7958esac
7959echo " "
7960rp="What is your domain name?"
7961. ./myread
7962tans="$ans"
7963case "$ans" in
7964'') ;;
7965.*) ;;
7966*) tans=".$tans";;
7967esac
7968mydomain="$tans"
7969
7970: translate upper to lower if necessary
7971case "$mydomain" in
7972*[A-Z]*)
7973 echo "(Normalizing case in your domain name)"
7974 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7975 ;;
7976esac
7977
7978: a little sanity check here
7979case "$phostname" in
7980'') ;;
7981*)
7982 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7983 $myhostname$mydomain|$myhostname) ;;
7984 *)
7985 case "$phostname" in
7986 sed*)
7987 echo "(That doesn't agree with your whoami.h file, by the way.)"
7988 ;;
7989 *)
7990 echo "(That doesn't agree with your $phostname command, by the way.)"
7991 ;;
7992 esac
7993 ;;
7994 esac
7995 ;;
7996esac
7997
7998$cat <<EOM
7999
8000I need to get your e-mail address in Internet format if possible, i.e.
8001something like user@host.domain. Please answer accurately since I have
8002no easy means to double check it. The default value provided below
8003is most probably close to reality but may not be valid from outside
8004your organization...
8005
8006EOM
8007cont=x
8008while test "$cont"; do
8009 case "$cf_email" in
8010 '') dflt="$cf_by@$myhostname$mydomain";;
8011 *) dflt="$cf_email";;
8012 esac
8013 rp='What is your e-mail address?'
8014 . ./myread
8015 cf_email="$ans"
8016 case "$cf_email" in
8017 *@*.*) cont='' ;;
8018 *)
8019 rp='Address does not look like an Internet one. Use it anyway?'
8020 case "$fastread" in
8021 yes) dflt=y ;;
8022 *) dflt=n ;;
8023 esac
8024 . ./myread
8025 case "$ans" in
8026 y*) cont='' ;;
8027 *) echo " " ;;
8028 esac
8029 ;;
8030 esac
8031done
8032
8033$cat <<EOM
8034
8035If you or somebody else will be maintaining perl at your site, please
8036fill in the correct e-mail address here so that they may be contacted
8037if necessary. Currently, the "perlbug" program included with perl
8038will send mail to this address in addition to perlbug@perl.org. You may
8039enter "none" for no administrator.
8040
8041EOM
8042case "$perladmin" in
8043'') dflt="$cf_email";;
8044*) dflt="$perladmin";;
8045esac
8046rp='Perl administrator e-mail address'
8047. ./myread
8048perladmin="$ans"
8049
674912d7
RB
8050: determine whether to only install version-specific parts.
8051echo " "
8052$cat <<EOM
8053Do you want to install only the version-specific parts of the perl
8054distribution? Usually you do *not* want to do this.
8055EOM
8056case "$versiononly" in
8057"$define"|[Yy]*|true) dflt='y' ;;
8058*) dflt='n';
8059esac
8060rp="Do you want to install only the version-specific parts of perl?"
8061. ./myread
8062case "$ans" in
8063[yY]*) val="$define";;
8064*) val="$undef" ;;
8065esac
8066set versiononly
8067eval $setvar
8068
b4eb6b3d
JH
8069: figure out how to guarantee perl startup
8070case "$startperl" in
8071'')
8072 case "$sharpbang" in
8073 *!)
8074 $cat <<EOH
8075
8076I can use the #! construct to start perl on your system. This will
8077make startup of perl scripts faster, but may cause problems if you
8078want to share those scripts and perl is not in a standard place
8079($binexp/perl) on all your platforms. The alternative is to force
8080a shell by starting the script with a single ':' character.
8081
8082EOH
674912d7
RB
8083 case "$versiononly" in
8084 "$define") dflt="$binexp/perl$version";;
8085 *) dflt="$binexp/perl";;
8086 esac
b4eb6b3d
JH
8087 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8088 . ./myread
8089 case "$ans" in
8090 none) startperl=": # use perl";;
8091 *) startperl="#!$ans"
8092 if $test 30 -lt `echo "$ans" | wc -c`; then
8093 $cat >&4 <<EOM
8094
8095WARNING: Some systems limit the #! command to 32 characters.
8096If you experience difficulty running Perl scripts with #!, try
8097installing Perl in a directory with a shorter pathname.
8098
8099EOM
8100 fi ;;
8101 esac
8102 ;;
8103 *) startperl=": # use perl"
8104 ;;
8105 esac
8106 ;;
8107esac
8108echo "I'll use $startperl to start perl scripts."
8109
8110: figure best path for perl in scripts
8111case "$perlpath" in
8112'')
8113 perlpath="$binexp/perl"
8114 case "$startperl" in
8115 *!*) ;;
8116 *)
8117 $cat <<EOH
8118
8119I will use the "eval 'exec'" idiom to start Perl on your system.
8120I can use the full path of your Perl binary for this purpose, but
8121doing so may cause problems if you want to share those scripts and
8122Perl is not always in a standard place ($binexp/perl).
8123
8124EOH
8125 dflt="$binexp/perl"
8126 rp="What path shall I use in \"eval 'exec'\"?"
8127 . ./myread
8128 perlpath="$ans"
8129 ;;
8130 esac
8131 ;;
8132esac
8133case "$startperl" in
8134*!*) ;;
8135*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8136esac
8137
8138: determine where public executable scripts go
8139set scriptdir scriptdir
8140eval $prefixit
8141case "$scriptdir" in
8142'')
8143 dflt="$bin"
8144 : guess some guesses
8145 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8146 $test -d /usr/share/bin && dflt=/usr/share/bin
8147 $test -d /usr/local/script && dflt=/usr/local/script
8148 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8149 $test -d $prefixexp/script && dflt=$prefixexp/script
8150 set dflt
8151 eval $prefixup
8152 ;;
8153*) dflt="$scriptdir"
8154 ;;
8155esac
8156$cat <<EOM
8157
8158Some installations have a separate directory just for executable scripts so
8159that they can mount it across multiple architectures but keep the scripts in
8160one spot. You might, for example, have a subdirectory of /usr/share for this.
8161Or you might just lump your scripts in with all your other executables.
8162
8163EOM
8164fn=d~
8165rp='Where do you keep publicly executable scripts?'
8166. ./getfile
8167if $test "X$ansexp" != "X$scriptdirexp"; then
8168 installscript=''
8169fi
8170scriptdir="$ans"
8171scriptdirexp="$ansexp"
8172: Change installation prefix, if necessary.
8173if $test X"$prefix" != X"$installprefix"; then
8174 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8175else
8176 installscript="$scriptdirexp"
8177fi
8178
8179: determine where add-on public executables go
8180case "$sitebin" in
8181'') dflt=$siteprefix/bin ;;
8182*) dflt=$sitebin ;;
8183esac
8184fn=d~
8185rp='Pathname where the add-on public executables should be installed?'
8186. ./getfile
8187sitebin="$ans"
8188sitebinexp="$ansexp"
8189: Change installation prefix, if necessary.
8190if $test X"$prefix" != X"$installprefix"; then
8191 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8192else
8193 installsitebin="$sitebinexp"
8194fi
8195
b4eb6b3d
JH
8196case "$vendorprefix" in
8197'') d_vendorbin="$undef"
8198 vendorbin=''
8199 vendorbinexp=''
8200 ;;
8201*) d_vendorbin="$define"
8202 : determine where vendor-supplied executables go.
8203 case "$vendorbin" in
8204 '') dflt=$vendorprefix/bin ;;
8205 *) dflt="$vendorbin" ;;
8206 esac
8207 fn=d~+
8208 rp='Pathname for the vendor-supplied executables directory?'
8209 . ./getfile
8210 vendorbin="$ans"
8211 vendorbinexp="$ansexp"
8212 ;;
8213esac
8214: Change installation prefix, if necessary.
8215if $test X"$prefix" != X"$installprefix"; then
8216 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8217else
8218 installvendorbin="$vendorbinexp"
8219fi
8220
8221: see if qgcvt exists
8222set qgcvt d_qgcvt
8223eval $inlibc
8224
8225echo " "
8226
8227if $test X"$d_longdbl" = X"$define"; then
8228
8229echo "Checking how to print long doubles..." >&4
8230
8231if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8232 $cat >try.c <<'EOCP'
8233#include <sys/types.h>
8234#include <stdio.h>
8235int main() {
8236 double d = 123.456;
8237 printf("%.3f\n", d);
8238}
8239EOCP
8240 set try
8241 if eval $compile; then
5440bc8e 8242 yyy=`$run ./try`
b4eb6b3d
JH
8243 case "$yyy" in
8244 123.456)
8245 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8246 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8247 echo "We will use %f."
8248 ;;
8249 esac
8250 fi
8251fi
8252
8253if $test X"$sPRIfldbl" = X; then
8254 $cat >try.c <<'EOCP'
8255#include <sys/types.h>
8256#include <stdio.h>
8257int main() {
8258 long double d = 123.456;
2ef53570 8259 printf("%.3Lf\n", d);
b4eb6b3d
JH
8260}
8261EOCP
8262 set try
8263 if eval $compile; then
5440bc8e 8264 yyy=`$run ./try`
b4eb6b3d
JH
8265 case "$yyy" in
8266 123.456)
2ef53570
JH
8267 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8268 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8269 echo "We will use %Lf."
b4eb6b3d
JH
8270 ;;
8271 esac
8272 fi
8273fi
8274
8275if $test X"$sPRIfldbl" = X; then
8276 $cat >try.c <<'EOCP'
8277#include <sys/types.h>
8278#include <stdio.h>
8279int main() {
8280 long double d = 123.456;
2ef53570 8281 printf("%.3llf\n", d);
b4eb6b3d
JH
8282}
8283EOCP
8284 set try
8285 if eval $compile; then
5440bc8e 8286 yyy=`$run ./try`
b4eb6b3d
JH
8287 case "$yyy" in
8288 123.456)
2ef53570
JH
8289 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8290 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8291 echo "We will use %llf."
b4eb6b3d
JH
8292 ;;
8293 esac
8294 fi
8295fi
8296
8297if $test X"$sPRIfldbl" = X; then
8298 $cat >try.c <<'EOCP'
8299#include <sys/types.h>
8300#include <stdio.h>
8301int main() {
8302 long double d = 123.456;
8303 printf("%.3lf\n", d);
8304}
8305EOCP
8306 set try
8307 if eval $compile; then
5440bc8e 8308 yyy=`$run ./try`
b4eb6b3d
JH
8309 case "$yyy" in
8310 123.456)
8311 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8312 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8313 echo "We will use %lf."
8314 ;;
8315 esac
8316 fi
8317fi
8318
8319if $test X"$sPRIfldbl" = X; then
8320 echo "Cannot figure out how to print long doubles." >&4
8321else
8322 sSCNfldbl=$sPRIfldbl # expect consistency
8323fi
8324
8325$rm -f try try.*
8326
8327fi # d_longdbl
8328
8329case "$sPRIfldbl" in
8330'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8331 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8332 d_SCNfldbl="$undef";
8333 ;;
8334*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8335 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8336 d_SCNfldbl="$define";
8337 ;;
8338esac
8339
8340: Check how to convert floats to strings.
8341echo " "
8342echo "Checking for an efficient way to convert floats to strings."
8343echo " " > try.c
8344case "$uselongdouble" in
8345"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8346esac
8347case "$d_longdbl" in
8348"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8349esac
8350case "$d_PRIgldbl" in
8351"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8352esac
8353$cat >>try.c <<EOP
8354#ifdef TRY_gconvert
8355#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8356char *myname = "gconvert";
8357#endif
8358#ifdef TRY_gcvt
8359#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8360char *myname = "gcvt";
8361#endif
8362#ifdef TRY_qgcvt
8363#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8364char *myname = "qgcvt";
8365#define DOUBLETYPE long double
8366#endif
8367#ifdef TRY_sprintf
8368#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8369#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8370#else
8371#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8372#endif
8373char *myname = "sprintf";
8374#endif
8375
8376#ifndef DOUBLETYPE
8377#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8378#define DOUBLETYPE long double
8379#else
8380#define DOUBLETYPE double
8381#endif
8382#endif
8383
8384#include <stdio.h>
8385
8386#define I_STDLIB $i_stdlib
8387#ifdef I_STDLIB
8388#include <stdlib.h>
8389#endif
8390
8391int
8392checkit(expect, got)
8393char *expect;
8394char *got;
8395{
8396 if (strcmp(expect, got)) {
8397 printf("%s oddity: Expected %s, got %s\n",
8398 myname, expect, got);
8399 exit(1);
8400 }
8401}
8402
8403int main()
8404{
8405 char buf[64];
8406 buf[63] = '\0';
8407
8408 /* This must be 1st test on (which?) platform */
8409 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8410 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8411 checkit("0.1", buf);
8412
8413 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8414 checkit("1", buf);
8415
8416 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8417 checkit("1.1", buf);
8418
8419 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8420 checkit("1.01", buf);
8421
8422 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8423 checkit("1.001", buf);
8424
8425 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8426 checkit("1.0001", buf);
8427
8428 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8429 checkit("1.00001", buf);
8430
8431 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8432 checkit("1.000001", buf);
8433
8434 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8435 checkit("0", buf);
8436
8437 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8438 checkit("-1", buf);
8439
8440 /* Some Linux gcvt's give 1.e+5 here. */
8441 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8442 checkit("100000", buf);
8443
8444 /* Some Linux gcvt's give -1.e+5 here. */
8445 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8446 checkit("-100000", buf);
8447
8448 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8449 checkit("123.456", buf);
8450
8451 exit(0);
8452}
8453EOP
8454case "$d_Gconvert" in
8455gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8456gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8457sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8458*) xxx_list='gconvert gcvt sprintf' ;;
8459esac
8460
8461case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8462"$define$define$define")
8463 # for long doubles prefer first qgcvt, then sprintf
8464 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8465 xxx_list="sprintf $xxx_list"
8466 case "$d_qgcvt" in
8467 "$define") xxx_list="qgcvt $xxx_list" ;;
8468 esac
8469 ;;
8470esac
8471
8472for xxx_convert in $xxx_list; do
8473 echo "Trying $xxx_convert..."
8474 $rm -f try try$_o
8475 set try -DTRY_$xxx_convert
8476 if eval $compile; then
8477 echo "$xxx_convert() found." >&4
5440bc8e 8478 if $run ./try; then
b4eb6b3d
JH
8479 echo "I'll use $xxx_convert to convert floats into a string." >&4
8480 break;
8481 else
8482 echo "...But $xxx_convert didn't work as I expected."
8483 fi
8484 else
8485 echo "$xxx_convert NOT found." >&4
8486 fi
8487done
8488
8489case "$xxx_convert" in
8490gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8491gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8492qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8493*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8494 "$define$define$define")
8495 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8496 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8497 esac
8498 ;;
8499esac
8500
74cac757
JH
8501: see if _fwalk exists
8502set fwalk d__fwalk
8503eval $inlibc
8504
b4eb6b3d
JH
8505: Initialize h_fcntl
8506h_fcntl=false
8507
8508: Initialize h_sysfile
8509h_sysfile=false
8510
8511: access call always available on UNIX
8512set access d_access
8513eval $inlibc
8514
8515: locate the flags for 'access()'
8516case "$d_access" in
8517"$define")
8518 echo " "
8519 $cat >access.c <<'EOCP'
8520#include <sys/types.h>
8521#ifdef I_FCNTL
8522#include <fcntl.h>
8523#endif
8524#ifdef I_SYS_FILE
8525#include <sys/file.h>
8526#endif
8527#ifdef I_UNISTD
8528#include <unistd.h>
8529#endif
8530int main() {
8531 exit(R_OK);
8532}
8533EOCP
8534 : check sys/file.h first, no particular reason here
8535 if $test `./findhdr sys/file.h` && \
7a282f6d 8536 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8537 h_sysfile=true;
8538 echo "<sys/file.h> defines the *_OK access constants." >&4
8539 elif $test `./findhdr fcntl.h` && \
7a282f6d 8540 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8541 h_fcntl=true;
8542 echo "<fcntl.h> defines the *_OK access constants." >&4
8543 elif $test `./findhdr unistd.h` && \
7a282f6d 8544 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8545 echo "<unistd.h> defines the *_OK access constants." >&4
8546 else
8547 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8548 fi
8549 ;;
8550esac
8551$rm -f access*
8552
8553: see if accessx exists
8554set accessx d_accessx
8555eval $inlibc
8556
8557: see if alarm exists
8558set alarm d_alarm
8559eval $inlibc
8560
8561: see if atolf exists
8562set atolf d_atolf
8563eval $inlibc
8564
8565: see if atoll exists
8566set atoll d_atoll
8567eval $inlibc
8568
8569: Look for GNU-cc style attribute checking
8570echo " "
8571echo "Checking whether your compiler can handle __attribute__ ..." >&4
8572$cat >attrib.c <<'EOCP'
8573#include <stdio.h>
8574void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8575EOCP
8576if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8577 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8578 echo "Your C compiler doesn't fully support __attribute__."
8579 val="$undef"
8580 else
8581 echo "Your C compiler supports __attribute__."
8582 val="$define"
8583 fi
8584else
8585 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8586 val="$undef"
8587fi
8588set d_attribut
8589eval $setvar
8590$rm -f attrib*
8591
8592: see if bcmp exists
8593set bcmp d_bcmp
8594eval $inlibc
8595
8596: see if bcopy exists
8597set bcopy d_bcopy
8598eval $inlibc
8599
8600: see if this is a unistd.h system
8601set unistd.h i_unistd
8602eval $inhdr
8603
8604: see if getpgrp exists
8605set getpgrp d_getpgrp
8606eval $inlibc
8607
8608case "$d_getpgrp" in
8609"$define")
8610 echo " "
8611 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 8612 $cat >try.c <<EOP
b4eb6b3d
JH
8613#$i_unistd I_UNISTD
8614#include <sys/types.h>
8615#ifdef I_UNISTD
8616# include <unistd.h>
8617#endif
8618int main()
8619{
8620 if (getuid() == 0) {
8621 printf("(I see you are running Configure as super-user...)\n");
8622 setuid(1);
8623 }
8624#ifdef TRY_BSD_PGRP
8625 if (getpgrp(1) == 0)
8626 exit(0);
8627#else
8628 if (getpgrp() > 0)
8629 exit(0);
8630#endif
8631 exit(1);
8632}
8633EOP
5440bc8e 8634 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8635 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8636 val="$define"
5440bc8e 8637 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8638 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8639 val="$undef"
8640 else
8641 echo "I can't seem to compile and run the test program."
8642 if ./usg; then
8643 xxx="a USG one, i.e. you use getpgrp()."
8644 else
8645 # SVR4 systems can appear rather BSD-ish.
8646 case "$i_unistd" in
8647 $undef)
8648 xxx="a BSD one, i.e. you use getpgrp(pid)."
8649 val="$define"
8650 ;;
8651 $define)
8652 xxx="probably a USG one, i.e. you use getpgrp()."
8653 val="$undef"
8654 ;;
8655 esac
8656 fi
8657 echo "Assuming your getpgrp is $xxx" >&4
8658 fi
8659 ;;
8660*) val="$undef";;
8661esac
8662set d_bsdgetpgrp
8663eval $setvar
5440bc8e 8664$rm -f try try.*
b4eb6b3d
JH
8665
8666: see if setpgrp exists
8667set setpgrp d_setpgrp
8668eval $inlibc
8669
8670case "$d_setpgrp" in
8671"$define")
8672 echo " "
8673 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 8674 $cat >try.c <<EOP
b4eb6b3d
JH
8675#$i_unistd I_UNISTD
8676#include <sys/types.h>
8677#ifdef I_UNISTD
8678# include <unistd.h>
8679#endif
8680int main()
8681{
8682 if (getuid() == 0) {
8683 printf("(I see you are running Configure as super-user...)\n");
8684 setuid(1);
8685 }
8686#ifdef TRY_BSD_PGRP
8687 if (-1 == setpgrp(1, 1))
8688 exit(0);
8689#else
8690 if (setpgrp() != -1)
8691 exit(0);
8692#endif
8693 exit(1);
8694}
8695EOP
5440bc8e 8696 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8697 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8698 val="$define"
5440bc8e 8699 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8700 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8701 val="$undef"
8702 else
8703 echo "(I can't seem to compile and run the test program.)"
8704 if ./usg; then
8705 xxx="a USG one, i.e. you use setpgrp()."
8706 else
8707 # SVR4 systems can appear rather BSD-ish.
8708 case "$i_unistd" in
8709 $undef)
8710 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8711 val="$define"
8712 ;;
8713 $define)
8714 xxx="probably a USG one, i.e. you use setpgrp()."
8715 val="$undef"
8716 ;;
8717 esac
8718 fi
8719 echo "Assuming your setpgrp is $xxx" >&4
8720 fi
8721 ;;
8722*) val="$undef";;
8723esac
8724set d_bsdsetpgrp
8725eval $setvar
5440bc8e 8726$rm -f try try.*
b4eb6b3d
JH
8727: see if bzero exists
8728set bzero d_bzero
8729eval $inlibc
8730
8731: see if signal is declared as pointer to function returning int or void
8732echo " "
8733xxx=`./findhdr signal.h`
8734$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8735if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8736 echo "You have int (*signal())() instead of void." >&4
8737 val="$undef"
8738elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8739 echo "You have void (*signal())()." >&4
8740 val="$define"
8741elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8742 echo "You have int (*signal())() instead of void." >&4
8743 val="$undef"
8744elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8745 echo "You have void (*signal())()." >&4
8746 val="$define"
8747else
8748 case "$d_voidsig" in
8749 '')
8750 echo "I can't determine whether signal handler returns void or int..." >&4
8751 dflt=void
8752 rp="What type does your signal handler return?"
8753 . ./myread
8754 case "$ans" in
8755 v*) val="$define";;
8756 *) val="$undef";;
8757 esac;;
8758 "$define")
8759 echo "As you already told me, signal handler returns void." >&4
8760 val="$define"
8761 ;;
8762 *) echo "As you already told me, signal handler returns int." >&4
8763 val="$undef"
8764 ;;
8765 esac
8766fi
8767set d_voidsig
8768eval $setvar
8769case "$d_voidsig" in
8770"$define") signal_t="void";;
8771*) signal_t="int";;
8772esac
8773$rm -f $$.tmp
8774
8775: check for ability to cast large floats to 32-bit ints.
8776echo " "
8777echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8778if $test "$intsize" -ge 4; then
8779 xxx=int
8780else
8781 xxx=long
8782fi
8783$cat >try.c <<EOCP
8784#include <stdio.h>
8785#include <sys/types.h>
8786#include <signal.h>
8787$signal_t blech(s) int s; { exit(3); }
8788int main()
8789{
8790 $xxx i32;
8791 double f, g;
8792 int result = 0;
8793 char str[16];
8794 signal(SIGFPE, blech);
8795
8796 /* Don't let compiler optimize the test away. Store the number
8797 in a writable string for gcc to pass to sscanf under HP/UX.
8798 */
8799 sprintf(str, "2147483647");
8800 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8801 g = 10 * f;
8802 i32 = ($xxx) g;
8803
8804 /* x86 processors will probably give 0x8000 0000, which is a
8805 sign change. We don't want that. We want to mimic SPARC
8806 behavior here, which is to preserve the sign and give
8807 back 0x7fff ffff.
8808 */
8809 if (i32 != ($xxx) f)
8810 result |= 1;
8811 exit(result);
8812}
8813EOCP
8814set try
8815if eval $compile_ok; then
5440bc8e 8816 $run ./try
b4eb6b3d
JH
8817 yyy=$?
8818else
8819 echo "(I can't seem to compile the test program--assuming it can't)"
8820 yyy=1
8821fi
8822case "$yyy" in
88230) val="$define"
8824 echo "Yup, it can."
8825 ;;
8826*) val="$undef"
8827 echo "Nope, it can't."
8828 ;;
8829esac
8830set d_casti32
8831eval $setvar
8832$rm -f try try.*
8833
8834: check for ability to cast negative floats to unsigned
8835echo " "
8836echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8837$cat >try.c <<EOCP
8838#include <stdio.h>
8839#include <sys/types.h>
8840#include <signal.h>
8841$signal_t blech(s) int s; { exit(7); }
8842$signal_t blech_in_list(s) int s; { exit(4); }
8843unsigned long dummy_long(p) unsigned long p; { return p; }
8844unsigned int dummy_int(p) unsigned int p; { return p; }
8845unsigned short dummy_short(p) unsigned short p; { return p; }
8846int main()
8847{
8848 double f;
8849 unsigned long along;
8850 unsigned int aint;
8851 unsigned short ashort;
8852 int result = 0;
8853 char str[16];
8854
8855 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8856 a direct f = -123. assignment. gcc-2.8.0 reportedly
8857 optimized the whole file away
8858 */
8859 /* Store the number in a writable string for gcc to pass to
8860 sscanf under HP/UX.
8861 */
8862 sprintf(str, "-123");
8863 sscanf(str, "%lf", &f); /* f = -123.; */
8864
8865 signal(SIGFPE, blech);
8866 along = (unsigned long)f;
8867 aint = (unsigned int)f;
8868 ashort = (unsigned short)f;
8869 if (along != (unsigned long)-123)
8870 result |= 1;
8871 if (aint != (unsigned int)-123)
8872 result |= 1;
8873 if (ashort != (unsigned short)-123)
8874 result |= 1;
8875 sprintf(str, "1073741824.");
8876 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8877 f = f + f;
8878 along = 0;
8879 along = (unsigned long)f;
8880 if (along != 0x80000000)
8881 result |= 2;
8882 f -= 1.;
8883 along = 0;
8884 along = (unsigned long)f;
8885 if (along != 0x7fffffff)
8886 result |= 1;
8887 f += 2.;
8888 along = 0;
8889 along = (unsigned long)f;
8890 if (along != 0x80000001)
8891 result |= 2;
8892 if (result)
8893 exit(result);
8894 signal(SIGFPE, blech_in_list);
8895 sprintf(str, "123.");
8896 sscanf(str, "%lf", &f); /* f = 123.; */
8897 along = dummy_long((unsigned long)f);
8898 aint = dummy_int((unsigned int)f);
8899 ashort = dummy_short((unsigned short)f);
8900 if (along != (unsigned long)123)
8901 result |= 4;
8902 if (aint != (unsigned int)123)
8903 result |= 4;
8904 if (ashort != (unsigned short)123)
8905 result |= 4;
8906 exit(result);
8907
8908}
8909EOCP
8910set try
8911if eval $compile_ok; then
5440bc8e 8912 $run ./try
b4eb6b3d
JH
8913 castflags=$?
8914else
8915 echo "(I can't seem to compile the test program--assuming it can't)"
8916 castflags=7
8917fi
8918case "$castflags" in
89190) val="$define"
8920 echo "Yup, it can."
8921 ;;
8922*) val="$undef"
8923 echo "Nope, it can't."
8924 ;;
8925esac
8926set d_castneg
8927eval $setvar
8928$rm -f try.*
8929
8930: see if vprintf exists
8931echo " "
8932if set vprintf val -f d_vprintf; eval $csym; $val; then
8933 echo 'vprintf() found.' >&4
8934 val="$define"
5440bc8e 8935 $cat >try.c <<'EOF'
b4eb6b3d
JH
8936#include <varargs.h>
8937
8938int main() { xxx("foo"); }
8939
8940xxx(va_alist)
8941va_dcl
8942{
8943 va_list args;
8944 char buf[10];
8945
8946 va_start(args);
8947 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8948}
8949EOF
5440bc8e
JH
8950 set try
8951 if eval $compile && $run ./try; then
b4eb6b3d
JH
8952 echo "Your vsprintf() returns (int)." >&4
8953 val2="$undef"
8954 else
8955 echo "Your vsprintf() returns (char*)." >&4
8956 val2="$define"
8957 fi
8958else
8959 echo 'vprintf() NOT found.' >&4
8960 val="$undef"
8961 val2="$undef"
8962fi
5440bc8e 8963$rm -f try try.*
b4eb6b3d
JH
8964set d_vprintf
8965eval $setvar
8966val=$val2
8967set d_charvspr
8968eval $setvar
8969
8970: see if chown exists
8971set chown d_chown
8972eval $inlibc
8973
8974: see if chroot exists
8975set chroot d_chroot
8976eval $inlibc
8977
8978: see if chsize exists
8979set chsize d_chsize
8980eval $inlibc
8981
4e0554ec
JH
8982hasstruct='varname=$1; struct=$2; shift; shift;
8983while $test $# -ge 2; do
8984 case "$1" in
8985 $define) echo "#include <$2>";;
8986 esac ;
8987 shift 2;
8988done > try.c;
8989echo "int main () { struct $struct foo; }" >> try.c;
8990set try;
8991if eval $compile; then
8992 val="$define";
8993else
8994 val="$undef";
8995fi;
8996set $varname;
8997eval $setvar;
8998$rm -f try.c try.o'
8999
9000: see if sys/types.h has to be included
9001set sys/types.h i_systypes
9002eval $inhdr
9003
9004hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9005while $test $# -ge 2; do
9006 case "$1" in
9007 $define) echo "#include <$2>";;
9008 esac ;
9009 shift 2;
9010done > try.c;
9011echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9012set try;
9013if eval $compile; then
9014 val="$define";
9015else
9016 val="$undef";
9017fi;
9018set $varname;
9019eval $setvar;
9020$rm -f try.c try.o'
9021
9022socketlib=''
9023sockethdr=''
9024: see whether socket exists
9025echo " "
9026$echo $n "Hmm... $c" >&4
9027if set socket val -f d_socket; eval $csym; $val; then
9028 echo "Looks like you have Berkeley networking support." >&4
9029 d_socket="$define"
9030 if set setsockopt val -f; eval $csym; $val; then
9031 d_oldsock="$undef"
9032 else
9033 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9034 d_oldsock="$define"
9035 fi
9036else
9037 if $contains socklib libc.list >/dev/null 2>&1; then
9038 echo "Looks like you have Berkeley networking support." >&4
9039 d_socket="$define"
9040 : we will have to assume that it supports the 4.2 BSD interface
9041 d_oldsock="$undef"
9042 else
9043 echo "You don't have Berkeley networking in libc$_a..." >&4
9044 if test "X$d_socket" = "X$define"; then
9045 echo "...but you seem to believe that you have sockets." >&4
9046 else
9047 for net in net socket
9048 do
9049 if test -f /usr/lib/lib$net$_a; then
9050 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9051 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9052 if $contains socket libc.list >/dev/null 2>&1; then
9053 d_socket="$define"
9054 socketlib="-l$net"
9055 case "$net" in
9056 net)
9057 echo "...but the Wollongong group seems to have hacked it in." >&4
9058 sockethdr="-I/usr/netinclude"
9059 ;;
9060 esac
9061 echo "Found Berkeley sockets interface in lib$net." >& 4
9062 if $contains setsockopt libc.list >/dev/null 2>&1; then
9063 d_oldsock="$undef"
9064 else
9065 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9066 d_oldsock="$define"
9067 fi
9068 break
9069 fi
9070 fi
9071 done
9072 if test "X$d_socket" != "X$define"; then
9073 echo "or anywhere else I see." >&4
9074 d_socket="$undef"
9075 d_oldsock="$undef"
9076 fi
9077 fi
9078 fi
9079fi
9080
9081: see if socketpair exists
9082set socketpair d_sockpair
9083eval $inlibc
9084
9085
9086echo " "
9087echo "Checking the availability of certain socket constants..." >& 4
9088for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9089 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9090 $cat >try.c <<EOF
9091#include <sys/types.h>
9092#include <sys/socket.h>
9093int main() {
9094 int i = $ENUM;
9095}
9096EOF
9097 val="$undef"
9098 set try; if eval $compile; then
9099 val="$define"
9100 fi
9101 set d_${enum}; eval $setvar
9102 $rm -f try.c try
9103done
9104
9105: see if this is a sys/uio.h system
9106set sys/uio.h i_sysuio
9107eval $inhdr
9108
9109
9110echo " "
9111echo "Checking to see if your system supports struct cmsghdr..." >&4
9112set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9113eval $hasstruct
9114case "$d_cmsghdr_s" in
9115"$define") echo "Yes, it does." ;;
9116*) echo "No, it doesn't." ;;
9117esac
9118
9119
b4eb6b3d
JH
9120: check for const keyword
9121echo " "
9122echo 'Checking to see if your C compiler knows about "const"...' >&4
9123$cat >const.c <<'EOCP'
9124typedef struct spug { int drokk; } spug;
9125int main()
9126{
9127 const char *foo;
9128 const spug y;
9129}
9130EOCP
9131if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9132 val="$define"
9133 echo "Yup, it does."
9134else
9135 val="$undef"
9136 echo "Nope, it doesn't."
9137fi
9138set d_const
9139eval $setvar
9140
9141: see if crypt exists
9142echo " "
9143if set crypt val -f d_crypt; eval $csym; $val; then
9144 echo 'crypt() found.' >&4
9145 val="$define"
9146 cryptlib=''
9147else
9148 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9149 if $test -z "$cryptlib"; then
9150 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9151 else
9152 cryptlib=-lcrypt
9153 fi
9154 if $test -z "$cryptlib"; then
9155 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9156 else
9157 cryptlib=-lcrypt
9158 fi
9159 if $test -z "$cryptlib"; then
9160 cryptlib=`./loc libcrypt$_a "" $libpth`
9161 else
9162 cryptlib=-lcrypt
9163 fi
9164 if $test -z "$cryptlib"; then
9165 echo 'crypt() NOT found.' >&4
9166 val="$undef"
9167 else
9168 val="$define"
9169 fi
9170fi
9171set d_crypt
9172eval $setvar
9173
9174: get csh whereabouts
9175case "$csh" in
9176'csh') val="$undef" ;;
9177*) val="$define" ;;
9178esac
9179set d_csh
9180eval $setvar
9181: Respect a hint or command line value for full_csh.
9182case "$full_csh" in
9183'') full_csh=$csh ;;
9184esac
9185
9186: see if cuserid exists
9187set cuserid d_cuserid
9188eval $inlibc
9189
9190: see if this is a limits.h system
9191set limits.h i_limits
9192eval $inhdr
9193
9194: see if this is a float.h system
9195set float.h i_float
9196eval $inhdr
9197
9198: See if number of significant digits in a double precision number is known
9199echo " "
9200$cat >dbl_dig.c <<EOM
9201#$i_limits I_LIMITS
9202#$i_float I_FLOAT
9203#ifdef I_LIMITS
9204#include <limits.h>
9205#endif
9206#ifdef I_FLOAT
9207#include <float.h>
9208#endif
9209#ifdef DBL_DIG
9210printf("Contains DBL_DIG");
9211#endif
9212EOM
9213$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9214if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9215 echo "DBL_DIG found." >&4
9216 val="$define"
9217else
9218 echo "DBL_DIG NOT found." >&4
9219 val="$undef"
9220fi
9221$rm -f dbl_dig.?
9222set d_dbl_dig
9223eval $setvar
9224
2ef53570
JH
9225hasproto='varname=$1; func=$2; shift; shift;
9226while $test $# -ge 2; do
9227 case "$1" in
9228 $define) echo "#include <$2>";;
9229 esac ;
9230 shift 2;
9231done > try.c;
9232$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9233if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9234 echo "$func() prototype found.";
9235 val="$define";
9236else
9237 echo "$func() prototype NOT found.";
9238 val="$undef";
9239fi;
9240set $varname;
9241eval $setvar;
9242$rm -f try.c tryout.c'
9243
9244: see if dbm.h is available
9245: see if dbmclose exists
9246set dbmclose d_dbmclose
9247eval $inlibc
9248
9249case "$d_dbmclose" in
9250$define)
9251 set dbm.h i_dbm
9252 eval $inhdr
9253 case "$i_dbm" in
9254 $define)
9255 val="$undef"
9256 set i_rpcsvcdbm
9257 eval $setvar
9258 ;;
9259 *) set rpcsvc/dbm.h i_rpcsvcdbm
9260 eval $inhdr
9261 ;;
9262 esac
9263 ;;
9264*) echo "We won't be including <dbm.h>"
9265 val="$undef"
9266 set i_dbm
9267 eval $setvar
9268 val="$undef"
9269 set i_rpcsvcdbm
9270 eval $setvar
9271 ;;
9272esac
9273
9274: see if prototype for dbminit is available
9275echo " "
9276set d_dbminitproto dbminit $i_dbm dbm.h
9277eval $hasproto
9278
b4eb6b3d
JH
9279: see if difftime exists
9280set difftime d_difftime
9281eval $inlibc
9282
9283: see if this is a dirent system
9284echo " "
9285if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9286 val="$define"
9287 echo "<dirent.h> found." >&4
9288else
9289 val="$undef"
9290 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9291 echo "<sys/dir.h> found." >&4
9292 echo " "
9293 else
9294 xinc=`./findhdr sys/ndir.h`
9295 fi
9296 echo "<dirent.h> NOT found." >&4
9297fi
9298set i_dirent
9299eval $setvar
9300
9301: Look for type of directory structure.
9302echo " "
9303$cppstdin $cppflags $cppminus < "$xinc" > try.c
9304
9305case "$direntrytype" in
9306''|' ')
9307 case "$i_dirent" in
9308 $define) guess1='struct dirent' ;;
9309 *) guess1='struct direct' ;;
9310 esac
9311 ;;
9312*) guess1="$direntrytype"
9313 ;;
9314esac
9315
9316case "$guess1" in
9317'struct dirent') guess2='struct direct' ;;
9318*) guess2='struct dirent' ;;
9319esac
9320
9321if $contains "$guess1" try.c >/dev/null 2>&1; then
9322 direntrytype="$guess1"
9323 echo "Your directory entries are $direntrytype." >&4
9324elif $contains "$guess2" try.c >/dev/null 2>&1; then
9325 direntrytype="$guess2"
9326 echo "Your directory entries seem to be $direntrytype." >&4
9327else
9328 echo "I don't recognize your system's directory entries." >&4
9329 rp="What type is used for directory entries on this system?"
9330 dflt="$guess1"
9331 . ./myread
9332 direntrytype="$ans"
9333fi
9334$rm -f try.c
9335
9336
9337: see if the directory entry stores field length
9338echo " "
9339$cppstdin $cppflags $cppminus < "$xinc" > try.c
9340if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9341 echo "Good, your directory entry keeps length information in d_namlen." >&4
9342 val="$define"
9343else
9344 echo "Your directory entry does not know about the d_namlen field." >&4
9345 val="$undef"
9346fi
9347set d_dirnamlen
9348eval $setvar
9349$rm -f try.c
9350
9351: see if dlerror exists
9352xxx_runnm="$runnm"
9353runnm=false
9354set dlerror d_dlerror
9355eval $inlibc
9356runnm="$xxx_runnm"
9357
9358: see if dlfcn is available
9359set dlfcn.h i_dlfcn
9360eval $inhdr
9361
9362case "$usedl" in
9363$define|y|true)
9364 $cat << EOM
9365
9366On a few systems, the dynamically loaded modules that perl generates and uses
9367will need a different extension than shared libs. The default will probably
9368be appropriate.
9369
9370EOM
9371 case "$dlext" in
9372 '') dflt="$so" ;;
9373 *) dflt="$dlext" ;;
9374 esac
9375 rp='What is the extension of dynamically loaded modules'
9376 . ./myread
9377 dlext="$ans"
9378 ;;
9379*)
9380 dlext="none"
9381 ;;
9382esac
9383
9384: Check if dlsym need a leading underscore
9385echo " "
9386val="$undef"
9387
9388case "$dlsrc" in
9389dl_dlopen.xs)
9390 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9391 $cat >dyna.c <<'EOM'
9392fred () { }
9393EOM
9394
9395$cat >fred.c<<EOM
9396
9397#include <stdio.h>
9398#$i_dlfcn I_DLFCN
9399#ifdef I_DLFCN
5440bc8e 9400#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9401#else
9402#include <sys/types.h>
9403#include <nlist.h>
9404#include <link.h>
9405#endif
9406
9407extern int fred() ;
9408
9409int main()
9410{
9411 void * handle ;
9412 void * symbol ;
9413#ifndef RTLD_LAZY
9414 int mode = 1 ;
9415#else
9416 int mode = RTLD_LAZY ;
9417#endif
9418 handle = dlopen("./dyna.$dlext", mode) ;
9419 if (handle == NULL) {
9420 printf ("1\n") ;
9421 fflush (stdout) ;
9422 exit(0);
9423 }
9424 symbol = dlsym(handle, "fred") ;
9425 if (symbol == NULL) {
9426 /* try putting a leading underscore */
9427 symbol = dlsym(handle, "_fred") ;
9428 if (symbol == NULL) {
9429 printf ("2\n") ;
9430 fflush (stdout) ;
9431 exit(0);
9432 }
9433 printf ("3\n") ;
9434 }
9435 else
9436 printf ("4\n") ;
9437 fflush (stdout) ;
9438 exit(0);
9439}
9440EOM
9441 : Call the object file tmp-dyna.o in case dlext=o.
9442 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9443 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9444 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9445 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9446 xxx=`$run ./fred`
b4eb6b3d
JH
9447 case $xxx in
9448 1) echo "Test program failed using dlopen." >&4
9449 echo "Perhaps you should not use dynamic loading." >&4;;
9450 2) echo "Test program failed using dlsym." >&4
9451 echo "Perhaps you should not use dynamic loading." >&4;;
9452 3) echo "dlsym needs a leading underscore" >&4
9453 val="$define" ;;
9454 4) echo "dlsym doesn't need a leading underscore." >&4;;
9455 esac
9456 else
9457 echo "I can't compile and run the test program." >&4
9458 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9459 fi
9460 ;;
9461esac
9462
9463$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9464
9465set d_dlsymun
9466eval $setvar
9467
b4eb6b3d
JH
9468: see if prototype for drand48 is available
9469echo " "
9470set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9471eval $hasproto
9472
9473: see if dup2 exists
9474set dup2 d_dup2
9475eval $inlibc
9476
9477: see if eaccess exists
9478set eaccess d_eaccess
9479eval $inlibc
9480
9481: see if endgrent exists
9482set endgrent d_endgrent
9483eval $inlibc
9484
9485: see if endhostent exists
9486set endhostent d_endhent
9487eval $inlibc
9488
9489: see if endnetent exists
9490set endnetent d_endnent
9491eval $inlibc
9492
9493: see if endprotoent exists
9494set endprotoent d_endpent
9495eval $inlibc
9496
9497: see if endpwent exists
9498set endpwent d_endpwent
9499eval $inlibc
9500
9501: see if endservent exists
9502set endservent d_endsent
9503eval $inlibc
9504
9505: Locate the flags for 'open()'
9506echo " "
5440bc8e 9507$cat >try.c <<'EOCP'
b4eb6b3d
JH
9508#include <sys/types.h>
9509#ifdef I_FCNTL
9510#include <fcntl.h>
9511#endif
9512#ifdef I_SYS_FILE
9513#include <sys/file.h>
9514#endif
9515int main() {
9516 if(O_RDONLY);
9517#ifdef O_TRUNC
9518 exit(0);
9519#else
9520 exit(1);
9521#endif
9522}
9523EOCP
9524: check sys/file.h first to get FREAD on Sun
9525if $test `./findhdr sys/file.h` && \
5440bc8e 9526 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
9527 h_sysfile=true;
9528 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 9529 if $run ./try; then
b4eb6b3d
JH
9530 echo "and you have the 3 argument form of open()." >&4
9531 val="$define"
9532 else
9533 echo "but not the 3 argument form of open(). Oh, well." >&4
9534 val="$undef"
9535 fi
9536elif $test `./findhdr fcntl.h` && \
5440bc8e 9537 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
9538 h_fcntl=true;
9539 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 9540 if $run ./try; then
b4eb6b3d
JH
9541 echo "and you have the 3 argument form of open()." >&4
9542 val="$define"
9543 else
9544 echo "but not the 3 argument form of open(). Oh, well." >&4
9545 val="$undef"
9546 fi
9547else
9548 val="$undef"
9549 echo "I can't find the O_* constant definitions! You got problems." >&4
9550fi
9551set d_open3
9552eval $setvar
5440bc8e 9553$rm -f try try.*
b4eb6b3d
JH
9554
9555: see which of string.h or strings.h is needed
9556echo " "
9557strings=`./findhdr string.h`
9558if $test "$strings" && $test -r "$strings"; then
9559 echo "Using <string.h> instead of <strings.h>." >&4
9560 val="$define"
9561else
9562 val="$undef"
9563 strings=`./findhdr strings.h`
9564 if $test "$strings" && $test -r "$strings"; then
9565 echo "Using <strings.h> instead of <string.h>." >&4
9566 else
9567 echo "No string header found -- You'll surely have problems." >&4
9568 fi
9569fi
9570set i_string
9571eval $setvar
9572case "$i_string" in
9573"$undef") strings=`./findhdr strings.h`;;
9574*) strings=`./findhdr string.h`;;
9575esac
9576
9577: check for non-blocking I/O stuff
9578case "$h_sysfile" in
a0acbdc3
JH
9579true) echo "#include <sys/file.h>" > head.c;;
9580*)
9581 case "$h_fcntl" in
9582 true) echo "#include <fcntl.h>" > head.c;;
9583 *) echo "#include <sys/fcntl.h>" > head.c;;
9584 esac
9585 ;;
b4eb6b3d
JH
9586esac
9587echo " "
9588echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9589case "$o_nonblock" in
9590'')
9591 $cat head.c > try.c
9592 $cat >>try.c <<'EOCP'
9593#include <stdio.h>
9594int main() {
9595#ifdef O_NONBLOCK
9596 printf("O_NONBLOCK\n");
9597 exit(0);
9598#endif
9599#ifdef O_NDELAY
9600 printf("O_NDELAY\n");
9601 exit(0);
9602#endif
9603#ifdef FNDELAY
9604 printf("FNDELAY\n");
9605 exit(0);
9606#endif
9607 exit(0);
9608}
9609EOCP
9610 set try
9611 if eval $compile_ok; then
5440bc8e 9612 o_nonblock=`$run ./try`
b4eb6b3d
JH
9613 case "$o_nonblock" in
9614 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9615 *) echo "Seems like we can use $o_nonblock.";;
9616 esac
9617 else
9618 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9619 fi
9620 ;;
9621*) echo "Using $hint value $o_nonblock.";;
9622esac
9623$rm -f try try.* .out core
9624
9625echo " "
9626echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9627case "$eagain" in
9628'')
9629 $cat head.c > try.c
9630 $cat >>try.c <<EOCP
9631#include <errno.h>
9632#include <sys/types.h>
9633#include <signal.h>
9634#include <stdio.h>
9635#define MY_O_NONBLOCK $o_nonblock
9636#ifndef errno /* XXX need better Configure test */
9637extern int errno;
9638#endif
9639#$i_unistd I_UNISTD
9640#ifdef I_UNISTD
9641#include <unistd.h>
9642#endif
9643#$i_string I_STRING
9644#ifdef I_STRING
9645#include <string.h>
9646#else
9647#include <strings.h>
9648#endif
9649$signal_t blech(x) int x; { exit(3); }
9650EOCP
9651 $cat >> try.c <<'EOCP'
9652int main()
9653{
9654 int pd[2];
9655 int pu[2];
9656 char buf[1];
9657 char string[100];
9658
9659 pipe(pd); /* Down: child -> parent */
9660 pipe(pu); /* Up: parent -> child */
9661 if (0 != fork()) {
9662 int ret;
9663 close(pd[1]); /* Parent reads from pd[0] */
9664 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 9665#ifdef F_SETFL
b4eb6b3d
JH
9666 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9667 exit(1);
a0acbdc3
JH
9668#else
9669 exit(4);
9670#endif
b4eb6b3d
JH
9671 signal(SIGALRM, blech);
9672 alarm(5);
9673 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9674 exit(2);
9675 sprintf(string, "%d\n", ret);
9676 write(2, string, strlen(string));
9677 alarm(0);
9678#ifdef EAGAIN
9679 if (errno == EAGAIN) {
9680 printf("EAGAIN\n");
9681 goto ok;
9682 }
9683#endif
9684#ifdef EWOULDBLOCK
9685 if (errno == EWOULDBLOCK)
9686 printf("EWOULDBLOCK\n");
9687#endif
9688 ok:
9689 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9690 sleep(2); /* Give it time to close our pipe */
9691 alarm(5);
9692 ret = read(pd[0], buf, 1); /* Should read EOF */
9693 alarm(0);
9694 sprintf(string, "%d\n", ret);
9695 write(3, string, strlen(string));
9696 exit(0);
9697 }
9698
9699 close(pd[0]); /* We write to pd[1] */
9700 close(pu[1]); /* We read from pu[0] */
9701 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9702 close(pd[1]); /* Pipe pd is now fully closed! */
9703 exit(0); /* Bye bye, thank you for playing! */
9704}
9705EOCP
9706 set try
9707 if eval $compile_ok; then
9708 echo "$startsh" >mtry
5440bc8e 9709 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
b4eb6b3d
JH
9710 chmod +x mtry
9711 ./mtry >/dev/null 2>&1
9712 case $? in
9713 0) eagain=`$cat try.out`;;
9714 1) echo "Could not perform non-blocking setting!";;
9715 2) echo "I did a successful read() for something that was not there!";;
9716 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 9717 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
9718 *) echo "Something terribly wrong happened during testing.";;
9719 esac
9720 rd_nodata=`$cat try.ret`
9721 echo "A read() system call with no data present returns $rd_nodata."
9722 case "$rd_nodata" in
9723 0|-1) ;;
9724 *)
9725 echo "(That's peculiar, fixing that to be -1.)"
9726 rd_nodata=-1
9727 ;;
9728 esac
9729 case "$eagain" in
9730 '')
9731 echo "Forcing errno EAGAIN on read() with no data available."
9732 eagain=EAGAIN
9733 ;;
9734 *)
9735 echo "Your read() sets errno to $eagain when no data is available."
9736 ;;
9737 esac
9738 status=`$cat try.err`
9739 case "$status" in
9740 0) echo "And it correctly returns 0 to signal EOF.";;
9741 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9742 *) echo "However, your read() returns '$status' on EOF??";;
9743 esac
9744 val="$define"
9745 if test "$status" = "$rd_nodata"; then
9746 echo "WARNING: you can't distinguish between EOF and no data!"
9747 val="$undef"
9748 fi
9749 else
9750 echo "I can't compile the test program--assuming errno EAGAIN will do."
9751 eagain=EAGAIN
9752 fi
9753 set d_eofnblk
9754 eval $setvar
9755 ;;
9756*)
9757 echo "Using $hint value $eagain."
9758 echo "Your read() returns $rd_nodata when no data is present."
9759 case "$d_eofnblk" in
9760 "$define") echo "And you can see EOF because read() returns 0.";;
9761 "$undef") echo "But you can't see EOF status from read() returned value.";;
9762 *)
9763 echo "(Assuming you can't see EOF status from read anyway.)"
9764 d_eofnblk=$undef
9765 ;;
9766 esac
9767 ;;
9768esac
9769$rm -f try try.* .out core head.c mtry
9770
9771: see if fchmod exists
9772set fchmod d_fchmod
9773eval $inlibc
9774
9775: see if fchown exists
9776set fchown d_fchown
9777eval $inlibc
9778
9779: see if this is an fcntl system
9780set fcntl d_fcntl
9781eval $inlibc
9782
9d9004a9
AD
9783echo " "
9784: See if fcntl-based locking works.
9785$cat >try.c <<'EOCP'
9786#include <stdlib.h>
9787#include <unistd.h>
9788#include <fcntl.h>
9789int main() {
9790#if defined(F_SETLK) && defined(F_SETLKW)
9791 struct flock flock;
9792 int retval, fd;
9793 fd = open("try.c", O_RDONLY);
9794 flock.l_type = F_RDLCK;
9795 flock.l_whence = SEEK_SET;
9796 flock.l_start = flock.l_len = 0;
9797 retval = fcntl(fd, F_SETLK, &flock);
9798 close(fd);
9799 (retval < 0 ? exit(2) : exit(0));
9800#else
9801 exit(2);
9802#endif
9803}
9804EOCP
9805echo "Checking if fcntl-based file locking works... "
9806case "$d_fcntl" in
9807"$define")
9808 set try
9809 if eval $compile_ok; then
5440bc8e 9810 if $run ./try; then
9d9004a9
AD
9811 echo "Yes, it seems to work."
9812 val="$define"
9813 else
9814 echo "Nope, it didn't work."
9815 val="$undef"
9816 fi
9817 else
9818 echo "I'm unable to compile the test program, so I'll assume not."
9819 val="$undef"
9820 fi
9821 ;;
9822*) val="$undef";
9823 echo "Nope, since you don't even have fcntl()."
9824 ;;
9825esac
9826set d_fcntl_can_lock
9827eval $setvar
9828$rm -f try*
9829
9830
b4eb6b3d
JH
9831: see if sys/select.h has to be included
9832set sys/select.h i_sysselct
9833eval $inhdr
9834
9835: see if we should include time.h, sys/time.h, or both
9836echo " "
9837if test "X$timeincl" = X; then
9838 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9839 $echo $n "I'm now running the test program...$c"
9840 $cat >try.c <<'EOCP'
9841#include <sys/types.h>
9842#ifdef I_TIME
9843#include <time.h>
9844#endif
9845#ifdef I_SYSTIME
9846#ifdef SYSTIMEKERNEL
9847#define KERNEL
9848#endif
9849#include <sys/time.h>
9850#endif
9851#ifdef I_SYSSELECT
9852#include <sys/select.h>
9853#endif
9854int main()
9855{
9856 struct tm foo;
9857#ifdef S_TIMEVAL
9858 struct timeval bar;
9859#endif
9860#ifdef S_TIMEZONE
9861 struct timezone tzp;
9862#endif
9863 if (foo.tm_sec == foo.tm_sec)
9864 exit(0);
9865#ifdef S_TIMEVAL
9866 if (bar.tv_sec == bar.tv_sec)
9867 exit(0);
9868#endif
9869 exit(1);
9870}
9871EOCP
9872 flags=''
9873 for s_timezone in '-DS_TIMEZONE' ''; do
9874 sysselect=''
9875 for s_timeval in '-DS_TIMEVAL' ''; do
9876 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9877 for i_time in '' '-DI_TIME'; do
9878 for i_systime in '-DI_SYSTIME' ''; do
9879 case "$flags" in
9880 '') $echo $n ".$c"
9881 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9882 if eval $compile; then
9883 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9884 shift
9885 flags="$*"
9886 echo " "
9887 $echo $n "Succeeded with $flags$c"
9888 fi
9889 ;;
9890 esac
9891 done
9892 done
9893 done
9894 done
9895 done
9896 timeincl=''
9897 echo " "
9898 case "$flags" in
9899 *SYSTIMEKERNEL*) i_systimek="$define"
9900 timeincl=`./findhdr sys/time.h`
9901 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9902 *) i_systimek="$undef";;
9903 esac
9904 case "$flags" in
9905 *I_TIME*) i_time="$define"
9906 timeincl=`./findhdr time.h`" $timeincl"
9907 echo "We'll include <time.h>." >&4;;
9908 *) i_time="$undef";;
9909 esac
9910 case "$flags" in
9911 *I_SYSTIME*) i_systime="$define"
9912 timeincl=`./findhdr sys/time.h`" $timeincl"
9913 echo "We'll include <sys/time.h>." >&4;;
9914 *) i_systime="$undef";;
9915 esac
9916 $rm -f try.c try
9917fi
9918
9919: check for fd_set items
9920$cat <<EOM
9921
9922Checking to see how well your C compiler handles fd_set and friends ...
9923EOM
5440bc8e 9924$cat >try.c <<EOCP
b4eb6b3d
JH
9925#$i_systime I_SYS_TIME
9926#$i_sysselct I_SYS_SELECT
9927#$d_socket HAS_SOCKET
9928#include <sys/types.h>
9929#ifdef HAS_SOCKET
9930#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9931#endif
9932#ifdef I_SYS_TIME
9933#include <sys/time.h>
9934#endif
9935#ifdef I_SYS_SELECT
9936#include <sys/select.h>
9937#endif
9938int main() {
9939 fd_set fds;
9940
9941#ifdef TRYBITS
9942 if(fds.fds_bits);
9943#endif
9944
9945#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9946 exit(0);
9947#else
9948 exit(1);
9949#endif
9950}
9951EOCP
5440bc8e 9952set try -DTRYBITS
b4eb6b3d
JH
9953if eval $compile; then
9954 d_fds_bits="$define"
9955 d_fd_set="$define"
9956 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 9957 if $run ./try; then
b4eb6b3d
JH
9958 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9959 d_fd_macros="$define"
9960 else
9961 $cat >&4 <<'EOM'
9962but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9963EOM
9964 d_fd_macros="$undef"
9965 fi
9966else
9967 $cat <<'EOM'
9968Hmm, your compiler has some difficulty with fd_set. Checking further...
9969EOM
5440bc8e 9970 set try
b4eb6b3d
JH
9971 if eval $compile; then
9972 d_fds_bits="$undef"
9973 d_fd_set="$define"
9974 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 9975 if $run ./try; then
b4eb6b3d
JH
9976 echo "and you have the normal fd_set macros." >&4
9977 d_fd_macros="$define"
9978 else
9979 $cat <<'EOM'
9980but not the normal fd_set macros! Gross! More work for me...
9981EOM
9982 d_fd_macros="$undef"
9983 fi
9984 else
9985 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9986 d_fd_set="$undef"
9987 d_fds_bits="$undef"
9988 d_fd_macros="$undef"
9989 fi
9990fi
5440bc8e 9991$rm -f try try.*
b4eb6b3d
JH
9992
9993: see if fgetpos exists
9994set fgetpos d_fgetpos
9995eval $inlibc
9996
9997: see if flock exists
9998set flock d_flock
9999eval $inlibc
10000
2ef53570
JH
10001: see if this is a sys/file.h system
10002val=''
10003set sys/file.h val
10004eval $inhdr
10005
10006: do we need to include sys/file.h ?
10007case "$val" in
10008"$define")
10009 echo " "
10010 if $h_sysfile; then
10011 val="$define"
10012 echo "We'll be including <sys/file.h>." >&4
10013 else
10014 val="$undef"
10015 echo "We won't be including <sys/file.h>." >&4
10016 fi
10017 ;;
10018*)
10019 h_sysfile=false
10020 ;;
10021esac
10022set i_sysfile
10023eval $setvar
10024
10025: see if prototype for flock is available
10026echo " "
10027set d_flockproto flock $i_sysfile sys/file.h
10028eval $hasproto
10029
b4eb6b3d
JH
10030: see if fork exists
10031set fork d_fork
10032eval $inlibc
10033
10034: see if pathconf exists
10035set pathconf d_pathconf
10036eval $inlibc
10037
10038: see if fpathconf exists
10039set fpathconf d_fpathconf
10040eval $inlibc
10041
10042
10043: check for fpos64_t
10044echo " "
10045echo "Checking to see if you have fpos64_t..." >&4
10046$cat >try.c <<EOCP
10047#include <stdio.h>
10048int main() { fpos64_t x = 7; }
10049EOCP
10050set try
10051if eval $compile; then
10052 val="$define"
10053 echo "You have fpos64_t."
10054else
10055 val="$undef"
10056 echo "You do not have fpos64_t."
10057 case "$fpossize" in
10058 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10059 esac
10060fi
10061$rm -f try.* try
10062set d_fpos64_t
10063eval $setvar
10064
10065: see if frexpl exists
10066set frexpl d_frexpl
10067eval $inlibc
10068
b4eb6b3d
JH
10069: see if this is a sys/param system
10070set sys/param.h i_sysparam
10071eval $inhdr
10072
10073: see if this is a sys/mount.h system
10074set sys/mount.h i_sysmount
10075eval $inhdr
10076
b4eb6b3d
JH
10077
10078echo " "
10079echo "Checking to see if your system supports struct fs_data..." >&4
10080set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10081eval $hasstruct
10082case "$d_fs_data_s" in
10083"$define") echo "Yes, it does." ;;
10084*) echo "No, it doesn't." ;;
10085esac
10086
10087: see if fseeko exists
10088set fseeko d_fseeko
10089eval $inlibc
10090case "$longsize" in
100918) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10092esac
10093
10094: see if fsetpos exists
10095set fsetpos d_fsetpos
10096eval $inlibc
10097
10098
10099: see if fstatfs exists
10100set fstatfs d_fstatfs
10101eval $inlibc
10102
10103
10104: see if statvfs exists
10105set statvfs d_statvfs
10106eval $inlibc
10107
10108: see if fstatvfs exists
10109set fstatvfs d_fstatvfs
10110eval $inlibc
10111
10112
411ab01c
JH
10113: see if fsync exists
10114set fsync d_fsync
10115eval $inlibc
10116
b4eb6b3d
JH
10117: see if ftello exists
10118set ftello d_ftello
10119eval $inlibc
10120case "$longsize" in
101218) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10122esac
10123
10124: see if getcwd exists
10125set getcwd d_getcwd
10126eval $inlibc
10127
10128: see if getespwnam exists
10129set getespwnam d_getespwnam
10130eval $inlibc
10131
10132
10133: see if getfsstat exists
10134set getfsstat d_getfsstat
10135eval $inlibc
10136
10137: see if getgrent exists
10138set getgrent d_getgrent
10139eval $inlibc
10140
10141: see if gethostbyaddr exists
10142set gethostbyaddr d_gethbyaddr
10143eval $inlibc
10144
10145: see if gethostbyname exists
10146set gethostbyname d_gethbyname
10147eval $inlibc
10148
10149: see if gethostent exists
10150set gethostent d_gethent
10151eval $inlibc
10152
10153: see how we will look up host name
10154echo " "
10155call=''
10156if set gethostname val -f d_gethname; eval $csym; $val; then
10157 echo 'gethostname() found.' >&4
10158 d_gethname="$define"
10159 call=gethostname
10160fi
10161if set uname val -f d_uname; eval $csym; $val; then
10162 if ./xenix; then
10163 $cat <<'EOM'
10164uname() was found, but you're running xenix, and older versions of xenix
10165have a broken uname(). If you don't really know whether your xenix is old
10166enough to have a broken system call, use the default answer.
10167
10168EOM
10169 dflt=y
10170 case "$d_uname" in
10171 "$define") dflt=n;;
10172 esac
10173 rp='Is your uname() broken?'
10174 . ./myread
10175 case "$ans" in
10176 n*) d_uname="$define"; call=uname;;
10177 esac
10178 else
10179 echo 'uname() found.' >&4
10180 d_uname="$define"
10181 case "$call" in
10182 '') call=uname ;;
10183 esac
10184 fi
10185fi
10186case "$d_gethname" in
10187'') d_gethname="$undef";;
10188esac
10189case "$d_uname" in
10190'') d_uname="$undef";;
10191esac
10192case "$d_uname$d_gethname" in
10193*define*)
10194 dflt=n
10195 cat <<EOM
10196
10197Every now and then someone has a $call() that lies about the hostname
10198but can't be fixed for political or economic reasons. If you wish, I can
10199pretend $call() isn't there and maybe compute hostname at run-time
10200thanks to the '$phostname' command.
10201
10202EOM
10203 rp="Shall I ignore $call() from now on?"
10204 . ./myread
10205 case "$ans" in
10206 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10207 esac;;
10208esac
10209case "$phostname" in
10210'') aphostname='';;
10211*) case "$aphostname" in
10212 /*) ;;
10213 *) set X $phostname
10214 shift
10215 file=$1
10216 shift
10217 file=`./loc $file $file $pth`
10218 aphostname=`echo $file $*`
10219 ;;
10220 esac
10221 ;;
10222esac
10223case "$d_uname$d_gethname" in
10224*define*) ;;
10225*)
10226 case "$phostname" in
10227 '')
10228 echo "There will be no way for $package to get your hostname." >&4;;
10229 *)
10230 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10231 ;;
10232 esac;;
10233esac
10234case "$d_phostname" in
10235'') d_phostname="$undef";;
10236esac
10237
10238: see if this is a netdb.h system
10239set netdb.h i_netdb
10240eval $inhdr
10241
10242: see if prototypes for various gethostxxx netdb.h functions are available
10243echo " "
10244set d_gethostprotos gethostent $i_netdb netdb.h
10245eval $hasproto
10246
4e0554ec
JH
10247: see if getitimer exists
10248set getitimer d_getitimer
10249eval $inlibc
10250
b4eb6b3d
JH
10251: see if getlogin exists
10252set getlogin d_getlogin
10253eval $inlibc
10254
10255: see if getmnt exists
10256set getmnt d_getmnt
10257eval $inlibc
10258
10259: see if getmntent exists
10260set getmntent d_getmntent
10261eval $inlibc
10262
10263: see if getnetbyaddr exists
10264set getnetbyaddr d_getnbyaddr
10265eval $inlibc
10266
10267: see if getnetbyname exists
10268set getnetbyname d_getnbyname
10269eval $inlibc
10270
10271: see if getnetent exists
10272set getnetent d_getnent
10273eval $inlibc
10274
10275: see if prototypes for various getnetxxx netdb.h functions are available
10276echo " "
10277set d_getnetprotos getnetent $i_netdb netdb.h
10278eval $hasproto
10279
0c0643d0
JH
10280: see if getpagesize exists
10281set getpagesize d_getpagsz
10282eval $inlibc
10283
b4eb6b3d
JH
10284
10285: see if getprotobyname exists
10286set getprotobyname d_getpbyname
10287eval $inlibc
10288
10289: see if getprotobynumber exists
10290set getprotobynumber d_getpbynumber
10291eval $inlibc
10292
10293: see if getprotoent exists
10294set getprotoent d_getpent
10295eval $inlibc
10296
10297: see if getpgid exists
10298set getpgid d_getpgid
10299eval $inlibc
10300
10301: see if getpgrp2 exists
10302set getpgrp2 d_getpgrp2
10303eval $inlibc
10304
10305: see if getppid exists
10306set getppid d_getppid
10307eval $inlibc
10308
10309: see if getpriority exists
10310set getpriority d_getprior
10311eval $inlibc
10312
10313: see if prototypes for various getprotoxxx netdb.h functions are available
10314echo " "
10315set d_getprotoprotos getprotoent $i_netdb netdb.h
10316eval $hasproto
10317
10318: see if getprpwnam exists
10319set getprpwnam d_getprpwnam
10320eval $inlibc
10321
10322: see if getpwent exists
10323set getpwent d_getpwent
10324eval $inlibc
10325
10326
10327: see if getservbyname exists
10328set getservbyname d_getsbyname
10329eval $inlibc
10330
10331: see if getservbyport exists
10332set getservbyport d_getsbyport
10333eval $inlibc
10334
10335: see if getservent exists
10336set getservent d_getsent
10337eval $inlibc
10338
10339: see if prototypes for various getservxxx netdb.h functions are available
10340echo " "
10341set d_getservprotos getservent $i_netdb netdb.h
10342eval $hasproto
10343
10344: see if getspnam exists
10345set getspnam d_getspnam
10346eval $inlibc
10347
10348: see if gettimeofday or ftime exists
10349set gettimeofday d_gettimeod
10350eval $inlibc
10351case "$d_gettimeod" in
10352"$undef")
10353 set ftime d_ftime
10354 eval $inlibc
10355 ;;
10356*)
10357 val="$undef"; set d_ftime; eval $setvar
10358 ;;
10359esac
10360case "$d_gettimeod$d_ftime" in
10361"$undef$undef")
10362 echo " "
10363 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10364 ;;
10365esac
10366
10367: see if this is an grp system
10368set grp.h i_grp
10369eval $inhdr
10370
10371case "$i_grp" in
10372$define)
10373 xxx=`./findhdr grp.h`
10374 $cppstdin $cppflags $cppminus < $xxx >$$.h
10375
10376 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10377 val="$define"
10378 else
10379 val="$undef"
10380 fi
10381 set d_grpasswd
10382 eval $setvar
10383
10384 $rm -f $$.h
10385 ;;
10386*)
10387 val="$undef";
10388 set d_grpasswd; eval $setvar
10389 ;;
10390esac
10391
10392: see if hasmntopt exists
10393set hasmntopt d_hasmntopt
10394eval $inlibc
10395
10396: see if this is a netinet/in.h or sys/in.h system
10397set netinet/in.h i_niin sys/in.h i_sysin
10398eval $inhdr
10399
10400: see if arpa/inet.h has to be included
10401set arpa/inet.h i_arpainet
10402eval $inhdr
10403
10404: see if htonl --and friends-- exists
10405val=''
10406set htonl val
10407eval $inlibc
10408
10409: Maybe they are macros.
10410case "$val" in
10411$undef)
10412 $cat >htonl.c <<EOM
10413#include <stdio.h>
10414#include <sys/types.h>
10415#$i_niin I_NETINET_IN
10416#$i_sysin I_SYS_IN
10417#$i_arpainet I_ARPA_INET
10418#ifdef I_NETINET_IN
10419#include <netinet/in.h>
10420#endif
10421#ifdef I_SYS_IN
10422#include <sys/in.h>
10423#endif
10424#ifdef I_ARPA_INET
10425#include <arpa/inet.h>
10426#endif
10427#ifdef htonl
10428printf("Defined as a macro.");
10429#endif
10430EOM
10431 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10432 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10433 val="$define"
10434 echo "But it seems to be defined as a macro." >&4
10435 fi
10436 $rm -f htonl.?
10437 ;;
10438esac
10439set d_htonl
10440eval $setvar
10441
10442: see if iconv exists
10443set iconv d_iconv
10444eval $inlibc
10445
10446: index or strchr
10447echo " "
10448if set index val -f; eval $csym; $val; then
10449 if set strchr val -f d_strchr; eval $csym; $val; then
10450 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10451 val="$define"
10452 vali="$undef"
10453 echo "strchr() found." >&4
10454 else
10455 val="$undef"
10456 vali="$define"
10457 echo "index() found." >&4
10458 fi
10459 else
10460 val="$undef"
10461 vali="$define"
8dfa8df9
JH
10462 echo "index() found." >&4
10463 fi
b4eb6b3d 10464else
8dfa8df9
JH
10465 if set strchr val -f d_strchr; eval $csym; $val; then
10466 val="$define"
10467 vali="$undef"
10468 echo "strchr() found." >&4
10469 else
10470 echo "No index() or strchr() found!" >&4
10471 val="$undef"
10472 vali="$undef"
10473 fi
b4eb6b3d 10474fi
8dfa8df9
JH
10475set d_strchr; eval $setvar
10476val="$vali"
10477set d_index; eval $setvar
10478
10479: check whether inet_aton exists
10480set inet_aton d_inetaton
10481eval $inlibc
b4eb6b3d
JH
10482
10483: Look for isascii
10484echo " "
10485$cat >isascii.c <<'EOCP'
10486#include <stdio.h>
10487#include <ctype.h>
10488int main() {
10489 int c = 'A';
10490 if (isascii(c))
10491 exit(0);
10492 else
10493 exit(1);
10494}
10495EOCP
10496set isascii
10497if eval $compile; then
10498 echo "isascii() found." >&4
10499 val="$define"
10500else
10501 echo "isascii() NOT found." >&4
10502 val="$undef"
10503fi
10504set d_isascii
10505eval $setvar
10506$rm -f isascii*
10507
10508: see if isnan exists
10509set isnan d_isnan
10510eval $inlibc
10511
10512: see if isnanl exists
10513set isnanl d_isnanl
10514eval $inlibc
10515
10516: see if killpg exists
10517set killpg d_killpg
10518eval $inlibc
10519
10520: see if lchown exists
10521echo " "
10522$cat > try.c <<'EOCP'
10523/* System header to define __stub macros and hopefully few prototypes,
10524 which can conflict with char lchown(); below. */
10525#include <assert.h>
10526/* Override any gcc2 internal prototype to avoid an error. */
10527/* We use char because int might match the return type of a gcc2
10528 builtin and then its argument prototype would still apply. */
10529char lchown();
10530int main() {
10531 /* The GNU C library defines this for functions which it implements
10532 to always fail with ENOSYS. Some functions are actually named
10533 something starting with __ and the normal name is an alias. */
10534#if defined (__stub_lchown) || defined (__stub___lchown)
10535choke me
10536#else
10537lchown();
10538#endif
10539; return 0; }
10540EOCP
10541set try
10542if eval $compile; then
10543 $echo "lchown() found." >&4
10544 val="$define"
10545else
10546 $echo "lchown() NOT found." >&4
10547 val="$undef"
10548fi
10549set d_lchown
10550eval $setvar
10551
10552: See if number of significant digits in a double precision number is known
10553echo " "
10554$cat >ldbl_dig.c <<EOM
10555#$i_limits I_LIMITS
10556#$i_float I_FLOAT
10557#ifdef I_LIMITS
10558#include <limits.h>
10559#endif
10560#ifdef I_FLOAT
10561#include <float.h>
10562#endif
10563#ifdef LDBL_DIG
10564printf("Contains LDBL_DIG");
10565#endif
10566EOM
10567$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10568if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10569 echo "LDBL_DIG found." >&4
10570 val="$define"
10571else
10572 echo "LDBL_DIG NOT found." >&4
10573 val="$undef"
10574fi
10575$rm -f ldbl_dig.?
10576set d_ldbl_dig
10577eval $setvar
10578
10579: see if link exists
10580set link d_link
10581eval $inlibc
10582
10583: see if localeconv exists
10584set localeconv d_locconv
10585eval $inlibc
10586
10587: see if lockf exists
10588set lockf d_lockf
10589eval $inlibc
10590
b4eb6b3d
JH
10591: see if prototype for lseek is available
10592echo " "
10593set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10594eval $hasproto
10595
10596: see if lstat exists
10597set lstat d_lstat
10598eval $inlibc
10599
10600: see if madvise exists
10601set madvise d_madvise
10602eval $inlibc
10603
10604: see if mblen exists
10605set mblen d_mblen
10606eval $inlibc
10607
10608: see if mbstowcs exists
10609set mbstowcs d_mbstowcs
10610eval $inlibc
10611
10612: see if mbtowc exists
10613set mbtowc d_mbtowc
10614eval $inlibc
10615
10616: see if memchr exists
10617set memchr d_memchr
10618eval $inlibc
10619
10620: see if memcmp exists
10621set memcmp d_memcmp
10622eval $inlibc
10623
10624: see if memcpy exists
10625set memcpy d_memcpy
10626eval $inlibc
10627
10628: see if memmove exists
10629set memmove d_memmove
10630eval $inlibc
10631
10632: see if memset exists
10633set memset d_memset
10634eval $inlibc
10635
10636: see if mkdir exists
10637set mkdir d_mkdir
10638eval $inlibc
10639
10640: see if mkdtemp exists
10641set mkdtemp d_mkdtemp
10642eval $inlibc
10643
10644: see if mkfifo exists
10645set mkfifo d_mkfifo
10646eval $inlibc
10647
10648: see if mkstemp exists
10649set mkstemp d_mkstemp
10650eval $inlibc
10651
10652: see if mkstemps exists
10653set mkstemps d_mkstemps
10654eval $inlibc
10655
10656: see if mktime exists
10657set mktime d_mktime
10658eval $inlibc
10659
10660: see if this is a sys/mman.h system
10661set sys/mman.h i_sysmman
10662eval $inhdr
10663
10664: see if mmap exists
10665set mmap d_mmap
10666eval $inlibc
10667: see what shmat returns
10668: default to something harmless
10669mmaptype='void *'
10670case "$i_sysmman$d_mmap" in
10671"$define$define")
10672 $cat >mmap.c <<'END'
10673#include <sys/mman.h>
10674void *mmap();
10675END
10676 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10677 mmaptype='void *'
10678 else
10679 mmaptype='caddr_t'
10680 fi
10681 echo "and it returns ($mmaptype)." >&4
10682 ;;
10683esac
10684
10685
10686
10687: see if modfl exists
10688set modfl d_modfl
10689eval $inlibc
10690
e67aeab1
JH
10691d_modfl_pow32_bug="$undef"
10692
2b2cdb4d
HS
10693case "$d_longdbl$d_modfl" in
10694$define$define)
10695 $cat <<EOM
10696Checking to see whether your modfl() is okay for large values...
10697EOM
10698$cat >try.c <<EOCP
10699#include <math.h>
10700#include <stdio.h>
10701int main() {
10702 long double nv = 4294967303.15;
10703 long double v, w;
10704 v = modfl(nv, &w);
10705#ifdef __GLIBC__
10706 printf("glibc");
10707#endif
10708 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10709 return 0;
10710}
10711EOCP
27f9615e
JH
10712 case "$osname:$gccversion" in
10713 aix:) saveccflags="$ccflags"
10714 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10715 esac
2b2cdb4d
HS
10716 set try
10717 if eval $compile; then
5440bc8e 10718 foo=`$run ./try`
2b2cdb4d
HS
10719 case "$foo" in
10720 *" 4294967303.150000 1.150000 4294967302.000000")
10721 echo >&4 "Your modfl() is broken for large values."
e67aeab1 10722 d_modfl_pow32_bug="$define"
2b2cdb4d
HS
10723 case "$foo" in
10724 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10725 ;;
10726 esac
10727 ;;
10728 *" 4294967303.150000 0.150000 4294967303.000000")
10729 echo >&4 "Your modfl() seems okay for large values."
10730 ;;
10731 *) echo >&4 "I don't understand your modfl() at all."
10732 d_modfl="$undef"
10733 ;;
10734 esac
10735 $rm -f try.* try core core.try.*
10736 else
10737 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10738 d_modfl="$undef"
10739 fi
27f9615e
JH
10740 case "$osname:$gccversion" in
10741 aix:) $ccflags="saveccflags" ;; # restore
10742 esac
2b2cdb4d
HS
10743 ;;
10744esac
10745
b4eb6b3d
JH
10746: see if mprotect exists
10747set mprotect d_mprotect
10748eval $inlibc
10749
10750: see if msgctl exists
10751set msgctl d_msgctl
10752eval $inlibc
10753
10754: see if msgget exists
10755set msgget d_msgget
10756eval $inlibc
10757
10758: see if msgsnd exists
10759set msgsnd d_msgsnd
10760eval $inlibc
10761
10762: see if msgrcv exists
10763set msgrcv d_msgrcv
10764eval $inlibc
10765
10766: see how much of the 'msg*(2)' library is present.
10767h_msg=true
10768echo " "
10769case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10770*"$undef"*) h_msg=false;;
10771esac
10772case "$osname" in
10773freebsd)
10774 case "`ipcs 2>&1`" in
10775 "SVID messages"*"not configured"*)
10776 echo "Your $osname does not have the msg*(2) configured." >&4
10777 h_msg=false
10778 val="$undef"
10779 set msgctl d_msgctl
10780 eval $setvar
10781 set msgget d_msgget
10782 eval $setvar
10783 set msgsnd d_msgsnd
10784 eval $setvar
10785 set msgrcv d_msgrcv
10786 eval $setvar
10787 ;;
10788 esac
10789 ;;
10790esac
10791: we could also check for sys/ipc.h ...
10792if $h_msg && $test `./findhdr sys/msg.h`; then
10793 echo "You have the full msg*(2) library." >&4
10794 val="$define"
10795else
10796 echo "You don't have the full msg*(2) library." >&4
10797 val="$undef"
10798fi
10799set d_msg
10800eval $setvar
10801
4e0554ec
JH
10802
10803echo " "
10804echo "Checking to see if your system supports struct msghdr..." >&4
10805set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10806eval $hasstruct
10807case "$d_msghdr_s" in
10808"$define") echo "Yes, it does." ;;
10809*) echo "No, it doesn't." ;;
10810esac
10811
10812
b4eb6b3d
JH
10813: see if msync exists
10814set msync d_msync
10815eval $inlibc
10816
10817: see if munmap exists
10818set munmap d_munmap
10819eval $inlibc
10820
10821: see if nice exists
10822set nice d_nice
10823eval $inlibc
10824
b4eb6b3d
JH
10825: check for length of character
10826echo " "
10827case "$charsize" in
10828'')
10829 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10830 $cat >try.c <<'EOCP'
10831#include <stdio.h>
10832int main()
10833{
10834 printf("%d\n", (int)sizeof(char));
10835 exit(0);
10836}
10837EOCP
10838 set try
10839 if eval $compile_ok; then
5440bc8e 10840 dflt=`$run ./try`
b4eb6b3d
JH
10841 else
10842 dflt='1'
10843 echo "(I can't seem to compile the test program. Guessing...)"
10844 fi
10845 ;;
10846*)
10847 dflt="$charsize"
10848 ;;
10849esac
10850rp="What is the size of a character (in bytes)?"
10851. ./myread
10852charsize="$ans"
10853$rm -f try.c try
10854
1d1be0dc
NC
10855: check for volatile keyword
10856echo " "
10857echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10858$cat >try.c <<'EOCP'
10859int main()
10860{
10861 typedef struct _goo_struct goo_struct;
10862 goo_struct * volatile goo = ((goo_struct *)0);
10863 struct _goo_struct {
10864 long long_int;
10865 int reg_int;
10866 char char_var;
10867 };
10868 typedef unsigned short foo_t;
10869 char *volatile foo;
10870 volatile int bar;
10871 volatile foo_t blech;
10872 foo = foo;
10873}
10874EOCP
10875if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10876 val="$define"
10877 echo "Yup, it does."
10878else
10879 val="$undef"
10880 echo "Nope, it doesn't."
10881fi
10882set d_volatile
10883eval $setvar
10884$rm -f try.*
10885
b4eb6b3d
JH
10886
10887echo " "
10888$echo "Choosing the C types to be used for Perl's internal types..." >&4
10889
10890case "$use64bitint:$d_quad:$quadtype" in
10891define:define:?*)
10892 ivtype="$quadtype"
10893 uvtype="$uquadtype"
10894 ivsize=8
10895 uvsize=8
10896 ;;
10897*) ivtype="long"
10898 uvtype="unsigned long"
10899 ivsize=$longsize
10900 uvsize=$longsize
10901 ;;
10902esac
10903
10904case "$uselongdouble:$d_longdbl" in
10905define:define)
10906 nvtype="long double"
10907 nvsize=$longdblsize
10908 ;;
10909*) nvtype=double
10910 nvsize=$doublesize
10911 ;;
10912esac
10913
10914$echo "(IV will be "$ivtype", $ivsize bytes)"
10915$echo "(UV will be "$uvtype", $uvsize bytes)"
10916$echo "(NV will be "$nvtype", $nvsize bytes)"
10917
10918$cat >try.c <<EOCP
10919#$i_inttypes I_INTTYPES
10920#ifdef I_INTTYPES
10921#include <inttypes.h>
10922#endif
10923#include <stdio.h>
10924int main() {
10925#ifdef INT8
10926 int8_t i = INT8_MAX;
10927 uint8_t u = UINT8_MAX;
10928 printf("int8_t\n");
10929#endif
10930#ifdef INT16
10931 int16_t i = INT16_MAX;
10932 uint16_t i = UINT16_MAX;
10933 printf("int16_t\n");
10934#endif
10935#ifdef INT32
10936 int32_t i = INT32_MAX;
10937 uint32_t u = UINT32_MAX;
10938 printf("int32_t\n");
10939#endif
10940}
10941EOCP
10942
10943case "$i8type" in
10944'') case "$charsize" in
10945 1) i8type=char
10946 u8type="unsigned char"
10947 i8size=$charsize
10948 u8size=$charsize
10949 ;;
10950 esac
10951 ;;
10952esac
10953case "$i8type" in
10954'') set try -DINT8
10955 if eval $compile; then
5440bc8e 10956 case "`$run ./try`" in
b4eb6b3d
JH
10957 int8_t) i8type=int8_t
10958 u8type=uint8_t
10959 i8size=1
10960 u8size=1
10961 ;;
10962 esac
10963 fi
10964 ;;
10965esac
10966case "$i8type" in
10967'') if $test $charsize -ge 1; then
10968 i8type=char
10969 u8type="unsigned char"
10970 i8size=$charsize
10971 u8size=$charsize
10972 fi
10973 ;;
10974esac
10975
10976case "$i16type" in
10977'') case "$shortsize" in
10978 2) i16type=short
10979 u16type="unsigned short"
10980 i16size=$shortsize
10981 u16size=$shortsize
10982 ;;
10983 esac
10984 ;;
10985esac
10986case "$i16type" in
10987'') set try -DINT16
10988 if eval $compile; then
5440bc8e 10989 case "`$run ./try`" in
b4eb6b3d
JH
10990 int16_t)
10991 i16type=int16_t
10992 u16type=uint16_t
10993 i16size=2
10994 u16size=2
10995 ;;
10996 esac
10997 fi
10998 ;;
10999esac
11000case "$i16type" in
11001'') if $test $shortsize -ge 2; then
11002 i16type=short
11003 u16type="unsigned short"
11004 i16size=$shortsize
11005 u16size=$shortsize
11006 fi
11007 ;;
11008esac
11009
11010case "$i32type" in
11011'') case "$longsize" in
11012 4) i32type=long
11013 u32type="unsigned long"
11014 i32size=$longsize
11015 u32size=$longsize
11016 ;;
11017 *) case "$intsize" in
11018 4) i32type=int
11019 u32type="unsigned int"
11020 i32size=$intsize
11021 u32size=$intsize
11022 ;;
11023 esac
11024 ;;
11025 esac
11026 ;;
11027esac
11028case "$i32type" in
11029'') set try -DINT32
11030 if eval $compile; then
5440bc8e 11031 case "`$run ./try`" in
b4eb6b3d
JH
11032 int32_t)
11033 i32type=int32_t
11034 u32type=uint32_t
11035 i32size=4
11036 u32size=4
11037 ;;
11038 esac
11039 fi
11040 ;;
11041esac
11042case "$i32type" in
11043'') if $test $intsize -ge 4; then
11044 i32type=int
11045 u32type="unsigned int"
11046 i32size=$intsize
11047 u32size=$intsize
11048 fi
11049 ;;
11050esac
11051
11052case "$i64type" in
11053'') case "$d_quad:$quadtype" in
11054 define:?*)
11055 i64type="$quadtype"
11056 u64type="$uquadtype"
11057 i64size=8
11058 u64size=8
11059 ;;
11060 esac
11061 ;;
11062esac
11063
1d1be0dc
NC
11064$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11065: volatile so that the compiler has to store it out to memory.
11066if test X"$d_volatile" = X"$define"; then
11067 volatile=volatile
11068fi
b4eb6b3d
JH
11069$cat <<EOP >try.c
11070#include <stdio.h>
1d1be0dc
NC
11071#include <sys/types.h>
11072#include <signal.h>
11073#ifdef SIGFPE
11074$volatile int bletched = 0;
11075$signal_t blech(s) int s; { bletched = 1; }
11076#endif
b4eb6b3d
JH
11077int main() {
11078 $uvtype u = 0;
1d1be0dc 11079 $nvtype d;
b4eb6b3d
JH
11080 int n = 8 * $uvsize;
11081 int i;
1d1be0dc
NC
11082#ifdef SIGFPE
11083 signal(SIGFPE, blech);
11084#endif
11085
b4eb6b3d
JH
11086 for (i = 0; i < n; i++) {
11087 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11088 d = ($nvtype)u;
11089 if (($uvtype)d != u)
b4eb6b3d 11090 break;
1d1be0dc
NC
11091 if (d <= 0)
11092 break;
11093 d = ($nvtype)(u - 1);
11094 if (($uvtype)d != (u - 1))
11095 break;
11096#ifdef SIGFPE
11097 if (bletched) {
11098 break;
11099#endif
11100 }
b4eb6b3d 11101 }
efd1522b 11102 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11103 exit(0);
11104}
11105EOP
1d1be0dc
NC
11106set try
11107
11108d_nv_preserves_uv="$undef"
11109if eval $compile; then
5440bc8e 11110 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11111fi
11112case "$d_nv_preserves_uv_bits" in
11113\-[1-9]*)
11114 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11115 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11116 d_nv_preserves_uv="$define"
b4eb6b3d 11117 ;;
1d1be0dc
NC
11118[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11119 d_nv_preserves_uv="$undef" ;;
11120*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11121 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11122esac
11123
1d1be0dc
NC
11124$rm -f try.* try
11125
b4eb6b3d
JH
11126
11127: check for off64_t
11128echo " "
11129echo "Checking to see if you have off64_t..." >&4
11130$cat >try.c <<EOCP
11131#include <sys/types.h>
11132#include <unistd.h>
11133int main() { off64_t x = 7; }
11134EOCP
11135set try
11136if eval $compile; then
11137 val="$define"
11138 echo "You have off64_t."
11139else
11140 val="$undef"
11141 echo "You do not have off64_t."
11142 case "$lseeksize" in
11143 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11144 esac
11145fi
11146$rm -f try.* try
11147set d_off64_t
11148eval $setvar
11149
11150: see if POSIX threads are available
11151set pthread.h i_pthread
11152eval $inhdr
11153
11154
11155
11156
11157: how to create joinable pthreads
11158if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11159 echo " "
11160 echo "Checking what constant to use for creating joinable pthreads..." >&4
11161 $cat >try.c <<'EOCP'
11162#include <pthread.h>
11163int main() {
11164 int detachstate = JOINABLE;
11165}
11166EOCP
11167 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11168 if eval $compile; then
11169 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11170 val="$undef" # Yes, undef.
11171 set d_old_pthread_create_joinable
11172 eval $setvar
11173 val=""
11174 set old_pthread_create_joinable
11175 eval $setvar
11176 else
11177 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11178 if eval $compile; then
11179 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11180 val="$define"
11181 set d_old_pthread_create_joinable
11182 eval $setvar
11183 val=PTHREAD_CREATE_UNDETACHED
11184 set old_pthread_create_joinable
11185 eval $setvar
11186 else
11187 set try -DJOINABLE=__UNDETACHED
11188 if eval $compile; then
11189 echo "You seem to use __UNDETACHED." >&4
11190 val="$define"
11191 set d_old_pthread_create_joinable
11192 eval $setvar
11193 val=__UNDETACHED
11194 set old_pthread_create_joinable
11195 eval $setvar
11196 else
11197 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11198 val="$define"
11199 set d_old_pthread_create_joinable
11200 eval $setvar
11201 val=0
11202 set old_pthread_create_joinable
11203 eval $setvar
11204 fi
11205 fi
11206 fi
11207 $rm -f try try.*
11208else
11209 d_old_pthread_create_joinable="$undef"
11210 old_pthread_create_joinable=""
11211fi
11212
11213: see if pause exists
11214set pause d_pause
11215eval $inlibc
11216
11217: see if pipe exists
11218set pipe d_pipe
11219eval $inlibc
11220
11221: see if poll exists
11222set poll d_poll
11223eval $inlibc
11224
11225
11226: see whether the various POSIXish _yields exist
11227$cat >try.c <<EOP
11228#include <pthread.h>
11229#include <stdio.h>
11230int main() {
11231#ifdef SCHED_YIELD
11232 sched_yield();
11233#else
11234#ifdef PTHREAD_YIELD
11235 pthread_yield();
11236#else
11237#ifdef PTHREAD_YIELD_NULL
11238 pthread_yield(NULL);
11239#endif
11240#endif
11241#endif
11242}
11243EOP
11244: see if sched_yield exists
11245set try -DSCHED_YIELD
11246if eval $compile; then
11247 val="$define"
11248 sched_yield='sched_yield()'
11249else
11250 val="$undef"
11251fi
11252case "$usethreads" in
11253$define)
11254 case "$val" in
11255 $define) echo 'sched_yield() found.' >&4 ;;
11256 *) echo 'sched_yield() NOT found.' >&4 ;;
11257 esac
11258esac
11259set d_sched_yield
11260eval $setvar
11261
11262: see if pthread_yield exists
11263set try -DPTHREAD_YIELD
11264if eval $compile; then
11265 val="$define"
11266 case "$sched_yield" in
11267 '') sched_yield='pthread_yield()' ;;
11268 esac
11269else
11270 set try -DPTHREAD_YIELD_NULL
11271 if eval $compile; then
11272 val="$define"
11273 case "$sched_yield" in
11274 '') sched_yield='pthread_yield(NULL)' ;;
11275 esac
11276 else
11277 val="$undef"
11278 fi
11279fi
11280case "$usethreads" in
11281$define)
11282 case "$val" in
11283 $define) echo 'pthread_yield() found.' >&4 ;;
11284 *) echo 'pthread_yield() NOT found.' >&4 ;;
11285 esac
11286 ;;
11287esac
11288set d_pthread_yield
11289eval $setvar
11290
11291case "$sched_yield" in
11292'') sched_yield=undef ;;
11293esac
11294
11295$rm -f try try.*
11296
11297: see if this is a pwd.h system
11298set pwd.h i_pwd
11299eval $inhdr
11300
11301case "$i_pwd" in
11302$define)
11303 xxx=`./findhdr pwd.h`
11304 $cppstdin $cppflags $cppminus < $xxx >$$.h
11305
11306 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11307 val="$define"
11308 else
11309 val="$undef"
11310 fi
11311 set d_pwquota
11312 eval $setvar
11313
11314 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11315 val="$define"
11316 else
11317 val="$undef"
11318 fi
11319 set d_pwage
11320 eval $setvar
11321
11322 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11323 val="$define"
11324 else
11325 val="$undef"
11326 fi
11327 set d_pwchange
11328 eval $setvar
11329
11330 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11331 val="$define"
11332 else
11333 val="$undef"
11334 fi
11335 set d_pwclass
11336 eval $setvar
11337
11338 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11339 val="$define"
11340 else
11341 val="$undef"
11342 fi
11343 set d_pwexpire
11344 eval $setvar
11345
11346 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11347 val="$define"
11348 else
11349 val="$undef"
11350 fi
11351 set d_pwcomment
11352 eval $setvar
11353
11354 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11355 val="$define"
11356 else
11357 val="$undef"
11358 fi
11359 set d_pwgecos
11360 eval $setvar
11361
11362 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11363 val="$define"
11364 else
11365 val="$undef"
11366 fi
11367 set d_pwpasswd
11368 eval $setvar
11369
11370 $rm -f $$.h
11371 ;;
11372*)
11373 val="$undef";
11374 set d_pwquota; eval $setvar
11375 set d_pwage; eval $setvar
11376 set d_pwchange; eval $setvar
11377 set d_pwclass; eval $setvar
11378 set d_pwexpire; eval $setvar
11379 set d_pwcomment; eval $setvar
11380 set d_pwgecos; eval $setvar
11381 set d_pwpasswd; eval $setvar
11382 ;;
11383esac
11384
11385: see if readdir and friends exist
11386set readdir d_readdir
11387eval $inlibc
11388set seekdir d_seekdir
11389eval $inlibc
11390set telldir d_telldir
11391eval $inlibc
11392set rewinddir d_rewinddir
11393eval $inlibc
11394
11395: see if readlink exists
11396set readlink d_readlink
11397eval $inlibc
11398
4e0554ec
JH
11399: see if readv exists
11400set readv d_readv
11401eval $inlibc
11402
640374d0
JH
11403: see if realpath exists
11404set realpath d_realpath
11405eval $inlibc
11406
4e0554ec
JH
11407: see if recvmsg exists
11408set recvmsg d_recvmsg
11409eval $inlibc
11410
b4eb6b3d
JH
11411: see if rename exists
11412set rename d_rename
11413eval $inlibc
11414
11415: see if rmdir exists
11416set rmdir d_rmdir
11417eval $inlibc
11418
11419: see if memory.h is available.
11420val=''
11421set memory.h val
11422eval $inhdr
11423
11424: See if it conflicts with string.h
11425case "$val" in
11426$define)
11427 case "$strings" in
11428 '') ;;
11429 *)
11430 $cppstdin $cppflags $cppminus < $strings > mem.h
11431 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11432 echo " "
11433 echo "We won't be including <memory.h>."
11434 val="$undef"
11435 fi
11436 $rm -f mem.h
11437 ;;
11438 esac
11439esac
11440set i_memory
11441eval $setvar
11442
11443: can bcopy handle overlapping blocks?
11444val="$undef"
11445case "$d_bcopy" in
11446"$define")
11447 echo " "
11448 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11449 $cat >try.c <<EOCP
11450#$i_memory I_MEMORY
11451#$i_stdlib I_STDLIB
11452#$i_string I_STRING
11453#$i_unistd I_UNISTD
11454EOCP
11455 $cat >>try.c <<'EOCP'
11456#include <stdio.h>
11457#ifdef I_MEMORY
11458# include <memory.h>
11459#endif
11460#ifdef I_STDLIB
11461# include <stdlib.h>
11462#endif
11463#ifdef I_STRING
11464# include <string.h>
11465#else
11466# include <strings.h>
11467#endif
11468#ifdef I_UNISTD
11469# include <unistd.h> /* Needed for NetBSD */
11470#endif
11471int main()
11472{
11473char buf[128], abc[128];
11474char *b;
11475int len;
11476int off;
11477int align;
11478
11479bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11480
11481for (align = 7; align >= 0; align--) {
11482 for (len = 36; len; len--) {
11483 b = buf+align;
11484 bcopy(abc, b, len);
11485 for (off = 1; off <= len; off++) {
11486 bcopy(b, b+off, len);
11487 bcopy(b+off, b, len);
11488 if (bcmp(b, abc, len))
11489 exit(1);
11490 }
11491 }
11492}
11493exit(0);
11494}
11495EOCP
11496 set try
11497 if eval $compile_ok; then
5440bc8e 11498 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11499 echo "Yes, it can."
11500 val="$define"
11501 else
11502 echo "It can't, sorry."
11503 case "$d_memmove" in
11504 "$define") echo "But that's Ok since you have memmove()." ;;
11505 esac
11506 fi
11507 else
11508 echo "(I can't compile the test program, so we'll assume not...)"
11509 case "$d_memmove" in
11510 "$define") echo "But that's Ok since you have memmove()." ;;
11511 esac
11512 fi
11513 ;;
11514esac
11515$rm -f try.* try core
11516set d_safebcpy
11517eval $setvar
11518
11519: can memcpy handle overlapping blocks?
11520val="$undef"
11521case "$d_memcpy" in
11522"$define")
11523 echo " "
11524 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11525 $cat >try.c <<EOCP
11526#$i_memory I_MEMORY
11527#$i_stdlib I_STDLIB
11528#$i_string I_STRING
11529#$i_unistd I_UNISTD
11530EOCP
11531 $cat >>try.c <<'EOCP'
11532#include <stdio.h>
11533#ifdef I_MEMORY
11534# include <memory.h>
11535#endif
11536#ifdef I_STDLIB
11537# include <stdlib.h>
11538#endif
11539#ifdef I_STRING
11540# include <string.h>
11541#else
11542# include <strings.h>
11543#endif
11544#ifdef I_UNISTD
11545# include <unistd.h> /* Needed for NetBSD */
11546#endif
11547int main()
11548{
11549char buf[128], abc[128];
11550char *b;
11551int len;
11552int off;
11553int align;
11554
11555/* Copy "abcde..." string to char abc[] so that gcc doesn't
11556 try to store the string in read-only memory. */
11557memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11558
11559for (align = 7; align >= 0; align--) {
11560 for (len = 36; len; len--) {
11561 b = buf+align;
11562 memcpy(b, abc, len);
11563 for (off = 1; off <= len; off++) {
11564 memcpy(b+off, b, len);
11565 memcpy(b, b+off, len);
11566 if (memcmp(b, abc, len))
11567 exit(1);
11568 }
11569 }
11570}
11571exit(0);
11572}
11573EOCP
11574 set try
11575 if eval $compile_ok; then
5440bc8e 11576 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11577 echo "Yes, it can."
11578 val="$define"
11579 else
11580 echo "It can't, sorry."
11581 case "$d_memmove" in
11582 "$define") echo "But that's Ok since you have memmove()." ;;
11583 esac
11584 fi
11585 else
11586 echo "(I can't compile the test program, so we'll assume not...)"
11587 case "$d_memmove" in
11588 "$define") echo "But that's Ok since you have memmove()." ;;
11589 esac
11590 fi
11591 ;;
11592esac
11593$rm -f try.* try core
11594set d_safemcpy
11595eval $setvar
11596
11597: can memcmp be trusted to compare relative magnitude?
11598val="$undef"
11599case "$d_memcmp" in
11600"$define")
11601 echo " "
11602 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11603 $cat >try.c <<EOCP
11604#$i_memory I_MEMORY
11605#$i_stdlib I_STDLIB
11606#$i_string I_STRING
11607#$i_unistd I_UNISTD
11608EOCP
11609 $cat >>try.c <<'EOCP'
11610#include <stdio.h>
11611#ifdef I_MEMORY
11612# include <memory.h>
11613#endif
11614#ifdef I_STDLIB
11615# include <stdlib.h>
11616#endif
11617#ifdef I_STRING
11618# include <string.h>
11619#else
11620# include <strings.h>
11621#endif
11622#ifdef I_UNISTD
11623# include <unistd.h> /* Needed for NetBSD */
11624#endif
11625int main()
11626{
11627char a = -1;
11628char b = 0;
11629if ((a < b) && memcmp(&a, &b, 1) < 0)
11630 exit(1);
11631exit(0);
11632}
11633EOCP
11634 set try
11635 if eval $compile_ok; then
5440bc8e 11636 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11637 echo "Yes, it can."
11638 val="$define"
11639 else
11640 echo "No, it can't (it uses signed chars)."
11641 fi
11642 else
11643 echo "(I can't compile the test program, so we'll assume not...)"
11644 fi
11645 ;;
11646esac
11647$rm -f try.* try core
11648set d_sanemcmp
11649eval $setvar
11650
ef9f17be
JH
11651: see if prototype for sbrk is available
11652echo " "
11653set d_sbrkproto sbrk $i_unistd unistd.h
11654eval $hasproto
11655
b4eb6b3d
JH
11656: see if select exists
11657set select d_select
11658eval $inlibc
11659
11660: see if semctl exists
11661set semctl d_semctl
11662eval $inlibc
11663
11664: see if semget exists
11665set semget d_semget
11666eval $inlibc
11667
11668: see if semop exists
11669set semop d_semop
11670eval $inlibc
11671
11672: see how much of the 'sem*(2)' library is present.
11673h_sem=true
11674echo " "
11675case "$d_semctl$d_semget$d_semop" in
11676*"$undef"*) h_sem=false;;
11677esac
11678case "$osname" in
11679freebsd)
11680 case "`ipcs 2>&1`" in
11681 "SVID messages"*"not configured"*)
11682 echo "Your $osname does not have the sem*(2) configured." >&4
11683 h_sem=false
11684 val="$undef"
11685 set semctl d_semctl
11686 eval $setvar
11687 set semget d_semget
11688 eval $setvar
11689 set semop d_semop
11690 eval $setvar
11691 ;;
11692 esac
11693 ;;
11694esac
11695: we could also check for sys/ipc.h ...
11696if $h_sem && $test `./findhdr sys/sem.h`; then
11697 echo "You have the full sem*(2) library." >&4
11698 val="$define"
11699else
11700 echo "You don't have the full sem*(2) library." >&4
11701 val="$undef"
11702fi
11703set d_sem
11704eval $setvar
11705
11706: see whether sys/sem.h defines union semun
11707echo " "
11708$cat > try.c <<'END'
11709#include <sys/types.h>
11710#include <sys/ipc.h>
11711#include <sys/sem.h>
11712int main () { union semun semun; semun.buf = 0; }
11713END
11714set try
11715if eval $compile; then
11716 echo "You have union semun in <sys/sem.h>." >&4
11717 val="$define"
11718else
11719 echo "You do not have union semun in <sys/sem.h>." >&4
11720 val="$undef"
11721fi
11722$rm -f try try.c try.h
11723set d_union_semun
11724eval $setvar
11725
11726: see how to do semctl IPC_STAT
11727case "$d_sem" in
11728$define)
11729 : see whether semctl IPC_STAT can use union semun
11730 echo " "
11731 $cat > try.h <<END
11732#ifndef S_IRUSR
11733# ifdef S_IREAD
11734# define S_IRUSR S_IREAD
11735# define S_IWUSR S_IWRITE
11736# define S_IXUSR S_IEXEC
11737# else
11738# define S_IRUSR 0400
11739# define S_IWUSR 0200
11740# define S_IXUSR 0100
11741# endif
11742# define S_IRGRP (S_IRUSR>>3)
11743# define S_IWGRP (S_IWUSR>>3)
11744# define S_IXGRP (S_IXUSR>>3)
11745# define S_IROTH (S_IRUSR>>6)
11746# define S_IWOTH (S_IWUSR>>6)
11747# define S_IXOTH (S_IXUSR>>6)
11748#endif
11749#ifndef S_IRWXU
11750# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11751# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11752# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11753#endif
11754END
11755
11756 $cat > try.c <<END
11757#include <sys/types.h>
11758#include <sys/ipc.h>
11759#include <sys/sem.h>
11760#include <sys/stat.h>
11761#include <stdio.h>
11762#include <errno.h>
11763#include "try.h"
11764#ifndef errno
11765extern int errno;
11766#endif
11767#$d_union_semun HAS_UNION_SEMUN
11768int main() {
11769 union semun
11770#ifndef HAS_UNION_SEMUN
11771 {
11772 int val;
11773 struct semid_ds *buf;
11774 unsigned short *array;
11775 }
11776#endif
11777 arg;
11778 int sem, st;
11779
11780#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11781 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11782 if (sem > -1) {
11783 struct semid_ds argbuf;
11784 arg.buf = &argbuf;
11785# ifdef IPC_STAT
11786 st = semctl(sem, 0, IPC_STAT, arg);
11787 if (st == 0)
11788 printf("semun\n");
11789 else
11790# endif /* IPC_STAT */
11791 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11792# ifdef IPC_RMID
11793 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11794# endif /* IPC_RMID */
11795 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11796 } else
11797#endif /* IPC_PRIVATE && ... */
11798 printf("semget failed: errno = %d\n", errno);
11799 return 0;
11800}
11801END
11802 val="$undef"
11803 set try
11804 if eval $compile; then
5440bc8e 11805 xxx=`$run ./try`
b4eb6b3d
JH
11806 case "$xxx" in
11807 semun) val="$define" ;;
11808 esac
11809 fi
11810 $rm -f try try.c
11811 set d_semctl_semun
11812 eval $setvar
11813 case "$d_semctl_semun" in
11814 $define)
11815 echo "You can use union semun for semctl IPC_STAT." >&4
11816 also='also'
11817 ;;
11818 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11819 also=''
11820 ;;
11821 esac
11822
11823 : see whether semctl IPC_STAT can use struct semid_ds pointer
11824 $cat > try.c <<'END'
11825#include <sys/types.h>
11826#include <sys/ipc.h>
11827#include <sys/sem.h>
11828#include <sys/stat.h>
11829#include "try.h"
11830#include <stdio.h>
11831#include <errno.h>
11832#ifndef errno
11833extern int errno;
11834#endif
11835int main() {
11836 struct semid_ds arg;
11837 int sem, st;
11838
11839#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11840 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11841 if (sem > -1) {
11842# ifdef IPC_STAT
11843 st = semctl(sem, 0, IPC_STAT, &arg);
11844 if (st == 0)
11845 printf("semid_ds\n");
11846 else
11847# endif /* IPC_STAT */
11848 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11849# ifdef IPC_RMID
11850 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11851# endif /* IPC_RMID */
11852 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11853 } else
11854#endif /* IPC_PRIVATE && ... */
11855 printf("semget failed: errno = %d\n", errno);
11856
11857 return 0;
11858}
11859END
11860 val="$undef"
11861 set try
11862 if eval $compile; then
5440bc8e 11863 xxx=`$run ./try`
b4eb6b3d
JH
11864 case "$xxx" in
11865 semid_ds) val="$define" ;;
11866 esac
11867 fi
11868 $rm -f try try.c
11869 set d_semctl_semid_ds
11870 eval $setvar
11871 case "$d_semctl_semid_ds" in
11872 $define)
11873 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11874 ;;
11875 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11876 ;;
11877 esac
11878 $rm -f try.h
11879 ;;
11880*) val="$undef"
11881
11882 # We do not have the full sem*(2) library, so assume we can not
11883 # use either.
11884
11885 set d_semctl_semun
11886 eval $setvar
11887
11888 set d_semctl_semid_ds
11889 eval $setvar
11890 ;;
11891esac
11892
4e0554ec
JH
11893: see if sendmsg exists
11894set sendmsg d_sendmsg
11895eval $inlibc
11896
b4eb6b3d
JH
11897: see if setegid exists
11898set setegid d_setegid
11899eval $inlibc
11900
11901: see if seteuid exists
11902set seteuid d_seteuid
11903eval $inlibc
11904
11905: see if setgrent exists
11906set setgrent d_setgrent
11907eval $inlibc
11908
11909: see if sethostent exists
11910set sethostent d_sethent
11911eval $inlibc
11912
4e0554ec
JH
11913: see if setitimer exists
11914set setitimer d_setitimer
11915eval $inlibc
11916
b4eb6b3d
JH
11917: see if setlinebuf exists
11918set setlinebuf d_setlinebuf
11919eval $inlibc
11920
11921: see if setlocale exists
11922set setlocale d_setlocale
11923eval $inlibc
11924
11925: see if setnetent exists
11926set setnetent d_setnent
11927eval $inlibc
11928
11929: see if setprotoent exists
11930set setprotoent d_setpent
11931eval $inlibc
11932
11933: see if setpgid exists
11934set setpgid d_setpgid
11935eval $inlibc
11936
11937: see if setpgrp2 exists
11938set setpgrp2 d_setpgrp2
11939eval $inlibc
11940
11941: see if setpriority exists
11942set setpriority d_setprior
11943eval $inlibc
11944
11945: see if setproctitle exists
11946set setproctitle d_setproctitle
11947eval $inlibc
11948
11949: see if setpwent exists
11950set setpwent d_setpwent
11951eval $inlibc
11952
11953: see if setregid exists
11954set setregid d_setregid
11955eval $inlibc
11956set setresgid d_setresgid
11957eval $inlibc
11958
11959: see if setreuid exists
11960set setreuid d_setreuid
11961eval $inlibc
11962set setresuid d_setresuid
11963eval $inlibc
11964
11965: see if setrgid exists
11966set setrgid d_setrgid
11967eval $inlibc
11968
11969: see if setruid exists
11970set setruid d_setruid
11971eval $inlibc
11972
11973: see if setservent exists
11974set setservent d_setsent
11975eval $inlibc
11976
11977: see if setsid exists
11978set setsid d_setsid
11979eval $inlibc
11980
11981: see if setvbuf exists
11982set setvbuf d_setvbuf
11983eval $inlibc
11984
11985: see if sfio.h is available
11986set sfio.h i_sfio
11987eval $inhdr
11988
11989
11990: see if sfio library is available
11991case "$i_sfio" in
11992$define)
11993 val=''
11994 set sfreserve val
11995 eval $inlibc
11996 ;;
11997*)
11998 val="$undef"
11999 ;;
12000esac
12001: Ok, but do we want to use it.
12002case "$val" in
12003$define)
12004 case "$usesfio" in
12005 true|$define|[yY]*) dflt='y';;
12006 *) dflt='n';;
12007 esac
12008 echo "$package can use the sfio library, but it is experimental."
12009 case "$useperlio" in
12010 "$undef")
12011 echo "For sfio also the PerlIO abstraction layer is needed."
12012 echo "Earlier you said you wouldn't want that."
12013 ;;
12014 esac
12015 rp="You seem to have sfio available, do you want to try using it?"
12016 . ./myread
12017 case "$ans" in
12018 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12019 useperlio="$define"
12020 val="$define"
12021 ;;
12022 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12023 val="$undef"
b4eb6b3d
JH
12024 ;;
12025 esac
12026 ;;
12027*) case "$usesfio" in
12028 true|$define|[yY]*)
12029 echo "Sorry, cannot find sfio on this machine." >&4
12030 echo "Ignoring your setting of usesfio=$usesfio." >&4
12031 val="$undef"
12032 ;;
12033 esac
12034 ;;
12035esac
12036set d_sfio
12037eval $setvar
12038case "$d_sfio" in
12039$define) usesfio='true';;
12040*) usesfio='false';;
12041esac
3659ebf1
JH
12042case "$d_sfio" in
12043$define) ;;
12044*) : Remove sfio from list of libraries to use
12045 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12046 shift
12047 libs="$*"
12048 echo "libs = $libs" >&4
12049;;
12050esac
12051
b4eb6b3d
JH
12052
12053: see if shmctl exists
12054set shmctl d_shmctl
12055eval $inlibc
12056
12057: see if shmget exists
12058set shmget d_shmget
12059eval $inlibc
12060
12061: see if shmat exists
12062set shmat d_shmat
12063eval $inlibc
12064: see what shmat returns
12065case "$d_shmat" in
12066"$define")
12067 $cat >shmat.c <<'END'
12068#include <sys/shm.h>
12069void *shmat();
12070END
12071 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12072 shmattype='void *'
12073 else
12074 shmattype='char *'
12075 fi
12076 echo "and it returns ($shmattype)." >&4
12077 : see if a prototype for shmat is available
12078 xxx=`./findhdr sys/shm.h`
12079 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12080 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12081 val="$define"
12082 else
12083 val="$undef"
12084 fi
12085 $rm -f shmat.[co]
12086 ;;
12087*)
12088 val="$undef"
12089 ;;
12090esac
12091set d_shmatprototype
12092eval $setvar
12093
12094: see if shmdt exists
12095set shmdt d_shmdt
12096eval $inlibc
12097
12098: see how much of the 'shm*(2)' library is present.
12099h_shm=true
12100echo " "
12101case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12102*"$undef"*) h_shm=false;;
12103esac
12104case "$osname" in
12105freebsd)
12106 case "`ipcs 2>&1`" in
12107 "SVID shared memory"*"not configured"*)
12108 echo "Your $osname does not have the shm*(2) configured." >&4
12109 h_shm=false
12110 val="$undef"
12111 set shmctl d_shmctl
12112 evat $setvar
12113 set shmget d_shmget
12114 evat $setvar
12115 set shmat d_shmat
12116 evat $setvar
12117 set shmdt d_shmdt
12118 evat $setvar
12119 ;;
12120 esac
12121 ;;
12122esac
12123: we could also check for sys/ipc.h ...
12124if $h_shm && $test `./findhdr sys/shm.h`; then
12125 echo "You have the full shm*(2) library." >&4
12126 val="$define"
12127else
12128 echo "You don't have the full shm*(2) library." >&4
12129 val="$undef"
12130fi
12131set d_shm
12132eval $setvar
12133
12134echo " "
12135: see if we have sigaction
12136if set sigaction val -f d_sigaction; eval $csym; $val; then
12137 echo 'sigaction() found.' >&4
12138 $cat > try.c <<'EOP'
12139#include <stdio.h>
12140#include <sys/types.h>
12141#include <signal.h>
12142int main()
12143{
12144 struct sigaction act, oact;
12145 act.sa_flags = 0;
12146 oact.sa_handler = 0;
12147 /* so that act and oact are used */
12148 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12149}
12150EOP
12151 set try
12152 if eval $compile_ok; then
12153 val="$define"
12154 else
12155 echo "But you don't seem to have a useable struct sigaction." >&4
12156 val="$undef"
12157 fi
12158else
12159 echo 'sigaction NOT found.' >&4
12160 val="$undef"
12161fi
12162set d_sigaction; eval $setvar
12163$rm -f try try$_o try.c
12164
983dbef6
JH
12165: see if sigprocmask exists
12166set sigprocmask d_sigprocmask
12167eval $inlibc
12168
b4eb6b3d
JH
12169: see if sigsetjmp exists
12170echo " "
12171case "$d_sigsetjmp" in
12172'')
12173 $cat >try.c <<'EOP'
12174#include <setjmp.h>
12175sigjmp_buf env;
12176int set = 1;
12177int main()
12178{
12179 if (sigsetjmp(env,1))
12180 exit(set);
12181 set = 0;
12182 siglongjmp(env, 1);
12183 exit(1);
12184}
12185EOP
12186 set try
12187 if eval $compile; then
5440bc8e 12188 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12189 echo "POSIX sigsetjmp found." >&4
12190 val="$define"
12191 else
12192 $cat >&4 <<EOM
12193Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12194I'll ignore them.
12195EOM
12196 val="$undef"
12197 fi
12198 else
12199 echo "sigsetjmp not found." >&4
12200 val="$undef"
12201 fi
12202 ;;
12203*) val="$d_sigsetjmp"
12204 case "$d_sigsetjmp" in
12205 $define) echo "POSIX sigsetjmp found." >&4;;
12206 $undef) echo "sigsetjmp not found." >&4;;
12207 esac
12208 ;;
12209esac
12210set d_sigsetjmp
12211eval $setvar
12212$rm -f try.c try
12213
49a78c82
JH
12214: see if sockatmark exists
12215set sockatmark d_sockatmark
12216eval $inlibc
12217
2ef53570
JH
12218: see if prototype for sockatmark is available
12219echo " "
12220set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12221eval $hasproto
12222
b4eb6b3d
JH
12223: see if socks5_init exists
12224set socks5_init d_socks5_init
12225eval $inlibc
12226
eef837ea
JH
12227: see if prototype for setresgid is available
12228echo " "
12229set d_sresgproto setresgid $i_unistd unistd.h
12230eval $hasproto
12231
640374d0
JH
12232: see if prototype for setresuid is available
12233echo " "
12234set d_sresuproto setresuid $i_unistd unistd.h
12235eval $hasproto
12236
b4eb6b3d
JH
12237: see if sys/stat.h is available
12238set sys/stat.h i_sysstat
12239eval $inhdr
12240
12241
12242: see if stat knows about block sizes
12243echo " "
12244echo "Checking to see if your struct stat has st_blocks field..." >&4
12245set d_statblks stat st_blocks $i_sysstat sys/stat.h
12246eval $hasfield
12247
12248
12249: see if this is a sys/vfs.h system
12250set sys/vfs.h i_sysvfs
12251eval $inhdr
12252
12253
12254: see if this is a sys/statfs.h system
12255set sys/statfs.h i_sysstatfs
12256eval $inhdr
12257
12258
12259echo " "
12260echo "Checking to see if your system supports struct statfs..." >&4
12261set 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
12262eval $hasstruct
12263case "$d_statfs_s" in
12264"$define") echo "Yes, it does." ;;
12265*) echo "No, it doesn't." ;;
12266esac
12267
12268
12269
12270: see if struct statfs knows about f_flags
12271case "$d_statfs_s" in
12272define)
12273 echo " "
12274 echo "Checking to see if your struct statfs has f_flags field..." >&4
12275 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
12276 eval $hasfield
12277 ;;
12278*) val="$undef"
12279 set d_statfs_f_flags
12280 eval $setvar
12281 ;;
12282esac
12283case "$d_statfs_f_flags" in
12284"$define") echo "Yes, it does." ;;
12285*) echo "No, it doesn't." ;;
12286esac
12287
12288: see if _ptr and _cnt from stdio act std
12289echo " "
80f36755
NC
12290
12291if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12292 echo "(Looks like you have stdio.h from BSD.)"
12293 case "$stdio_ptr" in
12294 '') stdio_ptr='((fp)->_p)'
12295 ptr_lval=$define
12296 ;;
12297 *) ptr_lval=$d_stdio_ptr_lval;;
12298 esac
12299 case "$stdio_cnt" in
12300 '') stdio_cnt='((fp)->_r)'
12301 cnt_lval=$define
12302 ;;
12303 *) cnt_lval=$d_stdio_cnt_lval;;
12304 esac
12305 case "$stdio_base" in
12306 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12307 esac
12308 case "$stdio_bufsiz" in
12309 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12310 esac
12311elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12312 echo "(Looks like you have stdio.h from Linux.)"
12313 case "$stdio_ptr" in
12314 '') stdio_ptr='((fp)->_IO_read_ptr)'
12315 ptr_lval=$define
12316 ;;
12317 *) ptr_lval=$d_stdio_ptr_lval;;
12318 esac
12319 case "$stdio_cnt" in
12320 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12321 cnt_lval=$undef
12322 ;;
12323 *) cnt_lval=$d_stdio_cnt_lval;;
12324 esac
12325 case "$stdio_base" in
12326 '') stdio_base='((fp)->_IO_read_base)';;
12327 esac
12328 case "$stdio_bufsiz" in
12329 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12330 esac
12331else
12332 case "$stdio_ptr" in
12333 '') stdio_ptr='((fp)->_ptr)'
12334 ptr_lval=$define
12335 ;;
12336 *) ptr_lval=$d_stdio_ptr_lval;;
12337 esac
12338 case "$stdio_cnt" in
12339 '') stdio_cnt='((fp)->_cnt)'
12340 cnt_lval=$define
12341 ;;
12342 *) cnt_lval=$d_stdio_cnt_lval;;
12343 esac
12344 case "$stdio_base" in
12345 '') stdio_base='((fp)->_base)';;
12346 esac
12347 case "$stdio_bufsiz" in
12348 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12349 esac
12350fi
80f36755 12351
b4eb6b3d
JH
12352: test whether _ptr and _cnt really work
12353echo "Checking how std your stdio is..." >&4
12354$cat >try.c <<EOP
12355#include <stdio.h>
12356#define FILE_ptr(fp) $stdio_ptr
12357#define FILE_cnt(fp) $stdio_cnt
12358int main() {
12359 FILE *fp = fopen("try.c", "r");
12360 char c = getc(fp);
12361 if (
12362 18 <= FILE_cnt(fp) &&
12363 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12364 )
12365 exit(0);
12366 exit(1);
12367}
12368EOP
12369val="$undef"
12370set try
5440bc8e
JH
12371if eval $compile && $to try.c; then
12372 if $run ./try; then
b4eb6b3d
JH
12373 echo "Your stdio acts pretty std."
12374 val="$define"
12375 else
12376 echo "Your stdio isn't very std."
12377 fi
12378else
12379 echo "Your stdio doesn't appear very std."
12380fi
12381$rm -f try.c try
12382set d_stdstdio
12383eval $setvar
12384
12385: Can _ptr be used as an lvalue?
12386case "$d_stdstdio$ptr_lval" in
12387$define$define) val=$define ;;
12388*) val=$undef ;;
12389esac
12390set d_stdio_ptr_lval
12391eval $setvar
12392
12393: Can _cnt be used as an lvalue?
12394case "$d_stdstdio$cnt_lval" in
12395$define$define) val=$define ;;
12396*) val=$undef ;;
12397esac
12398set d_stdio_cnt_lval
12399eval $setvar
12400
a7ffa9b9
NC
12401
12402: test whether setting _ptr sets _cnt as a side effect
12403d_stdio_ptr_lval_sets_cnt="$undef"
12404d_stdio_ptr_lval_nochange_cnt="$undef"
12405case "$d_stdio_ptr_lval$d_stdstdio" in
12406$define$define)
12407 echo "Checking to see what happens if we set the stdio ptr..." >&4
12408$cat >try.c <<EOP
12409#include <stdio.h>
12410/* Can we scream? */
12411/* Eat dust sed :-) */
c1d9e6fa 12412/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12413#define FILE_ptr(fp) $stdio_ptr
12414#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12415#include <sys/types.h>
a7ffa9b9
NC
12416int main() {
12417 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12418 int c;
a7ffa9b9
NC
12419 char *ptr;
12420 size_t cnt;
c1d9e6fa
JH
12421 if (!fp) {
12422 puts("Fail even to read");
12423 exit(1);
12424 }
12425 c = getc(fp); /* Read away the first # */
12426 if (c == EOF) {
12427 puts("Fail even to read");
12428 exit(1);
12429 }
a7ffa9b9
NC
12430 if (!(
12431 18 <= FILE_cnt(fp) &&
12432 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12433 )) {
12434 puts("Fail even to read");
12435 exit (1);
12436 }
c1d9e6fa
JH
12437 ptr = (char*) FILE_ptr(fp);
12438 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12439
c1d9e6fa 12440 FILE_ptr(fp) += 42;
a7ffa9b9 12441
c1d9e6fa 12442 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12443 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12444 exit (1);
12445 }
12446 if (FILE_cnt(fp) <= 20) {
12447 printf ("Fail (<20 chars to test)");
12448 exit (1);
12449 }
12450 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12451 puts("Fail compare");
12452 exit (1);
12453 }
12454 if (cnt == FILE_cnt(fp)) {
12455 puts("Pass_unchanged");
12456 exit (0);
12457 }
12458 if (FILE_cnt(fp) == (cnt - 42)) {
12459 puts("Pass_changed");
12460 exit (0);
12461 }
12462 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12463 return 1;
12464
12465}
12466EOP
12467 set try
5440bc8e
JH
12468 if eval $compile && $to try.c; then
12469 case `$run ./try` in
a7ffa9b9 12470 Pass_changed)
2e32dcfe 12471 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12472 d_stdio_ptr_lval_sets_cnt="$define" ;;
12473 Pass_unchanged)
12474 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12475 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12476 Fail*)
12477 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12478 *)
12479 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12480 esac
12481 else
12482 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12483 fi
12484 $rm -f try.c try
12485 ;;
12486esac
12487
b4eb6b3d
JH
12488: see if _base is also standard
12489val="$undef"
12490case "$d_stdstdio" in
12491$define)
12492 $cat >try.c <<EOP
12493#include <stdio.h>
12494#define FILE_base(fp) $stdio_base
12495#define FILE_bufsiz(fp) $stdio_bufsiz
12496int main() {
12497 FILE *fp = fopen("try.c", "r");
12498 char c = getc(fp);
12499 if (
12500 19 <= FILE_bufsiz(fp) &&
12501 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12502 )
12503 exit(0);
12504 exit(1);
12505}
12506EOP
12507 set try
5440bc8e
JH
12508 if eval $compile && $to try.c; then
12509 if $run ./try; then
b4eb6b3d
JH
12510 echo "And its _base field acts std."
12511 val="$define"
12512 else
12513 echo "But its _base field isn't std."
12514 fi
12515 else
12516 echo "However, it seems to be lacking the _base field."
12517 fi
12518 $rm -f try.c try
12519 ;;
12520esac
12521set d_stdiobase
12522eval $setvar
12523
12524$cat >&4 <<EOM
12525Checking how to access stdio streams by file descriptor number...
12526EOM
12527case "$stdio_stream_array" in
12528'') $cat >try.c <<EOCP
12529#include <stdio.h>
12530int main() {
12531 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12532 printf("yes\n");
12533}
12534EOCP
12535 for s in _iob __iob __sF
12536 do
12537 set try -DSTDIO_STREAM_ARRAY=$s
12538 if eval $compile; then
5440bc8e 12539 case "`$run ./try`" in
b4eb6b3d
JH
12540 yes) stdio_stream_array=$s; break ;;
12541 esac
12542 fi
12543 done
12544 $rm -f try.* try$exe_ext
12545esac
12546case "$stdio_stream_array" in
12547'') $cat >&4 <<EOM
12548I can't figure out how to access stdio streams by file descriptor number.
12549EOM
12550 d_stdio_stream_array="$undef"
12551 ;;
12552*) $cat >&4 <<EOM
12553You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12554EOM
12555 d_stdio_stream_array="$define"
12556 ;;
12557esac
12558
12559: see if strcoll exists
12560set strcoll d_strcoll
12561eval $inlibc
12562
12563: check for structure copying
12564echo " "
12565echo "Checking to see if your C compiler can copy structs..." >&4
12566$cat >try.c <<'EOCP'
12567int main()
12568{
12569 struct blurfl {
12570 int dyick;
12571 } foo, bar;
12572
12573 foo = bar;
12574}
12575EOCP
12576if $cc -c try.c >/dev/null 2>&1 ; then
12577 val="$define"
12578 echo "Yup, it can."
12579else
12580 val="$undef"
12581 echo "Nope, it can't."
12582fi
12583set d_strctcpy
12584eval $setvar
12585$rm -f try.*
12586
12587: see if strerror and/or sys_errlist[] exist
12588echo " "
12589if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12590 if set strerror val -f d_strerror; eval $csym; $val; then
12591 echo 'strerror() found.' >&4
12592 d_strerror="$define"
12593 d_strerrm='strerror(e)'
12594 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12595 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12596 d_syserrlst="$define"
12597 else
12598 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12599 d_syserrlst="$undef"
12600 fi
12601 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12602 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12603 echo 'strerror() found in string header.' >&4
12604 d_strerror="$define"
12605 d_strerrm='strerror(e)'
12606 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12607 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12608 d_syserrlst="$define"
12609 else
12610 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12611 d_syserrlst="$undef"
12612 fi
12613 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12614 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12615 d_strerror="$undef"
12616 d_syserrlst="$define"
12617 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12618 else
12619 echo 'strerror() and sys_errlist[] NOT found.' >&4
12620 d_strerror="$undef"
12621 d_syserrlst="$undef"
12622 d_strerrm='"unknown"'
12623 fi
12624fi
12625
b3c85772
JH
12626: see if strftime exists
12627set strftime d_strftime
12628eval $inlibc
12629
b4eb6b3d
JH
12630: see if strtod exists
12631set strtod d_strtod
12632eval $inlibc
12633
12634: see if strtol exists
12635set strtol d_strtol
12636eval $inlibc
12637
12638: see if strtold exists
12639set strtold d_strtold
12640eval $inlibc
12641
12642: see if strtoll exists
12643set strtoll d_strtoll
12644eval $inlibc
12645
12646case "$d_longlong-$d_strtoll" in
12647"$define-$define")
12648 $cat <<EOM
12649Checking whether your strtoll() works okay...
12650EOM
12651 $cat >try.c <<'EOCP'
12652#include <errno.h>
12653#ifdef __hpux
12654#define strtoll __strtoll
12655#endif
e75931a7
YST
12656#ifdef __EMX__
12657#define strtoll _strtoll
12658#endif
b4eb6b3d
JH
12659#include <stdio.h>
12660extern long long int strtoll(char *s, char **, int);
12661static int bad = 0;
12662int check(char *s, long long ell, int een) {
12663 long long gll;
12664 errno = 0;
12665 gll = strtoll(s, 0, 10);
12666 if (!((gll == ell) && (errno == een)))
12667 bad++;
12668}
12669int main() {
12670 check(" 1", 1LL, 0);
12671 check(" 0", 0LL, 0);
12672 check("-1", -1LL, 0);
12673 check("-9223372036854775808", -9223372036854775808LL, 0);
12674 check("-9223372036854775808", -9223372036854775808LL, 0);
12675 check(" 9223372036854775807", 9223372036854775807LL, 0);
12676 check("-9223372036854775808", -9223372036854775808LL, 0);
12677 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12678 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12679 if (!bad)
12680 printf("ok\n");
12681}
12682EOCP
12683 set try
12684 if eval $compile; then
5440bc8e 12685 yyy=`$run ./try`
e75931a7 12686 case "$yyy" in
b4eb6b3d
JH
12687 ok) echo "Your strtoll() seems to be working okay." ;;
12688 *) cat <<EOM >&4
12689Your strtoll() doesn't seem to be working okay.
12690EOM
12691 d_strtoll="$undef"
12692 ;;
69eadf66 12693 esac
e75931a7
YST
12694 else
12695 echo "(I can't seem to compile the test program--assuming it doesn't)"
12696 d_strtoll="$undef"
b4eb6b3d
JH
12697 fi
12698 ;;
12699esac
12700
28e5dec8
JH
12701: see if strtoq exists
12702set strtoq d_strtoq
12703eval $inlibc
12704
b4eb6b3d
JH
12705: see if strtoul exists
12706set strtoul d_strtoul
12707eval $inlibc
12708
d0e6d399
NC
12709case "$d_strtoul" in
12710"$define")
12711 $cat <<EOM
12712Checking whether your strtoul() works okay...
12713EOM
12714 $cat >try.c <<'EOCP'
12715#include <errno.h>
12716#include <stdio.h>
12717extern unsigned long int strtoul(char *s, char **, int);
12718static int bad = 0;
12719void check(char *s, unsigned long eul, int een) {
12720 unsigned long gul;
12721 errno = 0;
12722 gul = strtoul(s, 0, 10);
12723 if (!((gul == eul) && (errno == een)))
12724 bad++;
12725}
12726int main() {
12727 check(" 1", 1L, 0);
12728 check(" 0", 0L, 0);
12729EOCP
12730 case "$longsize" in
12731 8)
12732 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12733 check("18446744073709551615", 18446744073709551615UL, 0);
12734 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12735#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12736 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12737 check("-18446744073709551614", 2, 0);
12738 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12739 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12740 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12741#endif
d0e6d399
NC
12742EOCP
12743 ;;
12744 4)
12745 $cat >>try.c <<'EOCP'
12746 check("4294967295", 4294967295UL, 0);
12747 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12748#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12749 check("-1", 4294967295UL, 0);
12750 check("-4294967294", 2, 0);
12751 check("-4294967295", 1, 0);
12752 check("-4294967296", 4294967295UL, ERANGE);
12753 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12754#endif
d0e6d399
NC
12755EOCP
12756 ;;
12757 *)
12758: Should we write these tests to be more portable by sprintf-ing
12759: ~0 and then manipulating that char string as input for strtol?
12760 ;;
12761 esac
12762 $cat >>try.c <<'EOCP'
12763 if (!bad)
12764 printf("ok\n");
12765 return 0;
12766}
12767EOCP
12768 set try
12769 if eval $compile; then
5440bc8e 12770 case "`$run ./try`" in
d0e6d399
NC
12771 ok) echo "Your strtoul() seems to be working okay." ;;
12772 *) cat <<EOM >&4
12773Your strtoul() doesn't seem to be working okay.
12774EOM
12775 d_strtoul="$undef"
12776 ;;
12777 esac
12778 fi
12779 ;;
12780esac
12781
b4eb6b3d
JH
12782: see if strtoull exists
12783set strtoull d_strtoull
12784eval $inlibc
12785
12786case "$d_longlong-$d_strtoull" in
12787"$define-$define")
12788 $cat <<EOM
12789Checking whether your strtoull() works okay...
12790EOM
12791 $cat >try.c <<'EOCP'
12792#include <errno.h>
12793#ifdef __hpux
12794#define strtoull __strtoull
12795#endif
12796#include <stdio.h>
12797extern unsigned long long int strtoull(char *s, char **, int);
12798static int bad = 0;
12799int check(char *s, long long eull, int een) {
12800 long long gull;
12801 errno = 0;
12802 gull = strtoull(s, 0, 10);
12803 if (!((gull == eull) && (errno == een)))
12804 bad++;
12805}
12806int main() {
d0e6d399
NC
12807 check(" 1", 1LL, 0);
12808 check(" 0", 0LL, 0);
12809 check("18446744073709551615", 18446744073709551615ULL, 0);
12810 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12811#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
12812 check("-1", 18446744073709551615ULL, 0);
12813 check("-18446744073709551614", 2LL, 0);
12814 check("-18446744073709551615", 1LL, 0);
12815 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12816 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12817#endif
b4eb6b3d
JH
12818 if (!bad)
12819 printf("ok\n");
12820}
12821EOCP
12822 set try
12823 if eval $compile; then
5440bc8e 12824 case "`$run ./try`" in
b4eb6b3d
JH
12825 ok) echo "Your strtoull() seems to be working okay." ;;
12826 *) cat <<EOM >&4
12827Your strtoull() doesn't seem to be working okay.
12828EOM
12829 d_strtoull="$undef"
12830 ;;
12831 esac
12832 fi
12833 ;;
12834esac
12835
12836: see if strtouq exists
12837set strtouq d_strtouq
12838eval $inlibc
12839
d0e6d399
NC
12840case "$d_strtouq" in
12841"$define")
12842 $cat <<EOM
12843Checking whether your strtouq() works okay...
12844EOM
12845 $cat >try.c <<'EOCP'
12846#include <errno.h>
12847#include <stdio.h>
12848extern unsigned long long int strtouq(char *s, char **, int);
12849static int bad = 0;
12850void check(char *s, unsigned long long eull, int een) {
12851 unsigned long long gull;
12852 errno = 0;
12853 gull = strtouq(s, 0, 10);
12854 if (!((gull == eull) && (errno == een)))
12855 bad++;
12856}
12857int main() {
12858 check(" 1", 1LL, 0);
12859 check(" 0", 0LL, 0);
12860 check("18446744073709551615", 18446744073709551615ULL, 0);
12861 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12862#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
12863 check("-1", 18446744073709551615ULL, 0);
12864 check("-18446744073709551614", 2LL, 0);
12865 check("-18446744073709551615", 1LL, 0);
12866 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12867 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12868#endif
d0e6d399
NC
12869 if (!bad)
12870 printf("ok\n");
12871 return 0;
12872}
12873EOCP
12874 set try
12875 if eval $compile; then
5440bc8e 12876 case "`$run ./try`" in
d0e6d399
NC
12877 ok) echo "Your strtouq() seems to be working okay." ;;
12878 *) cat <<EOM >&4
12879Your strtouq() doesn't seem to be working okay.
12880EOM
12881 d_strtouq="$undef"
12882 ;;
12883 esac
12884 fi
12885 ;;
12886esac
12887
b4eb6b3d
JH
12888: see if strxfrm exists
12889set strxfrm d_strxfrm
12890eval $inlibc
12891
12892: see if symlink exists
12893set symlink d_symlink
12894eval $inlibc
12895
12896: see if syscall exists
12897set syscall d_syscall
12898eval $inlibc
12899
2ef53570
JH
12900: see if prototype for syscall is available
12901echo " "
12902set d_syscallproto syscall $i_unistd unistd.h
12903eval $hasproto
12904
b4eb6b3d
JH
12905: see if sysconf exists
12906set sysconf d_sysconf
12907eval $inlibc
12908
12909: see if system exists
12910set system d_system
12911eval $inlibc
12912
12913: see if tcgetpgrp exists
12914set tcgetpgrp d_tcgetpgrp
12915eval $inlibc
12916
12917: see if tcsetpgrp exists
12918set tcsetpgrp d_tcsetpgrp
12919eval $inlibc
12920
12921: see if prototype for telldir is available
12922echo " "
12923set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12924eval $hasproto
12925
12926: see if this is a sys/times.h system
12927set sys/times.h i_systimes
12928eval $inhdr
12929
12930: see if times exists
12931echo " "
12932if set times val -f d_times; eval $csym; $val; then
12933 echo 'times() found.' >&4
12934 d_times="$define"
12935 inc=''
12936 case "$i_systimes" in
12937 "$define") inc='sys/times.h';;
12938 esac
12939 rp="What is the type returned by times() on this system?"
12940 set clock_t clocktype long stdio.h sys/types.h $inc
12941 eval $typedef_ask
12942else
12943 echo 'times() NOT found, hope that will do.' >&4
12944 d_times="$undef"
12945 clocktype='int'
12946fi
12947
12948: see if truncate exists
12949set truncate d_truncate
12950eval $inlibc
12951
12952: see if tzname[] exists
12953echo " "
12954if set tzname val -a d_tzname; eval $csym; $val; then
12955 val="$define"
12956 echo 'tzname[] found.' >&4
12957else
12958 val="$undef"
12959 echo 'tzname[] NOT found.' >&4
12960fi
12961set d_tzname
12962eval $setvar
12963
4e0554ec
JH
12964case "$osname" in
12965next|rhapsody|darwin) multiarch="$define" ;;
12966esac
12967case "$multiarch" in
12968''|[nN]*) multiarch="$undef" ;;
12969esac
12970
12971: check for ordering of bytes in a long
12972echo " "
5440bc8e 12973case "$usecrosscompile$multiarch" in
4e0554ec
JH
12974*$define*)
12975 $cat <<EOM
12976You seem to be either cross-compiling or doing a multiarchitecture build,
12977skipping the byteorder check.
12978
12979EOM
5440bc8e 12980 byteorder='ffff'
4e0554ec
JH
12981 ;;
12982*)
12983 case "$byteorder" in
12984 '')
12985 $cat <<'EOM'
12986In the following, larger digits indicate more significance. A big-endian
12987machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12988little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12989machines may have weird orders like 3412. A Cray will report 87654321,
12990an Alpha will report 12345678. If the test program works the default is
12991probably right.
12992I'm now running the test program...
12993EOM
12994 $cat >try.c <<'EOCP'
12995#include <stdio.h>
12996int main()
12997{
12998 int i;
12999 union {
13000 unsigned long l;
13001 char c[sizeof(long)];
13002 } u;
13003
13004 if (sizeof(long) > 4)
13005 u.l = (0x08070605L << 32) | 0x04030201L;
13006 else
13007 u.l = 0x04030201L;
13008 for (i = 0; i < sizeof(long); i++)
13009 printf("%c", u.c[i]+'0');
13010 printf("\n");
13011 exit(0);
13012}
13013EOCP
13014 xxx_prompt=y
13015 set try
13016 if eval $compile && ./try > /dev/null; then
5440bc8e 13017 dflt=`$run ./try`
4e0554ec
JH
13018 case "$dflt" in
13019 [1-4][1-4][1-4][1-4]|12345678|87654321)
13020 echo "(The test program ran ok.)"
13021 echo "byteorder=$dflt"
13022 xxx_prompt=n
13023 ;;
13024 ????|????????) echo "(The test program ran ok.)" ;;
13025 *) echo "(The test program didn't run right for some reason.)" ;;
13026 esac
13027 else
13028 dflt='4321'
13029 cat <<'EOM'
13030(I can't seem to compile the test program. Guessing big-endian...)
13031EOM
13032 fi
13033 case "$xxx_prompt" in
13034 y)
13035 rp="What is the order of bytes in a long?"
13036 . ./myread
13037 byteorder="$ans"
13038 ;;
13039 *) byteorder=$dflt
13040 ;;
13041 esac
13042 ;;
13043 esac
13044 $rm -f try.c try
13045 ;;
13046esac
13047
13048
13049$cat <<EOM
13050
13051Checking to see whether you can access character data unalignedly...
13052EOM
13053$cat >try.c <<EOCP
13054#include <stdio.h>
13055#define U32 $u32type
13056#define BYTEORDER $byteorder
13057int main() {
13058#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13059 U8 buf[] = "\0\0\0\1\0\0\0\0";
13060 U32 *up;
13061 int i;
13062
13063 if (sizeof(U32) != 4) {
13064 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13065 exit(1);
13066 }
13067
13068 fflush(stdout);
13069
13070 for (i = 0; i < 4; i++) {
13071 up = (U32*)(buf + i);
13072 if (! ((*up == 1 << (8*i)) || /* big-endian */
13073 (*up == 1 << (8*(3-i))) /* little-endian */
13074 )
13075 )
13076 {
13077 printf("read failed (%x)\n", *up);
13078 exit(2);
13079 }
13080 }
13081
13082 /* write test */
13083 for (i = 0; i < 4; i++) {
13084 up = (U32*)(buf + i);
13085 *up = 0xBeef;
13086 if (*up != 0xBeef) {
13087 printf("write failed (%x)\n", *up);
13088 exit(3);
13089 }
13090 }
13091
13092 exit(0);
13093#else
13094 printf("1\n");
13095 exit(1);
13096#endif
13097 return 0;
13098}
13099EOCP
13100set try
13101if eval $compile_ok; then
5440bc8e
JH
13102 echo "(Testing for character data alignment may dump core.)" >&4
13103 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13104 case "$?" in
13105 0) cat >&4 <<EOM
13106You can access character data pretty unalignedly.
13107EOM
13108 d_u32align="$undef"
13109 ;;
13110 *) cat >&4 <<EOM
13111It seems that you must access character data in an aligned manner.
13112EOM
13113 d_u32align="$define"
13114 ;;
13115 esac
13116 $rm -f core core.try.* try.core
13117else
13118 rp='Can you access character data at unaligned addresses?'
13119 dflt='n'
13120 . ./myread
13121 case "$ans" in
13122 [yY]*) d_u32align="$undef" ;;
13123 *) d_u32align="$define" ;;
13124 esac
13125fi
13126
13127: see if ualarm exists
13128set ualarm d_ualarm
13129eval $inlibc
13130
b4eb6b3d
JH
13131: see if umask exists
13132set umask d_umask
13133eval $inlibc
13134
4e0554ec
JH
13135: see if usleep exists
13136set usleep d_usleep
13137eval $inlibc
13138
2ef53570
JH
13139: see if prototype for usleep is available
13140echo " "
13141set d_usleepproto usleep $i_unistd unistd.h
13142eval $hasproto
13143
b4eb6b3d
JH
13144: see if ustat exists
13145set ustat d_ustat
13146eval $inlibc
13147
13148: backward compatibility for d_hvfork
13149if test X$d_hvfork != X; then
13150 d_vfork="$d_hvfork"
13151 d_hvfork=''
13152fi
13153: see if there is a vfork
13154val=''
13155set vfork val
13156eval $inlibc
13157
13158: Ok, but do we want to use it. vfork is reportedly unreliable in
13159: perl on Solaris 2.x, and probably elsewhere.
13160case "$val" in
13161$define)
13162 echo " "
13163 case "$usevfork" in
13164 false) dflt='n';;
13165 *) dflt='y';;
13166 esac
13167 cat <<'EOM'
13168
13169Perl can only use a vfork() that doesn't suffer from strict
13170restrictions on calling functions or modifying global data in
13171the child. For example, glibc-2.1 contains such a vfork()
13172that is unsuitable. If your system provides a proper fork()
13173call, chances are that you do NOT want perl to use vfork().
13174
13175EOM
13176 rp="Do you still want to use vfork()?"
13177 . ./myread
13178 case "$ans" in
13179 y|Y) ;;
13180 *)
13181 echo "Ok, we won't use vfork()."
13182 val="$undef"
13183 ;;
13184 esac
13185 ;;
13186esac
13187set d_vfork
13188eval $setvar
13189case "$d_vfork" in
13190$define) usevfork='true';;
13191*) usevfork='false';;
13192esac
13193
13194: see if this is an sysdir system
13195set sys/dir.h i_sysdir
13196eval $inhdr
13197
13198: see if this is an sysndir system
13199set sys/ndir.h i_sysndir
13200eval $inhdr
13201
13202: see if closedir exists
13203set closedir d_closedir
13204eval $inlibc
13205
13206case "$d_closedir" in
13207"$define")
13208 echo " "
13209 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13210 cat > try.c <<EOM
b4eb6b3d
JH
13211#$i_dirent I_DIRENT /**/
13212#$i_sysdir I_SYS_DIR /**/
13213#$i_sysndir I_SYS_NDIR /**/
13214#$i_systypes I_SYS_TYPES /**/
13215
13216#if defined(I_SYS_TYPES)
13217#include <sys/types.h>
13218#endif
13219#if defined(I_DIRENT)
13220#include <dirent.h>
13221#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13222#include <sys/dir.h>
13223#endif
13224#else
13225#ifdef I_SYS_NDIR
13226#include <sys/ndir.h>
13227#else
13228#ifdef I_SYS_DIR
13229#ifdef hp9000s500
13230#include <ndir.h> /* may be wrong in the future */
13231#else
13232#include <sys/dir.h>
13233#endif
13234#endif
13235#endif
13236#endif
13237int main() { return closedir(opendir(".")); }
13238EOM
5440bc8e 13239 set try
b4eb6b3d 13240 if eval $compile_ok; then
5440bc8e 13241 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13242 echo "Yes, it does."
13243 val="$undef"
13244 else
13245 echo "No, it doesn't."
13246 val="$define"
13247 fi
13248 else
13249 echo "(I can't seem to compile the test program--assuming it doesn't)"
13250 val="$define"
13251 fi
13252 ;;
13253*)
13254 val="$undef";
13255 ;;
13256esac
13257set d_void_closedir
13258eval $setvar
5440bc8e 13259$rm -f try try.*
b4eb6b3d
JH
13260: see if there is a wait4
13261set wait4 d_wait4
13262eval $inlibc
13263
13264: see if waitpid exists
13265set waitpid d_waitpid
13266eval $inlibc
13267
13268: see if wcstombs exists
13269set wcstombs d_wcstombs
13270eval $inlibc
13271
13272: see if wctomb exists
13273set wctomb d_wctomb
13274eval $inlibc
13275
4e0554ec
JH
13276: see if writev exists
13277set writev d_writev
13278eval $inlibc
13279
b4eb6b3d
JH
13280: preserve RCS keywords in files with variable substitution, grrr
13281Date='$Date'
13282Id='$Id'
13283Log='$Log'
13284RCSfile='$RCSfile'
13285Revision='$Revision'
13286
b4eb6b3d
JH
13287: check for alignment requirements
13288echo " "
5440bc8e 13289case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13290*$define*)
13291 $cat <<EOM
13292You seem to be either cross-compiling or doing a multiarchitecture build,
13293skipping the memory alignment check.
13294
13295EOM
13296 case "$alignbytes" in
13297 '') alignbytes=8 ;;
13298 esac
13299 ;;
13300*)
13301 case "$alignbytes" in
13302 '') echo "Checking alignment constraints..." >&4
13303 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13304 $cat >try.c <<'EOCP'
13305typedef long double NV;
13306EOCP
13307 else
13308 $cat >try.c <<'EOCP'
13309typedef double NV;
13310EOCP
13311 fi
13312 $cat >>try.c <<'EOCP'
13313#include <stdio.h>
13314struct foobar {
13315 char foo;
13316 NV bar;
13317} try_algn;
13318int main()
13319{
13320 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13321 return(0);
13322}
13323EOCP
13324 set try
13325 if eval $compile_ok; then
5440bc8e 13326 dflt=`$run ./try`
b4eb6b3d
JH
13327 else
13328 dflt='8'
13329 echo "(I can't seem to compile the test program...)"
13330 fi
13331 ;;
13332 *) dflt="$alignbytes"
13333 ;;
13334 esac
13335 rp="Doubles must be aligned on a how-many-byte boundary?"
13336 . ./myread
13337 alignbytes="$ans"
13338 $rm -f try.c try
13339 ;;
13340esac
13341
13342
13343: set the base revision
13344baserev=5.0
13345
b4eb6b3d
JH
13346: how do we catenate cpp tokens here?
13347echo " "
13348echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13349$cat >cpp_stuff.c <<'EOCP'
13350#define RCAT(a,b)a/**/b
13351#define ACAT(a,b)a ## b
13352RCAT(Rei,ser)
13353ACAT(Cir,cus)
13354EOCP
13355$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13356if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13357 echo "Oh! Smells like ANSI's been here." >&4
13358 echo "We can catify or stringify, separately or together!"
13359 cpp_stuff=42
13360elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13361 echo "Ah, yes! The good old days!" >&4
13362 echo "However, in the good old days we don't know how to stringify and"
13363 echo "catify at the same time."
13364 cpp_stuff=1
13365else
13366 $cat >&4 <<EOM
13367Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13368to have to edit the values of CAT[2-5] in config.h...
13369EOM
13370 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13371fi
13372$rm -f cpp_stuff.*
13373
13374: see if this is a db.h system
13375set db.h i_db
13376eval $inhdr
13377
13378case "$i_db" in
13379$define)
13380 : Check db version.
13381 echo " "
13382 echo "Checking Berkeley DB version ..." >&4
13383 $cat >try.c <<EOCP
13384#$d_const HASCONST
13385#ifndef HASCONST
13386#define const
13387#endif
13388#include <sys/types.h>
13389#include <stdio.h>
13390#include <db.h>
640374d0 13391int main(int argc, char *argv[])
b4eb6b3d
JH
13392{
13393#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13394 int Major, Minor, Patch ;
13395 unsigned long Version ;
13396 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13397 if (argc == 2) {
13398 printf("%d %d %d %d %d %d\n",
13399 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13400 Major, Minor, Patch);
13401 exit(0);
13402 }
13403 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13404
13405 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13406 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13407 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13408 Major, Minor, Patch) ;
13409
13410 /* check that db.h & libdb are compatible */
13411 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13412 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13413 exit(3);
13414 }
13415
640374d0 13416 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13417
13418 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13419 + DB_VERSION_PATCH ;
13420
13421 /* needs to be >= 2.3.4 */
13422 if (Version < 2003004) {
13423 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13424 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13425 exit(2);
13426 }
13427
13428 exit(0);
13429#else
13430#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13431 if (argc == 2) {
13432 printf("1 0 0\n");
13433 exit(0);
13434 }
13435 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13436 exit(0); /* DB version < 2: the coast is clear. */
13437#else
13438 exit(1); /* <db.h> not Berkeley DB? */
13439#endif
13440#endif
13441}
13442EOCP
13443 set try
5440bc8e 13444 if eval $compile_ok && $run ./try; then
b4eb6b3d 13445 echo 'Looks OK.' >&4
5440bc8e 13446 set `$run ./try 1`
640374d0
JH
13447 db_version_major=$1
13448 db_version_minor=$2
13449 db_version_patch=$3
b4eb6b3d
JH
13450 else
13451 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13452 i_db=$undef
13453 case " $libs " in
13454 *"-ldb "*)
13455 : Remove db from list of libraries to use
13456 echo "Removing unusable -ldb from library list" >&4
13457 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13458 shift
13459 libs="$*"
13460 echo "libs = $libs" >&4
13461 ;;
13462 esac
13463 fi
13464 $rm -f try.*
13465 ;;
13466esac
13467
13468case "$i_db" in
13469define)
13470 : Check the return type needed for hash
13471 echo " "
13472 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13473 $cat >try.c <<EOCP
13474#$d_const HASCONST
13475#ifndef HASCONST
13476#define const
13477#endif
13478#include <sys/types.h>
13479#include <db.h>
13480
13481#ifndef DB_VERSION_MAJOR
13482u_int32_t hash_cb (ptr, size)
13483const void *ptr;
13484size_t size;
13485{
13486}
13487HASHINFO info;
13488int main()
13489{
13490 info.hash = hash_cb;
13491}
13492#endif
13493EOCP
13494 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13495 if $contains warning try.out >>/dev/null 2>&1 ; then
13496 db_hashtype='int'
13497 else
13498 db_hashtype='u_int32_t'
13499 fi
13500 else
13501 : XXX Maybe we should just give up here.
13502 db_hashtype=u_int32_t
13503 $cat try.out >&4
13504 echo "Help: I can't seem to compile the db test program." >&4
13505 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13506 fi
13507 $rm -f try.*
13508 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13509 ;;
13510*) db_hashtype=u_int32_t
13511 ;;
13512esac
13513case "$i_db" in
13514define)
13515 : Check the return type needed for prefix
13516 echo " "
13517 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13518 cat >try.c <<EOCP
13519#$d_const HASCONST
13520#ifndef HASCONST
13521#define const
13522#endif
13523#include <sys/types.h>
13524#include <db.h>
13525
13526#ifndef DB_VERSION_MAJOR
13527size_t prefix_cb (key1, key2)
13528const DBT *key1;
13529const DBT *key2;
13530{
13531}
13532BTREEINFO info;
13533int main()
13534{
13535 info.prefix = prefix_cb;
13536}
13537#endif
13538EOCP
13539 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13540 if $contains warning try.out >>/dev/null 2>&1 ; then
13541 db_prefixtype='int'
13542 else
13543 db_prefixtype='size_t'
13544 fi
13545 else
13546 db_prefixtype='size_t'
13547 : XXX Maybe we should just give up here.
13548 $cat try.out >&4
13549 echo "Help: I can't seem to compile the db test program." >&4
13550 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13551 fi
13552 $rm -f try.*
13553 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13554 ;;
13555*) db_prefixtype='size_t'
13556 ;;
13557esac
13558
b4eb6b3d
JH
13559
13560: How can we generate normalized random numbers ?
13561echo " "
13562echo "Looking for a random number function..." >&4
13563case "$randfunc" in
13564'')
13565 if set drand48 val -f; eval $csym; $val; then
13566 dflt="drand48"
13567 echo "Good, found drand48()." >&4
13568 elif set random val -f; eval $csym; $val; then
13569 dflt="random"
13570 echo "OK, found random()." >&4
13571 else
13572 dflt="rand"
13573 echo "Yick, looks like I have to use rand()." >&4
13574 fi
13575 echo " "
13576 ;;
13577*)
13578 dflt="$randfunc"
13579 ;;
13580esac
13581cont=true
13582
13583case "$ccflags" in
13584*-Dmy_rand=*|*-Dmy_srand=*)
13585 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13586 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13587 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13588 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13589 ;;
13590esac
13591
13592while $test "$cont"; do
13593 rp="Use which function to generate random numbers?"
13594 . ./myread
13595 if $test "$ans" = "$dflt"; then
13596 : null
13597 else
13598 randbits=''
13599 fi
13600 randfunc="$ans"
13601 if set $ans val -f; eval $csym; $val; then
13602 cont=''
13603 else
13604 dflt=y
13605 rp="I cannot find function $ans. Use that name anyway?"
13606 . ./myread
13607 dflt=rand
13608 case "$ans" in
13609 [yY]*) cont='';;
13610 esac
13611 fi
13612 case "$cont" in
13613 '')
13614 case "$randfunc" in
13615 drand48)
13616 drand01="drand48()"
13617 seedfunc="srand48"
13618 randbits=48
13619 randseedtype=long
13620 ;;
13621 rand|random)
13622 case "$randbits" in
13623 '')
13624echo "Checking to see how many bits your $randfunc() function produces..." >&4
13625 $cat >try.c <<EOCP
13626#$i_unistd I_UNISTD
13627#$i_stdlib I_STDLIB
13628#include <stdio.h>
13629#ifdef I_UNISTD
13630# include <unistd.h>
13631#endif
13632#ifdef I_STDLIB
13633# include <stdlib.h>
13634#endif
13635int main()
13636{
13637 register int i;
13638 register unsigned long tmp;
13639 register unsigned long max = 0L;
13640
13641 for (i = 1000; i; i--) {
13642 tmp = (unsigned long) $randfunc();
13643 if (tmp > max) max = tmp;
13644 }
13645 for (i = 0; max; i++)
13646 max /= 2;
13647 printf("%d\n",i);
13648}
13649EOCP
13650 set try
13651 if eval $compile_ok; then
13652 dflt=`try`
13653 else
13654 dflt='?'
13655 echo "(I can't seem to compile the test program...)"
13656 fi
13657 ;;
13658 *)
13659 dflt="$randbits"
13660 ;;
13661 esac
13662 rp="How many bits does your $randfunc() function produce?"
13663 . ./myread
13664 randbits="$ans"
13665 $rm -f try.c try
13666 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13667 seedfunc="s$randfunc"
13668 randseedtype=unsigned
13669 ;;
13670 *)
13671 dflt="31"
13672 rp="How many bits does your $randfunc() function produce?"
13673 . ./myread
13674 randbits="$ans"
13675 seedfunc="s$randfunc"
13676 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13677 if set $seedfunc val -f; eval $csym; $val; then
13678 echo "(Using $seedfunc() to seed random generator)"
13679 else
13680 echo "(Warning: no $seedfunc() to seed random generator)"
13681 seedfunc=rand
13682 fi
13683 randseedtype=unsigned
13684 ;;
13685 esac
13686 ;;
13687 esac
13688done
13689
13690echo " "
13691echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 13692$cat >try.c <<'EOM'
b4eb6b3d
JH
13693int main()
13694{
13695 if ('M'==0xd4) return 0;
13696 return 1;
13697}
13698EOM
13699
13700val=$undef
5440bc8e 13701set try
b4eb6b3d 13702if eval $compile_ok; then
5440bc8e 13703 if $run ./try; then
b4eb6b3d
JH
13704 echo "You seem to speak EBCDIC." >&4
13705 val="$define"
13706 else
5440bc8e 13707 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
13708 fi
13709else
13710 echo "I'm unable to compile the test program." >&4
13711 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13712fi
5440bc8e 13713$rm -f try try.*
b4eb6b3d
JH
13714set ebcdic
13715eval $setvar
13716
13717echo " "
13718$cat >&4 <<EOM
13719Checking how to flush all pending stdio output...
13720EOM
13721# I only know how to find the first 32 possibly open files on SunOS.
13722# See also hints/sunos_4_1.sh and util.c --AD
13723case "$osname" in
13724sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13725esac
13726$cat >>try.c <<EOCP
13727#include <stdio.h>
13728#$i_unistd I_UNISTD
13729#ifdef I_UNISTD
13730# include <unistd.h>
13731#endif
13732#$d_sysconf HAS_SYSCONF
13733#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13734#ifdef HAS_STDIO_STREAM_ARRAY
13735# define STDIO_STREAM_ARRAY $stdio_stream_array
13736#endif
13737int main() {
5440bc8e
JH
13738 FILE* p;
13739 unlink("try.out");
13740 p = fopen("try.out", "w");
b4eb6b3d
JH
13741#ifdef TRY_FPUTC
13742 fputc('x', p);
13743#else
13744# ifdef TRY_FPRINTF
13745 fprintf(p, "x");
13746# endif
13747#endif
13748#ifdef TRY_FFLUSH_NULL
13749 fflush(NULL);
13750#endif
13751#ifdef TRY_FFLUSH_ALL
13752 {
13753 long open_max = -1;
13754# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13755 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13756# else
13757# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13758 open_max = sysconf(_SC_OPEN_MAX);
13759# else
13760# ifdef FOPEN_MAX
13761 open_max = FOPEN_MAX;
13762# else
13763# ifdef OPEN_MAX
13764 open_max = OPEN_MAX;
13765# else
13766# ifdef _NFILE
13767 open_max = _NFILE;
13768# endif
13769# endif
13770# endif
13771# endif
13772# endif
13773# ifdef HAS_STDIO_STREAM_ARRAY
13774 if (open_max > 0) {
13775 long i;
13776 for (i = 0; i < open_max; i++)
13777 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13778 STDIO_STREAM_ARRAY[i]._file < open_max &&
13779 STDIO_STREAM_ARRAY[i]._flag)
13780 fflush(&STDIO_STREAM_ARRAY[i]);
13781 }
13782 }
13783# endif
13784#endif
13785 _exit(42);
13786}
13787EOCP
13788: first we have to find out how _not_ to flush
5440bc8e 13789$to try.c
b4eb6b3d
JH
13790if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13791 output=''
13792 set try -DTRY_FPUTC
13793 if eval $compile; then
5440bc8e 13794 $run ./try 2>/dev/null
b4eb6b3d 13795 $rm -f try.out
5440bc8e 13796 $from try.out
b4eb6b3d
JH
13797 if $test ! -s try.out -a "X$?" = X42; then
13798 output=-DTRY_FPUTC
13799 fi
13800 fi
13801 case "$output" in
13802 '')
13803 set try -DTRY_FPRINTF
b4eb6b3d 13804 if eval $compile; then
5440bc8e 13805 $run ./try 2>/dev/null
b4eb6b3d 13806 $rm -f try.out
5440bc8e 13807 $from try.out
b4eb6b3d
JH
13808 if $test ! -s try.out -a "X$?" = X42; then
13809 output=-DTRY_FPRINTF
13810 fi
13811 fi
13812 ;;
13813 esac
13814fi
13815: check for fflush NULL behaviour
13816case "$fflushNULL" in
13817'') set try -DTRY_FFLUSH_NULL $output
13818 if eval $compile; then
5440bc8e 13819 $run ./try 2>/dev/null
b4eb6b3d 13820 code="$?"
5440bc8e
JH
13821 $rm -f try.out
13822 $from try.out
b4eb6b3d
JH
13823 if $test -s try.out -a "X$code" = X42; then
13824 fflushNULL="`$cat try.out`"
13825 else
13826 if $test "X$code" != X42; then
13827 $cat >&4 <<EOM
13828(If this test failed, don't worry, we'll try another method shortly.)
13829EOM
13830 fi
13831 fi
13832 fi
13833 $rm -f core try.core core.try.*
13834 case "$fflushNULL" in
13835 x) $cat >&4 <<EOM
13836Your fflush(NULL) works okay for output streams.
13837Let's see if it clobbers input pipes...
13838EOM
13839# As of mid-March 2000 all versions of Solaris appear to have a stdio
13840# bug that improperly flushes the input end of pipes. So we avoid the
13841# autoflush on fork/system/exec support for now. :-(
13842$cat >tryp.c <<EOCP
13843#include <stdio.h>
13844int
13845main(int argc, char **argv)
13846{
13847 char buf[1024];
13848 int i;
13849 char *bp = buf;
13850 while (1) {
13851 while ((i = getc(stdin)) != -1
13852 && (*bp++ = i) != '\n'
13853 && bp < &buf[1024])
13854 /* DO NOTHING */ ;
13855 *bp = '\0';
13856 fprintf(stdout, "%s", buf);
13857 fflush(NULL);
13858 if (i == -1)
13859 return 0;
13860 bp = buf;
13861 }
13862}
13863EOCP
13864 fflushNULL="$define"
13865 set tryp
13866 if eval $compile; then
13867 $rm -f tryp.out
5440bc8e 13868 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
13869 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13870 $cat >&4 <<EOM
13871fflush(NULL) seems to behave okay with input streams.
13872EOM
13873 fflushNULL="$define"
13874 else
13875 $cat >&4 <<EOM
13876Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13877EOM
13878 fflushNULL="$undef"
13879 fi
13880 fi
13881 $rm -f core tryp.c tryp.core core.tryp.*
13882 ;;
13883 '') $cat >&4 <<EOM
13884Your fflush(NULL) isn't working (contrary to ANSI C).
13885EOM
13886 fflushNULL="$undef"
13887 ;;
13888 *) $cat >&4 <<EOM
13889Cannot figure out whether your fflush(NULL) works or not.
13890I'm assuming it doesn't (contrary to ANSI C).
13891EOM
13892 fflushNULL="$undef"
13893 ;;
13894 esac
13895 ;;
13896$define|true|[yY]*)
13897 fflushNULL="$define"
13898 ;;
13899*)
13900 fflushNULL="$undef"
13901 ;;
13902esac
13903: check explicit looping only if NULL did not work, and if the pipe
13904: bug does not show up on an explicit flush too
13905case "$fflushNULL" in
13906"$undef")
13907 $cat >tryp.c <<EOCP
13908#include <stdio.h>
13909int
13910main(int argc, char **argv)
13911{
13912 char buf[1024];
13913 int i;
13914 char *bp = buf;
13915 while (1) {
13916 while ((i = getc(stdin)) != -1
13917 && (*bp++ = i) != '\n'
13918 && bp < &buf[1024])
13919 /* DO NOTHING */ ;
13920 *bp = '\0';
13921 fprintf(stdout, "%s", buf);
13922 fflush(stdin);
13923 if (i == -1)
13924 return 0;
13925 bp = buf;
13926 }
13927}
13928EOCP
13929 set tryp
13930 if eval $compile; then
13931 $rm -f tryp.out
5440bc8e 13932 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
13933 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13934 $cat >&4 <<EOM
13935Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13936EOM
13937 : now check for fflushall behaviour
13938 case "$fflushall" in
13939 '') set try -DTRY_FFLUSH_ALL $output
13940 if eval $compile; then
13941 $cat >&4 <<EOM
13942(Now testing the other method--but note that this also may fail.)
13943EOM
13944 $rm -f try.out
5440bc8e 13945 $run ./try 2>/dev/null
b4eb6b3d
JH
13946 if $test -s try.out -a "X$?" = X42; then
13947 fflushall="`$cat try.out`"
13948 fi
13949 fi
13950 $rm -f core try.core core.try.*
13951 case "$fflushall" in
13952 x) $cat >&4 <<EOM
13953Whew. Flushing explicitly all the stdio streams works.
13954EOM
13955 fflushall="$define"
13956 ;;
13957 '') $cat >&4 <<EOM
13958Sigh. Flushing explicitly all the stdio streams doesn't work.
13959EOM
13960 fflushall="$undef"
13961 ;;
13962 *) $cat >&4 <<EOM
13963Cannot figure out whether flushing stdio streams explicitly works or not.
13964I'm assuming it doesn't.
13965EOM
13966 fflushall="$undef"
13967 ;;
13968 esac
13969 ;;
13970 "$define"|true|[yY]*)
13971 fflushall="$define"
13972 ;;
13973 *)
13974 fflushall="$undef"
13975 ;;
13976 esac
13977 else
13978 $cat >&4 <<EOM
13979All is futile. Even fflush(stdin) clobbers input pipes!
13980EOM
13981 fflushall="$undef"
13982 fi
13983 else
13984 fflushall="$undef"
13985 fi
13986 $rm -f core tryp.c tryp.core core.tryp.*
13987 ;;
13988*) fflushall="$undef"
13989 ;;
13990esac
13991
13992case "$fflushNULL$fflushall" in
13993undefundef)
13994 $cat <<EOM
13995OK, I give up. I cannot figure out how to flush pending stdio output.
13996We won't be flushing handles at all before fork/exec/popen.
13997EOM
13998 ;;
13999esac
14000$rm -f try.* try$exe_ext
14001
14002: Store the full pathname to the ar program for use in the C program
14003: Respect a hint or command line value for full_ar.
14004case "$full_ar" in
14005'') full_ar=$ar ;;
14006esac
14007
14008: Store the full pathname to the sed program for use in the C program
14009full_sed=$sed
14010
14011: see what type gids are declared as in the kernel
14012echo " "
14013echo "Looking for the type for group ids returned by getgid()."
14014set gid_t gidtype xxx stdio.h sys/types.h
14015eval $typedef
14016case "$gidtype" in
14017xxx)
14018 xxx=`./findhdr sys/user.h`
14019 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14020 case $1 in
14021 unsigned) dflt="$1 $2" ;;
14022 *) dflt="$1" ;;
14023 esac
14024 ;;
14025*) dflt="$gidtype";;
14026esac
14027case "$gidtype" in
14028gid_t) echo "gid_t found." ;;
14029*) rp="What is the type for group ids returned by getgid()?"
14030 . ./myread
14031 gidtype="$ans"
14032 ;;
14033esac
14034
14035echo " "
14036case "$gidtype" in
14037*_t) zzz="$gidtype" ;;
14038*) zzz="gid" ;;
14039esac
14040echo "Checking the size of $zzz..." >&4
14041cat > try.c <<EOCP
14042#include <sys/types.h>
14043#include <stdio.h>
14044int main() {
14045 printf("%d\n", (int)sizeof($gidtype));
14046 exit(0);
14047}
14048EOCP
14049set try
14050if eval $compile_ok; then
5440bc8e 14051 yyy=`$run ./try`
b4eb6b3d
JH
14052 case "$yyy" in
14053 '') gidsize=4
14054 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14055 ;;
14056 *) gidsize=$yyy
14057 echo "Your $zzz is $gidsize bytes long."
14058 ;;
14059 esac
14060else
14061 gidsize=4
14062 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14063fi
14064
14065
14066echo " "
14067case "$gidtype" in
14068*_t) zzz="$gidtype" ;;
14069*) zzz="gid" ;;
14070esac
14071echo "Checking the sign of $zzz..." >&4
14072cat > try.c <<EOCP
14073#include <sys/types.h>
14074#include <stdio.h>
14075int main() {
14076 $gidtype foo = -1;
14077 if (foo < 0)
14078 printf("-1\n");
14079 else
14080 printf("1\n");
14081}
14082EOCP
14083set try
14084if eval $compile; then
5440bc8e 14085 yyy=`$run ./try`
b4eb6b3d
JH
14086 case "$yyy" in
14087 '') gidsign=1
14088 echo "(I can't execute the test program--guessing unsigned.)" >&4
14089 ;;
14090 *) gidsign=$yyy
14091 case "$gidsign" in
14092 1) echo "Your $zzz is unsigned." ;;
14093 -1) echo "Your $zzz is signed." ;;
14094 esac
14095 ;;
14096 esac
14097else
14098 gidsign=1
14099 echo "(I can't compile the test program--guessing unsigned.)" >&4
14100fi
14101
14102
14103echo " "
14104
14105if $test X"$quadtype" != X; then
14106
14107echo "Checking how to print 64-bit integers..." >&4
14108
14109if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14110 $cat >try.c <<'EOCP'
14111#include <sys/types.h>
14112#include <stdio.h>
14113int main() {
14114 int q = 12345678901;
14115 printf("%ld\n", q);
14116}
14117EOCP
14118 set try
14119 if eval $compile; then
5440bc8e 14120 yyy=`$run ./try`
b4eb6b3d
JH
14121 case "$yyy" in
14122 12345678901)
14123 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14124 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14125 echo "We will use %d."
14126 ;;
14127 esac
14128 fi
14129fi
14130
14131if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14132 $cat >try.c <<'EOCP'
14133#include <sys/types.h>
14134#include <stdio.h>
14135int main() {
14136 long q = 12345678901;
14137 printf("%ld\n", q);
14138}
14139EOCP
14140 set try
14141 if eval $compile; then
5440bc8e 14142 yyy=`$run ./try`
b4eb6b3d
JH
14143 case "$yyy" in
14144 12345678901)
14145 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14146 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14147 echo "We will use %ld."
14148 ;;
14149 esac
14150 fi
14151fi
14152
14153if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14154 $cat >try.c <<'EOCP'
14155#include <sys/types.h>
14156#include <inttypes.h>
14157#include <stdio.h>
14158int main() {
14159 int64_t q = 12345678901;
14160 printf("%" PRId64 "\n", q);
14161}
14162EOCP
14163 set try
14164 if eval $compile; then
5440bc8e 14165 yyy=`$run ./try`
b4eb6b3d
JH
14166 case "$yyy" in
14167 12345678901)
14168 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14169 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14170 echo "We will use the C9X style."
14171 ;;
14172 esac
14173 fi
14174fi
14175
2ef53570
JH
14176if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14177 $cat >try.c <<EOCP
b4eb6b3d
JH
14178#include <sys/types.h>
14179#include <stdio.h>
14180int main() {
2ef53570
JH
14181 $quadtype q = 12345678901;
14182 printf("%Ld\n", q);
b4eb6b3d
JH
14183}
14184EOCP
14185 set try
14186 if eval $compile; then
5440bc8e 14187 yyy=`$run ./try`
b4eb6b3d
JH
14188 case "$yyy" in
14189 12345678901)
2ef53570
JH
14190 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14191 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14192 echo "We will use %Ld."
b4eb6b3d
JH
14193 ;;
14194 esac
14195 fi
14196fi
14197
2ef53570
JH
14198if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14199 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14200#include <sys/types.h>
14201#include <stdio.h>
14202int main() {
2ef53570
JH
14203 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14204 printf("%lld\n", q);
b4eb6b3d
JH
14205}
14206EOCP
14207 set try
14208 if eval $compile; then
5440bc8e 14209 yyy=`$run ./try`
b4eb6b3d
JH
14210 case "$yyy" in
14211 12345678901)
2ef53570
JH
14212 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14213 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14214 echo "We will use the %lld style."
b4eb6b3d
JH
14215 ;;
14216 esac
14217 fi
14218fi
14219
14220if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14221 $cat >try.c <<EOCP
14222#include <sys/types.h>
14223#include <stdio.h>
14224int main() {
14225 $quadtype q = 12345678901;
14226 printf("%qd\n", q);
14227}
14228EOCP
14229 set try
14230 if eval $compile; then
5440bc8e 14231 yyy=`$run ./try`
b4eb6b3d
JH
14232 case "$yyy" in
14233 12345678901)
14234 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14235 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14236 echo "We will use %qd."
14237 ;;
14238 esac
14239 fi
14240fi
14241
14242if $test X"$sPRId64" = X; then
14243 echo "Cannot figure out how to print 64-bit integers." >&4
14244fi
14245
14246$rm -f try try.*
14247
14248fi
14249
14250case "$sPRId64" in
14251'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14252 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14253 ;;
14254*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14255 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14256 ;;
14257esac
14258
14259
14260echo " "
14261$echo "Checking the format strings to be used for Perl's internal types..." >&4
14262
14263if $test X"$ivsize" = X8; then
14264 ivdformat="$sPRId64"
14265 uvuformat="$sPRIu64"
14266 uvoformat="$sPRIo64"
14267 uvxformat="$sPRIx64"
14268 uvXUformat="$sPRIXU64"
14269else
14270 if $test X"$ivsize" = X"$longsize"; then
14271 ivdformat='"ld"'
14272 uvuformat='"lu"'
14273 uvoformat='"lo"'
14274 uvxformat='"lx"'
14275 uvXUformat='"lX"'
14276 else
14277 if $test X"$ivsize" = X"$intsize"; then
14278 ivdformat='"d"'
14279 uvuformat='"u"'
14280 uvoformat='"o"'
14281 uvxformat='"x"'
14282 uvXUformat='"X"'
14283 else
14284 : far out
14285 if $test X"$ivsize" = X"$shortsize"; then
14286 ivdformat='"hd"'
14287 uvuformat='"hu"'
14288 uvoformat='"ho"'
14289 uvxformat='"hx"'
14290 uvXUformat='"hX"'
14291 fi
14292 fi
14293 fi
14294fi
14295
14296if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14297 nveformat="$sPRIeldbl"
14298 nvfformat="$sPRIfldbl"
14299 nvgformat="$sPRIgldbl"
14300 nvEUformat="$sPRIEUldbl"
14301 nvFUformat="$sPRIFUldbl"
14302 nvGUformat="$sPRIGUldbl"
14303else
14304 nveformat='"e"'
14305 nvfformat='"f"'
14306 nvgformat='"g"'
14307 nvEUformat='"E"'
14308 nvFUformat='"F"'
14309 nvGUformat='"G"'
14310fi
14311
14312case "$ivdformat" in
14313'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14314 exit 1
14315 ;;
14316esac
14317
14318
14319echo " "
14320$echo "Checking the format string to be used for gids..." >&4
14321
14322case "$gidsign" in
14323-1) if $test X"$gidsize" = X"$ivsize"; then
14324 gidformat="$ivdformat"
14325 else
14326 if $test X"$gidsize" = X"$longsize"; then
14327 gidformat='"ld"'
14328 else
14329 if $test X"$gidsize" = X"$intsize"; then
14330 gidformat='"d"'
14331 else
14332 if $test X"$gidsize" = X"$shortsize"; then
14333 gidformat='"hd"'
14334 fi
14335 fi
14336 fi
14337 fi
14338 ;;
14339*) if $test X"$gidsize" = X"$uvsize"; then
14340 gidformat="$uvuformat"
14341 else
14342 if $test X"$gidsize" = X"$longsize"; then
14343 gidformat='"lu"'
14344 else
14345 if $test X"$gidsize" = X"$intsize"; then
14346 gidformat='"u"'
14347 else
14348 if $test X"$gidsize" = X"$shortsize"; then
14349 gidformat='"hu"'
14350 fi
14351 fi
14352 fi
14353 fi
14354 ;;
14355esac
14356
14357: see if getgroups exists
14358set getgroups d_getgrps
14359eval $inlibc
14360
14361: see if setgroups exists
14362set setgroups d_setgrps
14363eval $inlibc
14364
14365
14366: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14367echo " "
14368case "$d_getgrps$d_setgrps" in
14369*define*)
14370 case "$groupstype" in
14371 '') dflt="$gidtype" ;;
14372 *) dflt="$groupstype" ;;
14373 esac
14374 $cat <<EOM
14375What type of pointer is the second argument to getgroups() and setgroups()?
14376Usually this is the same as group ids, $gidtype, but not always.
14377
14378EOM
14379 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14380 . ./myread
14381 groupstype="$ans"
14382 ;;
14383*) groupstype="$gidtype";;
14384esac
14385
14386echo " "
14387echo "Checking if your $make program sets \$(MAKE)..." >&4
14388case "$make_set_make" in
14389'')
14390 $sed 's/^X //' > testmake.mak << 'EOF'
14391Xall:
14392X @echo 'maketemp="$(MAKE)"'
14393EOF
14394 case "`$make -f testmake.mak 2>/dev/null`" in
14395 *maketemp=*) make_set_make='#' ;;
14396 *) make_set_make="MAKE=$make" ;;
14397 esac
14398 $rm -f testmake.mak
14399 ;;
14400esac
14401case "$make_set_make" in
14402'#') echo "Yup, it does.";;
14403*) echo "Nope, it doesn't.";;
14404esac
14405
14406: see what type is used for mode_t
14407rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14408set mode_t modetype int stdio.h sys/types.h
14409eval $typedef_ask
14410
2cc61e15
DD
14411: see if stdarg is available
14412echo " "
14413if $test `./findhdr stdarg.h`; then
14414 echo "<stdarg.h> found." >&4
14415 valstd="$define"
14416else
14417 echo "<stdarg.h> NOT found." >&4
14418 valstd="$undef"
14419fi
14420
14421: see if varags is available
14422echo " "
14423if $test `./findhdr varargs.h`; then
14424 echo "<varargs.h> found." >&4
14425else
14426 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14427fi
14428
14429: set up the varargs testing programs
14430$cat > varargs.c <<EOP
14431#ifdef I_STDARG
14432#include <stdarg.h>
14433#endif
14434#ifdef I_VARARGS
14435#include <varargs.h>
14436#endif
14437
14438#ifdef I_STDARG
14439int f(char *p, ...)
14440#else
14441int f(va_alist)
14442va_dcl
14443#endif
14444{
14445 va_list ap;
14446#ifndef I_STDARG
14447 char *p;
14448#endif
14449#ifdef I_STDARG
14450 va_start(ap,p);
14451#else
14452 va_start(ap);
14453 p = va_arg(ap, char *);
14454#endif
14455 va_end(ap);
14456}
14457EOP
14458$cat > varargs <<EOP
14459$startsh
14460if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14461 echo "true"
14462else
14463 echo "false"
14464fi
14465$rm -f varargs$_o
14466EOP
14467chmod +x varargs
14468
14469: now check which varargs header should be included
14470echo " "
14471i_varhdr=''
14472case "$valstd" in
14473"$define")
14474 if `./varargs I_STDARG`; then
14475 val='stdarg.h'
14476 elif `./varargs I_VARARGS`; then
14477 val='varargs.h'
14478 fi
14479 ;;
14480*)
14481 if `./varargs I_VARARGS`; then
14482 val='varargs.h'
14483 fi
14484 ;;
14485esac
14486case "$val" in
14487'')
14488echo "I could not find the definition for va_dcl... You have problems..." >&4
14489 val="$undef"; set i_stdarg; eval $setvar
14490 val="$undef"; set i_varargs; eval $setvar
14491 ;;
14492*)
14493 set i_varhdr
14494 eval $setvar
14495 case "$i_varhdr" in
14496 stdarg.h)
14497 val="$define"; set i_stdarg; eval $setvar
14498 val="$undef"; set i_varargs; eval $setvar
14499 ;;
14500 varargs.h)
14501 val="$undef"; set i_stdarg; eval $setvar
14502 val="$define"; set i_varargs; eval $setvar
14503 ;;
14504 esac
14505 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14506esac
14507$rm -f varargs*
14508
14509: see if we need va_copy
14510echo " "
14511case "$i_stdarg" in
14512"$define")
14513 $cat >try.c <<EOCP
14514#include <stdarg.h>
14515#include <stdio.h>
85c8a686
DD
14516#$i_stdlib I_STDLIB
14517#ifdef I_STDLIB
14518#include <stdlib.h>
14519#endif
14520#include <signal.h>
2cc61e15
DD
14521
14522int
14523ivfprintf(FILE *f, const char *fmt, va_list *valp)
14524{
14525 return vfprintf(f, fmt, *valp);
14526}
14527
14528int
14529myvfprintf(FILE *f, const char *fmt, va_list val)
14530{
14531 return ivfprintf(f, fmt, &val);
14532}
14533
14534int
14535myprintf(char *fmt, ...)
14536{
14537 va_list val;
14538 va_start(val, fmt);
14539 return myvfprintf(stdout, fmt, val);
14540}
14541
14542int
14543main(int ac, char **av)
14544{
85c8a686
DD
14545 signal(SIGSEGV, exit);
14546
2cc61e15
DD
14547 myprintf("%s%cs all right, then\n", "that", '\'');
14548 exit(0);
14549}
14550EOCP
14551 set try
5440bc8e
JH
14552 if eval $compile && $run ./try 2>&1 >/dev/null; then
14553 case "`$run ./try`" in
2cc61e15
DD
14554 "that's all right, then")
14555 okay=yes
14556 ;;
14557 esac
14558 fi
14559 case "$okay" in
14560 yes) echo "It seems that you don't need va_copy()." >&4
14561 need_va_copy="$undef"
14562 ;;
14563 *) echo "It seems that va_copy() or similar will be needed." >&4
14564 need_va_copy="$define"
14565 ;;
14566 esac
14567 $rm -f try.* core core.* *.core *.core.*
14568 ;;
14569*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14570 ;;
14571esac
14572
b4eb6b3d
JH
14573: define a fucntion to check prototypes
14574$cat > protochk <<EOSH
14575$startsh
14576cc="$cc"
14577optimize="$optimize"
14578ccflags="$ccflags"
14579prototype="$prototype"
14580define="$define"
14581rm=$rm
14582EOSH
14583
14584$cat >> protochk <<'EOSH'
14585
14586$rm -f try.c
14587foo="$1"
14588shift
14589while test $# -ge 2; do
14590 case "$1" in
14591 $define) echo "#include <$2>" >> try.c ;;
14592 literal) echo "$2" >> try.c ;;
14593 esac
14594 shift 2
14595done
14596test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14597cat >> try.c <<'EOCP'
14598#ifdef CAN_PROTOTYPE
14599#define _(args) args
14600#else
14601#define _(args) ()
14602#endif
14603EOCP
14604echo "$foo" >> try.c
14605echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14606$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14607status=$?
14608$rm -f try.[co]
14609exit $status
14610EOSH
14611chmod +x protochk
14612$eunicefix protochk
14613
14614: see what type is used for size_t
14615rp="What is the type used for the length parameter for string functions?"
14616set size_t sizetype 'unsigned int' stdio.h sys/types.h
14617eval $typedef_ask
14618
14619: check for type of arguments to gethostbyaddr.
14620if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14621 case "$d_gethbyaddr" in
14622 $define)
14623 $cat <<EOM
14624
14625Checking to see what type of arguments are accepted by gethostbyaddr().
14626EOM
14627 hdrs="$define sys/types.h
14628 $d_socket sys/socket.h
14629 $i_niin netinet/in.h
14630 $i_netdb netdb.h
14631 $i_unistd unistd.h"
14632 : The first arg can 'char *' or 'void *'
14633 : The second arg is some of integral type
14634 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14635 for yyy in size_t long int; do
14636 case "$netdb_host_type" in
14637 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14638 if ./protochk "$try" $hdrs; then
14639 echo "Your system accepts $xxx for the first arg."
14640 echo "...and $yyy for the second arg."
14641 netdb_host_type="$xxx"
14642 netdb_hlen_type="$yyy"
14643 fi
14644 ;;
14645 esac
14646 done
14647 done
14648 : In case none of those worked, prompt the user.
14649 case "$netdb_host_type" in
14650 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14651 dflt='char *'
14652 . ./myread
14653 netdb_host_type=$ans
14654 rp='What is the type for the 2nd argument to gethostbyaddr?'
14655 dflt="$sizetype"
14656 . ./myread
14657 netdb_hlen_type=$ans
14658 ;;
14659 esac
14660 ;;
14661 *) : no gethostbyaddr, so pick harmless defaults
14662 netdb_host_type='char *'
14663 netdb_hlen_type="$sizetype"
14664 ;;
14665 esac
14666 # Remove the "const" if needed. -- but then we'll have a
14667 # prototype clash!
14668 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14669fi
14670
14671: check for type of argument to gethostbyname.
14672if test "X$netdb_name_type" = X ; then
14673 case "$d_gethbyname" in
14674 $define)
14675 $cat <<EOM
14676
14677Checking to see what type of argument is accepted by gethostbyname().
14678EOM
14679 hdrs="$define sys/types.h
14680 $d_socket sys/socket.h
14681 $i_niin netinet/in.h
14682 $i_netdb netdb.h
14683 $i_unistd unistd.h"
14684 for xxx in "const char *" "char *"; do
14685 case "$netdb_name_type" in
14686 '') try="extern struct hostent *gethostbyname($xxx);"
14687 if ./protochk "$try" $hdrs; then
14688 echo "Your system accepts $xxx."
14689 netdb_name_type="$xxx"
14690 fi
14691 ;;
14692 esac
14693 done
14694 : In case none of those worked, prompt the user.
14695 case "$netdb_name_type" in
14696 '') rp='What is the type for the 1st argument to gethostbyname?'
14697 dflt='char *'
14698 . ./myread
14699 netdb_name_type=$ans
14700 ;;
14701 esac
14702 ;;
14703 *) : no gethostbyname, so pick harmless default
14704 netdb_name_type='char *'
14705 ;;
14706 esac
14707fi
14708
14709: check for type of 1st argument to getnetbyaddr.
14710if test "X$netdb_net_type" = X ; then
14711 case "$d_getnbyaddr" in
14712 $define)
14713 $cat <<EOM
14714
14715Checking to see what type of 1st argument is accepted by getnetbyaddr().
14716EOM
14717 hdrs="$define sys/types.h
14718 $d_socket sys/socket.h
14719 $i_niin netinet/in.h
14720 $i_netdb netdb.h
14721 $i_unistd unistd.h"
14722 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14723 case "$netdb_net_type" in
14724 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14725 if ./protochk "$try" $hdrs; then
14726 echo "Your system accepts $xxx."
14727 netdb_net_type="$xxx"
14728 fi
14729 ;;
14730 esac
14731 done
14732 : In case none of those worked, prompt the user.
14733 case "$netdb_net_type" in
14734 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14735 dflt='long'
14736 . ./myread
14737 netdb_net_type=$ans
14738 ;;
14739 esac
14740 ;;
14741 *) : no getnetbyaddr, so pick harmless default
14742 netdb_net_type='long'
14743 ;;
14744 esac
14745fi
14746: locate the preferred pager for this system
14747case "$pager" in
14748'')
14749 dflt=''
14750 case "$pg" in
14751 /*) dflt=$pg;;
14752 [a-zA-Z]:/*) dflt=$pg;;
14753 esac
14754 case "$more" in
14755 /*) dflt=$more;;
14756 [a-zA-Z]:/*) dflt=$more;;
14757 esac
14758 case "$less" in
14759 /*) dflt=$less;;
14760 [a-zA-Z]:/*) dflt=$less;;
14761 esac
14762 case "$dflt" in
14763 '') dflt=/usr/ucb/more;;
14764 esac
14765 ;;
14766*) dflt="$pager";;
14767esac
14768echo " "
14769fn=f/
14770rp='What pager is used on your system?'
14771. ./getfile
14772pager="$ans"
14773
14774: see what type pids are declared as in the kernel
14775rp="What is the type of process ids on this system?"
14776set pid_t pidtype int stdio.h sys/types.h
14777eval $typedef_ask
14778
14779: Find earliest binary compatible site_perl subdirectory perl can use.
14780case "$bincompat5005" in
14781"$define") xs_apiversion='5.005' ;;
14782*) xs_apiversion=$version ;; # The current site_perl version.
14783esac
14784: Find earliest pure perl site_perl subdirectory perl can use.
14785: The versioned directories started at 5.005.
14786pm_apiversion='5.005'
14787
b4eb6b3d
JH
14788: see if ar generates random libraries by itself
14789echo " "
14790echo "Checking how to generate random libraries on your machine..." >&4
14791echo 'int bar1() { return bar2(); }' > bar1.c
14792echo 'int bar2() { return 2; }' > bar2.c
14793$cat > foo.c <<'EOP'
14794int main() { printf("%d\n", bar1()); exit(0); }
14795EOP
14796$cc $ccflags -c bar1.c >/dev/null 2>&1
14797$cc $ccflags -c bar2.c >/dev/null 2>&1
14798$cc $ccflags -c foo.c >/dev/null 2>&1
14799$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 14800if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14801 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14802 echo "$ar appears to generate random libraries itself."
14803 orderlib=false
14804 ranlib=":"
14805elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 14806 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14807 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14808 echo "a table of contents needs to be added with '$ar ts'."
14809 orderlib=false
14810 ranlib="$ar ts"
14811else
14812 case "$ranlib" in
14813 :) ranlib='';;
14814 '')
14815 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14816 $test -f $ranlib || ranlib=''
14817 ;;
14818 esac
14819 if $test -n "$ranlib"; then
14820 echo "your system has '$ranlib'; we'll use that."
14821 orderlib=false
14822 else
14823 echo "your system doesn't seem to support random libraries"
14824 echo "so we'll use lorder and tsort to order the libraries."
14825 orderlib=true
14826 ranlib=":"
14827 fi
14828fi
14829$rm -f foo* bar*
14830
14831: check for type of arguments to select.
14832case "$selecttype" in
14833'') case "$d_select" in
14834 $define)
14835 echo " "
14836 $cat <<EOM
14837Checking to see what type of arguments are accepted by select().
14838EOM
14839 hdrs="$define sys/types.h
14840 $i_systime sys/time.h
14841 $i_sysselct sys/select.h
14842 $d_socket sys/socket.h"
14843 : The first arg can be int, unsigned, or size_t
14844 : The last arg may or may not be 'const'
14845 val=''
14846 : void pointer has been seen but using that
14847 : breaks the selectminbits test
14848 for xxx in 'fd_set *' 'int *'; do
14849 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14850 for tmo in 'struct timeval *' 'const struct timeval *'; do
14851 case "$val" in
14852 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14853 if ./protochk "$try" $hdrs; then
14854 echo "Your system accepts $xxx."
14855 val="$xxx"
14856 fi
14857 ;;
14858 esac
14859 done
14860 done
14861 done
14862 case "$val" in
14863 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14864 case "$d_fd_set" in
14865 $define) dflt="fd_set *" ;;
14866 *) dflt="int *" ;;
14867 esac
14868 . ./myread
14869 val=$ans
14870 ;;
14871 esac
14872 selecttype="$val"
14873 ;;
14874 *) : no select, so pick a harmless default
14875 selecttype='int *'
14876 ;;
14877 esac
14878 ;;
14879esac
14880
14881: check for the select 'width'
14882case "$selectminbits" in
14883'') case "$d_select" in
14884 $define)
14885 $cat <<EOM
14886
14887Checking to see on how many bits at a time your select() operates...
14888EOM
14889 $cat >try.c <<EOCP
14890#include <sys/types.h>
14891#$i_time I_TIME
14892#$i_systime I_SYS_TIME
14893#$i_systimek I_SYS_TIME_KERNEL
14894#ifdef I_TIME
14895# include <time.h>
14896#endif
14897#ifdef I_SYS_TIME
14898# ifdef I_SYS_TIME_KERNEL
14899# define KERNEL
14900# endif
14901# include <sys/time.h>
14902# ifdef I_SYS_TIME_KERNEL
14903# undef KERNEL
14904# endif
14905#endif
14906#$i_sysselct I_SYS_SELECT
14907#ifdef I_SYS_SELECT
14908#include <sys/select.h>
14909#endif
14910#$d_socket HAS_SOCKET
14911#ifdef HAS_SOCKET
14912# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14913#endif
14914#include <stdio.h>
14915$selecttype b;
14916#define S sizeof(*(b))
14917#define MINBITS 64
14918#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14919#define NBITS (NBYTES * 8)
14920int main() {
14921 char s[NBYTES];
14922 struct timeval t;
14923 int i;
14924 FILE* fp;
14925 int fd;
14926
14927 fclose(stdin);
14928 fp = fopen("try.c", "r");
14929 if (fp == 0)
14930 exit(1);
14931 fd = fileno(fp);
14932 if (fd < 0)
14933 exit(2);
14934 b = ($selecttype)s;
14935 for (i = 0; i < NBITS; i++)
14936 FD_SET(i, b);
14937 t.tv_sec = 0;
14938 t.tv_usec = 0;
14939 select(fd + 1, b, 0, 0, &t);
14940 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14941 printf("%d\n", i + 1);
14942 return 0;
14943}
14944EOCP
14945 set try
14946 if eval $compile_ok; then
5440bc8e 14947 selectminbits=`$run ./try`
b4eb6b3d
JH
14948 case "$selectminbits" in
14949 '') cat >&4 <<EOM
14950Cannot figure out on how many bits at a time your select() operates.
14951I'll play safe and guess it is 32 bits.
14952EOM
14953 selectminbits=32
14954 bits="32 bits"
14955 ;;
14956 1) bits="1 bit" ;;
14957 *) bits="$selectminbits bits" ;;
14958 esac
14959 echo "Your select() operates on $bits at a time." >&4
14960 else
14961 rp='What is the minimum number of bits your select() operates on?'
14962 case "$byteorder" in
14963 1234|12345678) dflt=32 ;;
14964 *) dflt=1 ;;
14965 esac
14966 . ./myread
14967 val=$ans
14968 selectminbits="$val"
14969 fi
14970 $rm -f try.* try
14971 ;;
14972 *) : no select, so pick a harmless default
14973 selectminbits='32'
14974 ;;
14975 esac
14976 ;;
14977esac
14978
14979: Trace out the files included by signal.h, then look for SIGxxx names.
14980: Remove SIGARRAYSIZE used by HPUX.
14981: Remove SIGSTKSIZE used by Linux.
14982: Remove SIGSTKSZ used by Posix.
14983: Remove SIGTYP void lines used by OS2.
14984: Some cpps, like os390, dont give the file name anywhere
14985if [ "X$fieldn" = X ]; then
14986 : Just make some guesses. We check them later.
14987 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14988else
14989 xxx=`echo '#include <signal.h>' |
14990 $cppstdin $cppminus $cppflags 2>/dev/null |
14991 $grep '^[ ]*#.*include' |
a938a3bb 14992 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
14993fi
14994: Check this list of files to be sure we have parsed the cpp output ok.
14995: This will also avoid potentially non-existent files, such
14996: as ../foo/bar.h
14997xxxfiles=''
14998for xx in $xxx /dev/null ; do
14999 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15000done
15001: If we have found no files, at least try signal.h
15002case "$xxxfiles" in
15003'') xxxfiles=`./findhdr signal.h` ;;
15004esac
15005xxx=`awk '
15006$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15007 print substr($2, 4, 20)
15008}
15009$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15010 print substr($3, 4, 20)
15011}' $xxxfiles`
15012: Append some common names just in case the awk scan failed.
15013xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15014xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15015xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15016xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15017xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15018
15019: generate a few handy files for later
15020$cat > signal.c <<'EOCP'
15021#include <sys/types.h>
15022#include <signal.h>
15023#include <stdio.h>
15024int main() {
15025
15026/* Strange style to avoid deeply-nested #if/#else/#endif */
15027#ifndef NSIG
15028# ifdef _NSIG
15029# define NSIG (_NSIG)
15030# endif
15031#endif
15032
15033#ifndef NSIG
15034# ifdef SIGMAX
15035# define NSIG (SIGMAX+1)
15036# endif
15037#endif
15038
15039#ifndef NSIG
15040# ifdef SIG_MAX
15041# define NSIG (SIG_MAX+1)
15042# endif
15043#endif
15044
15045#ifndef NSIG
15046# ifdef MAXSIG
15047# define NSIG (MAXSIG+1)
15048# endif
15049#endif
15050
15051#ifndef NSIG
15052# ifdef MAX_SIG
15053# define NSIG (MAX_SIG+1)
15054# endif
15055#endif
15056
15057#ifndef NSIG
15058# ifdef SIGARRAYSIZE
15059# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15060# endif
15061#endif
15062
15063#ifndef NSIG
15064# ifdef _sys_nsig
15065# define NSIG (_sys_nsig) /* Solaris 2.5 */
15066# endif
15067#endif
15068
15069/* Default to some arbitrary number that's big enough to get most
15070 of the common signals.
15071*/
15072#ifndef NSIG
15073# define NSIG 50
15074#endif
15075
15076printf("NSIG %d\n", NSIG);
15077
15078#ifndef JUST_NSIG
15079
15080EOCP
15081
15082echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15083{
15084 printf "#ifdef SIG"; printf $1; printf "\n"
15085 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15086 printf $1; printf ");\n"
15087 printf "#endif\n"
15088}
15089END {
15090 printf "#endif /* JUST_NSIG */\n";
15091 printf "exit(0);\n}\n";
15092}
15093' >>signal.c
15094$cat >signal.awk <<'EOP'
15095BEGIN { ndups = 0 }
15096$1 ~ /^NSIG$/ { nsig = $2 }
15097($1 !~ /^NSIG$/) && (NF == 2) {
15098 if ($2 > maxsig) { maxsig = $2 }
15099 if (sig_name[$2]) {
15100 dup_name[ndups] = $1
15101 dup_num[ndups] = $2
15102 ndups++
15103 }
15104 else {
15105 sig_name[$2] = $1
15106 sig_num[$2] = $2
15107 }
15108}
15109END {
15110 if (nsig == 0) {
15111 nsig = maxsig + 1
15112 }
15113 printf("NSIG %d\n", nsig);
15114 for (n = 1; n < nsig; n++) {
15115 if (sig_name[n]) {
15116 printf("%s %d\n", sig_name[n], sig_num[n])
15117 }
15118 else {
15119 printf("NUM%d %d\n", n, n)
15120 }
15121 }
15122 for (n = 0; n < ndups; n++) {
15123 printf("%s %d\n", dup_name[n], dup_num[n])
15124 }
15125}
15126EOP
15127$cat >signal_cmd <<EOS
15128$startsh
15129if $test -s signal.lst; then
15130 echo "Using your existing signal.lst file"
15131 exit 0
15132fi
15133xxx="$xxx"
15134EOS
15135$cat >>signal_cmd <<'EOS'
15136
15137set signal
15138if eval $compile_ok; then
5440bc8e 15139 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15140else
15141 echo "(I can't seem be able to compile the whole test program)" >&4
15142 echo "(I'll try it in little pieces.)" >&4
15143 set signal -DJUST_NSIG
15144 if eval $compile_ok; then
5440bc8e 15145 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15146 $cat signal.nsg
15147 else
15148 echo "I can't seem to figure out how many signals you have." >&4
15149 echo "Guessing 50." >&4
15150 echo 'NSIG 50' > signal.nsg
15151 fi
15152 : Now look at all the signal names, one at a time.
15153 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15154 $cat > signal.c <<EOCP
15155#include <sys/types.h>
15156#include <signal.h>
15157#include <stdio.h>
15158int main() {
15159printf("$xx %d\n", SIG${xx});
15160return 0;
15161}
15162EOCP
15163 set signal
15164 if eval $compile; then
15165 echo "SIG${xx} found."
5440bc8e 15166 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15167 else
15168 echo "SIG${xx} NOT found."
15169 fi
15170 done
15171 if $test -s signal.ls1; then
15172 $cat signal.nsg signal.ls1 |
15173 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15174 fi
15175
15176fi
15177if $test -s signal.lst; then
15178 :
15179else
15180 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15181 echo 'kill -l' >signal
15182 set X `csh -f <signal`
15183 $rm -f signal
15184 shift
15185 case $# in
15186 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15187 esac
15188 echo $@ | $tr ' ' $trnl | \
15189 $awk '{ printf "%s %d\n", $1, ++s; }
15190 END { printf "NSIG %d\n", ++s }' >signal.lst
15191fi
15192$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15193EOS
15194chmod a+x signal_cmd
15195$eunicefix signal_cmd
15196
15197: generate list of signal names
15198echo " "
15199case "$sig_name_init" in
15200'') doinit=yes ;;
15201*) case "$sig_num_init" in
15202 ''|*,*) doinit=yes ;;
15203 esac ;;
15204esac
15205case "$doinit" in
15206yes)
15207 echo "Generating a list of signal names and numbers..." >&4
15208 . ./signal_cmd
15209 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15210 sig_name=`$awk 'BEGIN { printf "ZERO " }
15211 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15212 sig_num=`$awk 'BEGIN { printf "0 " }
15213 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15214 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15215 !/^NSIG/ { printf "\"%s\", ", $1 }
15216 END { printf "0\n" }' signal.lst`
15217 sig_num_init=`$awk 'BEGIN { printf "0, " }
15218 !/^NSIG/ { printf "%d, ", $2}
15219 END { printf "0\n"}' signal.lst`
15220 ;;
15221esac
15222echo "The following $sig_count signals are available:"
15223echo " "
15224echo $sig_name | $awk \
15225'BEGIN { linelen = 0 }
15226{
15227 for (i = 1; i <= NF; i++) {
15228 name = "SIG" $i " "
15229 linelen = linelen + length(name)
15230 if (linelen > 70) {
15231 printf "\n"
15232 linelen = length(name)
15233 }
15234 printf "%s", name
15235 }
15236 printf "\n"
15237}'
76d3c696 15238sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15239$rm -f signal signal.c signal.awk signal.lst signal_cmd
15240
15241echo " "
15242case "$sizetype" in
15243*_t) zzz="$sizetype" ;;
15244*) zzz="filesize" ;;
15245esac
15246echo "Checking the size of $zzz..." >&4
15247cat > try.c <<EOCP
15248#include <sys/types.h>
15249#include <stdio.h>
15250int main() {
15251 printf("%d\n", (int)sizeof($sizetype));
15252 exit(0);
15253}
15254EOCP
15255set try
15256if eval $compile_ok; then
5440bc8e 15257 yyy=`$run ./try`
b4eb6b3d
JH
15258 case "$yyy" in
15259 '') sizesize=4
15260 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15261 ;;
15262 *) sizesize=$yyy
15263 echo "Your $zzz size is $sizesize bytes."
15264 ;;
15265 esac
15266else
15267 sizesize=4
15268 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15269fi
15270
15271
15272: check for socklen_t
15273echo " "
15274echo "Checking to see if you have socklen_t..." >&4
15275$cat >try.c <<EOCP
15276#include <sys/types.h>
15277#$d_socket HAS_SOCKET
15278#ifdef HAS_SOCKET
15279#include <sys/socket.h>
15280#endif
15281int main() { socklen_t x = 16; }
15282EOCP
15283set try
15284if eval $compile; then
15285 val="$define"
15286 echo "You have socklen_t."
15287else
15288 val="$undef"
15289 echo "You do not have socklen_t."
15290 case "$sizetype" in
15291 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15292 esac
15293fi
15294$rm -f try try.*
15295set d_socklen_t
15296eval $setvar
15297
a7710f8d
JH
15298: see if this is a socks.h system
15299set socks.h i_socks
15300eval $inhdr
15301
b4eb6b3d
JH
15302: check for type of the size argument to socket calls
15303case "$d_socket" in
15304"$define")
15305 $cat <<EOM
15306
15307Checking to see what type is the last argument of accept().
15308EOM
b4eb6b3d
JH
15309 yyy=''
15310 case "$d_socklen_t" in
15311 "$define") yyy="$yyy socklen_t"
15312 esac
15313 yyy="$yyy $sizetype int long unsigned"
15314 for xxx in $yyy; do
15315 case "$socksizetype" in
15316 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15317 case "$usesocks" in
15318 "$define")
15319 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15320 echo "Your system accepts '$xxx *' for the last argument of accept()."
15321 socksizetype="$xxx"
15322 fi
15323 ;;
15324 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15325 echo "Your system accepts '$xxx *' for the last argument of accept()."
15326 socksizetype="$xxx"
15327 fi
15328 ;;
15329 esac
b4eb6b3d
JH
15330 ;;
15331 esac
15332 done
15333: In case none of those worked, prompt the user.
15334 case "$socksizetype" in
15335 '') rp='What is the type for socket address structure sizes?'
15336 dflt='int'
15337 . ./myread
15338 socksizetype=$ans
15339 ;;
15340 esac
15341 ;;
15342*) : no sockets, so pick relatively harmless default
15343 socksizetype='int'
15344 ;;
15345esac
15346
15347: see what type is used for signed size_t
15348set ssize_t ssizetype int stdio.h sys/types.h
15349eval $typedef
15350dflt="$ssizetype"
5440bc8e 15351$cat > try.c <<EOM
b4eb6b3d
JH
15352#include <stdio.h>
15353#include <sys/types.h>
15354#define Size_t $sizetype
15355#define SSize_t $dflt
15356int main()
15357{
15358 if (sizeof(Size_t) == sizeof(SSize_t))
15359 printf("$dflt\n");
15360 else if (sizeof(Size_t) == sizeof(int))
15361 printf("int\n");
15362 else
15363 printf("long\n");
15364 exit(0);
15365}
15366EOM
15367echo " "
5440bc8e
JH
15368set try
15369if eval $compile_ok && $run ./try > /dev/null; then
15370 ssizetype=`$run ./try`
b4eb6b3d
JH
15371 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15372else
15373 $cat >&4 <<EOM
15374Help! I can't compile and run the ssize_t test program: please enlighten me!
15375(This is probably a misconfiguration in your system or libraries, and
15376you really ought to fix it. Still, I'll try anyway.)
15377
15378I need a type that is the same size as $sizetype, but is guaranteed to
15379be signed. Common values are ssize_t, int and long.
15380
15381EOM
15382 rp="What signed type is the same size as $sizetype?"
15383 . ./myread
15384 ssizetype="$ans"
15385fi
5440bc8e 15386$rm -f try try.*
b4eb6b3d
JH
15387
15388: see what type of char stdio uses.
15389echo " "
aa517f50
JH
15390echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15391if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15392 echo "Your stdio uses unsigned chars." >&4
15393 stdchar="unsigned char"
15394else
aa517f50
JH
15395 echo "Your stdio uses signed chars." >&4
15396 stdchar="char"
b4eb6b3d 15397fi
aa517f50
JH
15398$rm -f stdioh
15399
15400
b4eb6b3d
JH
15401
15402: see if time exists
15403echo " "
15404if test "X$d_time" = X -o X"$timetype" = X; then
15405 if set time val -f d_time; eval $csym; $val; then
15406 echo 'time() found.' >&4
15407 val="$define"
15408 rp="What is the type returned by time() on this system?"
15409 set time_t timetype long stdio.h sys/types.h
15410 eval $typedef_ask
15411 else
15412 echo 'time() not found, hope that will do.' >&4
15413 val="$undef"
15414 timetype='int';
15415 fi
15416 set d_time
15417 eval $setvar
15418fi
15419
15420: see what type uids are declared as in the kernel
15421echo " "
15422echo "Looking for the type for user ids returned by getuid()."
15423set uid_t uidtype xxx stdio.h sys/types.h
15424eval $typedef
15425case "$uidtype" in
15426xxx)
15427 xxx=`./findhdr sys/user.h`
15428 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15429 case $1 in
15430 unsigned) dflt="$1 $2" ;;
15431 *) dflt="$1" ;;
15432 esac
15433 ;;
15434*) dflt="$uidtype";;
15435esac
15436case "$uidtype" in
15437uid_t) echo "uid_t found." ;;
15438*) rp="What is the type for user ids returned by getuid()?"
15439 . ./myread
15440 uidtype="$ans"
15441 ;;
15442esac
15443
15444echo " "
15445case "$uidtype" in
15446*_t) zzz="$uidtype" ;;
15447*) zzz="uid" ;;
15448esac
15449echo "Checking the size of $zzz..." >&4
15450cat > try.c <<EOCP
15451#include <sys/types.h>
15452#include <stdio.h>
15453int main() {
15454 printf("%d\n", (int)sizeof($uidtype));
15455 exit(0);
15456}
15457EOCP
15458set try
15459if eval $compile_ok; then
5440bc8e 15460 yyy=`$run ./try`
b4eb6b3d
JH
15461 case "$yyy" in
15462 '') uidsize=4
15463 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15464 ;;
15465 *) uidsize=$yyy
15466 echo "Your $zzz is $uidsize bytes long."
15467 ;;
15468 esac
15469else
15470 uidsize=4
15471 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15472fi
15473
15474echo " "
15475case "$uidtype" in
15476*_t) zzz="$uidtype" ;;
15477*) zzz="uid" ;;
15478esac
15479echo "Checking the sign of $zzz..." >&4
15480cat > try.c <<EOCP
15481#include <sys/types.h>
15482#include <stdio.h>
15483int main() {
15484 $uidtype foo = -1;
15485 if (foo < 0)
15486 printf("-1\n");
15487 else
15488 printf("1\n");
15489}
15490EOCP
15491set try
15492if eval $compile; then
5440bc8e 15493 yyy=`$run ./try`
b4eb6b3d
JH
15494 case "$yyy" in
15495 '') uidsign=1
15496 echo "(I can't execute the test program--guessing unsigned.)" >&4
15497 ;;
15498 *) uidsign=$yyy
15499 case "$uidsign" in
15500 1) echo "Your $zzz is unsigned." ;;
15501 -1) echo "Your $zzz is signed." ;;
15502 esac
15503 ;;
15504 esac
15505else
15506 uidsign=1
15507 echo "(I can't compile the test program--guessing unsigned.)" >&4
15508fi
15509
15510
15511
15512echo " "
15513$echo "Checking the format string to be used for uids..." >&4
15514
15515case "$uidsign" in
15516-1) if $test X"$uidsize" = X"$ivsize"; then
15517 uidformat="$ivdformat"
15518 else
15519 if $test X"$uidsize" = X"$longsize"; then
15520 uidformat='"ld"'
15521 else
15522 if $test X"$uidsize" = X"$intsize"; then
15523 uidformat='"d"'
15524 else
15525 if $test X"$uidsize" = X"$shortsize"; then
15526 uidformat='"hd"'
15527 fi
15528 fi
15529 fi
15530 fi
15531 ;;
15532*) if $test X"$uidsize" = X"$uvsize"; then
15533 uidformat="$uvuformat"
15534 else
15535 if $test X"$uidsize" = X"$longsize"; then
15536 uidformat='"lu"'
15537 else
15538 if $test X"$uidsize" = X"$intsize"; then
15539 uidformat='"u"'
15540 else
15541 if $test X"$uidsize" = X"$shortsize"; then
15542 uidformat='"hu"'
15543 fi
15544 fi
15545 fi
15546 fi
15547 ;;
15548esac
15549
3659ebf1
JH
15550: determine compiler compiler
15551case "$yacc" in
15552'')
15553 dflt=yacc;;
15554*)
15555 dflt="$yacc";;
15556esac
15557echo " "
15558comp='yacc'
15559if $test -f "$byacc"; then
15560 dflt="$byacc"
15561 comp="byacc or $comp"
15562fi
15563if $test -f "$bison"; then
15564 comp="$comp or bison -y"
15565fi
15566rp="Which compiler compiler ($comp) shall I use?"
15567. ./myread
15568yacc="$ans"
15569case "$yacc" in
15570*bis*)
15571 case "$yacc" in
15572 *-y*) ;;
15573 *)
15574 yacc="$yacc -y"
15575 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15576 ;;
15577 esac
15578 ;;
15579esac
15580
b4eb6b3d
JH
15581: see if fcntl.h is there
15582val=''
15583set fcntl.h val
15584eval $inhdr
15585
15586: see if we can include fcntl.h
15587case "$val" in
15588"$define")
15589 echo " "
15590 if $h_fcntl; then
15591 val="$define"
15592 echo "We'll be including <fcntl.h>." >&4
15593 else
15594 val="$undef"
15595 if $h_sysfile; then
15596 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15597 else
15598 echo "We won't be including <fcntl.h>." >&4
15599 fi
15600 fi
15601 ;;
15602*)
15603 h_fcntl=false
15604 val="$undef"
15605 ;;
15606esac
15607set i_fcntl
15608eval $setvar
15609
15610: see if this is a iconv.h system
15611set iconv.h i_iconv
15612eval $inhdr
15613
15614: see if this is a ieeefp.h system
15615set ieeefp.h i_ieeefp
15616eval $inhdr
15617
15618: see if this is a libutil.h system
15619set libutil.h i_libutil
15620eval $inhdr
15621
15622: see if locale.h is available
15623set locale.h i_locale
15624eval $inhdr
15625
15626: see if mach cthreads are available
15627if test "X$usethreads" = "X$define"; then
15628 set mach/cthreads.h i_machcthr
15629 eval $inhdr
15630else
15631 i_machcthr="$undef"
15632fi
15633
15634
15635
15636: see if this is a math.h system
15637set math.h i_math
15638eval $inhdr
15639
15640: see if this is a mntent.h system
15641set mntent.h i_mntent
15642eval $inhdr
15643
15644: see if ndbm.h is available
15645set ndbm.h t_ndbm
15646eval $inhdr
15647case "$t_ndbm" in
15648$define)
15649 : see if dbm_open exists
15650 set dbm_open d_dbm_open
15651 eval $inlibc
15652 case "$d_dbm_open" in
15653 $undef)
15654 t_ndbm="$undef"
15655 echo "We won't be including <ndbm.h>"
15656 ;;
15657 esac
15658 ;;
15659esac
15660val="$t_ndbm"
15661set i_ndbm
15662eval $setvar
15663
15664: see if net/errno.h is available
15665val=''
15666set net/errno.h val
15667eval $inhdr
15668
15669: Unfortunately, it causes problems on some systems. Arrgh.
15670case "$val" in
15671$define)
15672 cat > try.c <<'EOM'
15673#include <stdio.h>
15674#include <errno.h>
15675#include <net/errno.h>
15676int func()
15677{
15678 return ENOTSOCK;
15679}
15680EOM
15681 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15682 echo "We'll be including <net/errno.h>." >&4
15683 else
15684 echo "We won't be including <net/errno.h>." >&4
15685 val="$undef"
15686 fi
15687 $rm -f try.* try
15688 ;;
15689esac
15690set i_neterrno
15691eval $setvar
15692
15693: see if netinet/tcp.h is available
15694set netinet/tcp.h i_netinettcp
15695eval $inhdr
15696
15697: see if this is a poll.h system
15698set poll.h i_poll
15699eval $inhdr
15700
15701: see if this is a prot.h system
15702set prot.h i_prot
15703eval $inhdr
15704
15705echo " "
15706$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15707$cat <<'EOSH' > Cppsym.know
15708a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15709AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
15710alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15711ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15712BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
15713BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15714bull c cadmus clipper CMU COFF COMPILER_VERSION
15715concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15716CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15717Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15718FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15719GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15720H3050R H3050RX hbullx20 hcx host_mips
15721hp200 hp300 hp700 HP700 hp800 hp9000
15722hp9000s200 hp9000s300 hp9000s400 hp9000s500
15723hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15724i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 15725IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
15726INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15727LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15728LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15729Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15730LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15731M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15732M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15733M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15734MATH_HAS_NO_SIDE_EFFECTS
15735mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15736mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15737mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15738MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15739mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15740NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15741news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15742ns32016 ns32332 ns32k nsc32000
15743OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15744pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15745pc532 pdp11 PGC PIC plexus PORTAR posix
15746POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15747POSIX_C_SOURCE POSIX_SOURCE POWER
15748PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 15749riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
15750SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15751sony sony_news sonyrisc sparc sparclite spectrum
15752stardent stdc STDC_EXT stratos sun sun3 sun386
15753Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15754SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15755SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15756sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 15757TM3200 TM5400 TM5600
b4eb6b3d
JH
15758tower tower32 tower32_200 tower32_600 tower32_700
15759tower32_800 tower32_850 tss
15760u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15761ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15762unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15763Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15764XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15765XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15766z8000
15767EOSH
15768# Maybe put other stuff here too.
15769cat <<EOSH >>Cppsym.know
15770$osname
15771EOSH
15772./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15773./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15774$cat Cppsym.know > Cppsym.c
381aa1ff 15775$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15776$rm -f Cppsym.a Cppsym.b Cppsym.c
15777cat <<EOSH > Cppsym
15778$startsh
15779if $test \$# -gt 0; then
15780 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15781 if $test -s Cppsym.got; then
15782 $rm -f Cppsym.got
15783 exit 0
15784 fi
15785 $rm -f Cppsym.got
15786 exit 1
15787else
15788 $tr " " "$trnl" | ./Cppsym.try
15789 exit 0
15790fi
15791EOSH
15792chmod +x Cppsym
15793$eunicefix Cppsym
15794cat <<EOSH > Cppsym.try
15795$startsh
15796cat <<'EOCP' > try.c
15797#include <stdio.h>
15798int main() {
15799EOCP
15800$awk \\
15801EOSH
15802cat <<'EOSH' >> Cppsym.try
15803'length($1) > 0 {
2ef53570
JH
15804 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
15805 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
15806 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
15807 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 15808}' >> try.c
2ef53570 15809echo 'return 0;}' >> try.c
b4eb6b3d
JH
15810EOSH
15811cat <<EOSH >> Cppsym.try
15812ccflags="$ccflags"
15813case "$osname-$gccversion" in
15814irix-) ccflags="\$ccflags -woff 1178" ;;
15815os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15816esac
5440bc8e 15817$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
15818EOSH
15819chmod +x Cppsym.try
15820$eunicefix Cppsym.try
15821./Cppsym < Cppsym.know > Cppsym.true
15822: now check the C compiler for additional symbols
15823postprocess_cc_v=''
15824case "$osname" in
15825aix) postprocess_cc_v="|$tr , ' '" ;;
15826esac
15827$cat >ccsym <<EOS
15828$startsh
15829$cat >tmp.c <<EOF
15830extern int foo;
15831EOF
15832for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15833do
15834 case "\$i" in
15835 -D*) echo "\$i" | $sed 's/^-D//';;
15836 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15837 esac
15838done
15839$rm -f try.c
15840EOS
15841postprocess_cc_v=''
15842chmod +x ccsym
15843$eunicefix ccsym
15844./ccsym > ccsym1.raw
15845if $test -s ccsym1.raw; then
15846 $sort ccsym1.raw | $uniq >ccsym.raw
15847else
15848 mv ccsym1.raw ccsym.raw
15849fi
15850
15851$awk '/\=/ { print $0; next }
15852 { print $0"=1" }' ccsym.raw >ccsym.list
15853$awk '/\=/ { print $0; next }
15854 { print $0"=1" }' Cppsym.true >ccsym.true
15855$comm -13 ccsym.true ccsym.list >ccsym.own
15856$comm -12 ccsym.true ccsym.list >ccsym.com
15857$comm -23 ccsym.true ccsym.list >ccsym.cpp
15858also=''
15859if $test -z ccsym.raw; then
15860 echo "Your C compiler doesn't seem to define any symbols!" >&4
15861 echo " "
15862 echo "However, your C preprocessor defines the following symbols:"
15863 $cat Cppsym.true
15864 ccsymbols=''
15865 cppsymbols=`$cat Cppsym.true`
15866 cppsymbols=`echo $cppsymbols`
15867 cppccsymbols="$cppsymbols"
15868else
15869 if $test -s ccsym.com; then
15870 echo "Your C compiler and pre-processor define these symbols:"
15871 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15872 also='also '
15873 symbols='ones'
15874 cppccsymbols=`$cat ccsym.com`
15875 cppccsymbols=`echo $cppccsymbols`
15876 $test "$silent" || sleep 1
15877 fi
15878 if $test -s ccsym.cpp; then
15879 $test "$also" && echo " "
15880 echo "Your C pre-processor ${also}defines the following symbols:"
15881 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15882 also='further '
15883 cppsymbols=`$cat ccsym.cpp`
15884 cppsymbols=`echo $cppsymbols`
15885 $test "$silent" || sleep 1
15886 fi
15887 if $test -s ccsym.own; then
15888 $test "$also" && echo " "
15889 echo "Your C compiler ${also}defines the following cpp symbols:"
15890 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15891 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15892 ccsymbols=`$cat ccsym.own`
15893 ccsymbols=`echo $ccsymbols`
15894 $test "$silent" || sleep 1
15895 fi
15896fi
15897$rm -f ccsym* Cppsym.*
15898
15899: see if this is a termio system
15900val="$undef"
15901val2="$undef"
15902val3="$undef"
15903if $test `./findhdr termios.h`; then
15904 set tcsetattr i_termios
15905 eval $inlibc
15906 val3="$i_termios"
15907fi
15908echo " "
15909case "$val3" in
15910"$define") echo "You have POSIX termios.h... good!" >&4;;
15911*) if ./Cppsym pyr; then
15912 case "`/bin/universe`" in
15913 ucb) if $test `./findhdr sgtty.h`; then
15914 val2="$define"
15915 echo "<sgtty.h> found." >&4
15916 else
15917 echo "System is pyramid with BSD universe."
15918 echo "<sgtty.h> not found--you could have problems." >&4
15919 fi;;
15920 *) if $test `./findhdr termio.h`; then
15921 val="$define"
15922 echo "<termio.h> found." >&4
15923 else
15924 echo "System is pyramid with USG universe."
15925 echo "<termio.h> not found--you could have problems." >&4
15926 fi;;
15927 esac
15928 elif ./usg; then
15929 if $test `./findhdr termio.h`; then
15930 echo "<termio.h> found." >&4
15931 val="$define"
15932 elif $test `./findhdr sgtty.h`; then
15933 echo "<sgtty.h> found." >&4
15934 val2="$define"
15935 else
15936echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15937 fi
15938 else
15939 if $test `./findhdr sgtty.h`; then
15940 echo "<sgtty.h> found." >&4
15941 val2="$define"
15942 elif $test `./findhdr termio.h`; then
15943 echo "<termio.h> found." >&4
15944 val="$define"
15945 else
15946echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15947 fi
15948 fi;;
15949esac
15950set i_termio; eval $setvar
15951val=$val2; set i_sgtty; eval $setvar
15952val=$val3; set i_termios; eval $setvar
15953
15954: see if this is a shadow.h system
15955set shadow.h i_shadow
15956eval $inhdr
15957
b4eb6b3d
JH
15958: see if stddef is available
15959set stddef.h i_stddef
15960eval $inhdr
923fc586 15961
b4eb6b3d
JH
15962: see if this is a sunmath.h system
15963set sunmath.h i_sunmath
15964eval $inhdr
5f80c64f 15965
b4eb6b3d
JH
15966: see if sys/access.h is available
15967set sys/access.h i_sysaccess
15968eval $inhdr
15969
15970: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15971set sys/filio.h i_sysfilio
15972eval $inhdr
15973echo " "
15974if $test `./findhdr sys/ioctl.h`; then
15975 val="$define"
15976 echo '<sys/ioctl.h> found.' >&4
15977else
15978 val="$undef"
15979 if $test $i_sysfilio = "$define"; then
15980 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 15981 else
b4eb6b3d
JH
15982 $test $i_sgtty = "$define" && xxx="sgtty.h"
15983 $test $i_termio = "$define" && xxx="termio.h"
15984 $test $i_termios = "$define" && xxx="termios.h"
15985echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15986 fi
15987fi
15988set i_sysioctl
15989eval $setvar
15990
49a78c82
JH
15991: see if socket ioctl defs are in sys/sockio.h
15992echo " "
15993xxx=`./findhdr sys/sockio.h`
15994if $test "$xxx"; then
15995 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
15996 val="$define"
15997 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
15998 else
15999 val="$undef"
16000 echo "No socket ioctls found in <sys/sockio.h>." >&4
16001 fi
16002else
16003 val="$undef"
16004 $cat <<EOM
16005<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16006EOM
16007fi
16008set i_syssockio
16009eval $setvar
16010
b4eb6b3d
JH
16011
16012: see if this is a syslog.h system
16013set syslog.h i_syslog
16014eval $inhdr
16015
16016
16017: see if this is a sys/mode.h system
16018set sys/mode.h i_sysmode
16019eval $inhdr
16020
16021: see if sys/resource.h has to be included
16022set sys/resource.h i_sysresrc
16023eval $inhdr
16024
16025: see if sys/security.h is available
16026set sys/security.h i_syssecrt
16027eval $inhdr
16028
16029: see if this is a sys/statvfs.h system
16030set sys/statvfs.h i_sysstatvfs
16031eval $inhdr
16032
b4eb6b3d
JH
16033: see if this is a sys/un.h system
16034set sys/un.h i_sysun
16035eval $inhdr
16036
16037
16038: see if this is a sys/utsname.h system
16039set sys/utsname.h i_sysutsname
16040eval $inhdr
16041
16042: see if this is a syswait system
16043set sys/wait.h i_syswait
16044eval $inhdr
16045
16046: see if this is a ustat.h system
16047set ustat.h i_ustat
16048eval $inhdr
16049
16050: see if this is an utime system
16051set utime.h i_utime
16052eval $inhdr
16053
16054: see if this is a values.h system
16055set values.h i_values
16056eval $inhdr
16057
16058: see if this is a vfork system
16059case "$d_vfork" in
16060"$define")
16061 set vfork.h i_vfork
16062 eval $inhdr
16063 ;;
16064*)
16065 i_vfork="$undef"
16066 ;;
16067esac
16068
16069: see if gdbm.h is available
16070set gdbm.h t_gdbm
16071eval $inhdr
16072case "$t_gdbm" in
16073$define)
16074 : see if gdbm_open exists
16075 set gdbm_open d_gdbm_open
16076 eval $inlibc
16077 case "$d_gdbm_open" in
16078 $undef)
16079 t_gdbm="$undef"
16080 echo "We won't be including <gdbm.h>"
5f80c64f 16081 ;;
b4eb6b3d
JH
16082 esac
16083 ;;
16084esac
16085val="$t_gdbm"
16086set i_gdbm
16087eval $setvar
16088
16089echo " "
16090echo "Looking for extensions..." >&4
16091: If we are using the old config.sh, known_extensions may contain
16092: old or inaccurate or duplicate values.
16093known_extensions=''
16094nonxs_extensions=''
16095: We do not use find because it might not be available.
16096: We do not just use MANIFEST because the user may have dropped
16097: some additional extensions into the source tree and expect them
16098: to be built.
16099
16100: Function to recursively find available extensions, ignoring DynaLoader
16101: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16102find_extensions='
16103 for xxx in *; do
16104 case "$xxx" in
16105 DynaLoader|dynaload) ;;
16106 *)
16107 if $test -f $xxx/$xxx.xs; then
16108 known_extensions="$known_extensions $1$xxx";
16109 elif $test -f $xxx/Makefile.PL; then
16110 nonxs_extensions="$nonxs_extensions $1$xxx";
16111 else
16112 if $test -d $xxx -a $# -lt 10; then
16113 set $1$xxx/ $*;
16114 cd $xxx;
16115 eval $find_extensions;
16116 cd ..;
16117 shift;
16118 fi;
16119 fi
16120 ;;
16121 esac;
16122 done'
16123tdir=`pwd`
16124cd $rsrc/ext
16125set X
16126shift
16127eval $find_extensions
16128set X $nonxs_extensions
16129shift
16130nonxs_extensions="$*"
16131set X $known_extensions
16132shift
16133known_extensions="$*"
16134cd $tdir
16135
16136: Now see which are supported on this system.
16137avail_ext=''
16138for xxx in $known_extensions ; do
16139 case "$xxx" in
16140 DB_File|db_file)
16141 case "$i_db" in
16142 $define) avail_ext="$avail_ext $xxx" ;;
16143 esac
16144 ;;
16145 GDBM_File|gdbm_fil)
16146 case "$i_gdbm" in
16147 $define) avail_ext="$avail_ext $xxx" ;;
16148 esac
16149 ;;
16150 NDBM_File|ndbm_fil)
16151 case "$i_ndbm" in
16152 $define)
16153 case "$osname-$use64bitint" in
16154 hpux-define)
16155 case "$libs" in
16156 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16157 esac
16158 ;;
16159 *) avail_ext="$avail_ext $xxx" ;;
16160 esac
16161 ;;
16162 esac
16163 ;;
16164 ODBM_File|odbm_fil)
16165 case "${i_dbm}${i_rpcsvcdbm}" in
16166 *"${define}"*)
16167 case "$osname-$use64bitint" in
16168 hpux-define)
16169 case "$libs" in
16170 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16171 esac
16172 ;;
16173 *) avail_ext="$avail_ext $xxx" ;;
16174 esac
16175 ;;
16176 esac
16177 ;;
16178 POSIX|posix)
16179 case "$useposix" in
16180 true|define|y) avail_ext="$avail_ext $xxx" ;;
16181 esac
16182 ;;
16183 Opcode|opcode)
16184 case "$useopcode" in
16185 true|define|y) avail_ext="$avail_ext $xxx" ;;
16186 esac
16187 ;;
16188 Socket|socket)
16189 case "$d_socket" in
16190 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16191 esac
16192 ;;
16193 Sys/Syslog|sys/syslog)
16194 : XXX syslog requires socket
16195 case "$d_socket" in
16196 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16197 esac
16198 ;;
16199 Thread|thread)
b00ec89b
AB
16200 case "$usethreads" in
16201 true|$define|y)
16202 case "$useithreads" in
16203 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16204 esac
b4eb6b3d
JH
16205 esac
16206 ;;
16207 IPC/SysV|ipc/sysv)
16208 : XXX Do we need a useipcsysv variable here
16209 case "${d_msg}${d_sem}${d_shm}" in
16210 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16211 esac
16212 ;;
16213 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16214 ;;
16215 esac
b4eb6b3d 16216done
5f80c64f 16217
b4eb6b3d
JH
16218set X $avail_ext
16219shift
16220avail_ext="$*"
5f80c64f 16221
b4eb6b3d
JH
16222: Now see which nonxs extensions are supported on this system.
16223: For now assume all are.
16224nonxs_ext=''
16225for xxx in $nonxs_extensions ; do
16226 case "$xxx" in
16227 *) nonxs_ext="$nonxs_ext $xxx"
16228 ;;
16229 esac
16230done
5f80c64f 16231
b4eb6b3d
JH
16232set X $nonxs_ext
16233shift
16234nonxs_ext="$*"
16235
16236case $usedl in
16237$define)
16238 $cat <<EOM
16239A number of extensions are supplied with $package. You may choose to
16240compile these extensions for dynamic loading (the default), compile
16241them into the $package executable (static loading), or not include
16242them at all. Answer "none" to include no extensions.
16243Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16244
16245EOM
b4eb6b3d
JH
16246 case "$dynamic_ext" in
16247 '') dflt="$avail_ext" ;;
16248 *) dflt="$dynamic_ext"
16249 # Perhaps we are reusing an old out-of-date config.sh.
16250 case "$hint" in
16251 previous)
16252 if test X"$dynamic_ext" != X"$avail_ext"; then
16253 $cat <<EOM
16254NOTICE: Your previous config.sh list may be incorrect.
16255The extensions now available to you are
16256 ${avail_ext}
16257but the default list from your previous config.sh is
16258 ${dynamic_ext}
9c839522 16259
b4eb6b3d
JH
16260EOM
16261 fi
9c839522
PM
16262 ;;
16263 esac
b4eb6b3d
JH
16264 ;;
16265 esac
5f80c64f 16266 case "$dflt" in
b4eb6b3d
JH
16267 '') dflt=none;;
16268 esac
16269 rp="What extensions do you wish to load dynamically?"
16270 . ./myread
16271 case "$ans" in
16272 none) dynamic_ext=' ' ;;
16273 *) dynamic_ext="$ans" ;;
5f80c64f 16274 esac
5f80c64f 16275
b4eb6b3d
JH
16276 case "$static_ext" in
16277 '')
16278 : Exclude those already listed in dynamic linking
16279 dflt=''
16280 for xxx in $avail_ext; do
16281 case " $dynamic_ext " in
16282 *" $xxx "*) ;;
16283 *) dflt="$dflt $xxx" ;;
16284 esac
16285 done
16286 set X $dflt
16287 shift
16288 dflt="$*"
16289 ;;
16290 *) dflt="$static_ext"
16291 ;;
16292 esac
9c839522 16293
b4eb6b3d
JH
16294 case "$dflt" in
16295 '') dflt=none;;
16296 esac
16297 rp="What extensions do you wish to load statically?"
16298 . ./myread
16299 case "$ans" in
16300 none) static_ext=' ' ;;
16301 *) static_ext="$ans" ;;
16302 esac
16303 ;;
16304*)
16305 $cat <<EOM
16306A number of extensions are supplied with $package. Answer "none"
16307to include no extensions.
16308Note that DynaLoader is always built and need not be mentioned here.
9c839522 16309
b4eb6b3d
JH
16310EOM
16311 case "$static_ext" in
16312 '') dflt="$avail_ext" ;;
16313 *) dflt="$static_ext"
16314 # Perhaps we are reusing an old out-of-date config.sh.
16315 case "$hint" in
16316 previous)
16317 if test X"$static_ext" != X"$avail_ext"; then
16318 $cat <<EOM
16319NOTICE: Your previous config.sh list may be incorrect.
16320The extensions now available to you are
16321 ${avail_ext}
16322but the default list from your previous config.sh is
16323 ${static_ext}
5f80c64f
JH
16324
16325EOM
b4eb6b3d
JH
16326 fi
16327 ;;
16328 esac
16329 ;;
16330 esac
16331 : Exclude those that are not xs extensions
16332 case "$dflt" in
16333 '') dflt=none;;
16334 esac
16335 rp="What extensions do you wish to include?"
16336 . ./myread
16337 case "$ans" in
16338 none) static_ext=' ' ;;
16339 *) static_ext="$ans" ;;
16340 esac
16341 ;;
5f80c64f
JH
16342esac
16343
b4eb6b3d
JH
16344set X $dynamic_ext $static_ext $nonxs_ext
16345shift
16346extensions="$*"
16347
9c839522
PM
16348: Remove libraries needed only for extensions
16349: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16350: The exception is SunOS 4.x, which needs them.
16351case "${osname}X${osvers}" in
16352sunos*X4*)
16353 perllibs="$libs"
16354 ;;
16355*) case "$usedl" in
16356 $define|true|[yY]*)
16357 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16358 shift
16359 perllibs="$*"
16360 ;;
16361 *) perllibs="$libs"
16362 ;;
16363 esac
16364 ;;
9c839522 16365esac
5f80c64f
JH
16366
16367: Remove build directory name from cppstdin so it can be used from
16368: either the present location or the final installed location.
16369echo " "
16370: Get out of the UU directory to get correct path name.
16371cd ..
16372case "$cppstdin" in
16373`pwd`/cppstdin)
16374 echo "Stripping down cppstdin path name"
16375 cppstdin=cppstdin
16376 ;;
16377esac
16378cd UU
16379
16380: end of configuration questions
16381echo " "
16382echo "End of configuration questions."
16383echo " "
16384
16385: back to where it started
16386if test -d ../UU; then
16387 cd ..
16388fi
16389
16390: configuration may be patched via a 'config.over' file
16391if $test -f config.over; then
16392 echo " "
16393 dflt=y
16394 rp='I see a config.over file. Do you wish to load it?'
16395 . UU/myread
16396 case "$ans" in
16397 n*) echo "OK, I'll ignore it.";;
16398 *) . ./config.over
16399 echo "Configuration override changes have been loaded."
16400 ;;
16401 esac
16402fi
16403
16404: in case they want portability, strip down executable paths
16405case "$d_portable" in
16406"$define")
16407 echo " "
16408 echo "Stripping down executable paths..." >&4
16409 for file in $loclist $trylist; do
534ac15a
JH
16410 eval temp=\$$file
16411 eval $file=`basename $temp`
5f80c64f
JH
16412 done
16413 ;;
16414esac
16415
16416: create config.sh file
16417echo " "
16418echo "Creating config.sh..." >&4
16419$spitshell <<EOT >config.sh
16420$startsh
16421#
16422# This file was produced by running the Configure script. It holds all the
16423# definitions figured out by Configure. Should you modify one of these values,
16424# do not forget to propagate your changes by running "Configure -der". You may
16425# instead choose to run each of the .SH files by yourself, or "Configure -S".
16426#
16427
16428# Package name : $package
16429# Source directory : $src
16430# Configuration time: $cf_time
16431# Configured by : $cf_by
16432# Target system : $myuname
16433
16434Author='$Author'
16435Date='$Date'
16436Header='$Header'
16437Id='$Id'
16438Locker='$Locker'
16439Log='$Log'
16440Mcc='$Mcc'
16441RCSfile='$RCSfile'
16442Revision='$Revision'
16443Source='$Source'
16444State='$State'
16445_a='$_a'
16446_exe='$_exe'
16447_o='$_o'
b4eb6b3d 16448afs='$afs'
a6d26a0d 16449afsroot='$afsroot'
b4eb6b3d
JH
16450alignbytes='$alignbytes'
16451ansi2knr='$ansi2knr'
16452aphostname='$aphostname'
16453api_revision='$api_revision'
16454api_subversion='$api_subversion'
16455api_version='$api_version'
16456api_versionstring='$api_versionstring'
5f80c64f 16457ar='$ar'
b4eb6b3d
JH
16458archlib='$archlib'
16459archlibexp='$archlibexp'
16460archname64='$archname64'
16461archname='$archname'
5f80c64f
JH
16462archobjs='$archobjs'
16463awk='$awk'
b4eb6b3d 16464baserev='$baserev'
5f80c64f 16465bash='$bash'
b4eb6b3d
JH
16466bin='$bin'
16467bincompat5005='$bincompat5005'
16468binexp='$binexp'
5f80c64f
JH
16469bison='$bison'
16470byacc='$byacc'
b4eb6b3d 16471byteorder='$byteorder'
5f80c64f 16472c='$c'
b4eb6b3d 16473castflags='$castflags'
5f80c64f
JH
16474cat='$cat'
16475cc='$cc'
16476cccdlflags='$cccdlflags'
16477ccdlflags='$ccdlflags'
16478ccflags='$ccflags'
b4eb6b3d 16479ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16480ccname='$ccname'
b4eb6b3d 16481ccsymbols='$ccsymbols'
6b356c8e 16482ccversion='$ccversion'
5f80c64f 16483cf_by='$cf_by'
b4eb6b3d 16484cf_email='$cf_email'
5f80c64f 16485cf_time='$cf_time'
b4eb6b3d 16486charsize='$charsize'
5f80c64f
JH
16487chgrp='$chgrp'
16488chmod='$chmod'
16489chown='$chown'
b4eb6b3d 16490clocktype='$clocktype'
5f80c64f
JH
16491comm='$comm'
16492compress='$compress'
16493contains='$contains'
16494cp='$cp'
16495cpio='$cpio'
16496cpp='$cpp'
b4eb6b3d
JH
16497cpp_stuff='$cpp_stuff'
16498cppccsymbols='$cppccsymbols'
5f80c64f
JH
16499cppflags='$cppflags'
16500cpplast='$cpplast'
16501cppminus='$cppminus'
16502cpprun='$cpprun'
16503cppstdin='$cppstdin'
b4eb6b3d 16504cppsymbols='$cppsymbols'
b4eb6b3d 16505cryptlib='$cryptlib'
5f80c64f 16506csh='$csh'
b4eb6b3d
JH
16507d_Gconvert='$d_Gconvert'
16508d_PRIEUldbl='$d_PRIEUldbl'
16509d_PRIFUldbl='$d_PRIFUldbl'
16510d_PRIGUldbl='$d_PRIGUldbl'
16511d_PRIXU64='$d_PRIXU64'
16512d_PRId64='$d_PRId64'
16513d_PRIeldbl='$d_PRIeldbl'
16514d_PRIfldbl='$d_PRIfldbl'
16515d_PRIgldbl='$d_PRIgldbl'
16516d_PRIi64='$d_PRIi64'
16517d_PRIo64='$d_PRIo64'
16518d_PRIu64='$d_PRIu64'
16519d_PRIx64='$d_PRIx64'
16520d_SCNfldbl='$d_SCNfldbl'
74cac757 16521d__fwalk='$d__fwalk'
b4eb6b3d
JH
16522d_access='$d_access'
16523d_accessx='$d_accessx'
16524d_alarm='$d_alarm'
16525d_archlib='$d_archlib'
16526d_atolf='$d_atolf'
16527d_atoll='$d_atoll'
16528d_attribut='$d_attribut'
16529d_bcmp='$d_bcmp'
16530d_bcopy='$d_bcopy'
16531d_bincompat5005='$d_bincompat5005'
5f80c64f 16532d_bsd='$d_bsd'
b4eb6b3d
JH
16533d_bsdgetpgrp='$d_bsdgetpgrp'
16534d_bsdsetpgrp='$d_bsdsetpgrp'
16535d_bzero='$d_bzero'
16536d_casti32='$d_casti32'
16537d_castneg='$d_castneg'
16538d_charvspr='$d_charvspr'
16539d_chown='$d_chown'
16540d_chroot='$d_chroot'
16541d_chsize='$d_chsize'
16542d_closedir='$d_closedir'
4e0554ec 16543d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
16544d_const='$d_const'
16545d_crypt='$d_crypt'
16546d_csh='$d_csh'
16547d_cuserid='$d_cuserid'
16548d_dbl_dig='$d_dbl_dig'
2ef53570 16549d_dbminitproto='$d_dbminitproto'
b4eb6b3d
JH
16550d_difftime='$d_difftime'
16551d_dirnamlen='$d_dirnamlen'
16552d_dlerror='$d_dlerror'
5f80c64f 16553d_dlopen='$d_dlopen'
b4eb6b3d
JH
16554d_dlsymun='$d_dlsymun'
16555d_dosuid='$d_dosuid'
16556d_drand48proto='$d_drand48proto'
16557d_dup2='$d_dup2'
16558d_eaccess='$d_eaccess'
16559d_endgrent='$d_endgrent'
16560d_endhent='$d_endhent'
16561d_endnent='$d_endnent'
16562d_endpent='$d_endpent'
16563d_endpwent='$d_endpwent'
16564d_endsent='$d_endsent'
16565d_eofnblk='$d_eofnblk'
5f80c64f 16566d_eunice='$d_eunice'
b4eb6b3d
JH
16567d_fchmod='$d_fchmod'
16568d_fchown='$d_fchown'
16569d_fcntl='$d_fcntl'
9d9004a9 16570d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
16571d_fd_macros='$d_fd_macros'
16572d_fd_set='$d_fd_set'
16573d_fds_bits='$d_fds_bits'
16574d_fgetpos='$d_fgetpos'
16575d_flexfnam='$d_flexfnam'
16576d_flock='$d_flock'
2ef53570 16577d_flockproto='$d_flockproto'
b4eb6b3d
JH
16578d_fork='$d_fork'
16579d_fpathconf='$d_fpathconf'
16580d_fpos64_t='$d_fpos64_t'
16581d_frexpl='$d_frexpl'
16582d_fs_data_s='$d_fs_data_s'
16583d_fseeko='$d_fseeko'
16584d_fsetpos='$d_fsetpos'
16585d_fstatfs='$d_fstatfs'
16586d_fstatvfs='$d_fstatvfs'
411ab01c 16587d_fsync='$d_fsync'
b4eb6b3d
JH
16588d_ftello='$d_ftello'
16589d_ftime='$d_ftime'
16590d_getcwd='$d_getcwd'
16591d_getespwnam='$d_getespwnam'
16592d_getfsstat='$d_getfsstat'
16593d_getgrent='$d_getgrent'
16594d_getgrps='$d_getgrps'
16595d_gethbyaddr='$d_gethbyaddr'
16596d_gethbyname='$d_gethbyname'
16597d_gethent='$d_gethent'
16598d_gethname='$d_gethname'
16599d_gethostprotos='$d_gethostprotos'
4e0554ec 16600d_getitimer='$d_getitimer'
b4eb6b3d
JH
16601d_getlogin='$d_getlogin'
16602d_getmnt='$d_getmnt'
16603d_getmntent='$d_getmntent'
16604d_getnbyaddr='$d_getnbyaddr'
16605d_getnbyname='$d_getnbyname'
16606d_getnent='$d_getnent'
16607d_getnetprotos='$d_getnetprotos'
0c0643d0 16608d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16609d_getpbyname='$d_getpbyname'
16610d_getpbynumber='$d_getpbynumber'
16611d_getpent='$d_getpent'
16612d_getpgid='$d_getpgid'
16613d_getpgrp2='$d_getpgrp2'
16614d_getpgrp='$d_getpgrp'
16615d_getppid='$d_getppid'
16616d_getprior='$d_getprior'
16617d_getprotoprotos='$d_getprotoprotos'
16618d_getprpwnam='$d_getprpwnam'
16619d_getpwent='$d_getpwent'
16620d_getsbyname='$d_getsbyname'
16621d_getsbyport='$d_getsbyport'
16622d_getsent='$d_getsent'
16623d_getservprotos='$d_getservprotos'
16624d_getspnam='$d_getspnam'
16625d_gettimeod='$d_gettimeod'
5f80c64f 16626d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16627d_grpasswd='$d_grpasswd'
16628d_hasmntopt='$d_hasmntopt'
16629d_htonl='$d_htonl'
16630d_iconv='$d_iconv'
16631d_index='$d_index'
16632d_inetaton='$d_inetaton'
16633d_int64_t='$d_int64_t'
16634d_isascii='$d_isascii'
16635d_isnan='$d_isnan'
16636d_isnanl='$d_isnanl'
16637d_killpg='$d_killpg'
16638d_lchown='$d_lchown'
16639d_ldbl_dig='$d_ldbl_dig'
16640d_link='$d_link'
16641d_locconv='$d_locconv'
16642d_lockf='$d_lockf'
16643d_longdbl='$d_longdbl'
16644d_longlong='$d_longlong'
16645d_lseekproto='$d_lseekproto'
16646d_lstat='$d_lstat'
16647d_madvise='$d_madvise'
16648d_mblen='$d_mblen'
16649d_mbstowcs='$d_mbstowcs'
16650d_mbtowc='$d_mbtowc'
16651d_memchr='$d_memchr'
16652d_memcmp='$d_memcmp'
16653d_memcpy='$d_memcpy'
16654d_memmove='$d_memmove'
16655d_memset='$d_memset'
16656d_mkdir='$d_mkdir'
16657d_mkdtemp='$d_mkdtemp'
16658d_mkfifo='$d_mkfifo'
16659d_mkstemp='$d_mkstemp'
16660d_mkstemps='$d_mkstemps'
16661d_mktime='$d_mktime'
16662d_mmap='$d_mmap'
16663d_modfl='$d_modfl'
e67aeab1 16664d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
16665d_mprotect='$d_mprotect'
16666d_msg='$d_msg'
16667d_msg_ctrunc='$d_msg_ctrunc'
16668d_msg_dontroute='$d_msg_dontroute'
16669d_msg_oob='$d_msg_oob'
16670d_msg_peek='$d_msg_peek'
16671d_msg_proxy='$d_msg_proxy'
16672d_msgctl='$d_msgctl'
16673d_msgget='$d_msgget'
4e0554ec 16674d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
16675d_msgrcv='$d_msgrcv'
16676d_msgsnd='$d_msgsnd'
16677d_msync='$d_msync'
16678d_munmap='$d_munmap'
16679d_mymalloc='$d_mymalloc'
16680d_nice='$d_nice'
16681d_nv_preserves_uv='$d_nv_preserves_uv'
16682d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16683d_off64_t='$d_off64_t'
16684d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16685d_oldpthreads='$d_oldpthreads'
16686d_oldsock='$d_oldsock'
16687d_open3='$d_open3'
16688d_pathconf='$d_pathconf'
16689d_pause='$d_pause'
16690d_perl_otherlibdirs='$d_perl_otherlibdirs'
16691d_phostname='$d_phostname'
16692d_pipe='$d_pipe'
16693d_poll='$d_poll'
5f80c64f 16694d_portable='$d_portable'
b4eb6b3d
JH
16695d_pthread_yield='$d_pthread_yield'
16696d_pwage='$d_pwage'
16697d_pwchange='$d_pwchange'
16698d_pwclass='$d_pwclass'
16699d_pwcomment='$d_pwcomment'
16700d_pwexpire='$d_pwexpire'
16701d_pwgecos='$d_pwgecos'
16702d_pwpasswd='$d_pwpasswd'
16703d_pwquota='$d_pwquota'
16704d_qgcvt='$d_qgcvt'
16705d_quad='$d_quad'
16706d_readdir='$d_readdir'
16707d_readlink='$d_readlink'
4e0554ec 16708d_readv='$d_readv'
640374d0 16709d_realpath='$d_realpath'
4e0554ec 16710d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
16711d_rename='$d_rename'
16712d_rewinddir='$d_rewinddir'
16713d_rmdir='$d_rmdir'
16714d_safebcpy='$d_safebcpy'
16715d_safemcpy='$d_safemcpy'
16716d_sanemcmp='$d_sanemcmp'
ef9f17be 16717d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16718d_sched_yield='$d_sched_yield'
16719d_scm_rights='$d_scm_rights'
16720d_seekdir='$d_seekdir'
16721d_select='$d_select'
16722d_sem='$d_sem'
16723d_semctl='$d_semctl'
16724d_semctl_semid_ds='$d_semctl_semid_ds'
16725d_semctl_semun='$d_semctl_semun'
16726d_semget='$d_semget'
16727d_semop='$d_semop'
4e0554ec 16728d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
16729d_setegid='$d_setegid'
16730d_seteuid='$d_seteuid'
16731d_setgrent='$d_setgrent'
16732d_setgrps='$d_setgrps'
16733d_sethent='$d_sethent'
4e0554ec 16734d_setitimer='$d_setitimer'
b4eb6b3d
JH
16735d_setlinebuf='$d_setlinebuf'
16736d_setlocale='$d_setlocale'
16737d_setnent='$d_setnent'
16738d_setpent='$d_setpent'
16739d_setpgid='$d_setpgid'
16740d_setpgrp2='$d_setpgrp2'
16741d_setpgrp='$d_setpgrp'
16742d_setprior='$d_setprior'
16743d_setproctitle='$d_setproctitle'
16744d_setpwent='$d_setpwent'
16745d_setregid='$d_setregid'
16746d_setresgid='$d_setresgid'
16747d_setresuid='$d_setresuid'
16748d_setreuid='$d_setreuid'
16749d_setrgid='$d_setrgid'
16750d_setruid='$d_setruid'
16751d_setsent='$d_setsent'
16752d_setsid='$d_setsid'
16753d_setvbuf='$d_setvbuf'
16754d_sfio='$d_sfio'
16755d_shm='$d_shm'
16756d_shmat='$d_shmat'
16757d_shmatprototype='$d_shmatprototype'
16758d_shmctl='$d_shmctl'
16759d_shmdt='$d_shmdt'
16760d_shmget='$d_shmget'
16761d_sigaction='$d_sigaction'
983dbef6 16762d_sigprocmask='$d_sigprocmask'
b4eb6b3d 16763d_sigsetjmp='$d_sigsetjmp'
49a78c82 16764d_sockatmark='$d_sockatmark'
2ef53570 16765d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
16766d_socket='$d_socket'
16767d_socklen_t='$d_socklen_t'
16768d_sockpair='$d_sockpair'
16769d_socks5_init='$d_socks5_init'
16770d_sqrtl='$d_sqrtl'
eef837ea 16771d_sresgproto='$d_sresgproto'
640374d0 16772d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
16773d_statblks='$d_statblks'
16774d_statfs_f_flags='$d_statfs_f_flags'
16775d_statfs_s='$d_statfs_s'
16776d_statvfs='$d_statvfs'
16777d_stdio_cnt_lval='$d_stdio_cnt_lval'
16778d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
16779d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16780d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
16781d_stdio_stream_array='$d_stdio_stream_array'
16782d_stdiobase='$d_stdiobase'
16783d_stdstdio='$d_stdstdio'
16784d_strchr='$d_strchr'
16785d_strcoll='$d_strcoll'
16786d_strctcpy='$d_strctcpy'
16787d_strerrm='$d_strerrm'
16788d_strerror='$d_strerror'
b3c85772 16789d_strftime='$d_strftime'
b4eb6b3d
JH
16790d_strtod='$d_strtod'
16791d_strtol='$d_strtol'
16792d_strtold='$d_strtold'
16793d_strtoll='$d_strtoll'
28e5dec8 16794d_strtoq='$d_strtoq'
b4eb6b3d
JH
16795d_strtoul='$d_strtoul'
16796d_strtoull='$d_strtoull'
16797d_strtouq='$d_strtouq'
16798d_strxfrm='$d_strxfrm'
16799d_suidsafe='$d_suidsafe'
16800d_symlink='$d_symlink'
16801d_syscall='$d_syscall'
2ef53570 16802d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
16803d_sysconf='$d_sysconf'
16804d_sysernlst='$d_sysernlst'
16805d_syserrlst='$d_syserrlst'
16806d_system='$d_system'
16807d_tcgetpgrp='$d_tcgetpgrp'
16808d_tcsetpgrp='$d_tcsetpgrp'
16809d_telldir='$d_telldir'
16810d_telldirproto='$d_telldirproto'
16811d_time='$d_time'
16812d_times='$d_times'
16813d_truncate='$d_truncate'
16814d_tzname='$d_tzname'
4e0554ec
JH
16815d_u32align='$d_u32align'
16816d_ualarm='$d_ualarm'
b4eb6b3d
JH
16817d_umask='$d_umask'
16818d_uname='$d_uname'
16819d_union_semun='$d_union_semun'
4e0554ec 16820d_usleep='$d_usleep'
2ef53570 16821d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
16822d_ustat='$d_ustat'
16823d_vendorarch='$d_vendorarch'
16824d_vendorbin='$d_vendorbin'
16825d_vendorlib='$d_vendorlib'
16826d_vfork='$d_vfork'
16827d_void_closedir='$d_void_closedir'
16828d_voidsig='$d_voidsig'
16829d_voidtty='$d_voidtty'
16830d_volatile='$d_volatile'
16831d_vprintf='$d_vprintf'
16832d_wait4='$d_wait4'
16833d_waitpid='$d_waitpid'
16834d_wcstombs='$d_wcstombs'
16835d_wctomb='$d_wctomb'
4e0554ec 16836d_writev='$d_writev'
5f80c64f
JH
16837d_xenix='$d_xenix'
16838date='$date'
b4eb6b3d
JH
16839db_hashtype='$db_hashtype'
16840db_prefixtype='$db_prefixtype'
640374d0
JH
16841db_version_major='$db_version_major'
16842db_version_minor='$db_version_minor'
16843db_version_patch='$db_version_patch'
b4eb6b3d
JH
16844defvoidused='$defvoidused'
16845direntrytype='$direntrytype'
16846dlext='$dlext'
5f80c64f 16847dlsrc='$dlsrc'
b4eb6b3d
JH
16848doublesize='$doublesize'
16849drand01='$drand01'
16850dynamic_ext='$dynamic_ext'
16851eagain='$eagain'
16852ebcdic='$ebcdic'
5f80c64f
JH
16853echo='$echo'
16854egrep='$egrep'
16855emacs='$emacs'
16856eunicefix='$eunicefix'
16857exe_ext='$exe_ext'
16858expr='$expr'
b4eb6b3d
JH
16859extensions='$extensions'
16860fflushNULL='$fflushNULL'
16861fflushall='$fflushall'
5f80c64f
JH
16862find='$find'
16863firstmakefile='$firstmakefile'
16864flex='$flex'
b4eb6b3d
JH
16865fpossize='$fpossize'
16866fpostype='$fpostype'
16867freetype='$freetype'
5440bc8e 16868from='$from'
b4eb6b3d
JH
16869full_ar='$full_ar'
16870full_csh='$full_csh'
16871full_sed='$full_sed'
5b463ca7 16872gccosandvers='$gccosandvers'
5f80c64f 16873gccversion='$gccversion'
b4eb6b3d
JH
16874gidformat='$gidformat'
16875gidsign='$gidsign'
16876gidsize='$gidsize'
16877gidtype='$gidtype'
5f80c64f
JH
16878glibpth='$glibpth'
16879grep='$grep'
b4eb6b3d
JH
16880groupcat='$groupcat'
16881groupstype='$groupstype'
5f80c64f 16882gzip='$gzip'
b4eb6b3d
JH
16883h_fcntl='$h_fcntl'
16884h_sysfile='$h_sysfile'
5f80c64f 16885hint='$hint'
b4eb6b3d
JH
16886hostcat='$hostcat'
16887i16size='$i16size'
16888i16type='$i16type'
16889i32size='$i32size'
16890i32type='$i32type'
16891i64size='$i64size'
16892i64type='$i64type'
16893i8size='$i8size'
16894i8type='$i8type'
16895i_arpainet='$i_arpainet'
16896i_bsdioctl='$i_bsdioctl'
16897i_db='$i_db'
16898i_dbm='$i_dbm'
16899i_dirent='$i_dirent'
5f80c64f 16900i_dld='$i_dld'
b4eb6b3d
JH
16901i_dlfcn='$i_dlfcn'
16902i_fcntl='$i_fcntl'
16903i_float='$i_float'
16904i_gdbm='$i_gdbm'
16905i_grp='$i_grp'
16906i_iconv='$i_iconv'
16907i_ieeefp='$i_ieeefp'
16908i_inttypes='$i_inttypes'
16909i_libutil='$i_libutil'
16910i_limits='$i_limits'
16911i_locale='$i_locale'
16912i_machcthr='$i_machcthr'
16913i_malloc='$i_malloc'
16914i_math='$i_math'
16915i_memory='$i_memory'
16916i_mntent='$i_mntent'
16917i_ndbm='$i_ndbm'
16918i_netdb='$i_netdb'
16919i_neterrno='$i_neterrno'
16920i_netinettcp='$i_netinettcp'
16921i_niin='$i_niin'
16922i_poll='$i_poll'
16923i_prot='$i_prot'
16924i_pthread='$i_pthread'
16925i_pwd='$i_pwd'
16926i_rpcsvcdbm='$i_rpcsvcdbm'
16927i_sfio='$i_sfio'
16928i_sgtty='$i_sgtty'
16929i_shadow='$i_shadow'
16930i_socks='$i_socks'
16931i_stdarg='$i_stdarg'
16932i_stddef='$i_stddef'
16933i_stdlib='$i_stdlib'
16934i_string='$i_string'
16935i_sunmath='$i_sunmath'
16936i_sysaccess='$i_sysaccess'
16937i_sysdir='$i_sysdir'
16938i_sysfile='$i_sysfile'
16939i_sysfilio='$i_sysfilio'
16940i_sysin='$i_sysin'
16941i_sysioctl='$i_sysioctl'
16942i_syslog='$i_syslog'
16943i_sysmman='$i_sysmman'
16944i_sysmode='$i_sysmode'
16945i_sysmount='$i_sysmount'
16946i_sysndir='$i_sysndir'
16947i_sysparam='$i_sysparam'
16948i_sysresrc='$i_sysresrc'
16949i_syssecrt='$i_syssecrt'
16950i_sysselct='$i_sysselct'
16951i_syssockio='$i_syssockio'
16952i_sysstat='$i_sysstat'
16953i_sysstatfs='$i_sysstatfs'
16954i_sysstatvfs='$i_sysstatvfs'
16955i_systime='$i_systime'
16956i_systimek='$i_systimek'
16957i_systimes='$i_systimes'
16958i_systypes='$i_systypes'
16959i_sysuio='$i_sysuio'
16960i_sysun='$i_sysun'
16961i_sysutsname='$i_sysutsname'
16962i_sysvfs='$i_sysvfs'
16963i_syswait='$i_syswait'
16964i_termio='$i_termio'
16965i_termios='$i_termios'
16966i_time='$i_time'
16967i_unistd='$i_unistd'
16968i_ustat='$i_ustat'
16969i_utime='$i_utime'
16970i_values='$i_values'
16971i_varargs='$i_varargs'
16972i_varhdr='$i_varhdr'
16973i_vfork='$i_vfork'
5f80c64f 16974ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
16975inc_version_list='$inc_version_list'
16976inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
16977incpath='$incpath'
16978inews='$inews'
b4eb6b3d
JH
16979installarchlib='$installarchlib'
16980installbin='$installbin'
16981installman1dir='$installman1dir'
16982installman3dir='$installman3dir'
16983installprefix='$installprefix'
16984installprefixexp='$installprefixexp'
16985installprivlib='$installprivlib'
16986installscript='$installscript'
16987installsitearch='$installsitearch'
16988installsitebin='$installsitebin'
16989installsitelib='$installsitelib'
16990installstyle='$installstyle'
16991installusrbinperl='$installusrbinperl'
16992installvendorarch='$installvendorarch'
16993installvendorbin='$installvendorbin'
16994installvendorlib='$installvendorlib'
16995intsize='$intsize'
4b661809 16996issymlink='$issymlink'
b4eb6b3d
JH
16997ivdformat='$ivdformat'
16998ivsize='$ivsize'
16999ivtype='$ivtype'
17000known_extensions='$known_extensions'
5f80c64f 17001ksh='$ksh'
5f80c64f
JH
17002ld='$ld'
17003lddlflags='$lddlflags'
17004ldflags='$ldflags'
b4eb6b3d
JH
17005ldflags_uselargefiles='$ldflags_uselargefiles'
17006ldlibpthname='$ldlibpthname'
5f80c64f
JH
17007less='$less'
17008lib_ext='$lib_ext'
17009libc='$libc'
b4eb6b3d 17010libperl='$libperl'
5f80c64f
JH
17011libpth='$libpth'
17012libs='$libs'
43999f95
JH
17013libsdirs='$libsdirs'
17014libsfiles='$libsfiles'
17015libsfound='$libsfound'
13b3f787 17016libspath='$libspath'
5f80c64f 17017libswanted='$libswanted'
b4eb6b3d 17018libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17019line='$line'
17020lint='$lint'
17021lkflags='$lkflags'
17022ln='$ln'
17023lns='$lns'
17024locincpth='$locincpth'
17025loclibpth='$loclibpth'
b4eb6b3d
JH
17026longdblsize='$longdblsize'
17027longlongsize='$longlongsize'
17028longsize='$longsize'
5f80c64f
JH
17029lp='$lp'
17030lpr='$lpr'
17031ls='$ls'
b4eb6b3d
JH
17032lseeksize='$lseeksize'
17033lseektype='$lseektype'
5f80c64f
JH
17034mail='$mail'
17035mailx='$mailx'
17036make='$make'
17037make_set_make='$make_set_make'
b4eb6b3d
JH
17038mallocobj='$mallocobj'
17039mallocsrc='$mallocsrc'
17040malloctype='$malloctype'
17041man1dir='$man1dir'
17042man1direxp='$man1direxp'
17043man1ext='$man1ext'
17044man3dir='$man3dir'
17045man3direxp='$man3direxp'
17046man3ext='$man3ext'
5f80c64f
JH
17047mips_type='$mips_type'
17048mkdir='$mkdir'
b4eb6b3d
JH
17049mmaptype='$mmaptype'
17050modetype='$modetype'
5f80c64f 17051more='$more'
b4eb6b3d 17052multiarch='$multiarch'
5f80c64f 17053mv='$mv'
b4eb6b3d
JH
17054myarchname='$myarchname'
17055mydomain='$mydomain'
17056myhostname='$myhostname'
5f80c64f
JH
17057myuname='$myuname'
17058n='$n'
2cc61e15 17059need_va_copy='$need_va_copy'
b4eb6b3d
JH
17060netdb_hlen_type='$netdb_hlen_type'
17061netdb_host_type='$netdb_host_type'
17062netdb_name_type='$netdb_name_type'
17063netdb_net_type='$netdb_net_type'
5f80c64f
JH
17064nm='$nm'
17065nm_opt='$nm_opt'
17066nm_so_opt='$nm_so_opt'
b4eb6b3d 17067nonxs_ext='$nonxs_ext'
5f80c64f 17068nroff='$nroff'
b4eb6b3d
JH
17069nvEUformat='$nvEUformat'
17070nvFUformat='$nvFUformat'
17071nvGUformat='$nvGUformat'
17072nveformat='$nveformat'
17073nvfformat='$nvfformat'
17074nvgformat='$nvgformat'
17075nvsize='$nvsize'
17076nvtype='$nvtype'
17077o_nonblock='$o_nonblock'
5f80c64f 17078obj_ext='$obj_ext'
b4eb6b3d 17079old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17080optimize='$optimize'
b4eb6b3d 17081orderlib='$orderlib'
5f80c64f
JH
17082osname='$osname'
17083osvers='$osvers'
b4eb6b3d 17084otherlibdirs='$otherlibdirs'
5f80c64f 17085package='$package'
b4eb6b3d
JH
17086pager='$pager'
17087passcat='$passcat'
17088patchlevel='$patchlevel'
5f80c64f 17089path_sep='$path_sep'
b4eb6b3d 17090perl5='$perl5'
5f80c64f 17091perl='$perl'
151e6568 17092perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17093perladmin='$perladmin'
9c839522 17094perllibs='$perllibs'
b4eb6b3d 17095perlpath='$perlpath'
5f80c64f 17096pg='$pg'
b4eb6b3d
JH
17097phostname='$phostname'
17098pidtype='$pidtype'
5f80c64f 17099plibpth='$plibpth'
b4eb6b3d 17100pm_apiversion='$pm_apiversion'
5f80c64f
JH
17101pmake='$pmake'
17102pr='$pr'
b4eb6b3d
JH
17103prefix='$prefix'
17104prefixexp='$prefixexp'
17105privlib='$privlib'
17106privlibexp='$privlibexp'
17107prototype='$prototype'
17108ptrsize='$ptrsize'
17109quadkind='$quadkind'
17110quadtype='$quadtype'
17111randbits='$randbits'
17112randfunc='$randfunc'
17113randseedtype='$randseedtype'
17114ranlib='$ranlib'
17115rd_nodata='$rd_nodata'
17116revision='$revision'
5f80c64f
JH
17117rm='$rm'
17118rmail='$rmail'
5440bc8e 17119run='$run'
5f80c64f 17120runnm='$runnm'
b4eb6b3d
JH
17121sPRIEUldbl='$sPRIEUldbl'
17122sPRIFUldbl='$sPRIFUldbl'
17123sPRIGUldbl='$sPRIGUldbl'
17124sPRIXU64='$sPRIXU64'
17125sPRId64='$sPRId64'
17126sPRIeldbl='$sPRIeldbl'
17127sPRIfldbl='$sPRIfldbl'
17128sPRIgldbl='$sPRIgldbl'
17129sPRIi64='$sPRIi64'
17130sPRIo64='$sPRIo64'
17131sPRIu64='$sPRIu64'
17132sPRIx64='$sPRIx64'
17133sSCNfldbl='$sSCNfldbl'
17134sched_yield='$sched_yield'
17135scriptdir='$scriptdir'
17136scriptdirexp='$scriptdirexp'
5f80c64f 17137sed='$sed'
b4eb6b3d
JH
17138seedfunc='$seedfunc'
17139selectminbits='$selectminbits'
17140selecttype='$selecttype'
5f80c64f
JH
17141sendmail='$sendmail'
17142sh='$sh'
17143shar='$shar'
17144sharpbang='$sharpbang'
b4eb6b3d
JH
17145shmattype='$shmattype'
17146shortsize='$shortsize'
17147shrpenv='$shrpenv'
5f80c64f 17148shsharp='$shsharp'
b4eb6b3d
JH
17149sig_count='$sig_count'
17150sig_name='$sig_name'
17151sig_name_init='$sig_name_init'
17152sig_num='$sig_num'
17153sig_num_init='$sig_num_init'
76d3c696 17154sig_size='$sig_size'
b4eb6b3d
JH
17155signal_t='$signal_t'
17156sitearch='$sitearch'
17157sitearchexp='$sitearchexp'
17158sitebin='$sitebin'
17159sitebinexp='$sitebinexp'
17160sitelib='$sitelib'
17161sitelib_stem='$sitelib_stem'
17162sitelibexp='$sitelibexp'
17163siteprefix='$siteprefix'
17164siteprefixexp='$siteprefixexp'
17165sizesize='$sizesize'
17166sizetype='$sizetype'
5f80c64f
JH
17167sleep='$sleep'
17168smail='$smail'
5f80c64f 17169so='$so'
b4eb6b3d
JH
17170sockethdr='$sockethdr'
17171socketlib='$socketlib'
17172socksizetype='$socksizetype'
5f80c64f
JH
17173sort='$sort'
17174spackage='$spackage'
17175spitshell='$spitshell'
5f80c64f 17176src='$src'
b4eb6b3d
JH
17177ssizetype='$ssizetype'
17178startperl='$startperl'
5f80c64f 17179startsh='$startsh'
b4eb6b3d
JH
17180static_ext='$static_ext'
17181stdchar='$stdchar'
17182stdio_base='$stdio_base'
17183stdio_bufsiz='$stdio_bufsiz'
17184stdio_cnt='$stdio_cnt'
17185stdio_filbuf='$stdio_filbuf'
17186stdio_ptr='$stdio_ptr'
17187stdio_stream_array='$stdio_stream_array'
17188strings='$strings'
5f80c64f 17189submit='$submit'
b4eb6b3d
JH
17190subversion='$subversion'
17191sysman='$sysman'
5f80c64f
JH
17192tail='$tail'
17193tar='$tar'
5440bc8e 17194targetarch='$targetarch'
5f80c64f
JH
17195tbl='$tbl'
17196tee='$tee'
17197test='$test'
b4eb6b3d
JH
17198timeincl='$timeincl'
17199timetype='$timetype'
5440bc8e 17200to='$to'
5f80c64f
JH
17201touch='$touch'
17202tr='$tr'
17203trnl='$trnl'
17204troff='$troff'
b4eb6b3d
JH
17205u16size='$u16size'
17206u16type='$u16type'
17207u32size='$u32size'
17208u32type='$u32type'
17209u64size='$u64size'
17210u64type='$u64type'
17211u8size='$u8size'
17212u8type='$u8type'
17213uidformat='$uidformat'
17214uidsign='$uidsign'
17215uidsize='$uidsize'
17216uidtype='$uidtype'
5f80c64f
JH
17217uname='$uname'
17218uniq='$uniq'
b4eb6b3d
JH
17219uquadtype='$uquadtype'
17220use5005threads='$use5005threads'
17221use64bitall='$use64bitall'
17222use64bitint='$use64bitint'
5440bc8e 17223usecrosscompile='$usecrosscompile'
5f80c64f 17224usedl='$usedl'
b4eb6b3d
JH
17225useithreads='$useithreads'
17226uselargefiles='$uselargefiles'
17227uselongdouble='$uselongdouble'
17228usemorebits='$usemorebits'
17229usemultiplicity='$usemultiplicity'
17230usemymalloc='$usemymalloc'
5f80c64f 17231usenm='$usenm'
b4eb6b3d
JH
17232useopcode='$useopcode'
17233useperlio='$useperlio'
17234useposix='$useposix'
9514c62b 17235usereentrant='$usereentrant'
b4eb6b3d
JH
17236usesfio='$usesfio'
17237useshrplib='$useshrplib'
29209bc5 17238usesocks='$usesocks'
b4eb6b3d
JH
17239usethreads='$usethreads'
17240usevendorprefix='$usevendorprefix'
17241usevfork='$usevfork'
5f80c64f
JH
17242usrinc='$usrinc'
17243uuname='$uuname'
b4eb6b3d
JH
17244uvXUformat='$uvXUformat'
17245uvoformat='$uvoformat'
17246uvsize='$uvsize'
17247uvtype='$uvtype'
17248uvuformat='$uvuformat'
17249uvxformat='$uvxformat'
17250vendorarch='$vendorarch'
17251vendorarchexp='$vendorarchexp'
17252vendorbin='$vendorbin'
17253vendorbinexp='$vendorbinexp'
17254vendorlib='$vendorlib'
17255vendorlib_stem='$vendorlib_stem'
17256vendorlibexp='$vendorlibexp'
17257vendorprefix='$vendorprefix'
17258vendorprefixexp='$vendorprefixexp'
17259version='$version'
d56c5707 17260versiononly='$versiononly'
5f80c64f 17261vi='$vi'
b4eb6b3d 17262voidflags='$voidflags'
5f80c64f 17263xlibpth='$xlibpth'
b4eb6b3d 17264xs_apiversion='$xs_apiversion'
3659ebf1
JH
17265yacc='$yacc'
17266yaccflags='$yaccflags'
5f80c64f
JH
17267zcat='$zcat'
17268zip='$zip'
17269EOT
17270
17271: Add in command line options if available
17272$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17273
17274: add special variables
17275$test -f $src/patchlevel.h && \
d00b958f 17276awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17277echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17278echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17279
17280: propagate old symbols
17281if $test -f UU/config.sh; then
381aa1ff 17282 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17283 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17284 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17285 set X `cat UU/oldsyms`
17286 shift
17287 case $# in
17288 0) ;;
17289 *)
17290 cat <<EOM
17291Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17292EOM
17293 echo "# Variables propagated from previous config.sh file." >>config.sh
17294 for sym in `cat UU/oldsyms`; do
17295 echo " Propagating $hint variable "'$'"$sym..."
17296 eval 'tmp="$'"${sym}"'"'
17297 echo "$tmp" | \
17298 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17299 done
17300 ;;
17301 esac
17302fi
17303
17304: Finish up by extracting the .SH files
17305case "$alldone" in
17306exit)
17307 $rm -rf UU
24ccb310 17308 echo "Extraction done."
5f80c64f
JH
17309 exit 0
17310 ;;
17311cont)
17312 ;;
17313'')
17314 dflt=''
17315 nostick=true
17316 $cat <<EOM
17317
17318If you'd like to make any changes to the config.sh file before I begin
17319to configure things, do it as a shell escape now (e.g. !vi config.sh).
17320
17321EOM
17322 rp="Press return or use a shell escape to edit config.sh:"
17323 . UU/myread
17324 nostick=''
17325 case "$ans" in
17326 '') ;;
17327 *) : in case they cannot read
17328 sh 1>&4 -c "$ans";;
17329 esac
17330 ;;
17331esac
17332
17333: if this fails, just run all the .SH files by hand
17334. ./config.sh
17335
17336echo " "
17337exec 1>&4
a43e8593 17338pwd=`pwd`
5f80c64f 17339. ./UU/extract
a43e8593 17340cd $pwd
5f80c64f
JH
17341
17342if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17343 dflt=y
17344 case "$silent" in
17345 true) ;;
17346 *)
17347 $cat <<EOM
17348
17349Now you need to generate make dependencies by running "$make depend".
17350You might prefer to run it in background: "$make depend > makedepend.out &"
17351It can take a while, so you might not want to run it right now.
17352
17353EOM
17354 ;;
17355 esac
17356 rp="Run $make depend now?"
17357 . UU/myread
17358 case "$ans" in
17359 y*)
3d5d58b1 17360 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17361 ;;
17362 *)
17363 echo "You must run '$make depend' then '$make'."
17364 ;;
17365 esac
17366elif test -f [Mm]akefile; then
17367 echo " "
17368 echo "Now you must run a $make."
17369else
24ccb310 17370 echo "Configure done."
5f80c64f
JH
17371fi
17372
17373if $test -f Policy.sh; then
17374 $cat <<EOM
17375
17376If you compile $package on a different machine or from a different object
17377directory, copy the Policy.sh file from this object directory to the
17378new one before you run Configure -- this will help you with most of
17379the policy defaults.
17380
17381EOM
17382fi
17383if $test -f config.msg; then
17384 echo "Hmm. I also noted the following information while running:"
17385 echo " "
17386 $cat config.msg >&4
17387 $rm -f config.msg
17388fi
17389$rm -f kit*isdone ark*isdone
17390$rm -rf UU
17391
17392: End of Configure
17393