This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The #11200 removed wrong (non-existent) target. Duh.
[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#
4b9d132a 23# Generated on Wed Jul 4 20:30:41 EET DST 2001 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62 25
283fdd21 26cat >c1$$ <<EOF
2304df62
AD
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
283fdd21 37cat >c2$$ <<EOF
2304df62
AD
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
283fdd21 43true || cat c1$$ c2$$
2304df62
AD
44true || exec sh $0 $argv:q
45
283fdd21 46(exit $?0) || cat c2$$
2304df62 47(exit $?0) || exec sh $0 $argv:q
283fdd21 48rm -f c1$$ c2$$
2304df62 49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
dfe9444c
AD
68 p_=\;
69 fi
39e571d4 70fi
a0d0e21e
LW
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
81
82for p in $paths
83do
8e07c86e
AD
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
87 esac
88done
89
8e07c86e 90PATH=.$p_$PATH
2304df62
AD
91export PATH
92
dfe9444c
AD
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
ff0cee69 99if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
2304df62 109 fi
dfe9444c 110fi
cf04f91f
JH
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
dfe9444c
AD
118case "$inksh/$needksh" in
119/[a-z]*)
c4f23d77 120 ENV=''
dfe9444c
AD
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
a0d0e21e
LW
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 136EOM
dfe9444c
AD
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
2304df62 148
bfb7748a
AD
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
2304df62
AD
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
8e07c86e 161cd UU && rm -f ./*
2304df62 162
6b356c8e
JH
163ccname=''
164ccversion=''
b4eb6b3d
JH
165ccsymbols=''
166cppccsymbols=''
167cppsymbols=''
5440bc8e
JH
168from=''
169run=''
170targetarch=''
171to=''
172usecrosscompile=''
9c839522 173perllibs=''
b4eb6b3d
JH
174dynamic_ext=''
175extensions=''
176known_extensions=''
177nonxs_ext=''
178static_ext=''
179useopcode=''
180useposix=''
ecfc5424 181d_bsd=''
40a7a20a 182d_eunice=''
2304df62
AD
183d_xenix=''
184eunicefix=''
185Mcc=''
dfe9444c 186ar=''
2304df62
AD
187awk=''
188bash=''
189bison=''
190byacc=''
191cat=''
192chgrp=''
193chmod=''
194chown=''
ecfc5424 195comm=''
2304df62
AD
196compress=''
197cp=''
198cpio=''
199cpp=''
200csh=''
201date=''
202echo=''
203egrep=''
204emacs=''
205expr=''
206find=''
207flex=''
2304df62 208grep=''
8ff267be 209gzip=''
2304df62
AD
210inews=''
211ksh=''
212less=''
213line=''
214lint=''
215ln=''
216lp=''
217lpr=''
218ls=''
219mail=''
220mailx=''
dfe9444c 221make=''
2304df62
AD
222mkdir=''
223more=''
224mv=''
693762b4 225nm=''
2304df62
AD
226nroff=''
227perl=''
228pg=''
229pmake=''
230pr=''
231rm=''
232rmail=''
233sed=''
234sendmail=''
2304df62
AD
235shar=''
236sleep=''
237smail=''
238sort=''
239submit=''
240tail=''
241tar=''
242tbl=''
693762b4 243tee=''
2304df62
AD
244test=''
245touch=''
246tr=''
247troff=''
248uname=''
249uniq=''
250uuname=''
251vi=''
252zcat=''
8ff267be 253zip=''
b4eb6b3d
JH
254full_ar=''
255full_sed=''
a0d0e21e 256libswanted=''
2304df62
AD
257hint=''
258myuname=''
85e6fe83
LW
259osname=''
260osvers=''
2304df62
AD
261Author=''
262Date=''
263Header=''
264Id=''
265Locker=''
266Log=''
267RCSfile=''
268Revision=''
269Source=''
270State=''
dfe9444c
AD
271_a=''
272_exe=''
273_o=''
4633a7c4
LW
274archobjs=''
275exe_ext=''
276firstmakefile=''
277lib_ext=''
278obj_ext=''
279path_sep=''
b4eb6b3d 280afs=''
a6d26a0d 281afsroot=''
b4eb6b3d
JH
282alignbytes=''
283ansi2knr=''
284archlib=''
285archlibexp=''
286d_archlib=''
287installarchlib=''
288archname=''
289myarchname=''
290d_atolf=''
291d_atoll=''
292baserev=''
293bin=''
294binexp=''
295installbin=''
296bincompat5005=''
297d_bincompat5005=''
298byteorder=''
2304df62 299cc=''
2304df62
AD
300ccflags=''
301cppflags=''
302ldflags=''
303lkflags=''
8e07c86e 304locincpth=''
2304df62 305optimize=''
b4eb6b3d 306cf_email=''
2304df62
AD
307cf_by=''
308cf_time=''
b4eb6b3d 309charsize=''
2304df62 310contains=''
b4eb6b3d 311cpp_stuff=''
2304df62
AD
312cpplast=''
313cppminus=''
314cpprun=''
315cppstdin=''
74cac757 316d__fwalk=''
b4eb6b3d
JH
317d_access=''
318d_accessx=''
319d_alarm=''
320d_attribut=''
321d_bcmp=''
322d_bcopy=''
323d_bzero=''
324d_casti32=''
325castflags=''
326d_castneg=''
327d_chown=''
328d_chroot=''
329d_chsize=''
330d_closedir=''
331d_void_closedir=''
4e0554ec 332d_cmsghdr_s=''
b4eb6b3d
JH
333d_const=''
334cryptlib=''
335d_crypt=''
336d_csh=''
337full_csh=''
338d_cuserid=''
339d_dbl_dig=''
2ef53570 340d_dbminitproto=''
b4eb6b3d
JH
341d_difftime=''
342d_dlerror=''
a0d0e21e 343d_dlopen=''
b4eb6b3d
JH
344d_dlsymun=''
345d_dosuid=''
346d_suidsafe=''
347d_drand48proto=''
348d_dup2=''
349d_eaccess=''
350d_endgrent=''
351d_endhent=''
352d_endnent=''
353d_endpent=''
354d_endpwent=''
355d_endsent=''
b363b713 356d_fchdir=''
b4eb6b3d
JH
357d_fchmod=''
358d_fchown=''
359d_fcntl=''
9d9004a9 360d_fcntl_can_lock=''
b4eb6b3d
JH
361d_fd_macros=''
362d_fd_set=''
363d_fds_bits=''
364d_fgetpos=''
365d_flexfnam=''
366d_flock=''
2ef53570 367d_flockproto=''
b4eb6b3d
JH
368d_fork=''
369d_fpos64_t=''
370d_frexpl=''
371d_fs_data_s=''
372d_fseeko=''
373d_fsetpos=''
374d_fstatfs=''
411ab01c 375d_fsync=''
b4eb6b3d
JH
376d_ftello=''
377d_ftime=''
378d_gettimeod=''
379d_Gconvert=''
380d_getcwd=''
381d_getespwnam=''
382d_getfsstat=''
383d_getgrent=''
384d_getgrps=''
385d_gethbyaddr=''
386d_gethbyname=''
387d_gethent=''
388aphostname=''
389d_gethname=''
390d_phostname=''
391d_uname=''
392d_gethostprotos=''
4e0554ec 393d_getitimer=''
b4eb6b3d
JH
394d_getlogin=''
395d_getmnt=''
396d_getmntent=''
397d_getnbyaddr=''
398d_getnbyname=''
399d_getnent=''
400d_getnetprotos=''
0c0643d0 401d_getpagsz=''
b4eb6b3d
JH
402d_getpent=''
403d_getpgid=''
404d_getpgrp2=''
405d_bsdgetpgrp=''
406d_getpgrp=''
407d_getppid=''
408d_getprior=''
409d_getpbyname=''
410d_getpbynumber=''
411d_getprotoprotos=''
412d_getprpwnam=''
413d_getpwent=''
414d_getsent=''
415d_getservprotos=''
416d_getspnam=''
417d_getsbyname=''
418d_getsbyport=''
a4f3eea9 419d_gnulibc=''
b4eb6b3d
JH
420d_hasmntopt=''
421d_htonl=''
422d_iconv=''
423d_inetaton=''
424d_int64_t=''
425d_isascii=''
426d_isnan=''
427d_isnanl=''
428d_killpg=''
429d_lchown=''
430d_ldbl_dig=''
431d_link=''
432d_locconv=''
433d_lockf=''
434d_longdbl=''
435longdblsize=''
436d_longlong=''
437longlongsize=''
438d_lseekproto=''
439d_lstat=''
440d_madvise=''
441d_mblen=''
442d_mbstowcs=''
443d_mbtowc=''
444d_memchr=''
445d_memcmp=''
446d_memcpy=''
447d_memmove=''
448d_memset=''
449d_mkdir=''
450d_mkdtemp=''
451d_mkfifo=''
452d_mkstemp=''
453d_mkstemps=''
454d_mktime=''
455d_mmap=''
456mmaptype=''
457d_modfl=''
e67aeab1 458d_modfl_pow32_bug=''
b4eb6b3d
JH
459d_mprotect=''
460d_msg=''
461d_msgctl=''
462d_msgget=''
4e0554ec 463d_msghdr_s=''
b4eb6b3d
JH
464d_msgrcv=''
465d_msgsnd=''
466d_msync=''
467d_munmap=''
468d_nice=''
2765b840 469d_nl_langinfo=''
b4eb6b3d
JH
470d_off64_t=''
471d_open3=''
472d_fpathconf=''
473d_pathconf=''
474d_pause=''
475d_pipe=''
476d_poll=''
2304df62 477d_portable=''
b4eb6b3d
JH
478d_old_pthread_create_joinable=''
479old_pthread_create_joinable=''
480d_pthread_yield=''
481d_sched_yield=''
482sched_yield=''
483d_qgcvt=''
484d_readdir=''
485d_rewinddir=''
486d_seekdir=''
487d_telldir=''
488d_readlink=''
4e0554ec
JH
489d_readv=''
490d_recvmsg=''
b4eb6b3d
JH
491d_rename=''
492d_rmdir=''
493d_safebcpy=''
494d_safemcpy=''
495d_sanemcmp=''
ef9f17be 496d_sbrkproto=''
b4eb6b3d
JH
497d_select=''
498d_sem=''
499d_semctl=''
500d_semget=''
501d_semop=''
4e0554ec 502d_sendmsg=''
b4eb6b3d
JH
503d_setegid=''
504d_seteuid=''
505d_setgrent=''
506d_setgrps=''
507d_sethent=''
4e0554ec 508d_setitimer=''
b4eb6b3d
JH
509d_setlinebuf=''
510d_setlocale=''
511d_setnent=''
512d_setpent=''
513d_setpgid=''
514d_setpgrp2=''
515d_bsdsetpgrp=''
516d_setpgrp=''
517d_setprior=''
518d_setproctitle=''
519d_setpwent=''
520d_setregid=''
521d_setresgid=''
522d_setresuid=''
523d_setreuid=''
524d_setrgid=''
525d_setruid=''
526d_setsent=''
527d_setsid=''
528d_setvbuf=''
529d_sfio=''
530usesfio=''
531d_shm=''
532d_shmat=''
533d_shmatprototype=''
534shmattype=''
535d_shmctl=''
536d_shmdt=''
537d_shmget=''
538d_sigaction=''
983dbef6 539d_sigprocmask=''
b4eb6b3d 540d_sigsetjmp=''
49a78c82 541d_sockatmark=''
2ef53570 542d_sockatmarkproto=''
b4eb6b3d
JH
543d_msg_ctrunc=''
544d_msg_dontroute=''
545d_msg_oob=''
546d_msg_peek=''
547d_msg_proxy=''
548d_oldsock=''
549d_scm_rights=''
550d_socket=''
551d_sockpair=''
552sockethdr=''
553socketlib=''
554d_socklen_t=''
555d_socks5_init=''
556d_sqrtl=''
eef837ea 557d_sresgproto=''
640374d0 558d_sresuproto=''
b4eb6b3d
JH
559d_statblks=''
560d_statfs_f_flags=''
561d_statfs_s=''
562d_fstatvfs=''
563d_statvfs=''
564d_stdio_cnt_lval=''
565d_stdio_ptr_lval=''
a7ffa9b9
NC
566d_stdio_ptr_lval_nochange_cnt=''
567d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
568d_stdiobase=''
569d_stdstdio=''
570stdio_base=''
571stdio_bufsiz=''
572stdio_cnt=''
573stdio_filbuf=''
574stdio_ptr=''
575d_index=''
576d_strchr=''
577d_strcoll=''
578d_strctcpy=''
579d_strerrm=''
580d_strerror=''
581d_sysernlst=''
582d_syserrlst=''
b3c85772 583d_strftime=''
b4eb6b3d
JH
584d_strtod=''
585d_strtol=''
586d_strtold=''
587d_strtoll=''
28e5dec8 588d_strtoq=''
b4eb6b3d
JH
589d_strtoul=''
590d_strtoull=''
591d_strtouq=''
592d_strxfrm=''
593d_symlink=''
594d_syscall=''
2ef53570 595d_syscallproto=''
b4eb6b3d
JH
596d_sysconf=''
597d_system=''
598d_tcgetpgrp=''
599d_tcsetpgrp=''
600d_telldirproto=''
601d_time=''
602timetype=''
603clocktype=''
604d_times=''
605d_truncate=''
606d_tzname=''
4e0554ec
JH
607d_u32align=''
608d_ualarm=''
b4eb6b3d
JH
609d_umask=''
610d_semctl_semid_ds=''
611d_semctl_semun=''
612d_union_semun=''
4e0554ec 613d_usleep=''
2ef53570 614d_usleepproto=''
b4eb6b3d
JH
615d_ustat=''
616d_vfork=''
617usevfork=''
618d_voidsig=''
619signal_t=''
620d_volatile=''
621d_charvspr=''
622d_vprintf=''
623d_wait4=''
624d_waitpid=''
625d_wcstombs=''
626d_wctomb=''
4e0554ec 627d_writev=''
b4eb6b3d 628dlext=''
85e6fe83
LW
629cccdlflags=''
630ccdlflags=''
2304df62 631dlsrc=''
232e078e 632ld=''
85e6fe83 633lddlflags=''
2304df62 634usedl=''
b4eb6b3d
JH
635doublesize=''
636ebcdic=''
637fflushNULL=''
638fflushall=''
639fpossize=''
640fpostype=''
5b463ca7 641gccosandvers=''
8a27cf78 642gccversion=''
b4eb6b3d
JH
643gidformat=''
644gidsign=''
645gidsize=''
646gidtype=''
647groupstype=''
648h_fcntl=''
649h_sysfile=''
650i_arpainet=''
651db_hashtype=''
652db_prefixtype=''
640374d0
JH
653db_version_major=''
654db_version_minor=''
655db_version_patch=''
b4eb6b3d
JH
656i_db=''
657i_dbm=''
658i_rpcsvcdbm=''
659d_dirnamlen=''
660direntrytype=''
661i_dirent=''
a0d0e21e 662i_dld=''
b4eb6b3d
JH
663i_dlfcn=''
664i_fcntl=''
665i_float=''
666i_gdbm=''
667d_grpasswd=''
668i_grp=''
669i_iconv=''
670i_ieeefp=''
671i_inttypes=''
2765b840 672i_langinfo=''
b4eb6b3d
JH
673i_libutil=''
674i_limits=''
675i_locale=''
676i_machcthr=''
677i_malloc=''
678i_math=''
679i_memory=''
680i_mntent=''
681i_ndbm=''
682i_netdb=''
683i_neterrno=''
684i_netinettcp=''
685i_niin=''
686i_sysin=''
687i_poll=''
688i_prot=''
689i_pthread=''
690d_pwage=''
691d_pwchange=''
692d_pwclass=''
693d_pwcomment=''
694d_pwexpire=''
695d_pwgecos=''
696d_pwpasswd=''
697d_pwquota=''
698i_pwd=''
699i_sfio=''
700i_shadow=''
701i_socks=''
702i_stddef=''
703i_stdlib=''
704i_string=''
705strings=''
706i_sunmath=''
707i_sysaccess=''
708i_sysdir=''
709i_sysfile=''
710d_voidtty=''
711i_bsdioctl=''
712i_sysfilio=''
713i_sysioctl=''
714i_syssockio=''
715i_syslog=''
716i_sysmman=''
717i_sysmode=''
718i_sysmount=''
719i_sysndir=''
720i_sysparam=''
721i_sysresrc=''
722i_syssecrt=''
723i_sysselct=''
724i_sysstat=''
725i_sysstatfs=''
726i_sysstatvfs=''
727i_systimes=''
728i_systypes=''
729i_sysuio=''
730i_sysun=''
731i_sysutsname=''
732i_sysvfs=''
733i_syswait=''
734i_sgtty=''
735i_termio=''
736i_termios=''
737i_systime=''
738i_systimek=''
739i_time=''
740timeincl=''
741i_unistd=''
742i_ustat=''
743i_utime=''
744i_values=''
745i_stdarg=''
746i_varargs=''
747i_varhdr=''
748i_vfork=''
749inc_version_list=''
750inc_version_list_init=''
751installprefix=''
752installprefixexp=''
753installstyle=''
754installusrbinperl=''
755intsize=''
756longsize=''
757shortsize=''
4b661809 758issymlink=''
2304df62 759libc=''
b4eb6b3d
JH
760ldlibpthname=''
761libperl=''
762shrpenv=''
763useshrplib=''
a0d0e21e 764glibpth=''
2304df62 765libpth=''
8e07c86e 766loclibpth=''
2304df62
AD
767plibpth=''
768xlibpth=''
1cfa4ec7 769ignore_versioned_solibs=''
2304df62 770libs=''
43999f95
JH
771libsdirs=''
772libsfiles=''
773libsfound=''
13b3f787 774libspath=''
85e6fe83 775lns=''
b4eb6b3d
JH
776d_PRIEUldbl=''
777d_PRIFUldbl=''
778d_PRIGUldbl=''
779d_PRIeldbl=''
780d_PRIfldbl=''
781d_PRIgldbl=''
782d_SCNfldbl=''
783sPRIEUldbl=''
784sPRIFUldbl=''
785sPRIGUldbl=''
786sPRIeldbl=''
787sPRIfldbl=''
788sPRIgldbl=''
789sSCNfldbl=''
790lseeksize=''
791lseektype=''
8ff267be 792make_set_make=''
b4eb6b3d
JH
793d_mymalloc=''
794freetype=''
795mallocobj=''
796mallocsrc=''
797malloctype=''
798usemymalloc=''
799installman1dir=''
800man1dir=''
801man1direxp=''
802man1ext=''
803installman3dir=''
804man3dir=''
805man3direxp=''
806man3ext=''
807modetype=''
808multiarch=''
809mydomain=''
810myhostname=''
811phostname=''
2304df62
AD
812c=''
813n=''
b4eb6b3d
JH
814d_eofnblk=''
815eagain=''
816o_nonblock=''
817rd_nodata=''
2cc61e15 818need_va_copy=''
b4eb6b3d
JH
819netdb_hlen_type=''
820netdb_host_type=''
821netdb_name_type=''
822netdb_net_type=''
823groupcat=''
824hostcat=''
825passcat=''
826orderlib=''
827ranlib=''
828d_perl_otherlibdirs=''
829otherlibdirs=''
2304df62
AD
830package=''
831spackage=''
b4eb6b3d
JH
832pager=''
833api_revision=''
834api_subversion=''
835api_version=''
836api_versionstring=''
837patchlevel=''
151e6568 838perl_patchlevel=''
b4eb6b3d
JH
839revision=''
840subversion=''
841version=''
842perl5=''
843perladmin=''
844perlpath=''
845d_nv_preserves_uv=''
846d_nv_preserves_uv_bits=''
847i16size=''
848i16type=''
849i32size=''
850i32type=''
851i64size=''
852i64type=''
853i8size=''
854i8type=''
855ivsize=''
856ivtype=''
857nvsize=''
858nvtype=''
859u16size=''
860u16type=''
861u32size=''
862u32type=''
863u64size=''
864u64type=''
865u8size=''
866u8type=''
867uvsize=''
868uvtype=''
869ivdformat=''
870nvEUformat=''
871nvFUformat=''
872nvGUformat=''
873nveformat=''
874nvfformat=''
875nvgformat=''
876uvXUformat=''
877uvoformat=''
878uvuformat=''
879uvxformat=''
880pidtype=''
881prefix=''
882prefixexp=''
883installprivlib=''
884privlib=''
885privlibexp=''
886prototype=''
887ptrsize=''
888d_PRIXU64=''
889d_PRId64=''
890d_PRIi64=''
891d_PRIo64=''
892d_PRIu64=''
893d_PRIx64=''
894sPRIXU64=''
895sPRId64=''
896sPRIi64=''
897sPRIo64=''
898sPRIu64=''
899sPRIx64=''
900d_quad=''
901quadkind=''
902quadtype=''
903uquadtype=''
904drand01=''
905randbits=''
906randfunc=''
907randseedtype=''
908seedfunc=''
909installscript=''
910scriptdir=''
911scriptdirexp=''
912selectminbits=''
913selecttype=''
8ff267be 914sh=''
b4eb6b3d
JH
915sig_count=''
916sig_name=''
917sig_name_init=''
918sig_num=''
919sig_num_init=''
76d3c696 920sig_size=''
b4eb6b3d
JH
921installsitearch=''
922sitearch=''
923sitearchexp=''
924installsitebin=''
925sitebin=''
926sitebinexp=''
927installsitelib=''
928sitelib=''
929sitelib_stem=''
930sitelibexp=''
931siteprefix=''
932siteprefixexp=''
933sizesize=''
934sizetype=''
a0d0e21e 935so=''
b4eb6b3d 936socksizetype=''
2304df62
AD
937sharpbang=''
938shsharp=''
939spitshell=''
dfe9444c 940src=''
b4eb6b3d
JH
941ssizetype=''
942startperl=''
2304df62 943startsh=''
b4eb6b3d
JH
944stdchar=''
945d_stdio_stream_array=''
946stdio_stream_array=''
947sysman=''
5ff3f7a4 948trnl=''
b4eb6b3d
JH
949uidformat=''
950uidsign=''
951uidsize=''
952uidtype=''
953archname64=''
954use64bitall=''
955use64bitint=''
956ccflags_uselargefiles=''
957ldflags_uselargefiles=''
958libswanted_uselargefiles=''
959uselargefiles=''
960uselongdouble=''
961usemorebits=''
962usemultiplicity=''
2304df62 963nm_opt=''
40a7a20a 964nm_so_opt=''
2304df62
AD
965runnm=''
966usenm=''
b4eb6b3d 967useperlio=''
29209bc5 968usesocks=''
b4eb6b3d
JH
969d_oldpthreads=''
970use5005threads=''
971useithreads=''
9514c62b 972usereentrant=''
b4eb6b3d 973usethreads=''
2304df62 974incpath=''
2304df62
AD
975mips_type=''
976usrinc=''
b4eb6b3d
JH
977d_vendorarch=''
978installvendorarch=''
979vendorarch=''
980vendorarchexp=''
981d_vendorbin=''
982installvendorbin=''
983vendorbin=''
984vendorbinexp=''
985d_vendorlib=''
986installvendorlib=''
987vendorlib=''
988vendorlib_stem=''
989vendorlibexp=''
990usevendorprefix=''
991vendorprefix=''
992vendorprefixexp=''
d56c5707 993versiononly=''
b4eb6b3d
JH
994defvoidused=''
995voidflags=''
996pm_apiversion=''
997xs_apiversion=''
3659ebf1
JH
998yacc=''
999yaccflags=''
2304df62
AD
1000CONFIG=''
1001
ecfc5424
AD
1002define='define'
1003undef='undef'
1004smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1005rmlist=''
1006
1007: We must find out about Eunice early
1008eunicefix=':'
1009if test -f /etc/unixtovms; then
1010 eunicefix=/etc/unixtovms
1011fi
1012if test -f /etc/unixtovms.exe; then
1013 eunicefix=/etc/unixtovms.exe
1014fi
1015
b4eb6b3d 1016i_whoami=''
6b356c8e
JH
1017ccname=''
1018ccversion=''
9c839522 1019perllibs=''
b4eb6b3d
JH
1020: set useposix=false in your hint file to disable the POSIX extension.
1021useposix=true
1022: set useopcode=false in your hint file to disable the Opcode extension.
1023useopcode=true
dfe9444c 1024: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 1025_exe=''
dfe9444c
AD
1026: Extra object files, if any, needed on this platform.
1027archobjs=''
b4eb6b3d 1028archname=''
ff935051
JH
1029: Possible local include directories to search.
1030: Set locincpth to "" in a hint file to defeat local include searches.
1031locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1032locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1033:
1034: no include file wanted by default
1035inclwanted=''
1036
b4eb6b3d 1037groupstype=''
64615a5e 1038libnames=''
732c9516
JH
1039: change the next line if compiling for Xenix/286 on Xenix/386
1040xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1041: Possible local library directories to search.
1042loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1043loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1044
1045: general looking path for locating libraries
5869b1f1 1046glibpth="/lib /usr/lib $xlibpth"
732c9516 1047glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1048test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1049test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1050
1051: Private path used by Configure to find libraries. Its value
1052: is prepended to libpth. This variable takes care of special
1053: machines, like the mips. Usually, it should be empty.
1054plibpth=''
1055
1cfa4ec7
GS
1056: default library list
1057libswanted=''
921b2963 1058: some systems want to use only the non-versioned libso:s
1cfa4ec7 1059ignore_versioned_solibs=''
b4eb6b3d
JH
1060archname64=''
1061ccflags_uselargefiles=''
1062ldflags_uselargefiles=''
1063libswanted_uselargefiles=''
1064: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1065: set usesocks on the Configure command line to enable socks.
b4eb6b3d 1066: set usethreads on the Configure command line to enable threads.
cd040c5e 1067usereentrant='undef'
b4eb6b3d
JH
1068: full support for void wanted by default
1069defvoidused=15
1070
ecfc5424 1071: List of libraries we want.
693762b4 1072: If anyone needs -lnet, put it in a hint file.
997d70a2 1073libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1074libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1075libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1076libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1077: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1078: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1079glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1080glibpth="/usr/shlib $glibpth"
1081: Do not use vfork unless overridden by a hint file.
1082usevfork=false
1083
8ff267be 1084: Find the basic shell for Bourne shell scripts
1085case "$sh" in
1086'')
8ff267be 1087 case "$SYSTYPE" in
1088 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1089 *) xxx='/bin/sh';;
1090 esac
1091 if test -f "$xxx"; then
1092 sh="$xxx"
1093 else
1094 : Build up a list and do a single loop so we can 'break' out.
1095 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1096 for xxx in sh bash ksh pdksh ash; do
1097 for p in $pth; do
1098 try="$try ${p}/${xxx}"
1099 done
1100 done
1101 for xxx in $try; do
1102 if test -f "$xxx"; then
1103 sh="$xxx";
8ff267be 1104 break
1105 elif test -f "$xxx.exe"; then
1106 sh="$xxx";
8ff267be 1107 break
1108 fi
1109 done
1110 fi
1111 ;;
1112esac
1113
1114case "$sh" in
1115'') cat <<EOM >&2
1116$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1117
8ff267be 1118Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1119Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1120we'll try to straighten this all out.
8ff267be 1121EOM
1122 exit 1
1123 ;;
1124esac
1125
760ac839 1126: see if sh knows # comments
73614538 1127if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1128 shsharp=true
1129 spitshell=cat
760ac839
LW
1130 xcat=/bin/cat
1131 test -f $xcat || xcat=/usr/bin/cat
5440bc8e
JH
1132 echo "#!$xcat" >sharp
1133 $eunicefix sharp
1134 chmod +x sharp
1135 ./sharp > today
760ac839 1136 if test -s today; then
760ac839
LW
1137 sharpbang='#!'
1138 else
5440bc8e
JH
1139 echo "#! $xcat" > sharp
1140 $eunicefix sharp
1141 chmod +x sharp
1142 ./sharp > today
760ac839 1143 if test -s today; then
760ac839
LW
1144 sharpbang='#! '
1145 else
760ac839
LW
1146 sharpbang=': use '
1147 fi
1148 fi
1149else
dfe9444c 1150 echo " "
8ff267be 1151 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1152 shsharp=false
1153 cd ..
1154 echo "exec grep -v '^[ ]*#'" >spitshell
1155 chmod +x spitshell
1156 $eunicefix spitshell
1157 spitshell=`pwd`/spitshell
1158 cd UU
1159 echo "I presume that if # doesn't work, #! won't work either!"
1160 sharpbang=': use '
1161fi
5440bc8e 1162rm -f sharp today
760ac839
LW
1163
1164: figure out how to guarantee sh startup
8ff267be 1165case "$startsh" in
1166'') startsh=${sharpbang}${sh} ;;
1167*)
760ac839 1168esac
5440bc8e 1169cat >sharp <<EOSS
760ac839
LW
1170$startsh
1171set abc
1172test "$?abc" != 1
1173EOSS
1174
5440bc8e
JH
1175chmod +x sharp
1176$eunicefix sharp
1177if ./sharp; then
8ff267be 1178 : echo "Yup, it does."
760ac839 1179else
dfe9444c
AD
1180 echo "Hmm... '$startsh' does not guarantee sh startup..."
1181 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1182fi
5440bc8e 1183rm -f sharp
760ac839 1184
aebf16e7
AD
1185
1186: Save command line options in file UU/cmdline.opt for later use in
1187: generating config.sh.
1188cat > cmdline.opt <<EOSH
1189# Configure command line arguments.
1190config_arg0='$0'
1191config_args='$*'
1192config_argc=$#
1193EOSH
1194argn=1
ee45ea83
IZ
1195args_exp=''
1196args_sep=''
aebf16e7
AD
1197for arg in "$@"; do
1198 cat >>cmdline.opt <<EOSH
1199config_arg$argn='$arg'
1200EOSH
ee45ea83
IZ
1201 # Extreme backslashitis: replace each ' by '"'"'
1202 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1203$arg
1204EOC
1205 arg_exp=`cat cmdl.opt`
1206 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1207 argn=`expr $argn + 1`
ee45ea83 1208 args_sep=' '
aebf16e7 1209done
ee45ea83
IZ
1210# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1211# used by ./hints/os2.sh
1212rm -f cmdl.opt
aebf16e7 1213
2304df62
AD
1214: produce awk script to parse command line options
1215cat >options.awk <<'EOF'
1216BEGIN {
02e93a22 1217 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1218
1219 len = length(optstr);
1220 for (i = 1; i <= len; i++) {
1221 c = substr(optstr, i, 1);
1222 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1223 if (a == ":") {
1224 arg[c] = 1;
1225 i++;
1226 }
1227 opt[c] = 1;
1228 }
1229}
1230{
1231 expect = 0;
1232 str = $0;
1233 if (substr(str, 1, 1) != "-") {
1234 printf("'%s'\n", str);
1235 next;
1236 }
1237 len = length($0);
1238 for (i = 2; i <= len; i++) {
1239 c = substr(str, i, 1);
1240 if (!opt[c]) {
1241 printf("-%s\n", substr(str, i));
1242 next;
1243 }
1244 printf("-%s\n", c);
1245 if (arg[c]) {
1246 if (i < len)
1247 printf("'%s'\n", substr(str, i + 1));
1248 else
1249 expect = 1;
1250 next;
1251 }
1252 }
1253}
1254END {
1255 if (expect)
1256 print "?";
1257}
1258EOF
1259
1260: process the command line options
4633a7c4
LW
1261set X `for arg in "$@"; do echo "X$arg"; done |
1262 sed -e s/X// | awk -f options.awk`
2304df62
AD
1263eval "set $*"
1264shift
1265rm -f options.awk
1266
1267: set up default values
1268fastread=''
1269reuseval=false
1270config_sh=''
1271alldone=''
1272error=''
1273silent=''
1274extractsh=''
ecfc5424 1275override=''
16d20bd9 1276knowitall=''
02e93a22 1277rm -f optdef.sh posthint.sh
28757baa 1278cat >optdef.sh <<EOS
1279$startsh
1280EOS
2304df62 1281
dfe9444c 1282
2304df62
AD
1283: option parsing
1284while test $# -gt 0; do
1285 case "$1" in
1286 -d) shift; fastread=yes;;
1287 -e) shift; alldone=cont;;
1288 -f)
1289 shift
1290 cd ..
1291 if test -r "$1"; then
1292 config_sh="$1"
1293 else
a0d0e21e 1294 echo "$me: cannot read config file $1." >&2
2304df62
AD
1295 error=true
1296 fi
1297 cd UU
1298 shift;;
1299 -h) shift; error=true;;
1300 -r) shift; reuseval=true;;
dfe9444c 1301 -s) shift; silent=true; realsilent=true;;
2304df62 1302 -E) shift; alldone=exit;;
16d20bd9 1303 -K) shift; knowitall=true;;
ecfc5424 1304 -O) shift; override=true;;
dfe9444c 1305 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1306 -D)
1307 shift
1308 case "$1" in
1309 *=)
1310 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1311 echo "$me: ignoring -D $1" >&2
1312 ;;
ecfc5424 1313 *=*) echo "$1" | \
1aef975c
AD
1314 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1315 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1316 esac
1317 shift
1318 ;;
1319 -U)
1320 shift
1321 case "$1" in
1aef975c 1322 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1323 *=*)
1324 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1325 echo "$me: ignoring -U $1" >&2
1326 ;;
1aef975c 1327 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1328 esac
1329 shift
1330 ;;
02e93a22
JH
1331 -A)
1332 shift
1333 xxx=''
1334 yyy="$1"
02e93a22 1335 zzz=''
5f83a3e9 1336 uuu=undef
02e93a22 1337 case "$yyy" in
5f83a3e9
JH
1338 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1339 case "$zzz" in
1340 *:*) zzz='' ;;
1341 *) xxx=append
1342 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1343 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1344 esac
1345 ;;
1346 esac
1347 case "$xxx" in
1348 '') case "$yyy" in
1349 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1350 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1351 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1352 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1353 *) xxx=`echo $yyy|sed 's!:.*!!'`
1354 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1355 esac
1356 ;;
1357 esac
02e93a22
JH
1358 case "$xxx" in
1359 append)
5f83a3e9 1360 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1361 clear)
5f83a3e9 1362 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1363 define)
1364 case "$zzz" in
1365 '') zzz=define ;;
1366 esac
5f83a3e9 1367 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1368 eval)
5f83a3e9 1369 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1370 prepend)
5f83a3e9 1371 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1372 undef)
1373 case "$zzz" in
1374 '') zzz="$uuu" ;;
1375 esac
5f83a3e9
JH
1376 echo "$yyy=$zzz" >> posthint.sh ;;
1377 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1378 esac
bde6b06b 1379 shift
02e93a22 1380 ;;
dfe9444c 1381 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1382 exit 0;;
2304df62 1383 --) break;;
a0d0e21e 1384 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1385 *) break;;
1386 esac
1387done
1388
1389case "$error" in
1390true)
1391 cat >&2 <<EOM
2afac517 1392Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1393 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1394 -d : use defaults for all answers.
1395 -e : go on without questioning past the production of config.sh.
1396 -f : specify an alternate default configuration file.
1397 -h : print this help message and exit (with an error status).
1398 -r : reuse C symbols value if possible (skips costly nm extraction).
1399 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1400 -D : define symbol to have some value:
1401 -D symbol symbol gets the value 'define'
1402 -D symbol=value symbol gets the value 'value'
2304df62 1403 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1404 -K : do not use unless you know what you are doing.
ecfc5424 1405 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1406 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1407 -U : undefine symbol:
1408 -U symbol symbol gets the value 'undef'
1409 -U symbol= symbol gets completely empty
02e93a22 1410 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1411 -A symbol=value append " "value to symbol
02e93a22
JH
1412 -A append:symbol=value append value to symbol
1413 -A define:symbol=value define symbol to have value
02e93a22
JH
1414 -A clear:symbol define symbol to be ''
1415 -A define:symbol define symbol to be 'define'
1416 -A eval:symbol=value define symbol to be eval of value
1417 -A prepend:symbol=value prepend value to symbol
1418 -A undef:symbol define symbol to be 'undef'
1419 -A undef:symbol= define symbol to be ''
2304df62
AD
1420 -V : print version number and exit (with a zero status).
1421EOM
1422 exit 1
1423 ;;
1424esac
1425
dfe9444c
AD
1426: Sanity checks
1427case "$fastread$alldone" in
1428yescont|yesexit) ;;
1429*)
aaeb8e51
GS
1430 case "$extractsh" in
1431 true) ;;
1432 *)
1433 if test ! -t 0; then
1434 echo "Say 'sh Configure', not 'sh <Configure'"
1435 exit 1
1436 fi
1437 ;;
1438 esac
dfe9444c
AD
1439 ;;
1440esac
1441
2304df62
AD
1442exec 4>&1
1443case "$silent" in
1444true) exec 1>/dev/null;;
1445esac
1446
ecfc5424 1447: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1448touch optdef.sh
1449. ./optdef.sh
02e93a22
JH
1450: create the posthint manipulation script and leave the file out there...
1451touch posthint.sh
a0d0e21e 1452
2304df62 1453: set package name
85e6fe83 1454package=perl5
b4eb6b3d
JH
1455first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1456last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1457case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1458ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1459*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1460esac
2304df62 1461
2304df62
AD
1462: Some greps do not return status, grrr.
1463echo "grimblepritz" >grimble
1464if grep blurfldyick grimble >/dev/null 2>&1 ; then
1465 contains=contains
1466elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1467 contains=grep
1468else
1469 contains=contains
1470fi
1471rm -f grimble
1472: the following should work in any shell
1473case "$contains" in
1474contains*)
1475 echo " "
1476 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1477 cat >contains <<'EOSS'
1478grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1479EOSS
1480chmod +x contains
1481esac
1482
dfe9444c
AD
1483: Find the path to the source tree
1484case "$src" in
1485'') case "$0" in
b233458b
JH
1486 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1487 case "$src" in
1488 /*) ;;
8504afb7 1489 .) ;;
b233458b
JH
1490 *) src=`cd ../$src && pwd` ;;
1491 esac
1492 ;;
dfe9444c
AD
1493 *) src='.';;
1494 esac;;
1495esac
1496case "$src" in
1497'') src=/
1498 rsrc=/
1499 ;;
1500/*) rsrc="$src";;
1501*) rsrc="../$src";;
1502esac
1503if test -f $rsrc/Configure && \
1504 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1505then
1506 : found it, so we are ok.
1507else
1508 rsrc=''
1509 for src in . .. ../.. ../../.. ../../../..; do
1510 if test -f ../$src/Configure && \
1511 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1512 then
1513 rsrc=../$src
1514 break
1515 fi
1516 done
1517fi
1518case "$rsrc" in
1519'')
1520 cat <<EOM >&4
1521
1522Sorry, I can't seem to locate the source dir for $package. Please start
1523Configure with an explicit path -- i.e. /some/path/Configure.
1524
1525EOM
1526 exit 1
1527 ;;
1528../.) rsrc='..';;
1529*)
1530 echo " "
1531 echo "Sources for $package found in \"$src\"." >&4
1532 ;;
1533esac
1534
1535: script used to extract .SH files with variable substitutions
1536cat >extract <<'EOS'
a02608de 1537PERL_CONFIG_SH=true
dfe9444c 1538echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1539if test -f MANIFEST; then
1540 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1541else
1542 echo "(Looking for .SH files under the source directory.)"
1543 set x `(cd $src; find . -name "*.SH" -print)`
1544fi
1545shift
1546case $# in
15470) set x `(cd $src; echo *.SH)`; shift;;
1548esac
1549if test ! -f $src/$1; then
1550 shift
1551fi
1552mkdir_p='
1553name=$1;
1554create="";
1555while test $name; do
1556 if test ! -d "$name"; then
1557 create="$name $create";
1558 name=`echo $name | sed -e "s|^[^/]*$||"`;
1559 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1560 else
1561 name="";
1562 fi;
1563done;
1564for file in $create; do
1565 mkdir $file;
1566done
1567'
1568for file in $*; do
1569 case "$src" in
1570 ".")
1571 case "$file" in
1572 */*)
1573 dir=`expr X$file : 'X\(.*\)/'`
1574 file=`expr X$file : 'X.*/\(.*\)'`
1575 (cd $dir && . ./$file)
1576 ;;
1577 *)
1578 . ./$file
1579 ;;
1580 esac
1581 ;;
1582 *)
1583 case "$file" in
1584 */*)
1585 dir=`expr X$file : 'X\(.*\)/'`
1586 file=`expr X$file : 'X.*/\(.*\)'`
1587 (set x $dir; shift; eval $mkdir_p)
1588 sh <$src/$dir/$file
1589 ;;
1590 *)
1591 sh <$src/$file
1592 ;;
1593 esac
1594 ;;
1595 esac
1596done
1597if test -f $src/config_h.SH; then
1598 if test ! -f config.h; then
1599 : oops, they left it out of MANIFEST, probably, so do it anyway.
1600 . $src/config_h.SH
1601 fi
1602fi
1603EOS
1604
1605: extract files and exit if asked to do so
1606case "$extractsh" in
1607true)
1608 case "$realsilent" in
1609 true) ;;
1610 *) exec 1>&4;;
1611 esac
1612 case "$config_sh" in
1613 '') config_sh='config.sh';;
1614 esac
1615 echo " "
1616 echo "Fetching answers from $config_sh..."
1617 cd ..
1618 . $config_sh
1619 test "$override" && . ./optdef.sh
1620 echo " "
1621 . UU/extract
1622 rm -rf UU
24ccb310 1623 echo "Extraction done."
dfe9444c
AD
1624 exit 0
1625 ;;
1626esac
1627
1628: Eunice requires " " instead of "", can you believe it
1629echo " "
1630: Here we go...
1631echo "Beginning of configuration questions for $package."
1632
1633trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1634
2304df62
AD
1635: first determine how to suppress newline on echo command
1636echo " "
1637echo "Checking echo to see how to suppress newlines..."
1638(echo "hi there\c" ; echo " ") >.echotmp
1639if $contains c .echotmp >/dev/null 2>&1 ; then
1640 echo "...using -n."
1641 n='-n'
1642 c=''
1643else
1644 cat <<'EOM'
1645...using \c
1646EOM
1647 n=''
1648 c='\c'
1649fi
1650echo $n "The star should be here-->$c"
1651echo '*'
1652rm -f .echotmp
1653
1654: Now test for existence of everything in MANIFEST
1655echo " "
dfe9444c 1656if test -f $rsrc/MANIFEST; then
2304df62 1657 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1658 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1659 rm -f missing
dfe9444c 1660 tmppwd=`pwd`
2304df62 1661 for filelist in x??; do
dfe9444c 1662 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1663 done
1664 if test -s missing; then
1665 cat missing >&4
1666 cat >&4 <<'EOM'
1667
1668THIS PACKAGE SEEMS TO BE INCOMPLETE.
1669
1670You have the option of continuing the configuration process, despite the
1671distinct possibility that your kit is damaged, by typing 'y'es. If you
1672do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1673and contact the author (perlbug@perl.org).
2304df62
AD
1674
1675EOM
1676 echo $n "Continue? [n] $c" >&4
1677 read ans
1678 case "$ans" in
1679 y*)
1680 echo "Continuing..." >&4
1681 rm -f missing
1682 ;;
1683 *)
1684 echo "ABORTING..." >&4
1685 kill $$
1686 ;;
1687 esac
1688 else
dfe9444c 1689 echo "Looks good..."
2304df62
AD
1690 fi
1691else
1692 echo "There is no MANIFEST file. I hope your kit is complete !"
1693fi
1694rm -f missing x??
1695
5ff3f7a4
GS
1696echo " "
1697: Find the appropriate value for a newline for tr
1698if test -n "$DJGPP"; then
1699 trnl='\012'
1700fi
1701if test X"$trnl" = X; then
1702 case "`echo foo|tr '\n' x 2>/dev/null`" in
1703 foox) trnl='\n' ;;
1704 esac
1705fi
1706if test X"$trnl" = X; then
1707 case "`echo foo|tr '\012' x 2>/dev/null`" in
1708 foox) trnl='\012' ;;
1709 esac
1710fi
1711if test X"$trnl" = X; then
1712 cat <<EOM >&2
1713
1714$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1715
1716EOM
1717 exit 1
1718fi
1719
2304df62
AD
1720: compute the number of columns on the terminal for proper question formatting
1721case "$COLUMNS" in
1722'') COLUMNS='80';;
1723esac
1724
1725: set up the echo used in my read
1726myecho="case \"\$xxxm\" in
1727'') echo $n \"\$rp $c\" >&4;;
1728*) case \"\$rp\" in
1729 '') echo $n \"[\$xxxm] $c\";;
1730 *)
1731 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1732 echo \"\$rp\" >&4
1733 echo $n \"[\$xxxm] $c\" >&4
1734 else
1735 echo $n \"\$rp [\$xxxm] $c\" >&4
1736 fi
1737 ;;
1738 esac;;
1739esac"
1740
1741: now set up to do reads with possible shell escape and default assignment
1742cat <<EOSC >myread
28757baa 1743$startsh
2304df62
AD
1744xxxm=\$dflt
1745$myecho
1746ans='!'
1747case "\$fastread" in
1748yes) case "\$dflt" in
1749 '') ;;
1750 *) ans='';
1751 case "\$silent-\$rp" in
1752 true-) ;;
1753 *) echo " " >&4;;
1754 esac;;
1755 esac;;
1756*) case "\$silent" in
1757 true) case "\$rp" in
1758 '') ans='';;
1759 esac;;
1760 esac;;
1761esac
1762while expr "X\$ans" : "X!" >/dev/null; do
1763 read answ
1764 set x \$xxxm
1765 shift
dfe9444c 1766 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1767 case "\$answ" in
dfe9444c
AD
1768 "!")
1769 sh 1>&4
1770 echo " "
1771 $myecho
1772 ;;
1773 !*)
1774 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1775 shift
1776 sh 1>&4 -c "\$*"
1777 echo " "
1778 $myecho
1779 ;;
2304df62
AD
1780 "\$ans")
1781 case "\$ans" in
ecfc5424
AD
1782 \\&*)
1783 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1784 shift
1785 case "\$1" in
1786 -d)
1787 fastread=yes
40a7a20a 1788 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1789 ;;
1790 -*)
40a7a20a 1791 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1792 ;;
1793 esac
1794 $myecho
1795 ans=!
1796 ;;
2304df62
AD
1797 esac;;
1798 *)
1799 case "\$aok" in
1800 y)
1801 echo "*** Substitution done -- please confirm."
1802 xxxm="\$ans"
c9795ab7 1803 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1804 xxxm="\$ans"
1805 ans=!
1806 ;;
1807 *)
1808 echo "*** Error -- try again."
1809 ans=!
1810 ;;
1811 esac
1812 $myecho
1813 ;;
1814 esac
1815 case "\$ans\$xxxm\$nostick" in
1816 '')
1817 ans=!
1818 $myecho
1819 ;;
1820 esac
1821done
1822case "\$ans" in
1823'') ans="\$xxxm";;
1824esac
1825EOSC
1826
1827: create .config dir to save info across Configure sessions
1828test -d ../.config || mkdir ../.config
1829cat >../.config/README <<EOF
1830This directory created by Configure to save information that should
dfe9444c 1831persist across sessions for $package.
2304df62
AD
1832
1833You may safely delete it if you wish.
1834EOF
1835
9507cadf 1836xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1837case "$usedevel" in
0107c034 1838$define|true|[yY]*) ;;
9507cadf 1839*) case "$xversion" in
0107c034
JH
1840 *[13579])
1841 cat >&4 <<EOH
1842*** WHOA THERE!!! ***
1843
1844 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1845 The version of this $package distribution is $xversion, that is, odd,
1846 (as opposed to even) and that signifies a development release.
3d5d58b1 1847 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1848
1849 Do ***NOT*** install this into production use.
1850 Data corruption and crashes are possible.
1851
1852 It is most seriously suggested that you do not continue any further
1853 unless you want to help in developing and debugging Perl.
1854
6adc6a45
JH
1855 If you *still* want to build perl, you can answer 'y' now,
1856 or pass -Dusedevel to Configure.
1857
0107c034
JH
1858EOH
1859 rp='Do you really want to continue?'
1860 dflt='n'
1861 . ./myread
1862 case "$ans" in
8feeef0e
JH
1863 [yY]) echo >&4 "Okay, continuing."
1864 usedevel="$define" ;;
0107c034
JH
1865 *) echo >&4 "Okay, bye."
1866 exit 1
1867 ;;
1868 esac
1869 ;;
1870 esac
1871 ;;
1872esac
8feeef0e
JH
1873case "$usedevel" in
1874$define|true|[yY]*)
1875 case "$versiononly" in
1876 '') versiononly="$define" ;;
1877 esac
1878 case "$installusrbinperl" in
1879 '') installusrbinperl="$undef" ;;
1880 esac
1881 ;;
1882esac
0107c034 1883
2304df62
AD
1884: general instructions
1885needman=true
1886firsttime=true
760ac839 1887user=`(logname) 2>/dev/null`
dfe9444c
AD
1888case "$user" in
1889'') user=`whoami 2>&1`;;
760ac839 1890esac
2304df62
AD
1891if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1892 firsttime=false
1893 echo " "
1894 rp='Would you like to see the instructions?'
1895 dflt=n
1896 . ./myread
1897 case "$ans" in
1898 [yY]*) ;;
1899 *) needman=false;;
1900 esac
1901fi
1902if $needman; then
1903 cat <<EOH
4e2a5f63 1904
2304df62 1905This installation shell script will examine your system and ask you questions
a0d0e21e 1906to determine how the perl5 package should be installed. If you get
2304df62
AD
1907stuck on a question, you may use a ! shell escape to start a subshell or
1908execute a command. Many of the questions will have default answers in square
1909brackets; typing carriage return will give you the default.
1910
1911On some of the questions which ask for file or directory names you are allowed
1912to use the ~name construct to specify the login directory belonging to "name",
1913even if you don't have a shell which knows about that. Questions where this is
1914allowed will be marked "(~name ok)".
1915
1916EOH
1917 rp=''
1918 dflt='Type carriage return to continue'
1919 . ./myread
1920 cat <<'EOH'
1921
1922The prompter used in this script allows you to use shell variables and
1923backticks in your answers. You may use $1, $2, etc... to refer to the words
1924in the default answer, as if the default line was a set of arguments given to a
1925script shell. This means you may also use $* to repeat the whole default line,
1926so you do not have to re-type everything to add something to the default.
1927
1928Everytime there is a substitution, you will have to confirm. If there is an
1929error (e.g. an unmatched backtick), the default answer will remain unchanged
1930and you will be prompted again.
1931
1932If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1933the questions and use the computed defaults (or the previous answers if there
1934was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1935You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1936on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1937
1938EOH
1939 . ./myread
1940 cat <<EOH
1941
1942Much effort has been expended to ensure that this shell script will run on any
1943Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1944Configure and run it again. If you can't run Configure for some reason,
1945you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1946have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1947
1948This installation script affects things in two ways:
1949
19501) it may do direct variable substitutions on some of the files included
1951 in this kit.
19522) it builds a config.h file for inclusion in C programs. You may edit
1953 any of these files as the need arises after running this script.
1954
1955If you make a mistake on a question, there is no easy way to back up to it
1956currently. The easiest thing to do is to edit config.sh and rerun all the SH
1957files. Configure will offer to let you do this before it runs the SH files.
1958
1959EOH
1960 dflt='Type carriage return to continue'
1961 . ./myread
1962 case "$firsttime" in
1963 true) echo $user >>../.config/instruct;;
1964 esac
1965fi
1966
2304df62
AD
1967: find out where common programs are
1968echo " "
1969echo "Locating common programs..." >&4
1970cat <<EOSC >loc
1971$startsh
1972case \$# in
19730) exit 1;;
1974esac
1975thing=\$1
1976shift
1977dflt=\$1
1978shift
1979for dir in \$*; do
1980 case "\$thing" in
1981 .)
1982 if test -d \$dir/\$thing; then
1983 echo \$dir
1984 exit 0
1985 fi
1986 ;;
1987 *)
a0d0e21e 1988 for thisthing in \$dir/\$thing; do
ecfc5424 1989 : just loop through to pick last item
a0d0e21e 1990 done
25f94b33 1991 if test -f \$thisthing; then
a0d0e21e 1992 echo \$thisthing
2304df62
AD
1993 exit 0
1994 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1995 if test -n "$DJGPP"; then
1996 echo \$dir/\$thing.exe
1997 else
1998 : on Eunice apparently
1999 echo \$dir/\$thing
2000 fi
2304df62
AD
2001 exit 0
2002 fi
2003 ;;
2004 esac
2005done
2006echo \$dflt
2007exit 1
2008EOSC
2009chmod +x loc
2010$eunicefix loc
2011loclist="
2012awk
2013cat
f8006fac 2014chmod
b4eb6b3d
JH
2015comm
2016cp
2304df62
AD
2017echo
2018expr
2019grep
a0d0e21e 2020ls
dfe9444c 2021make
b4eb6b3d 2022mkdir
2304df62
AD
2023rm
2024sed
b4eb6b3d 2025sort
85e6fe83 2026touch
2304df62 2027tr
b4eb6b3d 2028uniq
2304df62
AD
2029"
2030trylist="
2031Mcc
dfe9444c 2032ar
3659ebf1 2033bison
b4eb6b3d 2034byacc
2304df62 2035cpp
b4eb6b3d 2036csh
2304df62
AD
2037date
2038egrep
8ff267be 2039gzip
b4eb6b3d 2040less
8ff267be 2041ln
b4eb6b3d 2042more
693762b4 2043nm
b4eb6b3d
JH
2044nroff
2045pg
2304df62
AD
2046test
2047uname
8ff267be 2048zip
2304df62 2049"
8e07c86e 2050pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2051pth="$pth /lib /usr/lib"
2052for file in $loclist; do
dfe9444c
AD
2053 eval xxx=\$$file
2054 case "$xxx" in
2055 /*|?:[\\/]*)
2056 if test -f "$xxx"; then
2057 : ok
2058 else
2059 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2060 xxx=`./loc $file $file $pth`
2061 fi
2062 ;;
2063 '') xxx=`./loc $file $file $pth`;;
2064 *) xxx=`./loc $xxx $xxx $pth`;;
2065 esac
2304df62
AD
2066 eval $file=$xxx
2067 eval _$file=$xxx
2068 case "$xxx" in
2069 /*)
2070 echo $file is in $xxx.
2071 ;;
8e07c86e
AD
2072 ?:[\\/]*)
2073 echo $file is in $xxx.
2074 ;;
2304df62 2075 *)
25f94b33
AD
2076 echo "I don't know where '$file' is, and my life depends on it." >&4
2077 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2078 exit 1
2304df62
AD
2079 ;;
2080 esac
2081done
2082echo " "
2083echo "Don't worry if any of the following aren't found..."
2084say=offhand
2085for file in $trylist; do
dfe9444c
AD
2086 eval xxx=\$$file
2087 case "$xxx" in
2088 /*|?:[\\/]*)
2089 if test -f "$xxx"; then
2090 : ok
2091 else
2092 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2093 xxx=`./loc $file $file $pth`
2094 fi
2095 ;;
2096 '') xxx=`./loc $file $file $pth`;;
2097 *) xxx=`./loc $xxx $xxx $pth`;;
2098 esac
2304df62
AD
2099 eval $file=$xxx
2100 eval _$file=$xxx
2101 case "$xxx" in
2102 /*)
2103 echo $file is in $xxx.
2104 ;;
8e07c86e
AD
2105 ?:[\\/]*)
2106 echo $file is in $xxx.
2107 ;;
2304df62
AD
2108 *)
2109 echo "I don't see $file out there, $say."
2110 say=either
2111 ;;
2112 esac
2113done
2114case "$egrep" in
2115egrep)
2116 echo "Substituting grep for egrep."
2117 egrep=$grep
2118 ;;
2119esac
8ff267be 2120case "$ln" in
2121ln)
2122 echo "Substituting cp for ln."
2123 ln=$cp
2124 ;;
2125esac
2304df62
AD
2126case "$test" in
2127test)
2128 echo "Hopefully test is built into your sh."
2129 ;;
2130*)
73614538 2131 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2132 echo "Using the test built into your sh."
2304df62
AD
2133 test=test
2134 _test=test
2135 fi
2136 ;;
2137esac
2138case "$echo" in
2139echo)
2140 echo "Hopefully echo is built into your sh."
2141 ;;
2142'') ;;
2143*)
2144 echo " "
2145echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2146 $echo $n "hi there$c" >foo1
2147 echo $n "hi there$c" >foo2
2148 if cmp foo1 foo2 >/dev/null 2>&1; then
2149 echo "They are compatible. In fact, they may be identical."
2150 else
2151 case "$n" in
2152 '-n') n='' c='\c';;
2153 *) n='-n' c='';;
2154 esac
2155 cat <<FOO
2156They are not compatible! You are probably running ksh on a non-USG system.
2157I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2158have echo built in and we may have to run some Bourne shell scripts. That
2159means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2160
2161FOO
2162 $echo $n "The star should be here-->$c"
2163 $echo "*"
2164 fi
2165 $rm -f foo1 foo2
2166 ;;
2167esac
2168
2573c5f9
JH
2169cat <<EOS >checkcc
2170$startsh
2171EOS
2172cat <<'EOSC' >>checkcc
2173case "$cc" in
2174'') ;;
2175*) $rm -f try try.*
2176 $cat >try.c <<EOM
2177int main(int argc, char *argv[]) {
2178 return 0;
2179}
2180EOM
e4778687 2181 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2182 :
2183 else
2184 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2185 despair=yes
2186 trygcc=yes
2187 case "$cc" in
2188 *gcc*) trygcc=no ;;
2189 esac
2190 case "`$cc -v -c try.c 2>&1`" in
2191 *gcc*) trygcc=no ;;
2192 esac
2193 if $test X"$trygcc" = Xyes; then
2194 if gcc -o try -c try.c; then
2195 echo " "
2196 echo "You seem to have a working gcc, though." >&4
2197 rp="Would you like to use it?"
2198 dflt=y
2199 if $test -f myread; then
2200 . ./myread
2201 else
2202 if $test -f UU/myread; then
2203 . ./UU/myread
2204 else
2205 echo "Cannot find myread, sorry. Aborting." >&2
2206 exit 1
2207 fi
2208 fi
2209 case "$ans" in
e723fc21 2210 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2211 esac
2212 fi
2213 fi
2214 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2215 $cat >&4 <<EOM
2216You need to find a working C compiler.
2217Either (purchase and) install the C compiler supplied by your OS vendor,
2218or for a free C compiler try http://gcc.gnu.org/
2219I cannot continue any further, aborting.
2220EOM
2573c5f9
JH
2221 exit 1
2222 fi
2223 fi
2224 $rm -f try try.*
2225 ;;
2226esac
2227EOSC
2228
a0d0e21e
LW
2229: determine whether symbolic links are supported
2230echo " "
2231$touch blurfl
2232if $ln -s blurfl sym > /dev/null 2>&1 ; then
2233 echo "Symbolic links are supported." >&4
2234 lns="$ln -s"
2235else
2236 echo "Symbolic links are NOT supported." >&4
2237 lns="$ln"
2238fi
2239$rm -f blurfl sym
2240
dafca956
JH
2241: determine whether symbolic links are supported
2242echo " "
2243case "$lns" in
2244*"ln -s")
2245 echo "Checking how to test for symbolic links..." >&4
2246 $lns blurfl sym
4b661809 2247 if $test "X$issymlink" = X; then
73614538 2248 sh -c "PATH= test -h sym" >/dev/null 2>&1
5d644a95
MB
2249 if test $? = 0; then
2250 issymlink="test -h"
2251 fi
2252 fi
2253 if $test "X$issymlink" = X; then
73614538 2254 if $test -h >/dev/null 2>&1; then
5d644a95
MB
2255 issymlink="$test -h"
2256 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2257 fi
dafca956 2258 fi
4b661809 2259 if $test "X$issymlink" = X; then
dafca956 2260 if $test -L sym 2>/dev/null; then
5d644a95 2261 issymlink="$test -L"
dafca956
JH
2262 fi
2263 fi
4b661809 2264 if $test "X$issymlink" != X; then
5d644a95 2265 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2266 else
2267 echo "I do not know how you can test for symbolic links." >&4
2268 fi
2269 $rm -f blurfl sym
2270 ;;
2271*) echo "No symbolic links, so not testing for their testing..." >&4
2272 ;;
2273esac
2274echo " "
2275
2276
2277case "$mksymlinks" in
2278$define|true|[yY]*)
2279 case "$src" in
2280 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2281 exit 1
2282 ;;
4b661809 2283 *) case "$lns:$issymlink" in
7a800fca 2284 *"ln -s:"*"test -"?)
dafca956
JH
2285 echo "Creating the symbolic links..." >&4
2286 echo "(First creating the subdirectories...)" >&4
2287 cd ..
2288 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2289 read directory
2290 test -z "$directory" && break
2291 mkdir -p $directory
2292 done
2293 # Sanity check 1.
2294 if test ! -d t/base; then
2295 echo "Failed to create the subdirectories. Aborting." >&4
2296 exit 1
2297 fi
2298 echo "(Then creating the symlinks...)" >&4
2299 awk '{print $1}' $src/MANIFEST | while true; do
2300 read filename
2301 test -z "$filename" && break
2302 if test -f $filename; then
5d644a95 2303 if $issymlink $filename; then
dafca956
JH
2304 rm -f $filename
2305 fi
2306 fi
2307 if test -f $filename; then
2308 echo "$filename already exists, not symlinking."
2309 else
2310 ln -s $src/$filename $filename
2311 fi
2312 done
2313 # Sanity check 2.
2314 if test ! -f t/base/commonsense.t; then
2315 echo "Failed to create the symlinks. Aborting." >&4
2316 exit 1
2317 fi
2318 cd UU
2319 ;;
2320 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2321 ;;
2322 esac
2323 ;;
2324 esac
2325 ;;
2326esac
2327
5440bc8e
JH
2328
2329case "$usecrosscompile" in
2330$define|true|[yY]*)
93bc48fa 2331 $echo "Cross-compiling..."
5440bc8e
JH
2332 croak=''
2333 case "$cc" in
2334 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2335 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2336 ar=$targetarch-ar
2337 # leave out ld, choosing it is more complex
2338 nm=$targetarch-nm
2339 ranlib=$targetarch-ranlib
93bc48fa 2340 $echo 'extern int foo;' > try.c
f8006fac 2341 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2342 shift
2343 if $test $# -gt 0; then
2344 incpth="$incpth $*"
f8006fac
JH
2345 incpth="`$echo $incpth|$sed 's/^ //'`"
2346 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2347 for i in $*; do
f8006fac 2348 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2349 if $test -d $j; then
2350 libpth="$libpth $j"
2351 fi
2352 done
f8006fac
JH
2353 libpth="`$echo $libpth|$sed 's/^ //'`"
2354 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2355 fi
2356 $rm -f try.c
5440bc8e
JH
2357 ;;
2358 esac
2359 case "$targetarch" in
93bc48fa
JH
2360 '') echo "Targetarch not defined." >&4; croak=y ;;
2361 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2362 esac
2363 case "$incpth" in
93bc48fa 2364 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2365 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2366 esac
2367 case "$libpth" in
93bc48fa 2368 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2369 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2370 esac
93bc48fa
JH
2371 case "$usrinc" in
2372 '') for i in $incpth; do
2373 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2374 usrinc=$i
2375 echo "Guessing usrinc $usrinc." >&4
2376 break
2377 fi
2378 done
2379 case "$usrinc" in
2380 '') echo "Usrinc not defined." >&4; croak=y ;;
2381 esac
2382 ;;
2383 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2384 esac
93bc48fa
JH
2385 case "$targethost" in
2386 '') echo "Targethost not defined." >&4; croak=y ;;
2387 *) echo "Using targethost $targethost." >&4
5440bc8e 2388 esac
93bc48fa
JH
2389 locincpth=' '
2390 loclibpth=' '
5440bc8e 2391 case "$croak" in
93bc48fa 2392 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2393 esac
2394 case "$src" in
2395 /*) run=$src/Cross/run
93c0359c 2396 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2397 to=$src/Cross/to
2398 from=$src/Cross/from
2399 ;;
93bc48fa 2400 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2401 run=$pwd/Cross/run
f8006fac 2402 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2403 to=$pwd/Cross/to
2404 from=$pwd/Cross/from
2405 ;;
2406 esac
2407 case "$targetrun" in
2408 '') targetrun=ssh ;;
2409 esac
2410 case "$targetto" in
2411 '') targetto=scp ;;
2412 esac
2413 case "$targetfrom" in
2414 '') targetfrom=scp ;;
2415 esac
2416 run=$run-$targetrun
2417 to=$to-$targetto
2418 from=$from-$targetfrom
93bc48fa
JH
2419 case "$targetdir" in
2420 '') targetdir=/tmp
2421 echo "Guessing targetdir $targetdir." >&4
2422 ;;
2423 esac
5440bc8e 2424 case "$targetuser" in
93bc48fa
JH
2425 '') targetuser=root
2426 echo "Guessing targetuser $targetuser." >&4
2427 ;;
5440bc8e
JH
2428 esac
2429 case "$targetfrom" in
2430 scp) q=-q ;;
2431 *) q='' ;;
2432 esac
2433 case "$targetrun" in
2434 ssh|rsh)
2435 cat >$run <<EOF
2436#!/bin/sh
93c0359c
JH
2437case "\$1" in
2438-cwd)
2439 shift
2440 cwd=\$1
2441 shift
2442 ;;
2443esac
2444case "\$cwd" in
2445'') cwd=$targetdir ;;
2446esac
5440bc8e
JH
2447exe=\$1
2448shift
93c0359c
JH
2449if $test ! -f \$exe.xok; then
2450 $to \$exe
2451 $touch \$exe.xok
2452fi
2453$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2454EOF
2455 ;;
93bc48fa 2456 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2457 exit 1
2458 ;;
2459 esac
93c0359c
JH
2460 case "$targetmkdir" in
2461 */Cross/mkdir)
2462 cat >$targetmkdir <<EOF
2463#!/bin/sh
2464$targetrun -l $targetuser $targethost "mkdir -p \$@"
2465EOF
f8006fac 2466 $chmod a+rx $targetmkdir
93c0359c
JH
2467 ;;
2468 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2469 exit 1
2470 ;;
2471 esac
5440bc8e
JH
2472 case "$targetto" in
2473 scp|rcp)
2474 cat >$to <<EOF
2475#!/bin/sh
2476for f in \$@
2477do
93c0359c
JH
2478 case "\$f" in
2479 /*)
2480 $targetmkdir \`dirname \$f\`
2481 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2482 ;;
2483 *)
2484 $targetmkdir $targetdir/\`dirname \$f\`
2485 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2486 ;;
2487 esac
5440bc8e
JH
2488done
2489exit 0
2490EOF
2491 ;;
2492 cp) cat >$to <<EOF
2493#!/bin/sh
93c0359c
JH
2494for f in \$@
2495do
2496 case "\$f" in
2497 /*)
2498 $mkdir -p $targetdir/\`dirname \$f\`
2499 $cp \$f $targetdir/\$f || exit 1
2500 ;;
2501 *)
2502 $targetmkdir $targetdir/\`dirname \$f\`
2503 $cp \$f $targetdir/\$f || exit 1
2504 ;;
2505 esac
2506done
2507exit 0
5440bc8e
JH
2508EOF
2509 ;;
93bc48fa 2510 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2511 exit 1
2512 ;;
2513 esac
2514 case "$targetfrom" in
2515 scp|rcp)
2516 cat >$from <<EOF
2517#!/bin/sh
2518for f in \$@
2519do
93c0359c 2520 $rm -f \$f
5440bc8e
JH
2521 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2522done
2523exit 0
2524EOF
2525 ;;
2526 cp) cat >$from <<EOF
2527#!/bin/sh
2528for f in \$@
2529do
93c0359c 2530 $rm -f \$f
5440bc8e
JH
2531 cp $targetdir/\$f . || exit 1
2532done
2533exit 0
2534EOF
2535 ;;
93bc48fa 2536 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2537 exit 1
2538 ;;
2539 esac
93bc48fa
JH
2540 if $test ! -f $run; then
2541 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2542 else
f8006fac 2543 $chmod a+rx $run
5440bc8e 2544 fi
93bc48fa
JH
2545 if $test ! -f $to; then
2546 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2547 else
f8006fac 2548 $chmod a+rx $to
5440bc8e 2549 fi
93bc48fa
JH
2550 if $test ! -f $from; then
2551 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2552 else
f8006fac 2553 $chmod a+rx $from
5440bc8e 2554 fi
93bc48fa 2555 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
2556 exit 1
2557 fi
2558 cat >&4 <<EOF
f8006fac
JH
2559Using '$run' for remote execution,
2560and '$from' and '$to'
93bc48fa 2561for remote file transfer.
5440bc8e
JH
2562EOF
2563 ;;
2564*) run=''
2565 to=:
2566 from=:
2567 usecrosscompile='undef'
2568 targetarch=''
2569 ;;
2570esac
2571
ecfc5424
AD
2572: see whether [:lower:] and [:upper:] are supported character classes
2573echo " "
ecfc5424
AD
2574case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2575ABYZ)
2576 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2577 up='[:upper:]'
2578 low='[:lower:]'
2579 ;;
28e8609d
JH
2580*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2581 # (0xc9 and 0xd1), therefore that is a nice testing point.
2582 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2583 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2584 ij) up='[A-Z]'
2585 low='[a-z]'
2586 ;;
2587 esac
2588 fi
2589 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2590 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2591 ij) up='A-Z'
2592 low='a-z'
2593 ;;
2594 esac
2595 fi
2596 if test "X$up" = X -o "X$low" = X; then
2597 case "`echo IJ | od -x 2>/dev/null`" in
2598 *C9D1*|*c9d1*)
2599 echo "Hey, this might be EBCDIC." >&4
2600 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2601 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2602 ij) up='[A-IJ-RS-Z]'
2603 low='[a-ij-rs-z]'
2604 ;;
2605 esac
2606 fi
2607 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2608 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2609 ij) up='A-IJ-RS-Z'
2610 low='a-ij-rs-z'
2611 ;;
2612 esac
2613 fi
2614 ;;
2615 esac
2616 fi
2617esac
3eaeeeae 2618case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2619ij)
2620 echo "Using $up and $low to convert case." >&4
2621 ;;
ecfc5424 2622*)
28e8609d
JH
2623 echo "I don't know how to translate letters from upper to lower case." >&4
2624 echo "Your tr is not acting any way I know of." >&4
2625 exit 1
2626 ;;
ecfc5424
AD
2627esac
2628: set up the translation script tr, must be called with ./tr of course
2629cat >tr <<EOSC
2630$startsh
2631case "\$1\$2" in
2632'[A-Z][a-z]') exec $tr '$up' '$low';;
2633'[a-z][A-Z]') exec $tr '$low' '$up';;
2634esac
2635exec $tr "\$@"
2636EOSC
2637chmod +x tr
2638$eunicefix tr
2639
2304df62
AD
2640: Try to determine whether config.sh was made on this system
2641case "$config_sh" in
2642'')
43999f95
JH
2643myuname=`$uname -a 2>/dev/null`
2644$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2645# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2646# because the A-Z/a-z are not consecutive.
a0d0e21e 2647myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2648 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2649newmyuname="$myuname"
2304df62 2650dflt=n
16d20bd9
AD
2651case "$knowitall" in
2652'')
2653 if test -f ../config.sh; then
2654 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2655 eval "`grep myuname= ../config.sh`"
2656 fi
2657 if test "X$myuname" = "X$newmyuname"; then
2658 dflt=y
2659 fi
2304df62 2660 fi
16d20bd9
AD
2661 ;;
2662*) dflt=y;;
2663esac
2304df62
AD
2664
2665: Get old answers from old config file if Configure was run on the
2666: same system, otherwise use the hints.
2667hint=default
2668cd ..
2669if test -f config.sh; then
16d20bd9
AD
2670 echo " "
2671 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2672 . UU/myread
2673 case "$ans" in
f83701cd
AD
2674 n*|N*) echo "OK, I'll ignore it."
2675 mv config.sh config.sh.old
2676 myuname="$newmyuname"
2677 ;;
2304df62 2678 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2679 tmp_n="$n"
2680 tmp_c="$c"
85cad39c 2681 tmp_sh="$sh"
2304df62
AD
2682 . ./config.sh
2683 cp config.sh UU
ecfc5424
AD
2684 n="$tmp_n"
2685 c="$tmp_c"
85cad39c 2686 : Older versions did not always set $sh. Catch re-use of such
2687 : an old config.sh.
2688 case "$sh" in
2689 '') sh="$tmp_sh" ;;
2690 esac
2304df62
AD
2691 hint=previous
2692 ;;
2693 esac
2694fi
2573c5f9 2695. ./UU/checkcc
2304df62
AD
2696if test ! -f config.sh; then
2697 $cat <<EOM
2698
4e2a5f63
AD
2699First time through, eh? I have some defaults handy for some systems
2700that need some extra help getting the Configure answers right:
2304df62
AD
2701
2702EOM
dfe9444c 2703 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2704 dflt=''
2705 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2706 : tests or hints, please send them to perlbug@perl.org
2304df62 2707 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2708 $test -f /irix && osname=irix
85e6fe83
LW
2709 $test -f /xenix && osname=sco_xenix
2710 $test -f /dynix && osname=dynix
2711 $test -f /dnix && osname=dnix
5f05dabc 2712 $test -f /lynx.os && osname=lynxos
2713 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2714 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2715 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2716 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2717 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2718 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2719 $test -d /usr/apollo/bin && osname=apollo
2720 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2721 $test -d /usr/include/minix && osname=minix
e060872b 2722 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2723 osname=machten
4633a7c4 2724 if $test -x /sbin/version; then
dfe9444c 2725 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2726 $sed -e 's/[A-Za-z]$//'`
2727 elif $test -x /usr/etc/version; then
dfe9444c 2728 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2729 $sed -e 's/[A-Za-z]$//'`
2730 else
2731 osvers="$2.$3"
2732 fi
2733 fi
aaacdc8b
GS
2734
2735 $test -f /sys/posix.dll &&
2736 $test -f /usr/bin/what &&
2737 set X `/usr/bin/what /sys/posix.dll` &&
2738 $test "$3" = UWIN &&
2739 osname=uwin &&
2740 osvers="$5"
2741
2304df62
AD
2742 if $test -f $uname; then
2743 set X $myuname
2744 shift
2745
2304df62 2746 case "$5" in
85e6fe83 2747 fps*) osname=fps ;;
2304df62
AD
2748 mips*)
2749 case "$4" in
85e6fe83
LW
2750 umips) osname=umips ;;
2751 *) osname=mips ;;
2304df62 2752 esac;;
85e6fe83
LW
2753 [23]100) osname=mips ;;
2754 next*) osname=next ;;
ecfc5424 2755 i386*)
c6912327
JH
2756 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2757 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2758 osname='sco'
2759 osvers=$tmp
2760 elif $test -f /etc/kconfig; then
ecfc5424 2761 osname=isc
bd628c73 2762 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2763 osvers=4
2764 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2765 osvers=3
2304df62 2766 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2767 osvers=2
ecfc5424
AD
2768 fi
2769 fi
2000072c 2770 tmp=''
ecfc5424 2771 ;;
c4f23d77
AD
2772 pc*)
2773 if test -n "$DJGPP"; then
2774 osname=dos
2775 osvers=djgpp
2776 fi
2777 ;;
2304df62
AD
2778 esac
2779
2780 case "$1" in
a0d0e21e
LW
2781 aix) osname=aix
2782 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2783 case "$tmp" in
1aef975c 2784 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2785 '<3240'|'<>3240') osvers=3.2.0 ;;
2786 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2787 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2788 *) osvers=$tmp;;
a0d0e21e
LW
2789 esac
2790 ;;
aaacdc8b
GS
2791 bsd386) osname=bsd386
2792 osvers=`$uname -r`
2793 ;;
2794 cygwin*) osname=cygwin
2795 osvers="$3"
2796 ;;
23f87696
SZ
2797 *dc.osx) osname=dcosx
2798 osvers="$3"
2799 ;;
a0d0e21e
LW
2800 dnix) osname=dnix
2801 osvers="$3"
2802 ;;
2803 domainos) osname=apollo
2804 osvers="$3"
2805 ;;
2806 dgux) osname=dgux
2807 osvers="$3"
2808 ;;
760ac839 2809 dynixptx*) osname=dynixptx
e58e581d 2810 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2811 ;;
a0d0e21e
LW
2812 freebsd) osname=freebsd
2813 osvers="$3" ;;
2814 genix) osname=genix ;;
2815 hp*) osname=hpux
bfb7748a 2816 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2817 ;;
a78b0d02 2818 irix*) osname=irix
a0d0e21e
LW
2819 case "$3" in
2820 4*) osvers=4 ;;
2821 5*) osvers=5 ;;
ecfc5424 2822 *) osvers="$3" ;;
a0d0e21e
LW
2823 esac
2824 ;;
2825 linux) osname=linux
2826 case "$3" in
a0d0e21e
LW
2827 *) osvers="$3" ;;
2828 esac
2829 ;;
28e8609d
JH
2830 MiNT) osname=mint
2831 ;;
2832 netbsd*) osname=netbsd
ecfc5424
AD
2833 osvers="$3"
2834 ;;
4e81affe
MM
2835 news-os) osvers="$3"
2836 case "$3" in
2837 4*) osname=newsos4 ;;
2838 *) osname=newsos ;;
2839 esac
2840 ;;
aaacdc8b 2841 next*) osname=next ;;
28bb1e2c 2842 nonstop-ux) osname=nonstopux ;;
aaacdc8b
GS
2843 POSIX-BC | posix-bc ) osname=posix-bc
2844 osvers="$3"
a0d0e21e 2845 ;;
ae3afa4e
TH
2846 powerux | power_ux | powermax_os | powermaxos | \
2847 powerunix | power_unix) osname=powerux
2848 osvers="$3"
2849 ;;
aaacdc8b
GS
2850 qnx) osname=qnx
2851 osvers="$4"
2852 ;;
a0d0e21e
LW
2853 solaris) osname=solaris
2854 case "$3" in
2855 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2856 *) osvers="$3" ;;
a0d0e21e
LW
2857 esac
2858 ;;
85e6fe83
LW
2859 sunos) osname=sunos
2860 case "$3" in
85e6fe83
LW
2861 5*) osname=solaris
2862 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2863 *) osvers="$3" ;;
2304df62
AD
2864 esac
2865 ;;
a0d0e21e 2866 titanos) osname=titanos
85e6fe83 2867 case "$3" in
a0d0e21e
LW
2868 1*) osvers=1 ;;
2869 2*) osvers=2 ;;
2870 3*) osvers=3 ;;
2871 4*) osvers=4 ;;
ecfc5424 2872 *) osvers="$3" ;;
2304df62
AD
2873 esac
2874 ;;
85e6fe83 2875 ultrix) osname=ultrix
ecfc5424 2876 osvers="$3"
2304df62 2877 ;;
28757baa 2878 osf1|mls+) case "$5" in
fed7345c
AD
2879 alpha)
2880 osname=dec_osf
2aa76180
JH
2881 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2882 case "$osvers" in
2883 [1-9].[0-9]*) ;;
2884 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2885 esac
ecfc5424
AD
2886 ;;
2887 hp*) osname=hp_osf1 ;;
2888 mips) osname=mips_osf1 ;;
85e6fe83
LW
2889 esac
2890 ;;
0337d152
BG
2891 unixware) osname=svr5
2892 osvers="$4"
2893 ;;
2894 uts) osname=uts
a0d0e21e
LW
2895 osvers="$3"
2896 ;;
85e6fe83 2897 $2) case "$osname" in
2304df62 2898 *isc*) ;;
a0d0e21e 2899 *freebsd*) ;;
5f05dabc 2900 svr*)
a0d0e21e
LW
2901 : svr4.x or possibly later
2902 case "svr$3" in
2903 ${osname}*)
2904 osname=svr$3
2905 osvers=$4
2906 ;;
2907 esac
2908 case "$osname" in
2909 svr4.0)
2910 : Check for ESIX
2911 if test -f /stand/boot ; then
2912 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2913 if test -n "$INITPROG" -a -f "$INITPROG"; then
2914 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2915 if test -n "$isesix"; then
a0d0e21e
LW
2916 osname=esix4
2917 fi
2918 fi
2919 fi
2920 ;;
2921 esac
2922 ;;
2304df62 2923 *) if test -f /etc/systemid; then
a0d0e21e
LW
2924 osname=sco
2925 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2926 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2927 osvers=$1.$2.$3
c4f23d77 2928 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2929 osvers=$1.$2
c4f23d77 2930 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2931 osvers=$1
2304df62 2932 fi
a0d0e21e
LW
2933 else
2934 case "$osname" in
2935 '') : Still unknown. Probably a generic Sys V.
2936 osname="sysv"
2937 osvers="$3"
2938 ;;
2939 esac
2304df62
AD
2940 fi
2941 ;;
2942 esac
2943 ;;
a0d0e21e
LW
2944 *) case "$osname" in
2945 '') : Still unknown. Probably a generic BSD.
2946 osname="$1"
2947 osvers="$3"
2948 ;;
2949 esac
2950 ;;
2304df62
AD
2951 esac
2952 else
dfe9444c
AD
2953 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2954 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2955 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2956 osname=news_os
2304df62 2957 fi
dfe9444c 2958 $rm -f UU/kernel.what
8e07c86e
AD
2959 elif test -d c:/.; then
2960 set X $myuname
2961 osname=os2
2962 osvers="$5"
2304df62
AD
2963 fi
2964 fi
85e6fe83 2965
5440bc8e
JH
2966 case "$targetarch" in
2967 '') ;;
2968 *) hostarch=$osname
2969 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2970 osvers=''
2971 ;;
2972 esac
2973
a0d0e21e
LW
2974 : Now look for a hint file osname_osvers, unless one has been
2975 : specified already.
2976 case "$hintfile" in
2977 ''|' ')
1e127011 2978 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2979 : Also try without trailing minor version numbers.
1e127011
DD
2980 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2981 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2982 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2983 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2984 case "$file" in
2985 '') dflt=none ;;
2986 *) case "$osvers" in
2987 '') dflt=$file
2988 ;;
dfe9444c 2989 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2990 dflt=$file
dfe9444c 2991 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2992 dflt=$xfile
dfe9444c 2993 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2994 dflt=$xxfile
dfe9444c 2995 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2996 dflt=$xxxfile
dfe9444c 2997 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2998 dflt=$xxxxfile
dfe9444c 2999 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3000 dflt="${osname}"
3001 else
3002 dflt=none
3003 fi
3004 ;;
3005 esac
85e6fe83
LW
3006 ;;
3007 esac
4e2a5f63
AD
3008 if $test -f Policy.sh ; then
3009 case "$dflt" in
3010 *Policy*) ;;
3011 none) dflt="Policy" ;;
3012 *) dflt="Policy $dflt" ;;
3013 esac
3014 fi
85e6fe83 3015 ;;
a0d0e21e 3016 *)
ecfc5424 3017 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3018 ;;
2304df62 3019 esac
1aef975c 3020
4e2a5f63
AD
3021 if $test -f Policy.sh ; then
3022 $cat <<EOM
3023
3024There's also a Policy hint file available, which should make the
3025site-specific (policy) questions easier to answer.
3026EOM
3027
3028 fi
3029
2304df62
AD
3030 $cat <<EOM
3031
3032You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 3033A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 3034is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
3035
3036EOM
4e2a5f63 3037
2304df62 3038 rp="Which of these apply, if any?"
dfe9444c 3039 . UU/myread
85e6fe83
LW
3040 tans=$ans
3041 for file in $tans; do
4e2a5f63
AD
3042 if $test X$file = XPolicy -a -f Policy.sh; then
3043 . Policy.sh
3044 $cat Policy.sh >> UU/config.sh
3045 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3046 . $src/hints/$file.sh
3047 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3048 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3049 : nothing
3050 else
85e6fe83
LW
3051 : Give one chance to correct a possible typo.
3052 echo "$file.sh does not exist"
3053 dflt=$file
3054 rp="hint to use instead?"
dfe9444c 3055 . UU/myread
85e6fe83 3056 for file in $ans; do
dfe9444c
AD
3057 if $test -f "$src/hints/$file.sh"; then
3058 . $src/hints/$file.sh
3059 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3060 elif $test X$ans = X -o X$ans = Xnone ; then
3061 : nothing
3062 else
3063 echo "$file.sh does not exist -- ignored."
3064 fi
3065 done
2304df62
AD
3066 fi
3067 done
85e6fe83 3068
2304df62 3069 hint=recommended
85e6fe83 3070 : Remember our hint file for later.
dfe9444c 3071 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3072 hintfile="$file"
85e6fe83 3073 else
a0d0e21e 3074 hintfile=''
85e6fe83 3075 fi
2304df62
AD
3076fi
3077cd UU
3078;;
3079*)
3080 echo " "
3081 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3082 tmp_n="$n"
3083 tmp_c="$c"
2304df62
AD
3084 cd ..
3085 cp $config_sh config.sh 2>/dev/null
a78b0d02 3086 chmod +w config.sh
2304df62
AD
3087 . ./config.sh
3088 cd UU
3089 cp ../config.sh .
ecfc5424
AD
3090 n="$tmp_n"
3091 c="$tmp_c"
2304df62
AD
3092 hint=previous
3093 ;;
3094esac
1aef975c 3095test "$override" && . ./optdef.sh
2304df62
AD
3096
3097: Restore computed paths
3098for file in $loclist $trylist; do
3099 eval $file="\$_$file"
3100done
3101
85e6fe83 3102cat << EOM
a0d0e21e 3103
85e6fe83 3104Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3105The default value is probably right if the name rings a bell. Otherwise,
3106since spelling matters for me, either accept the default or answer "none"
3107to leave it blank.
a0d0e21e 3108
85e6fe83 3109EOM
85e6fe83 3110case "$osname" in
a0d0e21e 3111 ''|' ')
85e6fe83 3112 case "$hintfile" in
a0d0e21e 3113 ''|' '|none) dflt=none ;;
ecfc5424 3114 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3115 esac
3116 ;;
3117 *) dflt="$osname" ;;
3118esac
3119rp="Operating system name?"
3120. ./myread
3121case "$ans" in
ecfc5424
AD
3122none) osname='' ;;
3123*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3124esac
8ff267be 3125echo " "
3126case "$osvers" in
3127 ''|' ')
3128 case "$hintfile" in
3129 ''|' '|none) dflt=none ;;
3130 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3131 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3132 case "$dflt" in
3133 ''|' ') dflt=none ;;
3134 esac
3135 ;;
3136 esac
3137 ;;
3138 *) dflt="$osvers" ;;
3139esac
3140rp="Operating system version?"
3141. ./myread
3142case "$ans" in
3143none) osvers='' ;;
3144*) osvers="$ans" ;;
3145esac
3146
02e93a22
JH
3147
3148. ./posthint.sh
3149
2304df62 3150: who configured the system
59b83a6f 3151cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 3152cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
3153case "$cf_by" in
3154"")
8ff267be 3155 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
3156 case "$cf_by" in
3157 "") cf_by=unknown ;;
8ff267be 3158 esac ;;
3159esac
2304df62 3160
b4eb6b3d
JH
3161: set up the script used to warn in case of inconsistency
3162cat <<EOS >whoa
3163$startsh
3164EOS
3165cat <<'EOSC' >>whoa
3166dflt=y
3167echo " "
3168echo "*** WHOA THERE!!! ***" >&4
3169echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3170rp=" Keep the $hint value?"
3171. ./myread
3172case "$ans" in
3173y) td=$was; tu=$was;;
3174esac
3175EOSC
3176
3177: function used to set $1 to $val
3178setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3179case "$val$was" in
3180$define$undef) . ./whoa; eval "$var=\$td";;
3181$undef$define) . ./whoa; eval "$var=\$tu";;
3182*) eval "$var=$val";;
3183esac'
3184
3185case "$usethreads" in
3186$define|true|[yY]*) dflt='y';;
3187*) dflt='n';;
3188esac
3189cat <<EOM
3190
3191Perl can be built to take advantage of threads on some systems.
3192To do so, Configure can be run with -Dusethreads.
3193
3194Note that threading is a highly experimental feature, and
3195some known race conditions still remain. If you choose to try
3196it, be very sure to not actually deploy it for production
3197purposes. README.threads has more details, and is required
3198reading if you enable threads.
3199
3200If this doesn't make any sense to you, just accept the default '$dflt'.
3201EOM
3202rp='Build a threading Perl?'
3203. ./myread
3204case "$ans" in
3205y|Y) val="$define" ;;
3206*) val="$undef" ;;
3207esac
3208set usethreads
3209eval $setvar
3210
3211case "$usethreads" in
3212$define)
3213 $cat <<EOM
3214
3215As of 5.5.640, Perl has two different internal threading implementations,
3216the 5.005 version (5005threads) and an interpreter-based version
3217(ithreads) that has one interpreter per thread. Both are very
3218experimental. This arrangement exists to help developers work out
3219which one is better.
3220
3221If you're a casual user, you probably don't want interpreter-threads
3222at this time. There doesn't yet exist a way to create threads from
3223within Perl in this model, i.e., "use Thread;" will NOT work.
3224EOM
3225 : Default to ithreads unless overridden on command line or with
3226 : old config.sh
3227 dflt='y'
3228 case "$use5005threads" in
3229 $define|true|[yY]*) dflt='n';;
3230 esac
3231 case "$useithreads" in
3232 $undef|false|[nN]*) dflt='n';;
3233 esac
3234 rp='Use interpreter-based ithreads?'
3235 . ./myread
3236 case "$ans" in
3237 y|Y) val="$define" ;;
3238 *) val="$undef" ;;
3239 esac
3240 set useithreads
3241 eval $setvar
3242 : Now set use5005threads to the opposite value.
3243 case "$useithreads" in
3244 $define) val="$undef" ;;
3245 *) val="$define" ;;
3246 esac
3247 set use5005threads
3248 eval $setvar
3249 ;;
3250*)
3251 useithreads="$undef"
3252 use5005threads="$undef"
3253 ;;
3254esac
3255
c915ce7f
JH
3256case "$useithreads$use5005threads" in
3257"$define$define")
3258 $cat >&4 <<EOM
3259
3260You cannot have both the ithreads and the 5.005 threads enabled
3261at the same time. Disabling the 5.005 threads since they are
3262much less stable than the ithreads.
3263
3264EOM
3265 use5005threads="$undef"
3266 ;;
3267esac
3268
b4eb6b3d
JH
3269case "$d_oldpthreads" in
3270'') : Configure tests would be welcome here. For now, assume undef.
3271 val="$undef" ;;
3272*) val="$d_oldpthreads" ;;
3273esac
3274set d_oldpthreads
3275eval $setvar
3276
3277
3278case "$usethreads" in
3279"$define"|true|[yY]*)
3280: Look for a hint-file generated 'call-back-unit'. If the
3281: user has specified that a threading perl is to be built,
3282: we may need to set or change some other defaults.
3283 if $test -f usethreads.cbu; then
3284 echo "Your platform has some specific hints for threaded builds, using them..."
3285 . ./usethreads.cbu
3286 else
3287 $cat <<EOM
3288(Your platform doesn't have any specific hints for threaded builds.
3289 Assuming POSIX threads, then.)
3290EOM
3291 fi
3292 ;;
3293esac
3294
3295cat <<EOM
3296
3297Perl can be built so that multiple Perl interpreters can coexist
3298within the same Perl executable.
3299EOM
3300
3301case "$useithreads" in
3302$define)
3303 cat <<EOM
3304This multiple interpreter support is required for interpreter-based threads.
3305EOM
3306 val="$define"
3307 ;;
3308*) case "$usemultiplicity" in
3309 $define|true|[yY]*) dflt='y';;
3310 *) dflt='n';;
3311 esac
3312 echo " "
3313 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3314 rp='Build Perl for multiplicity?'
3315 . ./myread
3316 case "$ans" in
3317 y|Y) val="$define" ;;
3318 *) val="$undef" ;;
3319 esac
3320 ;;
3321esac
3322set usemultiplicity
3323eval $setvar
3324
96056487
JH
3325
3326case "$usemorebits" in
3327"$define"|true|[yY]*)
3328 use64bitint="$define"
3329 uselongdouble="$define"
3330 usemorebits="$define"
3331 ;;
3332*) usemorebits="$undef"
3333 ;;
3334esac
3335
e5e20432
JH
3336: make some quick guesses about what we are up against
3337echo " "
3338$echo $n "Hmm... $c"
3339echo exit 1 >bsd
3340echo exit 1 >usg
3341echo exit 1 >v7
3342echo exit 1 >osf1
3343echo exit 1 >eunice
3344echo exit 1 >xenix
3345echo exit 1 >venix
3346echo exit 1 >os2
3347d_bsd="$undef"
3348$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3349if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3350then
3351 echo "Looks kind of like an OSF/1 system, but we'll see..."
3352 echo exit 0 >osf1
381aa1ff 3353elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
3354 xxx=`./loc addbib blurfl $pth`
3355 if $test -f $xxx; then
3356 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3357 echo exit 0 >bsd
3358 echo exit 0 >usg
3359 else
3360 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3361 echo "Looks kind of like an extended USG system, but we'll see..."
3362 else
3363 echo "Looks kind of like a USG system, but we'll see..."
3364 fi
3365 echo exit 0 >usg
3366 fi
3367elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3368 echo "Looks kind of like a BSD system, but we'll see..."
3369 d_bsd="$define"
3370 echo exit 0 >bsd
3371else
3372 echo "Looks kind of like a Version 7 system, but we'll see..."
3373 echo exit 0 >v7
3374fi
3375case "$eunicefix" in
3376*unixtovms*)
3377 $cat <<'EOI'
3378There is, however, a strange, musty smell in the air that reminds me of
3379something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3380EOI
3381 echo exit 0 >eunice
3382 d_eunice="$define"
3383: it so happens the Eunice I know will not run shell scripts in Unix format
3384 ;;
3385*)
3386 echo " "
3387 echo "Congratulations. You aren't running Eunice."
3388 d_eunice="$undef"
3389 ;;
3390esac
3391: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
3392: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3393: semicolon as a patch separator
e5e20432
JH
3394case "$p_" in
3395:) ;;
3396*)
3397 $cat <<'EOI'
3398I have the feeling something is not exactly right, however...don't tell me...
3399lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 3400(Or you may be running DOS with DJGPP.)
e5e20432
JH
3401EOI
3402 echo exit 0 >os2
3403 ;;
3404esac
3405if test -f /xenix; then
3406 echo "Actually, this looks more like a XENIX system..."
3407 echo exit 0 >xenix
3408 d_xenix="$define"
3409else
3410 echo " "
3411 echo "It's not Xenix..."
3412 d_xenix="$undef"
3413fi
3414chmod +x xenix
3415$eunicefix xenix
3416if test -f /venix; then
3417 echo "Actually, this looks more like a VENIX system..."
3418 echo exit 0 >venix
3419else
3420 echo " "
3421 if ./xenix; then
3422 : null
3423 else
3424 echo "Nor is it Venix..."
3425 fi
3426fi
3427chmod +x bsd usg v7 osf1 eunice xenix venix os2
3428$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3429$rm -f foo
3430
5869b1f1
JH
3431case "$cc" in
3432'') dflt=cc;;
3433*) dflt="$cc";;
3434esac
3435rp="Use which C compiler?"
3436. ./myread
3437cc="$ans"
e5e20432
JH
3438: Look for a hint-file generated 'call-back-unit'. Now that the
3439: user has specified the compiler, we may need to set or change some
3440: other defaults.
3441if $test -f cc.cbu; then
3442 . ./cc.cbu
3443fi
2573c5f9 3444. ./checkcc
8a27cf78 3445
e5e20432
JH
3446echo " "
3447echo "Checking for GNU cc in disguise and/or its version number..." >&4
5440bc8e 3448$cat >try.c <<EOM
e5e20432
JH
3449#include <stdio.h>
3450int main() {
3451#ifdef __GNUC__
3452#ifdef __VERSION__
3453 printf("%s\n", __VERSION__);
3454#else
3455 printf("%s\n", "1");
3456#endif
3457#endif
3458 exit(0);
3459}
3460EOM
5440bc8e
JH
3461if $cc -o try $ccflags $ldflags try.c; then
3462 gccversion=`$run ./try`
e5e20432
JH
3463 case "$gccversion" in
3464 '') echo "You are not using GNU cc." ;;
fc68435e 3465 *) echo "You are using GNU cc $gccversion."
e723fc21 3466 ccname=gcc
fc68435e 3467 ;;
e5e20432
JH
3468 esac
3469else
3470 echo " "
3471 echo "*** WHOA THERE!!! ***" >&4
3472 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3473 case "$knowitall" in
3474 '')
3475 echo " You'd better start hunting for one and let me know about it." >&4
3476 exit 1
3477 ;;
3478 esac
3479fi
5440bc8e 3480$rm -f try try.*
e5e20432
JH
3481case "$gccversion" in
34821*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3483esac
5b463ca7
KS
3484case "$gccversion" in
3485'') gccosandvers='' ;;
10b4ebb5
JH
3486*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3487 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3488 gccshortvers=''
5b463ca7 3489 case "$gccosandvers" in
02903077
JH
3490 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3491 $osname$osvers) ;; # looking good
5b463ca7
KS
3492 $osname*) cat <<EOM >&4
3493
3494*** WHOA THERE!!! ***
3495
3496 Your gcc has not been compiled for the exact release of
3497 your operating system ($gccosandvers versus $osname$osvers).
3498
3499 In general it is a good idea to keep gcc synchronized with
3500 the operating system because otherwise serious problems
3501 may ensue when trying to compile software, like Perl.
3502
3503 I'm trying to be optimistic here, though, and will continue.
3504 If later during the configuration and build icky compilation
02903077
JH
3505 problems appear (headerfile conflicts being the most common
3506 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3507 your operating system release.
3508
3509EOM
3510 ;;
81575342 3511 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3512 esac
3513 ;;
3514esac
e723fc21
JH
3515case "$ccname" in
3516'') ccname="$cc" ;;
3517esac
e5e20432 3518
640374d0
JH
3519case "$gccversion" in
3520'') ;;
3521*) case "$ccflags" in
3522 *-Wall*) ;;
a126002e 3523 *) ccflags="$ccflags -Wall" ;;
640374d0
JH
3524 esac
3525 ;;
3526esac
3527
bd9b35c9
JH
3528: decide how portable to be. Allow command line overrides.
3529case "$d_portable" in
3530"$undef") ;;
3531*) d_portable="$define" ;;
104d25b7 3532esac
85ab1d1d 3533
bd9b35c9
JH
3534: set up shell script to do ~ expansion
3535cat >filexp <<EOSS
3536$startsh
3537: expand filename
3538case "\$1" in
3539 ~/*|~)
3540 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3541 ;;
3542 ~*)
3543 if $test -f /bin/csh; then
3544 /bin/csh -f -c "glob \$1"
3545 failed=\$?
3546 echo ""
3547 exit \$failed
e5e20432 3548 else
bd9b35c9
JH
3549 name=\`$expr x\$1 : '..\([^/]*\)'\`
3550 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3551 if $test ! -d "\$dir"; then
3552 me=\`basename \$0\`
3553 echo "\$me: can't locate home directory for: \$name" >&2
3554 exit 1
3555 fi
3556 case "\$1" in
3557 */*)
3558 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3559 ;;
3560 *)
3561 echo \$dir
e5e20432
JH
3562 ;;
3563 esac
3564 fi
b691c02f 3565 ;;
4633a7c4 3566*)
bd9b35c9 3567 echo \$1
2304df62
AD
3568 ;;
3569esac
4633a7c4
LW
3570EOSS
3571chmod +x filexp
3572$eunicefix filexp
2304df62
AD
3573
3574: now set up to get a file name
28757baa 3575cat <<EOS >getfile
3576$startsh
3577EOS
3578cat <<'EOSC' >>getfile
2304df62
AD
3579tilde=''
3580fullpath=''
3581already=''
3582skip=''
3583none_ok=''
3584exp_file=''
a0d0e21e 3585nopath_ok=''
2304df62
AD
3586orig_rp="$rp"
3587orig_dflt="$dflt"
b233458b
JH
3588case "$gfpth" in
3589'') gfpth='.' ;;
3590esac
2304df62
AD
3591
3592case "$fn" in
ecfc5424 3593*\(*)
381aa1ff 3594 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3595 fn=`echo $fn | sed 's/(.*)//'`
3596 ;;
3597esac
3598
3599case "$fn" in
a0d0e21e
LW
3600*:*)
3601 loc_file=`expr $fn : '.*:\(.*\)'`
3602 fn=`expr $fn : '\(.*\):.*'`
3603 ;;
3604esac
3605
3606case "$fn" in
2304df62
AD
3607*~*) tilde=true;;
3608esac
3609case "$fn" in
3610*/*) fullpath=true;;
3611esac
3612case "$fn" in
3613*+*) skip=true;;
3614esac
3615case "$fn" in
3616*n*) none_ok=true;;
3617esac
3618case "$fn" in
3619*e*) exp_file=true;;
3620esac
a0d0e21e
LW
3621case "$fn" in
3622*p*) nopath_ok=true;;
3623esac
2304df62
AD
3624
3625case "$fn" in
3626*f*) type='File';;
3627*d*) type='Directory';;
a0d0e21e 3628*l*) type='Locate';;
2304df62
AD
3629esac
3630
3631what="$type"
3632case "$what" in
3633Locate) what='File';;
3634esac
3635
3636case "$exp_file" in
3637'')
3638 case "$d_portable" in
3639 "$define") ;;
3640 *) exp_file=true;;
3641 esac
3642 ;;
3643esac
3644
3645cd ..
3646while test "$type"; do
3647 redo=''
3648 rp="$orig_rp"
3649 dflt="$orig_dflt"
3650 case "$tilde" in
3651 true) rp="$rp (~name ok)";;
3652 esac
3653 . UU/myread
ecfc5424
AD
3654 if test -f UU/getfile.ok && \
3655 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3656 then
3657 value="$ans"
3658 ansexp="$ans"
3659 break
3660 fi
2304df62
AD
3661 case "$ans" in
3662 none)
3663 value=''
3664 ansexp=''
3665 case "$none_ok" in
3666 true) type='';;
3667 esac
3668 ;;
3669 *)
3670 case "$tilde" in
3671 '') value="$ans"
3672 ansexp="$ans";;
3673 *)
3674 value=`UU/filexp $ans`
3675 case $? in
3676 0)
3677 if test "$ans" != "$value"; then
ecfc5424 3678 echo "(That expands to $value on this system.)"
2304df62
AD
3679 fi
3680 ;;
3681 *) value="$ans";;
3682 esac
3683 ansexp="$value"
3684 case "$exp_file" in
3685 '') value="$ans";;
3686 esac
3687 ;;
3688 esac
3689 case "$fullpath" in
3690 true)
3691 case "$ansexp" in
3692 /*) value="$ansexp" ;;
23da6c43 3693 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3694 *)
3695 redo=true
3696 case "$already" in
3697 true)
3698 echo "I shall only accept a full path name, as in /bin/ls." >&4
3699 echo "Use a ! shell escape if you wish to check pathnames." >&4
3700 ;;
3701 *)
3702 echo "Please give a full path name, starting with slash." >&4
3703 case "$tilde" in
3704 true)
3705 echo "Note that using ~name is ok provided it expands well." >&4
3706 already=true
3707 ;;
3708 esac
3709 esac
3710 ;;
3711 esac
3712 ;;
3713 esac
3714 case "$redo" in
3715 '')
3716 case "$type" in
3717 File)
b233458b
JH
3718 for fp in $gfpth; do
3719 if test "X$fp" = X.; then
3720 pf="$ansexp"
3721 else
3722 pf="$fp/$ansexp"
3723 fi
3724 if test -f "$pf"; then
3725 type=''
3726 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3727 then
3728 echo "($value is not a plain file, but that's ok.)"
3729 type=''
3730 fi
3731 if test X"$type" = X; then
3732 value="$pf"
3733 break
3734 fi
3735 done
2304df62
AD
3736 ;;
3737 Directory)
b233458b
JH
3738 for fp in $gfpth; do
3739 if test "X$fp" = X.; then
f78bfc9c
JH
3740 dir="$ans"
3741 direxp="$ansexp"
b233458b 3742 else
dd858076 3743 dir="$fp/$ansexp"
f78bfc9c 3744 direxp="$fp/$ansexp"
b233458b 3745 fi
f78bfc9c 3746 if test -d "$direxp"; then
b233458b 3747 type=''
f78bfc9c 3748 value="$dir"
b233458b
JH
3749 break
3750 fi
3751 done
2304df62
AD
3752 ;;
3753 Locate)
40000a8c 3754 if test -d "$ansexp"; then
a0d0e21e
LW
3755 echo "(Looking for $loc_file in directory $value.)"
3756 value="$value/$loc_file"
40000a8c 3757 ansexp="$ansexp/$loc_file"
2304df62 3758 fi
40000a8c 3759 if test -f "$ansexp"; then
2304df62
AD
3760 type=''
3761 fi
a0d0e21e
LW
3762 case "$nopath_ok" in
3763 true) case "$value" in
3764 */*) ;;
3765 *) echo "Assuming $value will be in people's path."
3766 type=''
3767 ;;
3768 esac
3769 ;;
3770 esac
2304df62
AD
3771 ;;
3772 esac
3773
3774 case "$skip" in
3775 true) type='';
3776 esac
3777
3778 case "$type" in
3779 '') ;;
3780 *)
3781 if test "$fastread" = yes; then
3782 dflt=y
3783 else
3784 dflt=n
3785 fi
3786 rp="$what $value doesn't exist. Use that name anyway?"
3787 . UU/myread
3788 dflt=''
3789 case "$ans" in
3790 y*) type='';;
3791 *) echo " ";;
3792 esac
3793 ;;
3794 esac
3795 ;;
3796 esac
3797 ;;
3798 esac
3799done
3800cd UU
3801ans="$value"
3802rp="$orig_rp"
3803dflt="$orig_dflt"
ecfc5424 3804rm -f getfile.ok
b233458b 3805test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3806EOSC
3807
bd9b35c9
JH
3808: What should the include directory be ?
3809echo " "
3810$echo $n "Hmm... $c"
3811dflt='/usr/include'
3812incpath=''
3813mips_type=''
3814if $test -f /bin/mips && /bin/mips; then
3815 echo "Looks like a MIPS system..."
3816 $cat >usr.c <<'EOCP'
3817#ifdef SYSTYPE_BSD43
3818/bsd43
3819#endif
3820EOCP
8a27cf78 3821 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3822 dflt='/bsd43/usr/include'
3823 incpath='/bsd43'
3824 mips_type='BSD 4.3'
3825 else
3826 mips_type='System V'
3827 fi
3828 $rm -f usr.c usr.out
3829 echo "and you're compiling with the $mips_type compiler and libraries."
3830 xxx_prompt=y
3831 echo "exit 0" >mips
3832else
3833 echo "Doesn't look like a MIPS system."
3834 xxx_prompt=n
3835 echo "exit 1" >mips
3836fi
3837chmod +x mips
3838$eunicefix mips
3839case "$usrinc" in
3840'') ;;
3841*) dflt="$usrinc";;
3842esac
3843case "$xxx_prompt" in
3844y) fn=d/
3845 echo " "
3846 rp='Where are the include files you want to use?'
3847 . ./getfile
3848 usrinc="$ans"
8e07c86e 3849 ;;
bd9b35c9 3850*) usrinc="$dflt"
8e07c86e
AD
3851 ;;
3852esac
2304df62 3853
96056487
JH
3854: see how we invoke the C preprocessor
3855echo " "
3856echo "Now, how can we feed standard input to your C preprocessor..." >&4
3857cat <<'EOT' >testcpp.c
3858#define ABC abc
3859#define XYZ xyz
3860ABC.XYZ
3861EOT
3862cd ..
3863if test ! -f cppstdin; then
3864 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3865 # AIX cc -E doesn't show the absolute headerfile
3866 # locations but we'll cheat by using the -M flag.
3867 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
3868 else
3869 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3870 fi
3871else
3872 echo "Keeping your $hint cppstdin wrapper."
3873fi
3874chmod 755 cppstdin
3875wrapper=`pwd`/cppstdin
3876ok='false'
3877cd UU
3878
3879if $test "X$cppstdin" != "X" && \
3880 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3881 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3882then
3883 echo "You used to use $cppstdin $cppminus so we'll use that again."
3884 case "$cpprun" in
3885 '') echo "But let's see if we can live without a wrapper..." ;;
3886 *)
3887 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3888 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3889 then
3890 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3891 ok='true'
3892 else
3893 echo "(However, $cpprun $cpplast does not work, let's see...)"
3894 fi
3895 ;;
3896 esac
3897else
3898 case "$cppstdin" in
3899 '') ;;
3900 *)
3901 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3902 ;;
3903 esac
3904fi
3905
3906if $ok; then
3907 : nothing
3908elif echo 'Maybe "'"$cc"' -E" will work...'; \
3909 $cc -E <testcpp.c >testcpp.out 2>&1; \
3910 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3911 echo "Yup, it does."
3912 x_cpp="$cc -E"
3913 x_minus='';
3914elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3915 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3916 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3917 echo "Yup, it does."
3918 x_cpp="$cc -E"
3919 x_minus='-';
3920elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3921 $cc -P <testcpp.c >testcpp.out 2>&1; \
3922 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3923 echo "Yipee, that works!"
3924 x_cpp="$cc -P"
3925 x_minus='';
3926elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3927 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3928 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3929 echo "At long last!"
3930 x_cpp="$cc -P"
3931 x_minus='-';
3932elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3933 $cpp <testcpp.c >testcpp.out 2>&1; \
3934 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3935 echo "It works!"
3936 x_cpp="$cpp"
3937 x_minus='';
3938elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3939 $cpp - <testcpp.c >testcpp.out 2>&1; \
3940 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3941 echo "Hooray, it works! I was beginning to wonder."
3942 x_cpp="$cpp"
3943 x_minus='-';
3944elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3945 $wrapper <testcpp.c >testcpp.out 2>&1; \
3946 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3947 x_cpp="$wrapper"
3948 x_minus=''
3949 echo "Eureka!"
3950else
3951 dflt=''
3952 rp="No dice. I can't find a C preprocessor. Name one:"
3953 . ./myread
3954 x_cpp="$ans"
3955 x_minus=''
3956 $x_cpp <testcpp.c >testcpp.out 2>&1
3957 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958 echo "OK, that will do." >&4
3959 else
3960echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3961 exit 1
3962 fi
3963fi
3964
3965case "$ok" in
3966false)
3967 cppstdin="$x_cpp"
3968 cppminus="$x_minus"
3969 cpprun="$x_cpp"
3970 cpplast="$x_minus"
3971 set X $x_cpp
3972 shift
3973 case "$1" in
3974 "$cpp")
3975 echo "Perhaps can we force $cc -E using a wrapper..."
3976 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3977 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3978 then
3979 echo "Yup, we can."
3980 cppstdin="$wrapper"
3981 cppminus='';
3982 else
3983 echo "Nope, we'll have to live without it..."
3984 fi
3985 ;;
3986 esac
3987 case "$cpprun" in
3988 "$wrapper")
3989 cpprun=''
3990 cpplast=''
3991 ;;
3992 esac
3993 ;;
3994esac
3995
3996case "$cppstdin" in
3997"$wrapper"|'cppstdin') ;;
3998*) $rm -f $wrapper;;
3999esac
4000$rm -f testcpp.c testcpp.out
4001
bd9b35c9
JH
4002: Set private lib path
4003case "$plibpth" in
4004'') if ./mips; then
4005 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4006 fi;;
4007esac
4008case "$libpth" in
4009' ') dlist='';;
4010'') dlist="$loclibpth $plibpth $glibpth";;
4011*) dlist="$libpth";;
4012esac
4013
4014: Now check and see which directories actually exist, avoiding duplicates
4015libpth=''
4016for xxx in $dlist
4017do
4018 if $test -d $xxx; then
4019 case " $libpth " in
4020 *" $xxx "*) ;;
4021 *) libpth="$libpth $xxx";;
4022 esac
4023 fi
4024done
4025$cat <<'EOM'
4026
4027Some systems have incompatible or broken versions of libraries. Among
4028the directories listed in the question below, please remove any you
4029know not to be holding relevant libraries, and add any that are needed.
4030Say "none" for none.
8e07c86e
AD
4031
4032EOM
bd9b35c9
JH
4033case "$libpth" in
4034'') dflt='none';;
8e07c86e 4035*)
bd9b35c9
JH
4036 set X $libpth
4037 shift
4038 dflt=${1+"$@"}
8e07c86e 4039 ;;
a0d0e21e 4040esac
bd9b35c9
JH
4041rp="Directories to use for library searches?"
4042. ./myread
4043case "$ans" in
4044none) libpth=' ';;
4045*) libpth="$ans";;
4046esac
a0d0e21e 4047
bd9b35c9
JH
4048: compute shared library extension
4049case "$so" in
4050'')
4051 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4052 dflt='sl'
dd4e71fd 4053 else
bd9b35c9 4054 dflt='so'
dd4e71fd
JH
4055 fi
4056 ;;
bd9b35c9 4057*) dflt="$so";;
dd4e71fd 4058esac
dd4e71fd
JH
4059$cat <<EOM
4060
bd9b35c9 4061On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 4062you want to suppress searching of shared libraries for the remainder
bd9b35c9 4063of this configuration.
dd4e71fd
JH
4064
4065EOM
bd9b35c9
JH
4066rp='What is the file extension used for shared libraries?'
4067. ./myread
4068so="$ans"
dd4e71fd 4069
bd9b35c9
JH
4070: Define several unixisms.
4071: Hints files or command line option can be used to override them.
4072: The convoluted testing is in case hints files set either the old
4073: or the new name.
4074case "$_exe" in
4075'') case "$exe_ext" in
4076 '') ;;
4077 *) _exe="$exe_ext" ;;
dd4e71fd 4078 esac
bd9b35c9 4079 ;;
bfb7748a 4080esac
bd9b35c9
JH
4081case "$_a" in
4082'') case "$lib_ext" in
4083 '') _a='.a';;
4084 *) _a="$lib_ext" ;;
dd4e71fd
JH
4085 esac
4086 ;;
dd4e71fd 4087esac
bd9b35c9
JH
4088case "$_o" in
4089'') case "$obj_ext" in
4090 '') _o='.o';;
4091 *) _o="$obj_ext";;
4092 esac
4093 ;;
4094esac
4095case "$p_" in
4096'') case "$path_sep" in
4097 '') p_=':';;
4098 *) p_="$path_sep";;
4099 esac
4100 ;;
4101esac
4102exe_ext=$_exe
4103lib_ext=$_a
4104obj_ext=$_o
4105path_sep=$p_
dd4e71fd 4106
b4eb6b3d
JH
4107: Which makefile gets called first. This is used by make depend.
4108case "$firstmakefile" in
4109'') firstmakefile='makefile';;
4633a7c4 4110esac
4633a7c4 4111
0f0995ae
JH
4112case "$usesocks" in
4113$define|true|[yY]*) dflt='y';;
4114*) dflt='n';;
4115esac
bd9b35c9 4116cat <<EOM
4633a7c4 4117
bd9b35c9 4118Perl can be built to use the SOCKS proxy protocol library. To do so,
cf829ab0
JH
4119Configure must be run with -Dusesocks. If you use SOCKS you also need
4120to use the PerlIO abstraction layer, this will be implicitly selected.
4633a7c4 4121
0f0995ae 4122If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 4123EOM
bd9b35c9
JH
4124rp='Build Perl for SOCKS?'
4125. ./myread
4126case "$ans" in
4127y|Y) val="$define" ;;
4128*) val="$undef" ;;
4129esac
4130set usesocks
4131eval $setvar
4132
cf829ab0
JH
4133case "$usesocks" in
4134$define|true|[yY]*) useperlio="$define";;
4135esac
4136
bd9b35c9
JH
4137: Looking for optional libraries
4138echo " "
4139echo "Checking for optional libraries..." >&4
4140case "$libs" in
4141' '|'') dflt='';;
4142*) dflt="$libs";;
4143esac
4144case "$libswanted" in
4145'') libswanted='c_s';;
4146esac
4147case "$usesocks" in
923fc586 4148"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 4149esac
68435ea7
JH
4150libsfound=''
4151libsfiles=''
4152libsdirs=''
13b3f787
JH
4153libspath=''
4154for thisdir in $libpth $xlibpth; do
4155 test -d $thisdir && libspath="$libspath $thisdir"
4156done
bd9b35c9 4157for thislib in $libswanted; do
13b3f787 4158 for thisdir in $libspath; do
f7dd4e7f
JH
4159 xxx=''
4160 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4161 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4162 $test -f "$xxx" && eval $libscheck
4163 $test -f "$xxx" && libstyle=shared
4164 fi
4165 if test ! -f "$xxx"; then
4166 xxx=$thisdir/lib$thislib.$so
4167 $test -f "$xxx" && eval $libscheck
4168 $test -f "$xxx" && libstyle=shared
4169 fi
4170 if test ! -f "$xxx"; then
4171 xxx=$thisdir/lib$thislib$_a
4172 $test -f "$xxx" && eval $libscheck
4173 $test -f "$xxx" && libstyle=static
4174 fi
4175 if test ! -f "$xxx"; then
4176 xxx=$thisdir/$thislib$_a
4177 $test -f "$xxx" && eval $libscheck
4178 $test -f "$xxx" && libstyle=static
4179 fi
4180 if test ! -f "$xxx"; then
4181 xxx=$thisdir/lib${thislib}_s$_a
4182 $test -f "$xxx" && eval $libscheck
4183 $test -f "$xxx" && libstyle=static
09ea5ba9 4184 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
4185 fi
4186 if test ! -f "$xxx"; then
4187 xxx=$thisdir/Slib$thislib$_a
4188 $test -f "$xxx" && eval $libscheck
4189 $test -f "$xxx" && libstyle=static
4190 fi
4191 if $test -f "$xxx"; then
43999f95 4192 case "$libstyle" in
f7dd4e7f
JH
4193 shared) echo "Found -l$thislib (shared)." ;;
4194 static) echo "Found -l$thislib." ;;
4195 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 4196 esac
bd9b35c9
JH
4197 case " $dflt " in
4198 *"-l$thislib "*);;
f7dd4e7f 4199 *) dflt="$dflt -l$thislib"
43999f95
JH
4200 libsfound="$libsfound $xxx"
4201 yyy=`basename $xxx`
4202 libsfiles="$libsfiles $yyy"
1e127011 4203 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
4204 case " $libsdirs " in
4205 *" $yyy "*) ;;
4206 *) libsdirs="$libsdirs $yyy" ;;
4207 esac
4208 ;;
bd9b35c9 4209 esac
f7dd4e7f
JH
4210 break
4211 fi
4212 done
4213 if $test ! -f "$xxx"; then
4214 echo "No -l$thislib."
bd9b35c9
JH
4215 fi
4216done
4217set X $dflt
4218shift
4219dflt="$*"
4220case "$libs" in
4221'') dflt="$dflt";;
4222*) dflt="$libs";;
4223esac
4224case "$dflt" in
4225' '|'') dflt='none';;
4226esac
4633a7c4 4227
bd9b35c9 4228$cat <<EOM
4633a7c4 4229
bd9b35c9
JH
4230In order to compile $package on your machine, a number of libraries
4231are usually needed. Include any other special libraries here as well.
4232Say "none" for none. The default list is almost always right.
8e07c86e 4233EOM
8e07c86e 4234
bd9b35c9
JH
4235echo " "
4236rp="What libraries to use?"
4237. ./myread
4238case "$ans" in
4239none) libs=' ';;
4240*) libs="$ans";;
4241esac
d71b2b6b 4242
bd9b35c9
JH
4243: determine optimization, if desired, or use for debug flag also
4244case "$optimize" in
4245' '|$undef) dflt='none';;
4246'') dflt='-O';;
4247*) dflt="$optimize";;
4248esac
4249$cat <<EOH
d71b2b6b 4250
bd9b35c9
JH
4251By default, $package compiles with the -O flag to use the optimizer.
4252Alternately, you might want to use the symbolic debugger, which uses
4253the -g flag (on traditional Unix systems). Either flag can be
4254specified here. To use neither flag, specify the word "none".
d71b2b6b 4255
bd9b35c9
JH
4256EOH
4257rp="What optimizer/debugger flag should be used?"
4258. ./myread
4259optimize="$ans"
4260case "$optimize" in
4261'none') optimize=" ";;
4262esac
4263
4264dflt=''
4265: We will not override a previous value, but we might want to
4266: augment a hint file
4267case "$hint" in
4268default|recommended)
4269 case "$gccversion" in
4270 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 4271 esac
bd9b35c9
JH
4272 case "$optimize" in
4273 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 4274 esac
bd9b35c9
JH
4275 case "$gccversion" in
4276 2*) if test -d /etc/conf/kconfig.d &&
4277 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4278 then
4279 dflt="$dflt -posix"
4280 fi
f0d04425 4281 ;;
bd9b35c9
JH
4282 esac
4283 case "$gccversion" in
4284 1*) ;;
4285 2.[0-8]*) ;;
4286 ?*) echo " "
4287 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4288 echo 'int main(void) { return 0; }' > gcctest.c
4289 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4290 echo "Yes, it does." 2>&1
4291 case "$ccflags" in
4292 *strict-aliasing*)
4293 echo "Leaving current flags $ccflags alone." 2>&1
4294 ;;
4295 *) dflt="$dflt -fno-strict-aliasing" ;;
4296 esac
4297 else
4298 echo "Nope, it doesn't, but that's ok." 2>&1
4299 fi
f0d04425 4300 ;;
e5e20432
JH
4301 esac
4302 ;;
4303esac
4304
bd9b35c9
JH
4305case "$mips_type" in
4306*BSD*|'') inclwanted="$locincpth $usrinc";;
4307*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4308esac
4309for thisincl in $inclwanted; do
4310 if $test -d $thisincl; then
4311 if $test x$thisincl != x$usrinc; then
4312 case "$dflt" in
422af00a
LC
4313 *" -I$thisincl "*);;
4314 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
4315 esac
4316 fi
4317 fi
4318done
40a7a20a 4319
bd9b35c9
JH
4320inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4321 xxx=true;
4322elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4323 xxx=true;
4324else
4325 xxx=false;
4326fi;
4327if $xxx; then
4328 case "$dflt" in
4329 *$2*);;
4330 *) dflt="$dflt -D$2";;
4331 esac;
4332fi'
40a7a20a 4333
bd9b35c9 4334set signal.h LANGUAGE_C; eval $inctest
40a7a20a 4335
bd9b35c9
JH
4336case "$usesocks" in
4337$define)
4338 ccflags="$ccflags -DSOCKS"
4339 ;;
4340esac
40a7a20a 4341
bd9b35c9
JH
4342case "$hint" in
4343default|recommended) dflt="$ccflags $dflt" ;;
4344*) dflt="$ccflags";;
4345esac
40a7a20a 4346
bd9b35c9
JH
4347case "$dflt" in
4348''|' ') dflt=none;;
4349esac
422af00a 4350
bd9b35c9 4351$cat <<EOH
40a7a20a 4352
bd9b35c9
JH
4353Your C compiler may want other flags. For this question you should include
4354-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4355but you should NOT include libraries or ld flags like -lwhatever. If you
4356want $package to honor its debug switch, you should include -DDEBUGGING here.
4357Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 4358
bd9b35c9 4359To use no flags, specify the word "none".
40a7a20a 4360
bd9b35c9
JH
4361EOH
4362set X $dflt
4363shift
4364dflt=${1+"$@"}
4365rp="Any additional cc flags?"
4366. ./myread
4367case "$ans" in
4368none) ccflags='';;
4369*) ccflags="$ans";;
4370esac
8e07c86e 4371
bd9b35c9 4372: the following weeds options from ccflags that are of no interest to cpp
58e77565
JH
4373case "$cppflags" in
4374'') cppflags="$ccflags" ;;
4375*) cppflags="$cppflags $ccflags" ;;
4376esac
bd9b35c9
JH
4377case "$gccversion" in
43781*) cppflags="$cppflags -D__GNUC__"
4633a7c4 4379esac
bd9b35c9
JH
4380case "$mips_type" in
4381'');;
4382*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4383esac
4384case "$cppflags" in
4385'');;
4386*)
4387 echo " "
4388 echo "Let me guess what the preprocessor flags are..." >&4
4389 set X $cppflags
4390 shift
4391 cppflags=''
4392 $cat >cpp.c <<'EOM'
4393#define BLURFL foo
8e07c86e 4394
bd9b35c9
JH
4395BLURFL xx LFRULB
4396EOM
4397 previous=''
4398 for flag in $*
4399 do
4400 case "$flag" in
4401 -*) ftry="$flag";;
4402 *) ftry="$previous $flag";;
4403 esac
4404 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4405 >cpp1.out 2>/dev/null && \
4406 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4407 >cpp2.out 2>/dev/null && \
4408 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4409 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4410 then
4411 cppflags="$cppflags $ftry"
4412 previous=''
4413 else
4414 previous="$flag"
4415 fi
4416 done
4417 set X $cppflags
4418 shift
4419 cppflags=${1+"$@"}
4420 case "$cppflags" in
4421 *-*) echo "They appear to be: $cppflags";;
4422 esac
4423 $rm -f cpp.c cpp?.out
2afac517 4424 ;;
4425esac
8e07c86e 4426
bd9b35c9
JH
4427: flags used in final linking phase
4428case "$ldflags" in
4429'') if ./venix; then
4430 dflt='-i -z'
10a23457 4431 else
bd9b35c9 4432 dflt=''
10a23457 4433 fi
bd9b35c9
JH
4434 case "$ccflags" in
4435 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 4436 esac
bd9b35c9
JH
4437 ;;
4438*) dflt="$ldflags";;
4439esac
4440
4441: Try to guess additional flags to pick up local libraries.
4442for thislibdir in $libpth; do
4443 case " $loclibpth " in
4444 *" $thislibdir "*)
4445 case "$dflt " in
4446 *"-L$thislibdir "*) ;;
4447 *) dflt="$dflt -L$thislibdir" ;;
4448 esac
c4f23d77
AD
4449 ;;
4450 esac
bd9b35c9 4451done
c4f23d77 4452
bd9b35c9
JH
4453case "$dflt" in
4454'') dflt='none' ;;
4455esac
c4f23d77 4456
bd9b35c9
JH
4457$cat <<EOH
4458
4459Your C linker may need flags. For this question you should
4460include -L/whatever and any other flags used by the C linker, but you
4461should NOT include libraries like -lwhatever.
4462
4463Make sure you include the appropriate -L/path flags if your C linker
4464does not normally search all of the directories you specified above,
4465namely
4466 $libpth
4467To use no flags, specify the word "none".
4468
4469EOH
4470
4471rp="Any additional ld flags (NOT including libraries)?"
4472. ./myread
4473case "$ans" in
4474none) ldflags='';;
4475*) ldflags="$ans";;
4476esac
4477rmlist="$rmlist pdp11"
4478
4479: coherency check
4480echo " "
4481echo "Checking your choice of C compiler and flags for coherency..." >&4
4482$cat > try.c <<'EOF'
4483#include <stdio.h>
4484int main() { printf("Ok\n"); exit(0); }
4485EOF
7a282f6d 4486set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4487shift
4488$cat >try.msg <<'EOM'
4489I've tried to compile and run the following simple program:
4490
4491EOM
4492$cat try.c >> try.msg
4493
4494$cat >> try.msg <<EOM
4495
4496I used the command:
4497
4498 $*
5440bc8e 4499 $run ./try
bd9b35c9
JH
4500
4501and I got the following output:
4502
4503EOM
4504dflt=y
73614538 4505if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5440bc8e
JH
4506 if $sh -c "$run ./try" >>try.msg 2>&1; then
4507 xxx=`$run ./try`
bd9b35c9
JH
4508 case "$xxx" in
4509 "Ok") dflt=n ;;
4510 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4511 case " $libs " in
4512 *" -lsfio "*)
4513 cat >> try.msg <<'EOQS'
4514If $libs contains -lsfio, and sfio is mis-configured, then it
4515sometimes (apparently) runs and exits with a 0 status, but with no
4516output! It may have to do with sfio's use of _exit vs. exit.
4517
4518EOQS
4519 rp="You have a big problem. Shall I abort Configure"
4520 dflt=y
4521 ;;
4522 esac
4523 ;;
4524 esac
4525 else
4526 echo "The program compiled OK, but exited with status $?." >>try.msg
4527 rp="You have a problem. Shall I abort Configure"
4528 dflt=y
4529 fi
4530else
4531 echo "I can't compile the test program." >>try.msg
4532 rp="You have a BIG problem. Shall I abort Configure"
4533 dflt=y
4534fi
4535case "$dflt" in
4536y)
4537 $cat try.msg >&4
4538 case "$knowitall" in
4539 '')
4540 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4541 ;;
bd9b35c9 4542 *) dflt=n;;
c4f23d77 4543 esac
bd9b35c9
JH
4544 echo " "
4545 . ./myread
4546 case "$ans" in
4547 n*|N*) ;;
4548 *) echo "Ok. Stopping Configure." >&4
4549 exit 1
c4f23d77
AD
4550 ;;
4551 esac
4552 ;;
bd9b35c9 4553n) echo "OK, that should do.";;
c4f23d77 4554esac
bd9b35c9 4555$rm -f try try.* core
c4f23d77 4556
bd9b35c9
JH
4557: define a shorthand compile call
4558compile='
4559mc_file=$1;
4560shift;
08413ebc 4561$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4562: define a shorthand compile call for compilations that should be ok.
4563compile_ok='
4564mc_file=$1;
4565shift;
7a282f6d 4566$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4567
b4eb6b3d 4568: check for lengths of integral types
bd9b35c9 4569echo " "
b4eb6b3d
JH
4570case "$intsize" in
4571'')
4572 echo "Checking to see how big your integers are..." >&4
5440bc8e 4573 $cat >try.c <<'EOCP'
bd9b35c9
JH
4574#include <stdio.h>
4575int main()
4576{
b4eb6b3d
JH
4577 printf("intsize=%d;\n", (int)sizeof(int));
4578 printf("longsize=%d;\n", (int)sizeof(long));
4579 printf("shortsize=%d;\n", (int)sizeof(short));
4580 exit(0);
bd9b35c9 4581}
b4eb6b3d 4582EOCP
5440bc8e
JH
4583 set try
4584 if eval $compile_ok && $run ./try > /dev/null; then
4585 eval `$run ./try`
b4eb6b3d
JH
4586 echo "Your integers are $intsize bytes long."
4587 echo "Your long integers are $longsize bytes long."
4588 echo "Your short integers are $shortsize bytes long."
4589 else
4590 $cat >&4 <<EOM
4591!
4592Help! I can't compile and run the intsize test program: please enlighten me!
4593(This is probably a misconfiguration in your system or libraries, and
4594you really ought to fix it. Still, I'll try anyway.)
4595!
bd9b35c9 4596EOM
b4eb6b3d
JH
4597 dflt=4
4598 rp="What is the size of an integer (in bytes)?"
96056487
JH
4599 . ./myread
4600 intsize="$ans"
4601 dflt=$intsize
4602 rp="What is the size of a long integer (in bytes)?"
4603 . ./myread
4604 longsize="$ans"
4605 dflt=2
4606 rp="What is the size of a short integer (in bytes)?"
4607 . ./myread
4608 shortsize="$ans"
b4eb6b3d
JH
4609 fi
4610 ;;
4611esac
96056487 4612$rm -f try try.*
b4eb6b3d 4613
8dfa8df9
JH
4614: check for void type
4615echo " "
4616echo "Checking to see how well your C compiler groks the void type..." >&4
4617case "$voidflags" in
4618'')
4619 $cat >try.c <<'EOCP'
4620#if TRY & 1
4621void sub() {
4622#else
4623sub() {
4624#endif
4625 extern void moo(); /* function returning void */
4626 void (*goo)(); /* ptr to func returning void */
4627#if TRY & 8
4628 void *hue; /* generic ptr */
4629#endif
4630#if TRY & 2
4631 void (*foo[10])();
4632#endif
4633
4634#if TRY & 4
4635 if(goo == moo) {
4636 exit(0);
4637 }
4638#endif
4639 exit(0);
4640}
4641int main() { sub(); }
4642EOCP
4643 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4644 voidflags=$defvoidused
4645 echo "Good. It appears to support void to the level $package wants.">&4
4646 if $contains warning .out >/dev/null 2>&1; then
4647 echo "However, you might get some warnings that look like this:"
4648 $cat .out
4649 fi
4650 else
4651echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4652 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4653 echo "It supports 1..."
4654 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4655 echo "It also supports 2..."
4656 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4657 voidflags=7
4658 echo "And it supports 4 but not 8 definitely."
4659 else
4660 echo "It doesn't support 4..."
4661 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4662 voidflags=11
4663 echo "But it supports 8."
4664 else
4665 voidflags=3
4666 echo "Neither does it support 8."
4667 fi
4668 fi
4669 else
4670 echo "It does not support 2..."
4671 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4672 voidflags=13
4673 echo "But it supports 4 and 8."
4674 else
4675 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4676 voidflags=5
4677 echo "And it supports 4 but has not heard about 8."
4678 else
4679 echo "However it supports 8 but not 4."
4680 fi
4681 fi
4682 fi
4683 else
4684 echo "There is no support at all for void."
4685 voidflags=0
4686 fi
4687 fi
4688esac
4689case "$voidflags" in
4690"$defvoidused") ;;
4691*) $cat >&4 <<'EOM'
4692 Support flag bits are:
4693 1: basic void declarations.
4694 2: arrays of pointers to functions returning void.
4695 4: operations between pointers to and addresses of void functions.
4696 8: generic void pointers.
4697EOM
4698 dflt="$voidflags";
4699 rp="Your void support flags add up to what?"
4700 . ./myread
4701 voidflags="$ans"
4702 ;;
4703esac
4704$rm -f try.* .out
4705
4706: check for length of pointer
4707echo " "
4708case "$ptrsize" in
4709'')
4710 echo "Checking to see how big your pointers are..." >&4
4711 if test "$voidflags" -gt 7; then
4712 echo '#define VOID_PTR char *' > try.c
4713 else
4714 echo '#define VOID_PTR void *' > try.c
4715 fi
4716 $cat >>try.c <<'EOCP'
4717#include <stdio.h>
4718int main()
4719{
4720 printf("%d\n", (int)sizeof(VOID_PTR));
4721 exit(0);
4722}
4723EOCP
4724 set try
4725 if eval $compile_ok; then
5440bc8e 4726 ptrsize=`$run ./try`
8dfa8df9
JH
4727 echo "Your pointers are $ptrsize bytes long."
4728 else
4729 dflt='4'
4730 echo "(I can't seem to compile the test program. Guessing...)" >&4
4731 rp="What is the size of a pointer (in bytes)?"
4732 . ./myread
4733 ptrsize="$ans"
4734 fi
4735 ;;
4736esac
4737$rm -f try.c try
4738
4739: check for long long
4740echo " "
4741echo "Checking to see if you have long long..." >&4
4742echo 'int main() { long long x = 7; return 0; }' > try.c
4743set try
4744if eval $compile; then
4745 val="$define"
4746 echo "You have long long."
4747else
4748 val="$undef"
4749 echo "You do not have long long."
4750fi
4751$rm try.*
4752set d_longlong
4753eval $setvar
4754
4755: check for length of long long
4756case "${d_longlong}${longlongsize}" in
4757$define)
4758 echo " "
4759 echo "Checking to see how big your long longs are..." >&4
4760 $cat >try.c <<'EOCP'
4761#include <stdio.h>
4762int main()
4763{
4764 printf("%d\n", (int)sizeof(long long));
4765 return(0);
4766}
4767EOCP
4768 set try
4769 if eval $compile_ok; then
5440bc8e 4770 longlongsize=`$run ./try`
8dfa8df9
JH
4771 echo "Your long longs are $longlongsize bytes long."
4772 else
4773 dflt='8'
4774 echo " "
4775 echo "(I can't seem to compile the test program. Guessing...)"
4776 rp="What is the size of a long long (in bytes)?"
4777 . ./myread
4778 longlongsize="$ans"
4779 fi
4780 if $test "X$longsize" = "X$longlongsize"; then
4781 echo "(That isn't any different from an ordinary long.)"
4782 fi
4783 ;;
4784esac
4785$rm -f try.* try
4786
4787: determine filename position in cpp output
4788echo " "
4789echo "Computing filename position in cpp output for #include directives..." >&4
4790echo '#include <stdio.h>' > foo.c
4791$cat >fieldn <<EOF
4792$startsh
4793$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4794$grep '^[ ]*#.*stdio\.h' | \
4795while read cline; do
4796 pos=1
4797 set \$cline
4798 while $test \$# -gt 0; do
4799 if $test -r \`echo \$1 | $tr -d '"'\`; then
4800 echo "\$pos"
4801 exit 0
4802 fi
4803 shift
4804 pos=\`expr \$pos + 1\`
4805 done
4806done
4807EOF
4808chmod +x fieldn
4809fieldn=`./fieldn`
4810$rm -f foo.c fieldn
4811case $fieldn in
4812'') pos='???';;
48131) pos=first;;
48142) pos=second;;
48153) pos=third;;
4816*) pos="${fieldn}th";;
4817esac
4818echo "Your cpp writes the filename in the $pos field of the line."
4819
4820: locate header file
4821$cat >findhdr <<EOF
4822$startsh
4823wanted=\$1
4824name=''
4825for usrincdir in $usrinc
4826do
4827 if test -f \$usrincdir/\$wanted; then
4828 echo "\$usrincdir/\$wanted"
4829 exit 0
4830 fi
4831done
4832awkprg='{ print \$$fieldn }'
4833echo "#include <\$wanted>" > foo\$\$.c
4834$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4835$grep "^[ ]*#.*\$wanted" | \
4836while read cline; do
4837 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4838 case "\$name" in
4839 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4840 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4841 *) exit 2;;
4842 esac;
4843done;
4844#
4845# status = 0: grep returned 0 lines, case statement not executed
4846# status = 1: headerfile found
4847# status = 2: while loop executed, no headerfile found
4848#
4849status=\$?
4850$rm -f foo\$\$.c;
4851if test \$status -eq 1; then
4852 exit 0;
4853fi
4854exit 1
4855EOF
4856chmod +x findhdr
4857
4858: define an alternate in-header-list? function
4859inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4860cont=true; xxf="echo \"<\$1> found.\" >&4";
4861case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4862*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4863esac;
4864case $# in 4) instead=instead;; *) instead="at last";; esac;
4865while $test "$cont"; do
4866 xxx=`./findhdr $1`
4867 var=$2; eval "was=\$$2";
4868 if $test "$xxx" && $test -r "$xxx";
4869 then eval $xxf;
4870 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4871 cont="";
4872 else eval $xxnf;
4873 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4874 set $yyy; shift; shift; yyy=$@;
4875 case $# in 0) cont="";;
4876 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4877 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4878 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4879 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4880 esac;
4881done;
4882while $test "$yyy";
4883do set $yyy; var=$2; eval "was=\$$2";
4884 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4885 set $yyy; shift; shift; yyy=$@;
4886done'
4887
4888: see if inttypes.h is available
4889: we want a real compile instead of Inhdr because some systems
4890: have an inttypes.h which includes non-existent headers
4891echo " "
4892$cat >try.c <<EOCP
4893#include <inttypes.h>
4894int main() {
4895 static int32_t foo32 = 0x12345678;
4896}
4897EOCP
4898set try
4899if eval $compile; then
4900 echo "<inttypes.h> found." >&4
4901 val="$define"
4902else
4903 echo "<inttypes.h> NOT found." >&4
4904 val="$undef"
4905fi
4906$rm -f try.c try
4907set i_inttypes
4908eval $setvar
4909
4910: check for int64_t
4911echo " "
4912echo "Checking to see if you have int64_t..." >&4
4913$cat >try.c <<EOCP
4914#include <sys/types.h>
4915#$i_inttypes I_INTTYPES
4916#ifdef I_INTTYPES
4917#include <inttypes.h>
4918#endif
4919int main() { int64_t x = 7; }
4920EOCP
4921set try
4922if eval $compile; then
4923 val="$define"
4924 echo "You have int64_t."
4925else
4926 val="$undef"
4927 echo "You do not have int64_t."
4928fi
4929$rm -f try try.*
4930set d_int64_t
4931eval $setvar
4932
4933
4934echo " "
4935echo "Checking which 64-bit integer type we could use..." >&4
4936
4937case "$intsize" in
49388) val=int
4939 set quadtype
4940 eval $setvar
4941 val='"unsigned int"'
4942 set uquadtype
4943 eval $setvar
4944 quadkind=1
4945 ;;
4946*) case "$longsize" in
4947 8) val=long
4948 set quadtype
4949 eval $setvar
4950 val='"unsigned long"'
4951 set uquadtype
4952 eval $setvar
4953 quadkind=2
4954 ;;
4955 *) case "$d_longlong:$longlongsize" in
4956 define:8)
4957 val='"long long"'
4958 set quadtype
4959 eval $setvar
4960 val='"unsigned long long"'
4961 set uquadtype
4962 eval $setvar
4963 quadkind=3
4964 ;;
4965 *) case "$d_int64_t" in
4966 define)
4967 val=int64_t
4968 set quadtype
4969 eval $setvar
4970 val=uint64_t
4971 set uquadtype
4972 eval $setvar
4973 quadkind=4
4974 ;;
4975 esac
4976 ;;
4977 esac
4978 ;;
4979 esac
4980 ;;
4981esac
4982
4983case "$quadtype" in
4984'') echo "Alas, no 64-bit integer types in sight." >&4
4985 d_quad="$undef"
4986 ;;
4987*) echo "We could use '$quadtype' for 64-bit integers." >&4
4988 d_quad="$define"
4989 ;;
4990esac
4991
b4eb6b3d
JH
4992
4993case "$uselonglong" in
4994"$define"|true|[yY]*)
4995 cat <<EOM >&4
4996
4997*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4998EOM
4999 use64bitint="$define"
5000 ;;
5001esac
5002case "$use64bits" in
5003"$define"|true|[yY]*)
5004 cat <<EOM >&4
5005
5006*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5007EOM
5008 use64bitint="$define"
5009 ;;
5010esac
5011case "$use64bitints" in
5012"$define"|true|[yY]*)
5013 cat <<EOM >&4
5014
5015*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5016EOM
5017 use64bitint="$define"
5018 ;;
5019esac
5020case "$use64bitsint" in
5021"$define"|true|[yY]*)
5022 cat <<EOM >&4
5023
5024*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5025EOM
5026 use64bitint="$define"
5027 ;;
5028esac
5029case "$uselonglongs" in
5030"$define"|true|[yY]*)
5031 cat <<EOM >&4
5032
5033*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5034EOM
5035 use64bitint="$define"
5036 ;;
5037esac
5038case "$use64bitsall" in
5039"$define"|true|[yY]*)
5040 cat <<EOM >&4
5041
5042*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5043EOM
5044 use64bitall="$define"
5045 ;;
5046esac
5047
5048case "$ccflags" in
5049*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5050esac
5051case "$use64bitall" in
5052"$define"|true|[yY]*) use64bitint="$define" ;;
5053esac
5054
5055case "$longsize" in
50568) cat <<EOM
5057
5058You have natively 64-bit long integers.
5059EOM
5060 val="$define"
5061 ;;
5062*) case "$use64bitint" in
5063 "$define"|true|[yY]*) dflt='y';;
5064 *) dflt='n';;
5065 esac
8dfa8df9
JH
5066 case "$d_quad" in
5067 "$define") ;;
5068 *) dflt='n' ;;
5069 esac
b4eb6b3d
JH
5070 cat <<EOM
5071
5072Perl can be built to take advantage of 64-bit integer types
5073on some systems. To do so, Configure can be run with -Duse64bitint.
5074Choosing this option will most probably introduce binary incompatibilities.
5075
5076If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5077(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5078EOM
5079 rp='Try to use 64-bit integers, if available?'
5080 . ./myread
5081 case "$ans" in
5082 [yY]*) val="$define" ;;
5083 *) val="$undef" ;;
5084 esac
5085 ;;
5086esac
5087set use64bitint
5088eval $setvar
5089
5090case "$use64bitall" in
5091"$define"|true|[yY]*) dflt='y' ;;
5092*) case "$longsize" in
5093 8) dflt='y' ;;
5094 *) dflt='n' ;;
5095 esac
5096 ;;
5097esac
5098cat <<EOM
5099
5100You may also choose to try maximal 64-bitness. It means using as much
510164-bitness as possible on the platform. This in turn means even more
5102binary incompatibilities. On the other hand, your platform may not
5103have any more 64-bitness available than what you already have chosen.
5104
5105If this doesn't make any sense to you, just accept the default '$dflt'.
8dfa8df9 5106(The default has been chosen based on your configuration.)
b4eb6b3d
JH
5107EOM
5108rp='Try to use maximal 64-bit support, if available?'
5109. ./myread
5110case "$ans" in
5111[yY]*) val="$define" ;;
5112*) val="$undef" ;;
5113esac
5114set use64bitall
5115eval $setvar
5116case "$use64bitall" in
5117"$define")
5118 case "$use64bitint" in
5119 "$undef")
5120 cat <<EOM
5121
5122Since you have chosen a maximally 64-bit build, I'm also turning on
5123the use of 64-bit integers.
5124EOM
5125 use64bitint="$define" ;;
5126 esac
5127 ;;
5128esac
5129
8dfa8df9
JH
5130case "$use64bitall" in
5131"$define"|true|[yY]*)
5132 case "$ptrsize" in
5133 4) cat <<EOM >&4
5134
5135*** You have chosen a maximally 64-bit build, but your pointers
5136*** are only 4 bytes wide, disabling maximal 64-bitness.
5137
5138EOM
5139 use64bitall="$undef"
5140 case "$use64bitint" in
5141 "$define"|true|[yY]*) ;;
5142 *) cat <<EOM >&4
5143
5144*** Downgrading from maximal 64-bitness to using 64-bit integers.
5145
5146EOM
5147 use64bitint="$define"
5148 ;;
5149 esac
5150 ;;
5151 esac
5152 ;;
5153esac
5154
b4eb6b3d
JH
5155case "$use64bitint" in
5156"$define"|true|[yY]*)
5157: Look for a hint-file generated 'call-back-unit'. If the
5158: user has specified that a 64-bit perl is to be built,
5159: we may need to set or change some other defaults.
5160 if $test -f use64bitint.cbu; then
5161 echo "Your platform has some specific hints for 64-bit integers, using them..."
5162 . ./use64bitint.cbu
5163 fi
5164 case "$longsize" in
5165 4) case "$archname64" in
5166 '') archname64=64int ;;
5167 esac
5168 ;;
5169 esac
5170 ;;
5171esac
5172
5173case "$use64bitall" in
5174"$define"|true|[yY]*)
5175: Look for a hint-file generated 'call-back-unit'. If the
5176: user has specified that a maximally 64-bit perl is to be built,
5177: we may need to set or change some other defaults.
5178 if $test -f use64bitall.cbu; then
5179 echo "Your platform has some specific hints for 64-bit builds, using them..."
5180 . ./use64bitall.cbu
5181 fi
5182 case "$longsize" in
5183 4) case "$archname64" in
5184 ''|64int) archname64=64all ;;
5185 esac
5186 ;;
5187 esac
5188 ;;
5189esac
5190
5191echo " "
5192echo "Checking for GNU C Library..." >&4
5440bc8e 5193cat >try.c <<EOM
b4eb6b3d
JH
5194#include <stdio.h>
5195int main()
5196{
5197#ifdef __GLIBC__
5198 exit(0);
5199#else
5200 exit(1);
5201#endif
5202}
5203EOM
5440bc8e
JH
5204set try
5205if eval $compile_ok && $run ./try; then
b4eb6b3d
JH
5206 val="$define"
5207 echo "You are using the GNU C Library"
5208else
5209 val="$undef"
5210 echo "You are not using the GNU C Library"
5211fi
5440bc8e 5212$rm -f try try.*
b4eb6b3d
JH
5213set d_gnulibc
5214eval $setvar
5215
5216: see if nm is to be used to determine whether a symbol is defined or not
5217case "$usenm" in
5218'')
5219 dflt=''
c1a7f87b
JH
5220 case "$d_gnulibc" in
5221 "$define")
5222 echo " "
5223 echo "nm probably won't work on the GNU C Library." >&4
5224 dflt=n
bd9b35c9 5225 ;;
c1a7f87b
JH
5226 esac
5227 case "$dflt" in
5228 '')
5229 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5230 echo " "
5231 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5232 echo "'nm' won't be sufficient on this sytem." >&4
5233 dflt=n
5234 fi
5235 ;;
5236 esac
5237 case "$dflt" in
5238 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5239 if $test $dflt -gt 20; then
5240 dflt=y
5241 else
5242 dflt=n
5243 fi
bd9b35c9
JH
5244 ;;
5245 esac
bd9b35c9
JH
5246 ;;
5247*)
c1a7f87b
JH
5248 case "$usenm" in
5249 true|$define) dflt=y;;
5250 *) dflt=n;;
5251 esac
bd9b35c9
JH
5252 ;;
5253esac
5254$cat <<EOM
5255
c1a7f87b
JH
5256I can use $nm to extract the symbols from your C libraries. This
5257is a time consuming task which may generate huge output on the disk (up
5258to 3 megabytes) but that should make the symbols extraction faster. The
5259alternative is to skip the 'nm' extraction part and to compile a small
5260test program instead to determine whether each symbol is present. If
5261you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5262this may be the best solution.
5263
5264You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
5265
5266EOM
c1a7f87b
JH
5267rp="Shall I use $nm to extract C symbols from the libraries?"
5268. ./myread
5269case "$ans" in
5270[Nn]*) usenm=false;;
5271*) usenm=true;;
bd9b35c9 5272esac
bd9b35c9 5273
c1a7f87b
JH
5274runnm=$usenm
5275case "$reuseval" in
5276true) runnm=false;;
8e07c86e 5277esac
29209bc5 5278
c1a7f87b
JH
5279: nm options which may be necessary
5280case "$nm_opt" in
5281'') if $test -f /mach_boot; then
5282 nm_opt='' # Mach
5283 elif $test -d /usr/ccs/lib; then
5284 nm_opt='-p' # Solaris (and SunOS?)
5285 elif $test -f /dgux; then
5286 nm_opt='-p' # DG-UX
5287 elif $test -f /lib64/rld; then
5288 nm_opt='-p' # 64-bit Irix
5289 else
5290 nm_opt=''
5291 fi;;
5292esac
bd9b35c9 5293
c1a7f87b
JH
5294: nm options which may be necessary for shared libraries but illegal
5295: for archive libraries. Thank you, Linux.
5296case "$nm_so_opt" in
5297'') case "$myuname" in
5298 *linux*)
5299 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5300 nm_so_opt='--dynamic'
5301 fi
5302 ;;
bd9b35c9 5303 esac
c1a7f87b
JH
5304 ;;
5305esac
8e07c86e 5306
c1a7f87b
JH
5307case "$runnm" in
5308true)
5309: get list of predefined functions in a handy place
5310echo " "
5311case "$libc" in
5312'') libc=unknown
5313 case "$libs" in
5314 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 5315 esac
ff935051
JH
5316 ;;
5317esac
c1a7f87b
JH
5318case "$libs" in
5319'') ;;
5320*) for thislib in $libs; do
5321 case "$thislib" in
5322 -lc|-lc_s)
5323 : Handle C library specially below.
5324 ;;
5325 -l*)
5326 thislib=`echo $thislib | $sed -e 's/^-l//'`
5327 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5328 :
5329 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5330 :
5331 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5332 :
5333 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5334 :
5335 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5336 :
5337 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5338 :
5339 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5340 :
5341 else
5342 try=''
5343 fi
5344 libnames="$libnames $try"
5345 ;;
5346 *) libnames="$libnames $thislib" ;;
34d1710f 5347 esac
c1a7f87b 5348 done
4633a7c4
LW
5349 ;;
5350esac
c1a7f87b
JH
5351xxx=normal
5352case "$libc" in
5353unknown)
5354 set /lib/libc.$so
5355 for xxx in $libpth; do
5356 $test -r $1 || set $xxx/libc.$so
5357 : The messy sed command sorts on library version numbers.
5358 $test -r $1 || \
5359 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5360 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5361 h
5362 s/[0-9][0-9]*/0000&/g
5363 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5364 G
5365 s/\n/ /' | \
381aa1ff 5366 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
5367 eval set \$$#
5368 done
5369 $test -r $1 || set /usr/ccs/lib/libc.$so
5370 $test -r $1 || set /lib/libsys_s$_a
5371 ;;
5372*)
5373 set blurfl
5374 ;;
a4f3eea9 5375esac
c1a7f87b
JH
5376if $test -r "$1"; then
5377 echo "Your (shared) C library seems to be in $1."
5378 libc="$1"
5379elif $test -r /lib/libc && $test -r /lib/clib; then
5380 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5381 xxx=apollo
5382 libc='/lib/clib /lib/libc'
5383 if $test -r /lib/syslib; then
5384 echo "(Your math library is in /lib/syslib.)"
5385 libc="$libc /lib/syslib"
5386 fi
5387elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5388 echo "Your C library seems to be in $libc, as you said before."
5389elif $test -r $incpath/usr/lib/libc$_a; then
5390 libc=$incpath/usr/lib/libc$_a;
5391 echo "Your C library seems to be in $libc. That's fine."
5392elif $test -r /lib/libc$_a; then
5393 libc=/lib/libc$_a;
5394 echo "Your C library seems to be in $libc. You're normal."
5395else
5396 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5397 :
5398 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5399 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5400 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5401 :
5402 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5403 :
5404 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405 :
5406 else
5407 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5408 fi
5409 if $test -r "$tans"; then
5410 echo "Your C library seems to be in $tans, of all places."
5411 libc=$tans
5412 else
5413 libc='blurfl'
5414 fi
5415fi
5416if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5417 dflt="$libc"
5418 cat <<EOM
a4f3eea9 5419
c1a7f87b
JH
5420If the guess above is wrong (which it might be if you're using a strange
5421compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
5422
5423EOM
a4f3eea9 5424else
c1a7f87b 5425 dflt=''
381aa1ff 5426 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
5427 cat >&4 <<EOM
5428I can't seem to find your C library. I've looked in the following places:
a4f3eea9 5429
c1a7f87b
JH
5430EOM
5431 $sed 's/^/ /' libpath
5432 cat <<EOM
29209bc5 5433
c1a7f87b 5434None of these seems to contain your C library. I need to get its name...
a4f3eea9 5435
bd9b35c9 5436EOM
bd9b35c9 5437fi
c1a7f87b
JH
5438fn=f
5439rp='Where is your C library?'
5440. ./getfile
5441libc="$ans"
a4f3eea9 5442
c1a7f87b 5443echo " "
381aa1ff 5444echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
5445set X `cat libnames`
5446shift
5447xxx=files
5448case $# in 1) xxx=file; esac
5449echo "Extracting names from the following $xxx for later perusal:" >&4
5450echo " "
5451$sed 's/^/ /' libnames >&4
5452echo " "
5453$echo $n "This may take a while...$c" >&4
a4f3eea9 5454
c1a7f87b
JH
5455for file in $*; do
5456 case $file in
5457 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5458 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 5459 esac
c1a7f87b 5460done >libc.tmp
a4f3eea9 5461
c1a7f87b
JH
5462$echo $n ".$c"
5463$grep fprintf libc.tmp > libc.ptf
5464xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5465xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5466xxx='[ADTSIW]'
5467if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5468 eval $xscan;\
5469 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5470 eval $xrun
5471elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5472 eval $xscan;\
5473 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5474 eval $xrun
5475elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5476 eval $xscan;\
5477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5478 eval $xrun
5479elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5480 eval $xscan;\
5481 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5482 eval $xrun
5483elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5484 eval $xscan;\
5485 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5486 eval $xrun
5487elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5488 eval $xscan;\
5489 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490 eval $xrun
5491elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5492 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5493 eval $xscan;\
5494 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5495 eval $xrun
5496elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5497 eval $xscan;\
5498 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5499 eval $xrun
5500elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5501 eval $xscan;\
5502 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5503 eval $xrun
5504elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5505 eval $xscan;\
5506 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5507 eval $xrun
5508elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5509 eval $xscan;\
5510 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5511 eval $xrun
5512elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5513 eval $xscan;\
5514 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5515 eval $xrun
5516elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5517 eval $xscan;\
5518 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5519 eval $xrun
5520elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5521 eval $xscan;\
5522 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5523 eval $xrun
5524else
5525 $nm -p $* 2>/dev/null >libc.tmp
5526 $grep fprintf libc.tmp > libc.ptf
5527 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5528 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5529 then
5530 nm_opt='-p'
5531 eval $xrun
bd9b35c9 5532 else
c1a7f87b
JH
5533 echo " "
5534 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5535 com=''
5536 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5537 for thisname in $libnames $libc; do
5538 $ar t $thisname >>libc.tmp
5539 done
5540 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5541 echo "Ok." >&4
5542 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5543 # Repeat libc to extract forwarders to DLL entries too
5544 for thisname in $libnames $libc; do
5545 $ar tv $thisname >>libc.tmp
5546 # Revision 50 of EMX has bug in $ar.
5547 # it will not extract forwarders to DLL entries
5548 # Use emximp which will extract exactly them.
5549 emximp -o tmp.imp $thisname \
5550 2>/dev/null && \
5551 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5552 < tmp.imp >>libc.tmp
5553 $rm tmp.imp
5554 done
5555 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5556 echo "Ok." >&4
5557 else
5558 echo "$ar didn't seem to work right." >&4
5559 echo "Maybe this is a Cray...trying bld instead..." >&4
5560 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5561 then
5562 for thisname in $libnames; do
5563 bld t $libnames | \
5564 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5565 $ar t $thisname >>libc.tmp
5566 done
5567 echo "Ok." >&4
bd9b35c9 5568 else
c1a7f87b
JH
5569 echo "That didn't work either. Giving up." >&4
5570 exit 1
bd9b35c9 5571 fi
c1a7f87b 5572 fi
a4f3eea9 5573 fi
a4f3eea9 5574fi
c1a7f87b
JH
5575nm_extract="$com"
5576if $test -f /lib/syscalls.exp; then
5577 echo " "
5578 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
a8c676c6 5579 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
c1a7f87b
JH
5580fi
5581;;
5582esac
5583$rm -f libnames libpath
bd9b35c9 5584
c1a7f87b
JH
5585: is a C symbol defined?
5586csym='tlook=$1;
5587case "$3" in
5588-v) tf=libc.tmp; tc=""; tdc="";;
5589-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5590*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5591esac;
5592tx=yes;
5593case "$reuseval-$4" in
5594true-) ;;
5595true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5596esac;
5597case "$tx" in
5598yes)
5599 case "$runnm" in
5600 true)
5601 if $contains $tlook $tf >/dev/null 2>&1;
5602 then tval=true;
5603 else tval=false;
5604 fi;;
5605 *)
5606 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 5607 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
5608 then tval=true;
5609 else tval=false;
5610 fi;
5611 $rm -f t t.c;;
5612 esac;;
5613*)
5614 case "$tval" in
5615 $define) tval=true;;
5616 *) tval=false;;
5617 esac;;
5618esac;
5619eval "$2=$tval"'
bd9b35c9 5620
c1a7f87b
JH
5621: define an is-in-libc? function
5622inlibc='echo " "; td=$define; tu=$undef;
5623sym=$1; var=$2; eval "was=\$$2";
5624tx=yes;
5625case "$reuseval$was" in
5626true) ;;
5627true*) tx=no;;
5628esac;
5629case "$tx" in
5630yes)
5631 set $sym tres -f;
5632 eval $csym;
5633 case "$tres" in
5634 true)
5635 echo "$sym() found." >&4;
5636 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5637 *)
5638 echo "$sym() NOT found." >&4;
5639 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5640 esac;;
bd9b35c9 5641*)
c1a7f87b
JH
5642 case "$was" in
5643 $define) echo "$sym() found." >&4;;
5644 *) echo "$sym() NOT found." >&4;;
5645 esac;;
5646esac'
5647
b4eb6b3d
JH
5648: see if sqrtl exists
5649set sqrtl d_sqrtl
c1a7f87b
JH
5650eval $inlibc
5651
b4eb6b3d
JH
5652case "$ccflags" in
5653*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5654esac
b4eb6b3d
JH
5655
5656case "$uselongdouble" in
5657$define|true|[yY]*) dflt='y';;
5658*) dflt='n';;
5659esac
5660cat <<EOM
5661
5662Perl can be built to take advantage of long doubles which
5663(if available) may give more accuracy and range for floating point numbers.
5664
5665If this doesn't make any sense to you, just accept the default '$dflt'.
5666EOM
5667rp='Try to use long doubles if available?'
c1a7f87b
JH
5668. ./myread
5669case "$ans" in
b4eb6b3d
JH
5670y|Y) val="$define" ;;
5671*) val="$undef" ;;
5672esac
5673set uselongdouble
5674eval $setvar
bfb7748a 5675
b4eb6b3d
JH
5676case "$uselongdouble" in
5677true|[yY]*) uselongdouble="$define" ;;
5678esac
bfb7748a 5679
b4eb6b3d
JH
5680case "$uselongdouble" in
5681$define)
5682: Look for a hint-file generated 'call-back-unit'. If the
5683: user has specified that long doubles should be used,
5684: we may need to set or change some other defaults.
5685 if $test -f uselongdouble.cbu; then
5686 echo "Your platform has some specific hints for long doubles, using them..."
5687 . ./uselongdouble.cbu
5688 else
5689 $cat <<EOM
5690(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5691EOM
b4eb6b3d
JH
5692 fi
5693 ;;
5694esac
5695
5696case "$uselongdouble:$d_sqrtl" in
5697$define:$undef)
5698 $cat <<EOM >&4
5699
5700*** You requested the use of long doubles but you do not seem to have
5701*** the mathematic functions for long doubles. I'm disabling the use
5702*** of long doubles.
5703
5704EOM
5705 uselongdouble=$undef
5706 ;;
5707esac
5708
5709: check for length of double
5710echo " "
5711case "$doublesize" in
5712'')
5713 echo "Checking to see how big your double precision numbers are..." >&4
5714 $cat >try.c <<'EOCP'
5715#include <stdio.h>
5716int main()
5717{
5718 printf("%d\n", (int)sizeof(double));
5719 exit(0);
5720}
5721EOCP
5722 set try
5723 if eval $compile_ok; then
5440bc8e 5724 doublesize=`$run ./try`
b4eb6b3d
JH
5725 echo "Your double is $doublesize bytes long."
5726 else
5727 dflt='8'
5728 echo "(I can't seem to compile the test program. Guessing...)"
5729 rp="What is the size of a double precision number (in bytes)?"
5730 . ./myread
5731 doublesize="$ans"
5732 fi
5733 ;;
5734esac
5735$rm -f try.c try
5736
5737: check for long doubles
5738echo " "
5739echo "Checking to see if you have long double..." >&4
5740echo 'int main() { long double x = 7.0; }' > try.c
5741set try
5742if eval $compile; then
5743 val="$define"
5744 echo "You have long double."
5745else
5746 val="$undef"
5747 echo "You do not have long double."
5748fi
5749$rm try.*
5750set d_longdbl
5751eval $setvar
5752
5753: check for length of long double
5754case "${d_longdbl}${longdblsize}" in
5755$define)
5756 echo " "
5757 echo "Checking to see how big your long doubles are..." >&4
5758 $cat >try.c <<'EOCP'
5759#include <stdio.h>
5760int main()
5761{
5762 printf("%d\n", sizeof(long double));
5763}
5764EOCP
5765 set try
5766 set try
5767 if eval $compile; then
5440bc8e 5768 longdblsize=`$run ./try`
b4eb6b3d
JH
5769 echo "Your long doubles are $longdblsize bytes long."
5770 else
5771 dflt='8'
5772 echo " "
5773 echo "(I can't seem to compile the test program. Guessing...)" >&4
5774 rp="What is the size of a long double (in bytes)?"
5775 . ./myread
5776 longdblsize="$ans"
5777 fi
5778 if $test "X$doublesize" = "X$longdblsize"; then
5779 echo "(That isn't any different from an ordinary double.)"
5780 fi
5781 ;;
5782esac
5783$rm -f try.* try
5784
51de783f 5785case "$useperlio" in
5a3a8a02 5786$define|true|[yY]*|'') dflt='y';;
51de783f
JH
5787*) dflt='n';;
5788esac
5789cat <<EOM
5790
5791Previous version of $package used the standard IO mechanisms as
5a3a8a02 5792defined in <stdio.h>. Versions 5.003_02 and later of $package allow
51de783f 5793alternate IO mechanisms via the PerlIO abstraction layer, but the
5a3a8a02
JH
5794stdio mechanism is still available if needed. The abstraction layer
5795can use AT&T's sfio (if you already have sfio installed) or regular stdio.
51de783f
JH
5796Using PerlIO with sfio may cause problems with some extension modules.
5797
5798If this doesn't make any sense to you, just accept the default '$dflt'.
5799EOM
5a3a8a02 5800rp='Use the PerlIO abstraction layer?'
51de783f
JH
5801. ./myread
5802case "$ans" in
5803y|Y)
5804 val="$define"
5a3a8a02 5805 ;;
51de783f
JH
5806*)
5807 echo "Ok, doing things the stdio way."
5808 val="$undef"
5809 ;;
5810esac
5811set useperlio
5812eval $setvar
5813
5814case "$usesocks" in
5815$define|true|[yY]*)
5816 case "$useperlio" in
5817 $define|true|[yY]*) ;;
5818 *) cat >&4 <<EOM
5819
5820You are using the SOCKS proxy protocol library which means that you
5821should also use the PerlIO layer. You may be headed for trouble.
5822
5823EOM
5824 ;;
5825 esac
5826 ;;
5827esac
5828
5829
b4eb6b3d
JH
5830: determine the architecture name
5831echo " "
5832if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5833 tarch=`arch`"-$osname"
5834elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5835 if uname -m > tmparch 2>&1 ; then
5836 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5837 -e 's/$/'"-$osname/" tmparch`
5838 else
5839 tarch="$osname"
5840 fi
5841 $rm -f tmparch
5842else
5843 tarch="$osname"
5844fi
5845case "$myarchname" in
5846''|"$tarch") ;;
5847*)
5848 echo "(Your architecture name used to be $myarchname.)"
5849 archname=''
5850 ;;
5851esac
5440bc8e
JH
5852case "$targetarch" in
5853'') ;;
5854*) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5855esac
b4eb6b3d
JH
5856myarchname="$tarch"
5857case "$archname" in
5858'') dflt="$tarch";;
5859*) dflt="$archname";;
5860esac
5861rp='What is your architecture name'
5862. ./myread
5863archname="$ans"
5864case "$usethreads" in
5865$define)
5866 echo "Threads selected." >&4
5867 case "$archname" in
5868 *-thread*) echo "...and architecture name already has -thread." >&4
5869 ;;
5870 *) archname="$archname-thread"
5871 echo "...setting architecture name to $archname." >&4
5872 ;;
5873 esac
5874 ;;
5875esac
5876case "$usemultiplicity" in
5877$define)
5878 echo "Multiplicity selected." >&4
5879 case "$archname" in
5880 *-multi*) echo "...and architecture name already has -multi." >&4
5881 ;;
5882 *) archname="$archname-multi"
5883 echo "...setting architecture name to $archname." >&4
5884 ;;
5885 esac
5886 ;;
5887esac
5888case "$use64bitint$use64bitall" in
5889*"$define"*)
5890 case "$archname64" in
5891 '')
5892 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5893 ;;
5894 *)
5895 case "$use64bitint" in
5896 "$define") echo "64 bit integers selected." >&4 ;;
5897 esac
5898 case "$use64bitall" in
5899 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5900 esac
5901 case "$archname" in
5902 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5903 ;;
5904 *) archname="$archname-$archname64"
5905 echo "...setting architecture name to $archname." >&4
5906 ;;
5907 esac
5908 ;;
5909 esac
5910esac
5911case "$uselongdouble" in
5912$define)
5913 echo "Long doubles selected." >&4
5914 case "$longdblsize" in
5915 $doublesize)
5916 "...but long doubles are equal to doubles, not changing architecture name." >&4
5917 ;;
5918 *)
5919 case "$archname" in
5920 *-ld*) echo "...and architecture name already has -ld." >&4
5921 ;;
5922 *) archname="$archname-ld"
5923 echo "...setting architecture name to $archname." >&4
5924 ;;
5925 esac
5926 ;;
5927 esac
5928 ;;
5929esac
51de783f
JH
5930case "$useperlio" in
5931$define)
5932 echo "Perlio selected." >&4
d46c9a2d
JH
5933 ;;
5934*)
5935 echo "Perlio not selected, using stdio." >&4
51de783f 5936 case "$archname" in
d46c9a2d 5937 *-stdio*) echo "...and architecture name already has -stdio." >&4
51de783f 5938 ;;
d46c9a2d 5939 *) archname="$archname-stdio"
51de783f
JH
5940 echo "...setting architecture name to $archname." >&4
5941 ;;
5942 esac
5943 ;;
5944esac
b4eb6b3d
JH
5945
5946: determine root of directory hierarchy where package will be installed.
5947case "$prefix" in
5948'')
5949 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5950 ;;
5951*)
5952 dflt="$prefix"
5953 ;;
5954esac
5955$cat <<EOM
5956
5957By default, $package will be installed in $dflt/bin, manual pages
5958under $dflt/man, etc..., i.e. with $dflt as prefix for all
5959installation directories. Typically this is something like /usr/local.
5960If you wish to have binaries under /usr/bin but other parts of the
5961installation under /usr/local, that's ok: you will be prompted
5962separately for each of the installation directories, the prefix being
5963only used to set the defaults.
5964
5965EOM
5966fn=d~
5967rp='Installation prefix to use?'
5968. ./getfile
5969oldprefix=''
5970case "$prefix" in
5971'') ;;
5972*)
5973 case "$ans" in
5974 "$prefix") ;;
5975 *) oldprefix="$prefix";;
5976 esac
5977 ;;
5978esac
5979prefix="$ans"
5980prefixexp="$ansexp"
5981
a6d26a0d
JH
5982case "$afsroot" in
5983'') afsroot=/afs ;;
5984*) afsroot=$afsroot ;;
5985esac
5986
b4eb6b3d
JH
5987: is AFS running?
5988echo " "
5989case "$afs" in
5990$define|true) afs=true ;;
5991$undef|false) afs=false ;;
a6d26a0d 5992*) if test -d $afsroot; then
b4eb6b3d
JH
5993 afs=true
5994 else
5995 afs=false
5996 fi
5997 ;;
5998esac
5999if $afs; then
6000 echo "AFS may be running... I'll be extra cautious then..." >&4
6001else
6002 echo "AFS does not seem to be running..." >&4
6003fi
6004
6005: determine installation prefix for where package is to be installed.
6006if $afs; then
6007$cat <<EOM
6008
6009Since you are running AFS, I need to distinguish the directory in which
6010files will reside from the directory in which they are installed (and from
6011which they are presumably copied to the former directory by occult means).
6012
6013EOM
6014 case "$installprefix" in
6015 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6016 *) dflt="$installprefix";;
6017 esac
6018else
6019$cat <<EOM
6020
6021In some special cases, particularly when building $package for distribution,
6022it is convenient to distinguish between the directory in which files should
6023be installed from the directory ($prefix) in which they
6024will eventually reside. For most users, these two directories are the same.
6025
6026EOM
6027 case "$installprefix" in
6028 '') dflt=$prefix ;;
6029 *) dflt=$installprefix;;
6030 esac
6031fi
6032fn=d~
6033rp='What installation prefix should I use for installing files?'
6034. ./getfile
6035installprefix="$ans"
6036installprefixexp="$ansexp"
6037
6038: set the prefixit variable, to compute a suitable default value
6039prefixit='case "$3" in
6040""|none)
6041 case "$oldprefix" in
6042 "") eval "$1=\"\$$2\"";;
6043 *)
6044 case "$3" in
6045 "") eval "$1=";;
6046 none)
6047 eval "tp=\"\$$2\"";
6048 case "$tp" in
6049 ""|" ") eval "$1=\"\$$2\"";;
6050 *) eval "$1=";;
6051 esac;;
6052 esac;;
6053 esac;;
6054*)
6055 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6056 case "$tp" in
6057 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6058 /*-$oldprefix/*|\~*-$oldprefix/*)
6059 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6060 *) eval "$1=\"\$$2\"";;
6061 esac;;
6062esac'
6063
6064
6065: get the patchlevel
6066echo " "
6067echo "Getting the current patchlevel..." >&4
6068if $test -r $rsrc/patchlevel.h;then
6069 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6070 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6071 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6072 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6073 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6074 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
151e6568 6075 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
b4eb6b3d
JH
6076else
6077 revision=0
6078 patchlevel=0
6079 subversion=0
6080 api_revision=0
6081 api_version=0
6082 api_subversion=0
151e6568
MB
6083 perl_patchlevel=0
6084 $echo "(You do not have patchlevel.h. Eek.)"
b4eb6b3d 6085fi
151e6568
MB
6086if $test -r $rsrc/.patch ; then
6087 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6088 perl_patchlevel=`cat $rsrc/.patch`
6089 fi
6090fi
6091case "$perl_patchlevel" in
60920) ;;
6093'') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6094*) $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6095esac
b4eb6b3d
JH
6096case "$osname" in
6097dos|vms)
6098 : XXX Should be a Configure test for double-dots in filenames.
6099 version=`echo $revision $patchlevel $subversion | \
6100 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6101 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6102 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6103 ;;
6104*)
6105 version=`echo $revision $patchlevel $subversion | \
6106 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6107 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6109 ;;
6110esac
6111: Special case the 5.005_xx maintenance series, which used 5.005
6112: without any subversion label as a subdirectory in $sitelib
6113if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6114 api_versionstring='5.005'
6115fi
6116
6117: determine installation style
6118: For now, try to deduce it from prefix unless it is already set.
6119: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6120case "$installstyle" in
6121'') case "$prefix" in
6122 *perl*) dflt='lib';;
6123 *) dflt='lib/perl5' ;;
6124 esac
6125 ;;
6126*) dflt="$installstyle" ;;
6127esac
6128: Probably not worth prompting for this since we prompt for all
6129: the directories individually, and the prompt would be too long and
6130: confusing anyway.
6131installstyle=$dflt
6132
6133: determine where private library files go
6134: Usual default is /usr/local/lib/perl5/$version.
6135: Also allow things like /opt/perl/lib/$version, since
6136: /opt/perl/lib/perl5... would be redundant.
6137: The default "style" setting is made in installstyle.U
6138case "$installstyle" in
6139*lib/perl5*) set dflt privlib lib/$package/$version ;;
6140*) set dflt privlib lib/$version ;;
6141esac
6142eval $prefixit
6143$cat <<EOM
6144
6145There are some auxiliary files for $package that need to be put into a
6146private library directory that is accessible by everyone.
6147
6148EOM
6149fn=d~+
6150rp='Pathname where the private library files will reside?'
6151. ./getfile
6152privlib="$ans"
6153privlibexp="$ansexp"
6154: Change installation prefix, if necessary.
6155if $test X"$prefix" != X"$installprefix"; then
6156 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6157else
6158 installprivlib="$privlibexp"
6159fi
6160
6161: set the prefixup variable, to restore leading tilda escape
6162prefixup='case "$prefixexp" in
6163"$prefix") ;;
6164*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6165esac'
6166
6167: determine where public architecture dependent libraries go
6168set archlib archlib
6169eval $prefixit
6170: privlib default is /usr/local/lib/$package/$version
6171: archlib default is /usr/local/lib/$package/$version/$archname
6172: privlib may have an optional trailing /share.
6173tdflt=`echo $privlib | $sed 's,/share$,,'`
6174tdflt=$tdflt/$archname
6175case "$archlib" in
6176'') dflt=$tdflt
6177 ;;
6178*) dflt="$archlib"
6179 ;;
6180esac
6181$cat <<EOM
6182
6183$spackage contains architecture-dependent library files. If you are
6184sharing libraries in a heterogeneous environment, you might store
6185these files in a separate location. Otherwise, you can just include
6186them with the rest of the public library files.
6187
6188EOM
6189fn=d+~
6190rp='Where do you want to put the public architecture-dependent libraries?'
6191. ./getfile
6192archlib="$ans"
6193archlibexp="$ansexp"
6194if $test X"$archlib" = X"$privlib"; then
6195 d_archlib="$undef"
6196else
6197 d_archlib="$define"
6198fi
6199: Change installation prefix, if necessary.
6200if $test X"$prefix" != X"$installprefix"; then
6201 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6202else
6203 installarchlib="$archlibexp"
6204fi
6205
6206
6207: Binary compatibility with 5.005 is not possible for builds
6208: with advanced features
6209case "$usethreads$usemultiplicity" in
6210*define*)
6211 bincompat5005="$undef"
6212 d_bincompat5005="$undef"
6213 ;;
6214*) $cat <<EOM
6215
6216This version of Perl can be compiled for binary compatibility with 5.005.
6217If you decide to do so, you will be able to continue using most of the
6218extensions that were compiled for Perl 5.005.
6219
6220EOM
6221 case "$bincompat5005$d_bincompat5005" in
6222 *"$undef"*) dflt=n ;;
6223 *) dflt=y ;;
6224 esac
6225 rp='Binary compatibility with Perl 5.005?'
6226 . ./myread
6227 case "$ans" in
6228 y*) val="$define" ;;
6229 *) val="$undef" ;;
6230 esac
6231 set d_bincompat5005
6232 eval $setvar
6233 case "$d_bincompat5005" in
6234 "$define")
6235 bincompat5005="$define"
6236 ;;
6237 *) bincompat5005="$undef"
6238 d_bincompat5005="$undef"
6239 ;;
6240 esac
6241 ;;
6242esac
6243
6244
6245: see if setuid scripts can be secure
6246$cat <<EOM
6247
6248Some kernels have a bug that prevents setuid #! scripts from being
6249secure. Some sites have disabled setuid #! scripts because of this.
6250
6251First let's decide if your kernel supports secure setuid #! scripts.
6252(If setuid #! scripts would be secure but have been disabled anyway,
6253don't say that they are secure if asked.)
6254
6255EOM
6256
6257val="$undef"
6258if $test -d /dev/fd; then
6259 echo "#!$ls" >reflect
6260 chmod +x,u+s reflect
6261 ./reflect >flect 2>&1
6262 if $contains "/dev/fd" flect >/dev/null; then
6263 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6264 val="$define"
6265 else
6266 $cat <<EOM
6267If you are not sure if they are secure, I can check but I'll need a
6268username and password different from the one you are using right now.
6269If you don't have such a username or don't want me to test, simply
6270enter 'none'.
6271
6272EOM
6273 rp='Other username to test security of setuid scripts with?'
6274 dflt='none'
6275 . ./myread
6276 case "$ans" in
6277 n|none)
6278 case "$d_suidsafe" in
6279 '') echo "I'll assume setuid scripts are *not* secure." >&4
6280 dflt=n;;
6281 "$undef")
6282 echo "Well, the $hint value is *not* secure." >&4
6283 dflt=n;;
6284 *) echo "Well, the $hint value *is* secure." >&4
6285 dflt=y;;
6286 esac
c1a7f87b 6287 ;;
b4eb6b3d
JH
6288 *)
6289 $rm -f reflect flect
6290 echo "#!$ls" >reflect
6291 chmod +x,u+s reflect
6292 echo >flect
6293 chmod a+w flect
6294 echo '"su" will (probably) prompt you for '"$ans's password."
6295 su $ans -c './reflect >flect'
6296 if $contains "/dev/fd" flect >/dev/null; then
6297 echo "Okay, it looks like setuid scripts are secure." >&4
6298 dflt=y
6299 else
6300 echo "I don't think setuid scripts are secure." >&4
6301 dflt=n
6302 fi
6303 ;;
6304 esac
6305 rp='Does your kernel have *secure* setuid scripts?'
6306 . ./myread
6307 case "$ans" in
6308 [yY]*) val="$define";;
6309 *) val="$undef";;
6310 esac
6311 fi
6312else
6313 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6314 echo "(That's for file descriptors, not floppy disks.)"
6315 val="$undef"
6316fi
6317set d_suidsafe
6318eval $setvar
6319
6320$rm -f reflect flect
6321
6322: now see if they want to do setuid emulation
6323echo " "
6324val="$undef"
6325case "$d_suidsafe" in
6326"$define")
6327 val="$undef"
6328 echo "No need to emulate SUID scripts since they are secure here." >& 4
6329 ;;
6330*)
6331 $cat <<EOM
6332Some systems have disabled setuid scripts, especially systems where
6333setuid scripts cannot be secure. On systems where setuid scripts have
6334been disabled, the setuid/setgid bits on scripts are currently
6335useless. It is possible for $package to detect those bits and emulate
6336setuid/setgid in a secure fashion. This emulation will only work if
6337setuid scripts have been disabled in your kernel.
6338
6339EOM
6340 case "$d_dosuid" in
6341 "$define") dflt=y ;;
6342 *) dflt=n ;;
6343 esac
6344 rp="Do you want to do setuid/setgid emulation?"
6345 . ./myread
6346 case "$ans" in
6347 [yY]*) val="$define";;
6348 *) val="$undef";;
6349 esac
6350 ;;
6351esac
6352set d_dosuid
6353eval $setvar
6354
b4eb6b3d
JH
6355: see if this is a malloc.h system
6356set malloc.h i_malloc
6357eval $inhdr
6358
6359: see if stdlib is available
6360set stdlib.h i_stdlib
6361eval $inhdr
6362
6363: determine which malloc to compile in
6364echo " "
6365case "$usemymalloc" in
c4163172
JH
6366[yY]*|true|$define) dflt='y' ;;
6367[nN]*|false|$undef) dflt='n' ;;
6368*) case "$ptrsize" in
6369 4) dflt='y' ;;
6370 *) dflt='n' ;;
6371 esac
6372 ;;
8dfa8df9 6373esac
b4eb6b3d
JH
6374rp="Do you wish to attempt to use the malloc that comes with $package?"
6375. ./myread
6376usemymalloc="$ans"
6377case "$ans" in
6378y*|true)
6379 usemymalloc='y'
6380 mallocsrc='malloc.c'
6381 mallocobj="malloc$_o"
6382 d_mymalloc="$define"
6383 case "$libs" in
6384 *-lmalloc*)
6385 : Remove malloc from list of libraries to use
6386 echo "Removing unneeded -lmalloc from library list" >&4
6387 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6388 shift
6389 libs="$*"
6390 echo "libs = $libs" >&4
6391 ;;
6392 esac
6393 ;;
6394*)
6395 usemymalloc='n'
6396 mallocsrc=''
6397 mallocobj=''
6398 d_mymalloc="$undef"
6399 ;;
6400esac
6401
6402: compute the return types of malloc and free
6403echo " "
6404$cat >malloc.c <<END
6405#$i_malloc I_MALLOC
6406#$i_stdlib I_STDLIB
6407#include <stdio.h>
6408#include <sys/types.h>
6409#ifdef I_MALLOC
6410#include <malloc.h>
6411#endif
6412#ifdef I_STDLIB
6413#include <stdlib.h>
6414#endif
6415#ifdef TRY_MALLOC
6416void *malloc();
6417#endif
6418#ifdef TRY_FREE
6419void free();
6420#endif
6421END
6422case "$malloctype" in
6423'')
6424 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6425 malloctype='void *'
6426 else
6427 malloctype='char *'
6428 fi
6429 ;;
6430esac
6431echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6432
6433case "$freetype" in
6434'')
6435 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6436 freetype='void'
6437 else
6438 freetype='int'
6439 fi
6440 ;;
6441esac
6442echo "Your system uses $freetype free(), it would seem." >&4
6443$rm -f malloc.[co]
6444$cat <<EOM
6445
6446After $package is installed, you may wish to install various
6447add-on modules and utilities. Typically, these add-ons will
6448be installed under $prefix with the rest
6449of this package. However, you may wish to install such add-ons
6450elsewhere under a different prefix.
6451
6452If you do not wish to put everything under a single prefix, that's
6453ok. You will be prompted for the individual locations; this siteprefix
6454is only used to suggest the defaults.
6455
6456The default should be fine for most people.
6457
6458EOM
6459fn=d~+
6460rp='Installation prefix to use for add-on modules and utilities?'
6461: XXX Here might be another good place for an installstyle setting.
6462case "$siteprefix" in
6463'') dflt=$prefix ;;
6464*) dflt=$siteprefix ;;
6465esac
6466. ./getfile
6467: XXX Prefixit unit does not yet support siteprefix and vendorprefix
6468oldsiteprefix=''
6469case "$siteprefix" in
6470'') ;;
6471*) case "$ans" in
6472 "$prefix") ;;
6473 *) oldsiteprefix="$prefix";;
6474 esac
6475 ;;
6476esac
6477siteprefix="$ans"
6478siteprefixexp="$ansexp"
6479
6480: determine where site specific libraries go.
6481: Usual default is /usr/local/lib/perl5/site_perl/$version
6482: The default "style" setting is made in installstyle.U
6483: XXX No longer works with Prefixit stuff.
6484prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6485case "$sitelib" in
6486'') case "$installstyle" in
6487 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6488 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6489 esac
6490 ;;
6491*) dflt="$sitelib"
6492 ;;
6493esac
6494$cat <<EOM
6495
6496The installation process will create a directory for
6497site-specific extensions and modules. Most users find it convenient
6498to place all site-specific files in this directory rather than in the
6499main distribution directory.
6500
6501EOM
6502fn=d~+
6503rp='Pathname for the site-specific library files?'
6504. ./getfile
6505sitelib="$ans"
6506sitelibexp="$ansexp"
6507sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6508: Change installation prefix, if necessary.
6509if $test X"$prefix" != X"$installprefix"; then
6510 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6511else
6512 installsitelib="$sitelibexp"
6513fi
6514
6515: determine where site specific architecture-dependent libraries go.
6516: sitelib default is /usr/local/lib/perl5/site_perl/$version
6517: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6518: sitelib may have an optional trailing /share.
6519case "$sitearch" in
6520'') dflt=`echo $sitelib | $sed 's,/share$,,'`
6521 dflt="$dflt/$archname"
6522 ;;
6523*) dflt="$sitearch"
6524 ;;
6525esac
6526set sitearch sitearch none
6527eval $prefixit
6528$cat <<EOM
6529
6530The installation process will also create a directory for
6531architecture-dependent site-specific extensions and modules.
6532
6533EOM
6534fn=d~+
6535rp='Pathname for the site-specific architecture-dependent library files?'
6536. ./getfile
6537sitearch="$ans"
6538sitearchexp="$ansexp"
6539: Change installation prefix, if necessary.
6540if $test X"$prefix" != X"$installprefix"; then
6541 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6542else
6543 installsitearch="$sitearchexp"
6544fi
6545
6546$cat <<EOM
6547
6548The installation process will also create a directory for
6549vendor-supplied add-ons. Vendors who supply perl with their system
6550may find it convenient to place all vendor-supplied files in this
6551directory rather than in the main distribution directory. This will
6552ease upgrades between binary-compatible maintenance versions of perl.
6553
6554Of course you may also use these directories in whatever way you see
6555fit. For example, you might use them to access modules shared over a
6556company-wide network.
6557
6558The default answer should be fine for most people.
6559This causes further questions about vendor add-ons to be skipped
6560and no vendor-specific directories will be configured for perl.
6561
6562EOM
6563rp='Do you want to configure vendor-specific add-on directories?'
6564case "$usevendorprefix" in
6565define|true|[yY]*) dflt=y ;;
6566*) : User may have set vendorprefix directly on Configure command line.
6567 case "$vendorprefix" in
6568 ''|' ') dflt=n ;;
6569 *) dflt=y ;;
6570 esac
6571 ;;
6572esac
6573. ./myread
6574case "$ans" in
6575[yY]*) fn=d~+
6576 rp='Installation prefix to use for vendor-supplied add-ons?'
6577 case "$vendorprefix" in
6578 '') dflt='' ;;
6579 *) dflt=$vendorprefix ;;
6580 esac
6581 . ./getfile
6582 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6583 oldvendorprefix=''
6584 case "$vendorprefix" in
6585 '') ;;
6586 *) case "$ans" in
6587 "$prefix") ;;
6588 *) oldvendorprefix="$prefix";;
6589 esac
6590 ;;
6591 esac
6592 usevendorprefix="$define"
6593 vendorprefix="$ans"
6594 vendorprefixexp="$ansexp"
6595 ;;
6596*) usevendorprefix="$undef"
6597 vendorprefix=''
6598 vendorprefixexp=''
6599 ;;
6600esac
6601
6602case "$vendorprefix" in
6603'') d_vendorlib="$undef"
6604 vendorlib=''
6605 vendorlibexp=''
6606 ;;
6607*) d_vendorlib="$define"
6608 : determine where vendor-supplied modules go.
6609 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6610 case "$vendorlib" in
6611 '')
6612 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6613 case "$installstyle" in
6614 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6615 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6616 esac
6617 ;;
6618 *) dflt="$vendorlib"
6619 ;;
6620 esac
6621 fn=d~+
6622 rp='Pathname for the vendor-supplied library files?'
6623 . ./getfile
6624 vendorlib="$ans"
6625 vendorlibexp="$ansexp"
6626 ;;
6627esac
6628vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6629: Change installation prefix, if necessary.
6630if $test X"$prefix" != X"$installprefix"; then
6631 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6632else
6633 installvendorlib="$vendorlibexp"
6634fi
6635
6636case "$vendorprefix" in
6637'') d_vendorarch="$undef"
6638 vendorarch=''
6639 vendorarchexp=''
6640 ;;
6641*) d_vendorarch="$define"
6642 : determine where vendor-supplied architecture-dependent libraries go.
6643 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6644 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6645 : vendorlib may have an optional trailing /share.
6646 case "$vendorarch" in
6647 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6648 dflt="$dflt/$archname"
6649 ;;
6650 *) dflt="$vendorarch" ;;
6651 esac
6652 fn=d~+
6653 rp='Pathname for vendor-supplied architecture-dependent files?'
6654 . ./getfile
6655 vendorarch="$ans"
6656 vendorarchexp="$ansexp"
6657 ;;
6658esac
6659: Change installation prefix, if necessary.
6660if $test X"$prefix" != X"$installprefix"; then
6661 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6662else
6663 installvendorarch="$vendorarchexp"
6664fi
6665
6666: Final catch-all directories to search
6667$cat <<EOM
6668
6669Lastly, you can have perl look in other directories for extensions and
6670modules in addition to those already specified.
6671These directories will be searched after
6672 $sitearch
6673 $sitelib
6674EOM
6675test X"$vendorlib" != "X" && echo ' ' $vendorlib
6676test X"$vendorarch" != "X" && echo ' ' $vendorarch
6677echo ' '
6678case "$otherlibdirs" in
6679''|' ') dflt='none' ;;
6680*) dflt="$otherlibdirs" ;;
6681esac
6682$cat <<EOM
6683Enter a colon-separated set of extra paths to include in perl's @INC
6684search path, or enter 'none' for no extra paths.
6685
6686EOM
6687
6688rp='Colon-separated list of additional directories for perl to search?'
6689. ./myread
6690case "$ans" in
6691' '|''|none) otherlibdirs=' ' ;;
6692*) otherlibdirs="$ans" ;;
6693esac
6694case "$otherlibdirs" in
6695' ') val=$undef ;;
6696*) val=$define ;;
6697esac
6698set d_perl_otherlibdirs
6699eval $setvar
6700
6701: Cruising for prototypes
6702echo " "
6703echo "Checking out function prototypes..." >&4
6704$cat >prototype.c <<'EOCP'
6705int main(int argc, char *argv[]) {
6706 exit(0);}
6707EOCP
6708if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6709 echo "Your C compiler appears to support function prototypes."
6710 val="$define"
6711else
6712 echo "Your C compiler doesn't seem to understand function prototypes."
6713 val="$undef"
6714fi
6715set prototype
6716eval $setvar
6717$rm -f prototype*
6718
6719case "$prototype" in
6720"$define") ;;
6721*) ansi2knr='ansi2knr'
6722 echo " "
6723 cat <<EOM >&4
6724
6725$me: FATAL ERROR:
6726This version of $package can only be compiled by a compiler that
6727understands function prototypes. Unfortunately, your C compiler
6728 $cc $ccflags
6729doesn't seem to understand them. Sorry about that.
6730
6731If GNU cc is available for your system, perhaps you could try that instead.
6732
6733Eventually, we hope to support building Perl with pre-ANSI compilers.
6734If you would like to help in that effort, please contact <perlbug@perl.org>.
6735
6736Aborting Configure now.
6737EOM
6738 exit 2
6739 ;;
6740esac
6741
6742: determine where public executables go
6743echo " "
6744set dflt bin bin
6745eval $prefixit
6746fn=d~
6747rp='Pathname where the public executables will reside?'
6748. ./getfile
6749if $test "X$ansexp" != "X$binexp"; then
6750 installbin=''
6751fi
6752bin="$ans"
6753binexp="$ansexp"
6754: Change installation prefix, if necessary.
6755: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6756if $test X"$prefix" != X"$installprefix"; then
6757 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6758else
6759 installbin="$binexp"
6760fi
6761
6762: Find perl5.005 or later.
6763echo "Looking for a previously installed perl5.005 or later... "
6764case "$perl5" in
a938a3bb 6765'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
b4eb6b3d 6766 : Check if this perl is recent and can load a simple module
a938a3bb 6767 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
b4eb6b3d
JH
6768 perl5=$tdir/perl
6769 break;
a938a3bb
IZ
6770 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6771 perl5=$tdir/perl5
b4eb6b3d
JH
6772 break;
6773 fi
6774 done
6775 ;;
6776*) perl5="$perl5"
6777 ;;
6778esac
6779case "$perl5" in
6780'') echo "None found. That's ok.";;
6781*) echo "Using $perl5." ;;
6782esac
6783
6784: Determine list of previous versions to include in @INC
6785$cat > getverlist <<EOPL
6786#!$perl5 -w
6787use File::Basename;
6788\$api_versionstring = "$api_versionstring";
6789\$version = "$version";
6790\$stem = "$sitelib_stem";
6791\$archname = "$archname";
6792EOPL
6793 $cat >> getverlist <<'EOPL'
6794# Can't have leading @ because metaconfig interprets it as a command!
6795;@inc_version_list=();
6796# XXX Redo to do opendir/readdir?
6797if (-d $stem) {
6798 chdir($stem);
6799 ;@candidates = glob("5.*");
6800}
6801else {
6802 ;@candidates = ();
6803}
6804
6805# XXX ToDo: These comparisons must be reworked when two-digit
6806# subversions come along, so that 5.7.10 compares as greater than
6807# 5.7.3! By that time, hope that 5.6.x is sufficiently
6808# widespread that we can use the built-in version vectors rather
6809# than reinventing them here. For 5.6.0, however, we must
6810# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6811foreach $d (@candidates) {
6812 if ($d lt $version) {
6813 if ($d ge $api_versionstring) {
6814 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6815 }
6816 elsif ($d ge "5.005") {
6817 unshift(@inc_version_list, grep { -d } $d);
6818 }
6819 }
6820 else {
6821 # Skip newer version. I.e. don't look in
6822 # 5.7.0 if we're installing 5.6.1.
6823 }
6824}
6825
6826if (@inc_version_list) {
6827 print join(' ', @inc_version_list);
6828}
6829else {
6830 # Blank space to preserve value for next Configure run.
6831 print " ";
6832}
6833EOPL
6834chmod +x getverlist
6835case "$inc_version_list" in
a938a3bb 6836'') if test -x "$perl5$exe_ext"; then
b4eb6b3d
JH
6837 dflt=`$perl5 getverlist`
6838 else
6839 dflt='none'
6840 fi
6841 ;;
6842$undef) dflt='none' ;;
6d1a7737 6843*) eval dflt=\"$inc_version_list\" ;;
b4eb6b3d
JH
6844esac
6845case "$dflt" in
6846''|' ') dflt=none ;;
6847esac
6848case "$dflt" in
68495.005) case "$bincompat5005" in
6850 $define|true|[yY]*) ;;
6851 *) dflt=none ;;
6852 esac
6853 ;;
6854esac
6855$cat <<'EOM'
6856
6857In order to ease the process of upgrading, this version of perl
6858can be configured to use modules built and installed with earlier
6859versions of perl that were installed under $prefix. Specify here
6860the list of earlier versions that this version of perl should check.
6861If Configure detected no earlier versions of perl installed under
6862$prefix, then the list will be empty. Answer 'none' to tell perl
6863to not search earlier versions.
6864
6865The default should almost always be sensible, so if you're not sure,
6866just accept the default.
6867EOM
6868
6869rp='List of earlier versions to include in @INC?'
6870. ./myread
6871case "$ans" in
6872[Nn]one|''|' ') inc_version_list=' ' ;;
6873*) inc_version_list="$ans" ;;
6874esac
6875case "$inc_version_list" in
6876''|' ')
6877 inc_version_list_init='0';;
6878*) inc_version_list_init=`echo $inc_version_list |
6879 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6880 ;;
6881esac
6882$rm -f getverlist
6883
6884: determine whether to install perl also as /usr/bin/perl
6885
6886echo " "
6887if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6888 $cat <<EOM
6889Many scripts expect perl to be installed as /usr/bin/perl.
6890I can install the perl you are about to compile also as /usr/bin/perl
6891(in addition to $installbin/perl).
6892EOM
6893 case "$installusrbinperl" in
6894 "$undef"|[nN]*) dflt='n';;
6895 *) dflt='y';;
6896 esac
6897 rp="Do you want to install perl as /usr/bin/perl?"
6898 . ./myread
6899 case "$ans" in
6900 [yY]*) val="$define";;
6901 *) val="$undef" ;;
6902 esac
6903else
6904 val="$undef"
6905fi
6906set installusrbinperl
6907eval $setvar
6908
6909: see if dld is available
6910set dld.h i_dld
6911eval $inhdr
6912
6913: see if dlopen exists
6914xxx_runnm="$runnm"
6915runnm=false
6916set dlopen d_dlopen
6917eval $inlibc
6918runnm="$xxx_runnm"
6919
6920: determine which dynamic loading, if any, to compile in
6921echo " "
6922dldir="ext/DynaLoader"
6923case "$usedl" in
6924$define|y|true)
6925 dflt='y'
6926 usedl="$define"
6927 ;;
6928$undef|n|false)
6929 dflt='n'
6930 usedl="$undef"
6931 ;;
6932*)
6933 dflt='n'
6934 case "$d_dlopen" in
6935 $define) dflt='y' ;;
6936 esac
6937 case "$i_dld" in
6938 $define) dflt='y' ;;
6939 esac
6940 : Does a dl_xxx.xs file exist for this operating system
6941 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6942 ;;
6943esac
6944rp="Do you wish to use dynamic loading?"
6945. ./myread
6946usedl="$ans"
6947case "$ans" in
6948y*) usedl="$define"
6949 case "$dlsrc" in
6950 '')
6951 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6952 dflt="$dldir/dl_${osname}.xs"
6953 elif $test "$d_dlopen" = "$define" ; then
6954 dflt="$dldir/dl_dlopen.xs"
6955 elif $test "$i_dld" = "$define" ; then
6956 dflt="$dldir/dl_dld.xs"
6957 else
6958 dflt=''
6959 fi
6960 ;;
6961 *) dflt="$dldir/$dlsrc"
6962 ;;
6963 esac
6964 echo "The following dynamic loading files are available:"
6965 : Can not go over to $dldir because getfile has path hard-coded in.
6966 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6967 rp="Source file to use for dynamic loading"
6968 fn="fne"
6969 gfpth="$src"
6970 . ./getfile
6971 usedl="$define"
6972 : emulate basename
6973 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6974
6975 $cat << EOM
6976
6977Some systems may require passing special flags to $cc -c to
6978compile modules that will be used to create a shared library.
6979To use no flags, say "none".
6980
6981EOM
6982 case "$cccdlflags" in
6983 '') case "$gccversion" in
6984 '') case "$osname" in
6985 hpux) dflt='+z' ;;
6986 next) dflt='none' ;;
6987 irix*) dflt='-KPIC' ;;
48bcfe03 6988 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
6989 sunos) dflt='-pic' ;;
6990 *) dflt='none' ;;
6991 esac
6992 ;;
6993 *) case "$osname" in
48bcfe03 6994 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
6995 *) dflt='-fpic' ;;
6996 esac ;;
6997 esac ;;
6998 ' ') dflt='none' ;;
6999 *) dflt="$cccdlflags" ;;
7000 esac
7001 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7002 . ./myread
7003 case "$ans" in
7004 none) cccdlflags=' ' ;;
7005 *) cccdlflags="$ans" ;;
7006 esac
7007
7008 cat << EOM
7009
7010Some systems use ld to create libraries that can be dynamically loaded,
7011while other systems (such as those using ELF) use $cc.
7012
7013EOM
7014 case "$ld" in
7015 '') $cat >try.c <<'EOM'
7016/* Test for whether ELF binaries are produced */
7017#include <fcntl.h>
7018#include <stdlib.h>
7019int main() {
7020 char b[4];
7021 int i = open("a.out",O_RDONLY);
7022 if(i == -1)
7023 exit(1); /* fail */
7024 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7025 exit(0); /* succeed (yes, it's ELF) */
7026 else
7027 exit(1); /* fail */
7028}
7029EOM
5440bc8e 7030 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
b4eb6b3d
JH
7031 cat <<EOM
7032You appear to have ELF support. I'll use $cc to build dynamic libraries.
7033EOM
7034 dflt="$cc"
7035 else
7036 echo "I'll use ld to build dynamic libraries."
7037 dflt='ld'
7038 fi
7039 rm -f try.c a.out
7040 ;;
7041 *) dflt="$ld"
7042 ;;
7043 esac
7044
7045 rp="What command should be used to create dynamic libraries?"
7046 . ./myread
7047 ld="$ans"
7048
7049 cat << EOM
7050
7051Some systems may require passing special flags to $ld to create a
7052library that can be dynamically loaded. If your ld flags include
7053-L/other/path options to locate libraries outside your loader's normal
7054search path, you may need to specify those -L options here as well. To
7055use no flags, say "none".
7056
7057EOM
7058 case "$lddlflags" in
7059 '') case "$osname" in
7060 beos) dflt='-nostart' ;;
7061 hpux) dflt='-b';
7062 case "$gccversion" in
7063 '') dflt="$dflt +vnocompatwarnings" ;;
7064 esac
7065 ;;
7066 linux|irix*) dflt='-shared' ;;
7067 next) dflt='none' ;;
7068 solaris) dflt='-G' ;;
7069 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 7070 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
7071 *) dflt='none' ;;
7072 esac
7073 ;;
7074 *) dflt="$lddlflags" ;;
7075 esac
7076
7077 : Try to guess additional flags to pick up local libraries.
7078 : Be careful not to append to a plain 'none'
7079 case "$dflt" in
7080 none) dflt='' ;;
7081 esac
7082 for thisflag in $ldflags; do
7083 case "$thisflag" in
7084 -L*|-R*)
7085 case " $dflt " in
7086 *" $thisflag "*) ;;
7087 *) dflt="$dflt $thisflag" ;;
7088 esac
7089 ;;
7090 esac
7091 done
7092
7093 case "$dflt" in
7094 ''|' ') dflt='none' ;;
7095 esac
7096
7097 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7098 . ./myread
7099 case "$ans" in
7100 none) lddlflags=' ' ;;
7101 *) lddlflags="$ans" ;;
7102 esac
7103
7104 cat <<EOM
7105
7106Some systems may require passing special flags to $cc to indicate that
7107the resulting executable will use dynamic linking. To use no flags,
7108say "none".
7109
7110EOM
7111 case "$ccdlflags" in
7112 '') case "$osname" in
7113 hpux) dflt='-Wl,-E' ;;
7114 linux) dflt='-rdynamic' ;;
7115 next) dflt='none' ;;
7116 sunos) dflt='none' ;;
7117 *) dflt='none' ;;
7118 esac ;;
7119 ' ') dflt='none' ;;
7120 *) dflt="$ccdlflags" ;;
7121 esac
7122 rp="Any special flags to pass to $cc to use dynamic linking?"
7123 . ./myread
7124 case "$ans" in
7125 none) ccdlflags=' ' ;;
7126 *) ccdlflags="$ans" ;;
7127 esac
7128 ;;
7129*) usedl="$undef"
7130 ld='ld'
7131 dlsrc='dl_none.xs'
7132 lddlflags=''
7133 ccdlflags=''
7134 ;;
7135esac
7136
7137also=''
7138case "$usedl" in
7139$undef)
7140 # No dynamic loading being used, so don't bother even to prompt.
7141 useshrplib='false'
7142 ;;
7143*) case "$useshrplib" in
7144 '') case "$osname" in
48bcfe03 7145 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
7146 dflt=y
7147 also='Building a shared libperl is required for dynamic loading to work on your system.'
7148 ;;
7149 next*)
7150 case "$osvers" in
7151 4*) dflt=y
7152 also='Building a shared libperl is needed for MAB support.'
7153 ;;
7154 *) dflt=n
7155 ;;
7156 esac
7157 ;;
7158 *) dflt=n
7159 ;;
7160 esac
7161 ;;
7162 $define|true|[Yy]*)
7163 dflt=y
7164 ;;
7165 *) dflt=n
7166 ;;
7167 esac
7168 $cat << EOM
7169
7170The perl executable is normally obtained by linking perlmain.c with
7171libperl${_a}, any static extensions (usually just DynaLoader), and
7172any other libraries needed on this system (such as -lm, etc.). Since
7173your system supports dynamic loading, it is probably possible to build
7174a shared libperl.$so. If you will have more than one executable linked
7175to libperl.$so, this will significantly reduce the size of each
7176executable, but it may have a noticeable affect on performance. The
7177default is probably sensible for your system.
7178$also
7179
7180EOM
7181 rp="Build a shared libperl.$so (y/n)"
7182 . ./myread
7183 case "$ans" in
7184 true|$define|[Yy]*)
7185 useshrplib='true' ;;
7186 *) useshrplib='false' ;;
7187 esac
7188 ;;
7189esac
7190
7191case "$useshrplib" in
7192true)
7193 case "$libperl" in
7194 '')
7195 # Figure out a good name for libperl.so. Since it gets stored in
7196 # a version-specific architecture-dependent library, the version
7197 # number isn't really that important, except for making cc/ld happy.
7198 #
7199 # A name such as libperl.so.3.1
7200 majmin="libperl.$so.$patchlevel.$subversion"
7201 # A name such as libperl.so.301
7202 majonly=`echo $patchlevel $subversion |
7203 $awk '{printf "%d%02d", $1, $2}'`
7204 majonly=libperl.$so.$majonly
7205 # I'd prefer to keep the os-specific stuff here to a minimum, and
7206 # rely on figuring it out from the naming of libc.
7207 case "${osname}${osvers}" in
7208 next4*)
7209 dflt=libperl.5.$so
7210 # XXX How handle the --version stuff for MAB?
7211 ;;
7212 linux*) # ld won't link with a bare -lperl otherwise.
7213 dflt=libperl.$so
7214 ;;
7215 cygwin*) # include version
7216 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7217 ;;
7218 *) # Try to guess based on whether libc has major.minor.
7219 case "$libc" in
7220 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7221 *libc.$so.[0-9]*) dflt=$majonly ;;
7222 *) dflt=libperl.$so ;;
7223 esac
7224 ;;
7225 esac
7226 ;;
7227 *) dflt=$libperl
7228 ;;
7229 esac
7230 cat << EOM
7231
7232I need to select a good name for the shared libperl. If your system uses
7233library names with major and minor numbers, then you might want something
7234like $majmin. Alternatively, if your system uses a single version
7235number for shared libraries, then you might want to use $majonly.
7236Or, your system might be quite happy with a simple libperl.$so.
7237
7238Since the shared libperl will get installed into a version-specific
7239architecture-dependent directory, the version number of the shared perl
7240library probably isn't important, so the default should be o.k.
7241
7242EOM
7243 rp='What name do you want to give to the shared libperl?'
7244 . ./myread
7245 libperl=$ans
7246 echo "Ok, I'll use $libperl"
7247 ;;
7248*)
7249 libperl="libperl${_a}"
7250 ;;
7251esac
7252
7253# Detect old use of shrpdir via undocumented Configure -Dshrpdir
7254case "$shrpdir" in
7255'') ;;
7256*) $cat >&4 <<EOM
7257WARNING: Use of the shrpdir variable for the installation location of
7258the shared $libperl is not supported. It was never documented and
7259will not work in this version. Let me (perlbug@perl.org)
7260know of any problems this may cause.
7261
7262EOM
7263 case "$shrpdir" in
7264 "$archlibexp/CORE")
7265 $cat >&4 <<EOM
7266But your current setting of $shrpdir is
7267the default anyway, so it's harmless.
7268EOM
7269 ;;
7270 *)
7271 $cat >&4 <<EOM
7272Further, your current attempted setting of $shrpdir
7273conflicts with the value of $archlibexp/CORE
7274that installperl will use.
7275EOM
7276 ;;
7277 esac
7278 ;;
7279esac
7280
7281# How will the perl executable find the installed shared $libperl?
7282# Add $xxx to ccdlflags.
7283# If we can't figure out a command-line option, use $shrpenv to
7284# set env LD_RUN_PATH. The main perl makefile uses this.
7285shrpdir=$archlibexp/CORE
7286xxx=''
7287tmp_shrpenv=''
7288if "$useshrplib"; then
7289 case "$osname" in
7290 aix)
7291 # We'll set it in Makefile.SH...
7292 ;;
7293 solaris|netbsd)
7294 xxx="-R $shrpdir"
7295 ;;
7296 freebsd)
7297 xxx="-Wl,-R$shrpdir"
7298 ;;
7299 linux|irix*|dec_osf)
7300 xxx="-Wl,-rpath,$shrpdir"
7301 ;;
7302 next)
7303 # next doesn't like the default...
7304 ;;
7305 beos)
7306 # beos doesn't like the default, either.
7307 ;;
7308 hpux*)
7309 # hpux doesn't like the default, either.
7310 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7311 ;;
7312 *)
7313 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7314 ;;
7315 esac
7316 case "$xxx" in
7317 '') ;;
7318 *)
7319 # Only add $xxx if it isn't already in ccdlflags.
7320 case " $ccdlflags " in
7321 *" $xxx "*) ;;
7322 *) ccdlflags="$ccdlflags $xxx"
7323 cat <<EOM >&4
7324
7325Adding $xxx to the flags
7326passed to $ld so that the perl executable will find the
7327installed shared $libperl.
7328
7329EOM
7330 ;;
7331 esac
7332 ;;
7333 esac
7334fi
7335# Fix ccdlflags in AIX for building external extensions.
7336# (For building Perl itself bare -bE:perl.exp is needed,
7337# Makefile.SH takes care of this.)
7338case "$osname" in
7339aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7340esac
7341# Respect a hint or command-line value.
7342case "$shrpenv" in
7343'') shrpenv="$tmp_shrpenv" ;;
7344esac
7345case "$ldlibpthname" in
7346'') ldlibpthname=LD_LIBRARY_PATH ;;
7347none) ldlibpthname='' ;;
7348esac
7349
7350: determine where manual pages are on this system
7351echo " "
7352case "$sysman" in
7353'')
7354 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7355 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7356 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7357 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7358 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7359 sysman=`./loc . /usr/man/man1 $syspath`
7360 ;;
7361esac
7362if $test -d "$sysman"; then
7363 echo "System manual is in $sysman." >&4
7364else
7365 echo "Could not find manual pages in source form." >&4
7366fi
7367
7368: determine where manual pages go
7369set man1dir man1dir none
7370eval $prefixit
7371$cat <<EOM
7372
7373$spackage has manual pages available in source form.
7374EOM
7375case "$nroff" in
7376nroff)
7377 echo "However, you don't have nroff, so they're probably useless to you."
7378 case "$man1dir" in
7379 '') man1dir="none";;
7380 esac;;
7381esac
7382echo "If you don't want the manual sources installed, answer 'none'."
7383case "$man1dir" in
7384' ') dflt=none
7385 ;;
7386'')
7387 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7388 lookpath="$lookpath $prefixexp/man/p_man/man1"
7389 lookpath="$lookpath $prefixexp/man/u_man/man1"
7390 lookpath="$lookpath $prefixexp/man/man.1"
7391 case "$sysman" in
7392 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7393 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7394 esac
7395 set dflt
7396 eval $prefixup
7397 ;;
7398*) dflt="$man1dir"
7399 ;;
7400esac
7401echo " "
7402fn=dn+~
7403rp="Where do the main $spackage manual pages (source) go?"
7404. ./getfile
7405if $test "X$man1direxp" != "X$ansexp"; then
7406 installman1dir=''
7407fi
7408man1dir="$ans"
7409man1direxp="$ansexp"
7410case "$man1dir" in
7411'') man1dir=' '
7412 installman1dir='';;
7413esac
7414
7415: Change installation prefix, if necessary.
7416if $test X"$prefix" != X"$installprefix"; then
7417 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7418else
7419 installman1dir="$man1direxp"
7420fi
7421
7422: What suffix to use on installed man pages
7423
7424case "$man1dir" in
7425' ')
7426 man1ext='0'
7427 ;;
7428*)
7429 rp="What suffix should be used for the main $spackage man pages?"
7430 case "$man1ext" in
7431 '') case "$man1dir" in
7432 *1) dflt=1 ;;
7433 *1p) dflt=1p ;;
7434 *1pm) dflt=1pm ;;
7435 *l) dflt=l;;
7436 *n) dflt=n;;
7437 *o) dflt=o;;
7438 *p) dflt=p;;
7439 *C) dflt=C;;
7440 *L) dflt=L;;
7441 *L1) dflt=L1;;
7442 *) dflt=1;;
7443 esac
7444 ;;
7445 *) dflt="$man1ext";;
7446 esac
7447 . ./myread
7448 man1ext="$ans"
7449 ;;
7450esac
7451
7452: see if we can have long filenames
7453echo " "
7454first=123456789abcdef
7455$rm -f $first
7456if (echo hi >$first) 2>/dev/null; then
7457 if $test -f 123456789abcde; then
7458 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7459 val="$undef"
7460 else
7461 echo 'You can have filenames longer than 14 characters.'>&4
7462 val="$define"
7463 fi
7464else
7465 $cat <<'EOM'
7466You can't have filenames longer than 14 chars.
7467You can't even think about them!
7468EOM
7469 val="$undef"
7470fi
7471set d_flexfnam
7472eval $setvar
7473$rm -rf 123456789abcde*
7474
7475: determine where library module manual pages go
7476set man3dir man3dir none
7477eval $prefixit
7478$cat <<EOM
7479
7480$spackage has manual pages for many of the library modules.
7481EOM
7482
7483case "$nroff" in
7484nroff)
7485 $cat <<'EOM'
7486However, you don't have nroff, so they're probably useless to you.
7487EOM
7488 case "$man3dir" in
7489 '') man3dir="none";;
7490 esac;;
7491esac
7492
7493case "$d_flexfnam" in
7494undef)
7495 $cat <<'EOM'
7496However, your system can't handle the long file names like File::Basename.3.
7497EOM
7498 case "$man3dir" in
7499 '') man3dir="none";;
7500 esac;;
7501esac
7502
7503echo "If you don't want the manual sources installed, answer 'none'."
7504prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7505case "$man3dir" in
7506'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7507 if $test -d "$privlib/man/man3"; then
7508 cat <<EOM >&4
7509
7510WARNING: Previous versions of perl installed man3 pages into
7511$privlib/man/man3. This version will suggest a
7512new default of $dflt.
7513EOM
7514 tdflt=$dflt
7515 dflt='n'
7516 rp='Do you wish to preserve the old behavior?(y/n)'
7517 . ./myread
7518 case "$ans" in
7519 y*) dflt="$privlib/man/man3" ;;
7520 *) dflt=$tdflt ;;
7521 esac
7522 fi
7523 ;;
7524*) dflt="$man3dir" ;;
7525esac
7526case "$dflt" in
7527' ') dflt=none ;;
7528esac
7529echo " "
7530fn=dn+~
7531rp="Where do the $package library man pages (source) go?"
7532. ./getfile
7533man3dir="$ans"
7534man3direxp="$ansexp"
7535case "$man3dir" in
7536'') man3dir=' '
7537 installman3dir='';;
7538esac
7539
7540: Change installation prefix, if necessary.
7541if $test X"$prefix" != X"$installprefix"; then
7542 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7543else
7544 installman3dir="$man3direxp"
7545fi
7546
7547: What suffix to use on installed man pages
7548case "$man3dir" in
7549' ')
7550 man3ext='0'
7551 ;;
7552*)
7553 rp="What suffix should be used for the $package library man pages?"
7554 case "$man3ext" in
7555 '') case "$man3dir" in
7556 *3) dflt=3 ;;
7557 *3p) dflt=3p ;;
7558 *3pm) dflt=3pm ;;
7559 *l) dflt=l;;
7560 *n) dflt=n;;
7561 *o) dflt=o;;
7562 *p) dflt=p;;
7563 *C) dflt=C;;
7564 *L) dflt=L;;
7565 *L3) dflt=L3;;
7566 *) dflt=3;;
7567 esac
7568 ;;
7569 *) dflt="$man3ext";;
7570 esac
7571 . ./myread
7572 man3ext="$ans"
7573 ;;
7574esac
7575
7576: see if we have to deal with yellow pages, now NIS.
7577if $test -d /usr/etc/yp || $test -d /etc/yp; then
7578 if $test -f /usr/etc/nibindd; then
7579 echo " "
7580 echo "I'm fairly confident you're on a NeXT."
7581 echo " "
7582 rp='Do you get the hosts file via NetInfo?'
7583 dflt=y
7584 case "$hostcat" in
7585 nidump*) ;;
7586 '') ;;
7587 *) dflt=n;;
7588 esac
7589 . ./myread
7590 case "$ans" in
7591 y*) hostcat='nidump hosts .';;
7592 *) case "$hostcat" in
7593 nidump*) hostcat='';;
7594 esac
7595 ;;
7596 esac
7597 fi
7598 case "$hostcat" in
7599 nidump*) ;;
7600 *)
7601 case "$hostcat" in
7602 *ypcat*) dflt=y;;
7603 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7604 dflt=y
7605 else
7606 dflt=n
7607 fi;;
7608 *) dflt=n;;
7609 esac
7610 echo " "
7611 rp='Are you getting the hosts file via yellow pages?'
7612 . ./myread
7613 case "$ans" in
7614 y*) hostcat='ypcat hosts';;
7615 *) hostcat='cat /etc/hosts';;
7616 esac
7617 ;;
7618 esac
7619fi
7620case "$hostcat" in
7621'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7622esac
7623case "$groupcat" in
7624'') test -f /etc/group && groupcat='cat /etc/group';;
7625esac
7626case "$passcat" in
7627'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7628esac
7629
7630: now get the host name
7631echo " "
7632echo "Figuring out host name..." >&4
7633case "$myhostname" in
7634'') cont=true
7635 echo 'Maybe "hostname" will work...'
73614538 7636 if tans=`sh -c hostname 2>&1` ; then
b4eb6b3d
JH
7637 myhostname=$tans
7638 phostname=hostname
7639 cont=''
7640 fi
7641 ;;
7642*) cont='';;
7643esac
7644if $test "$cont"; then
7645 if ./xenix; then
7646 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7647 if tans=`cat /etc/systemid 2>&1` ; then
7648 myhostname=$tans
7649 phostname='cat /etc/systemid'
7650 echo "Whadyaknow. Xenix always was a bit strange..."
7651 cont=''
7652 fi
7653 elif $test -r /etc/systemid; then
7654 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7655 fi
7656fi
7657if $test "$cont"; then
7658 echo 'No, maybe "uuname -l" will work...'
73614538 7659 if tans=`sh -c 'uuname -l' 2>&1` ; then
b4eb6b3d
JH
7660 myhostname=$tans
7661 phostname='uuname -l'
7662 else
7663 echo 'Strange. Maybe "uname -n" will work...'
73614538 7664 if tans=`sh -c 'uname -n' 2>&1` ; then
b4eb6b3d
JH
7665 myhostname=$tans
7666 phostname='uname -n'
7667 else
7668 echo 'Oh well, maybe I can mine it out of whoami.h...'
73614538 7669 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
b4eb6b3d
JH
7670 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7671 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7672 else
7673 case "$myhostname" in
7674 '') echo "Does this machine have an identity crisis or something?"
7675 phostname='';;
7676 *)
7677 echo "Well, you said $myhostname before..."
7678 phostname='echo $myhostname';;
7679 esac
7680 fi
7681 fi
7682 fi
7683fi
7684: you do not want to know about this
7685set $myhostname
7686myhostname=$1
7687
7688: verify guess
7689if $test "$myhostname" ; then
7690 dflt=y
7691 rp='Your host name appears to be "'$myhostname'".'" Right?"
7692 . ./myread
7693 case "$ans" in
7694 y*) ;;
7695 *) myhostname='';;
7696 esac
7697fi
7698
7699: bad guess or no guess
7700while $test "X$myhostname" = X ; do
7701 dflt=''
7702 rp="Please type the (one word) name of your host:"
7703 . ./myread
7704 myhostname="$ans"
7705done
7706
7707: translate upper to lower if necessary
7708case "$myhostname" in
7709*[A-Z]*)
7710 echo "(Normalizing case in your host name)"
7711 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7712 ;;
7713esac
7714
7715case "$myhostname" in
7716*.*)
7717 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7718 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7719 echo "(Trimming domain name from host name--host name is now $myhostname)"
7720 ;;
7721*) case "$mydomain" in
7722 '')
7723 {
7724 test "X$hostcat" = "Xypcat hosts" &&
7725 ypmatch "$myhostname" hosts 2>/dev/null |\
7726 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7727 $test -s hosts
7728 } || {
7729 test "X$hostcat" != "X" &&
7730 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7731 /[ ]$myhostname[ . ]/p" > hosts
7732 }
7733 tmp_re="[ . ]"
f08cbdd1
PP
7734 if $test -f hosts; then
7735 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7736 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7737 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7738 hosts | $sort | $uniq | \
7739 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7740 case `$echo X$dflt` in
7741 X*\ *) echo "(Several hosts in the database matched hostname)"
7742 dflt=.
7743 ;;
7744 X.) echo "(You do not have fully-qualified names in the hosts database)"
7745 ;;
7746 esac
7747 else
7748 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7749 dflt=.
f08cbdd1 7750 fi
b4eb6b3d
JH
7751 case "$dflt" in
7752 .)
7753 tans=`./loc resolv.conf X /etc /usr/etc`
7754 if $test -f "$tans"; then
7755 echo "(Attempting domain name extraction from $tans)"
7756 dflt=.`$sed -n -e 's/ / /g' \
7757 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7758 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7759 case "$dflt" in
7760 .) dflt=.`$sed -n -e 's/ / /g' \
7761 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7762 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7763 ;;
7764 esac
7765 fi
7766 ;;
7767 esac
7768 case "$dflt" in
7769 .) echo "(No help from resolv.conf either -- attempting clever guess)"
73614538 7770 dflt=.`sh -c domainname 2>/dev/null`
b4eb6b3d
JH
7771 case "$dflt" in
7772 '') dflt='.';;
7773 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7774 esac
7775 ;;
7776 esac
59c9e5d6
PP
7777 case "$dflt$osname" in
7778 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
caf85fe8 7779 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
59c9e5d6
PP
7780 ;;
7781 esac
b4eb6b3d
JH
7782 case "$dflt" in
7783 .) echo "(Lost all hope -- silly guess then)"
7784 dflt='.uucp'
7785 ;;
7786 esac
7787 $rm -f hosts
7788 ;;
7789 *) dflt="$mydomain";;
7790 esac;;
7791esac
7792echo " "
7793rp="What is your domain name?"
7794. ./myread
7795tans="$ans"
7796case "$ans" in
7797'') ;;
7798.*) ;;
7799*) tans=".$tans";;
7800esac
7801mydomain="$tans"
7802
7803: translate upper to lower if necessary
7804case "$mydomain" in
7805*[A-Z]*)
7806 echo "(Normalizing case in your domain name)"
7807 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7808 ;;
7809esac
7810
7811: a little sanity check here
7812case "$phostname" in
7813'') ;;
7814*)
7815 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7816 $myhostname$mydomain|$myhostname) ;;
7817 *)
7818 case "$phostname" in
7819 sed*)
7820 echo "(That doesn't agree with your whoami.h file, by the way.)"
7821 ;;
7822 *)
7823 echo "(That doesn't agree with your $phostname command, by the way.)"
7824 ;;
7825 esac
7826 ;;
7827 esac
7828 ;;
7829esac
7830
7831$cat <<EOM
7832
7833I need to get your e-mail address in Internet format if possible, i.e.
7834something like user@host.domain. Please answer accurately since I have
7835no easy means to double check it. The default value provided below
7836is most probably close to reality but may not be valid from outside
7837your organization...
7838
7839EOM
7840cont=x
7841while test "$cont"; do
7842 case "$cf_email" in
7843 '') dflt="$cf_by@$myhostname$mydomain";;
7844 *) dflt="$cf_email";;
7845 esac
7846 rp='What is your e-mail address?'
7847 . ./myread
7848 cf_email="$ans"
7849 case "$cf_email" in
7850 *@*.*) cont='' ;;
7851 *)
7852 rp='Address does not look like an Internet one. Use it anyway?'
7853 case "$fastread" in
7854 yes) dflt=y ;;
7855 *) dflt=n ;;
7856 esac
7857 . ./myread
7858 case "$ans" in
7859 y*) cont='' ;;
7860 *) echo " " ;;
7861 esac
7862 ;;
7863 esac
7864done
7865
7866$cat <<EOM
7867
7868If you or somebody else will be maintaining perl at your site, please
7869fill in the correct e-mail address here so that they may be contacted
7870if necessary. Currently, the "perlbug" program included with perl
7871will send mail to this address in addition to perlbug@perl.org. You may
7872enter "none" for no administrator.
7873
7874EOM
7875case "$perladmin" in
7876'') dflt="$cf_email";;
7877*) dflt="$perladmin";;
7878esac
7879rp='Perl administrator e-mail address'
7880. ./myread
7881perladmin="$ans"
7882
674912d7
RB
7883: determine whether to only install version-specific parts.
7884echo " "
7885$cat <<EOM
7886Do you want to install only the version-specific parts of the perl
7887distribution? Usually you do *not* want to do this.
7888EOM
7889case "$versiononly" in
7890"$define"|[Yy]*|true) dflt='y' ;;
7891*) dflt='n';
7892esac
7893rp="Do you want to install only the version-specific parts of perl?"
7894. ./myread
7895case "$ans" in
7896[yY]*) val="$define";;
7897*) val="$undef" ;;
7898esac
7899set versiononly
7900eval $setvar
7901
b4eb6b3d
JH
7902: figure out how to guarantee perl startup
7903case "$startperl" in
7904'')
7905 case "$sharpbang" in
7906 *!)
7907 $cat <<EOH
7908
7909I can use the #! construct to start perl on your system. This will
7910make startup of perl scripts faster, but may cause problems if you
7911want to share those scripts and perl is not in a standard place
7912($binexp/perl) on all your platforms. The alternative is to force
7913a shell by starting the script with a single ':' character.
7914
7915EOH
674912d7
RB
7916 case "$versiononly" in
7917 "$define") dflt="$binexp/perl$version";;
7918 *) dflt="$binexp/perl";;
7919 esac
b4eb6b3d
JH
7920 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7921 . ./myread
7922 case "$ans" in
7923 none) startperl=": # use perl";;
7924 *) startperl="#!$ans"
7925 if $test 30 -lt `echo "$ans" | wc -c`; then
7926 $cat >&4 <<EOM
7927
7928WARNING: Some systems limit the #! command to 32 characters.
7929If you experience difficulty running Perl scripts with #!, try
7930installing Perl in a directory with a shorter pathname.
7931
7932EOM
7933 fi ;;
7934 esac
7935 ;;
7936 *) startperl=": # use perl"
7937 ;;
7938 esac
7939 ;;
7940esac
7941echo "I'll use $startperl to start perl scripts."
7942
7943: figure best path for perl in scripts
7944case "$perlpath" in
7945'')
7946 perlpath="$binexp/perl"
7947 case "$startperl" in
7948 *!*) ;;
7949 *)
7950 $cat <<EOH
7951
7952I will use the "eval 'exec'" idiom to start Perl on your system.
7953I can use the full path of your Perl binary for this purpose, but
7954doing so may cause problems if you want to share those scripts and
7955Perl is not always in a standard place ($binexp/perl).
7956
7957EOH
7958 dflt="$binexp/perl"
7959 rp="What path shall I use in \"eval 'exec'\"?"
7960 . ./myread
7961 perlpath="$ans"
7962 ;;
7963 esac
7964 ;;
7965esac
7966case "$startperl" in
7967*!*) ;;
7968*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7969esac
7970
7971: determine where public executable scripts go
7972set scriptdir scriptdir
7973eval $prefixit
7974case "$scriptdir" in
7975'')
7976 dflt="$bin"
7977 : guess some guesses
7978 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7979 $test -d /usr/share/bin && dflt=/usr/share/bin
7980 $test -d /usr/local/script && dflt=/usr/local/script
7981 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7982 $test -d $prefixexp/script && dflt=$prefixexp/script
7983 set dflt
7984 eval $prefixup
7985 ;;
7986*) dflt="$scriptdir"
7987 ;;
7988esac
7989$cat <<EOM
7990
7991Some installations have a separate directory just for executable scripts so
7992that they can mount it across multiple architectures but keep the scripts in
7993one spot. You might, for example, have a subdirectory of /usr/share for this.
7994Or you might just lump your scripts in with all your other executables.
7995
7996EOM
7997fn=d~
7998rp='Where do you keep publicly executable scripts?'
7999. ./getfile
8000if $test "X$ansexp" != "X$scriptdirexp"; then
8001 installscript=''
8002fi
8003scriptdir="$ans"
8004scriptdirexp="$ansexp"
8005: Change installation prefix, if necessary.
8006if $test X"$prefix" != X"$installprefix"; then
8007 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8008else
8009 installscript="$scriptdirexp"
8010fi
8011
8012: determine where add-on public executables go
8013case "$sitebin" in
8014'') dflt=$siteprefix/bin ;;
8015*) dflt=$sitebin ;;
8016esac
8017fn=d~
8018rp='Pathname where the add-on public executables should be installed?'
8019. ./getfile
8020sitebin="$ans"
8021sitebinexp="$ansexp"
8022: Change installation prefix, if necessary.
8023if $test X"$prefix" != X"$installprefix"; then
8024 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8025else
8026 installsitebin="$sitebinexp"
8027fi
8028
96056487
JH
8029: define an is-a-typedef? function
8030typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8031case "$inclist" in
8032"") inclist="sys/types.h";;
8033esac;
8034eval "varval=\$$var";
8035case "$varval" in
8036"")
8037 $rm -f temp.c;
8038 for inc in $inclist; do
8039 echo "#include <$inc>" >>temp.c;
8040 done;
8041 echo "#ifdef $type" >> temp.c;
8042 echo "printf(\"We have $type\");" >> temp.c;
8043 echo "#endif" >> temp.c;
8044 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8045 if $contains $type temp.E >/dev/null 2>&1; then
8046 eval "$var=\$type";
8047 else
8048 eval "$var=\$def";
8049 fi;
8050 $rm -f temp.?;;
8051*) eval "$var=\$varval";;
8052esac'
8053
8054: define an is-a-typedef? function that prompts if the type is not available.
8055typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8056case "$inclist" in
8057"") inclist="sys/types.h";;
8058esac;
8059eval "varval=\$$var";
8060case "$varval" in
8061"")
8062 $rm -f temp.c;
8063 for inc in $inclist; do
8064 echo "#include <$inc>" >>temp.c;
8065 done;
8066 echo "#ifdef $type" >> temp.c;
8067 echo "printf(\"We have $type\");" >> temp.c;
8068 echo "#endif" >> temp.c;
8069 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8070 echo " " ;
8071 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8072 if $contains $type temp.E >/dev/null 2>&1; then
8073 echo "$type found." >&4;
8074 eval "$var=\$type";
8075 else
8076 echo "$type NOT found." >&4;
8077 dflt="$def";
8078 . ./myread ;
8079 eval "$var=\$ans";
8080 fi;
8081 $rm -f temp.?;;
8082*) eval "$var=\$varval";;
8083esac'
8084
8085: see what type lseek is declared as in the kernel
8086rp="What is the type used for lseek's offset on this system?"
8087set off_t lseektype long stdio.h sys/types.h
8088eval $typedef_ask
8089
8090echo " "
8091echo "Checking to see how big your file offsets are..." >&4
8092$cat >try.c <<EOCP
8093#include <sys/types.h>
8094#include <stdio.h>
8095int main()
8096{
8097 printf("%d\n", (int)sizeof($lseektype));
8098 return(0);
8099}
8100EOCP
8101set try
8102if eval $compile_ok; then
8103 lseeksize=`$run ./try`
8104 echo "Your file offsets are $lseeksize bytes long."
8105else
8106 dflt=$longsize
8107 echo " "
8108 echo "(I can't seem to compile the test program. Guessing...)"
8109 rp="What is the size of your file offsets (in bytes)?"
8110 . ./myread
8111 lseeksize="$ans"
8112fi
8113$rm -f try.c try
8114
8115: see what type file positions are declared as in the library
8116rp="What is the type for file position used by fsetpos()?"
8117set fpos_t fpostype long stdio.h sys/types.h
8118eval $typedef_ask
8119
8120echo " "
8121case "$fpostype" in
8122*_t) zzz="$fpostype" ;;
8123*) zzz="fpos_t" ;;
8124esac
8125echo "Checking the size of $zzz..." >&4
8126cat > try.c <<EOCP
8127#include <sys/types.h>
8128#include <stdio.h>
8129int main() {
8130 printf("%d\n", (int)sizeof($fpostype));
8131 exit(0);
8132}
8133EOCP
8134set try
8135if eval $compile_ok; then
8136 yyy=`$run ./try`
8137 case "$yyy" in
8138 '') fpossize=4
8139 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8140 ;;
8141 *) fpossize=$yyy
8142 echo "Your $zzz is $fpossize bytes long."
8143 ;;
8144 esac
8145else
8146 dflt="$longsize"
8147 echo " " >&4
8148 echo "(I can't compile the test program. Guessing...)" >&4
8149 rp="What is the size of your file positions (in bytes)?"
8150 . ./myread
8151 fpossize="$ans"
8152fi
8153
8154
8155
8156# Backward compatibility (uselfs is deprecated).
8157case "$uselfs" in
8158"$define"|true|[yY]*)
8159 cat <<EOM >&4
8160
8161*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8162EOM
8163 uselargefiles="$define"
8164 ;;
8165esac
8166
8167case "$lseeksize:$fpossize" in
81688:8) cat <<EOM
8169
8170You can have files larger than 2 gigabytes.
8171EOM
8172 val="$define" ;;
8173*) case "$uselargefiles" in
8174 "$undef"|false|[nN]*) dflt='n' ;;
8175 *) dflt='y' ;;
8176 esac
8177 cat <<EOM
8178
8179Perl can be built to understand large files (files larger than 2 gigabytes)
8180on some systems. To do so, Configure can be run with -Duselargefiles.
8181
8182If this doesn't make any sense to you, just accept the default '$dflt'.
8183EOM
8184 rp='Try to understand large files, if available?'
8185 . ./myread
8186 case "$ans" in
8187 y|Y) val="$define" ;;
8188 *) val="$undef" ;;
8189 esac
8190 ;;
8191esac
8192set uselargefiles
8193eval $setvar
8194case "$uselargefiles" in
8195"$define")
8196: Look for a hint-file generated 'call-back-unit'. If the
8197: user has specified that a large files perl is to be built,
8198: we may need to set or change some other defaults.
8199 if $test -f uselargefiles.cbu; then
8200 echo "Your platform has some specific hints for large file builds, using them..."
8201 . ./uselargefiles.cbu
8202 echo " "
8203 echo "Rechecking to see how big your file offsets are..." >&4
8204 $cat >try.c <<EOCP
8205#include <sys/types.h>
8206#include <stdio.h>
8207int main()
8208{
8209 printf("%d\n", (int)sizeof($lseektype));
8210 return(0);
8211}
8212EOCP
8213 set try
8214 if eval $compile_ok; then
8215 lseeksize=`$run ./try`
8216 $echo "Your file offsets are now $lseeksize bytes long."
8217 else
8218 dflt="$lseeksize"
8219 echo " "
8220 echo "(I can't seem to compile the test program. Guessing...)"
8221 rp="What is the size of your file offsets (in bytes)?"
8222 . ./myread
8223 lseeksize="$ans"
8224 fi
8225 case "$fpostype" in
8226 *_t) zzz="$fpostype" ;;
8227 *) zzz="fpos_t" ;;
8228 esac
8229 $echo $n "Rechecking the size of $zzz...$c" >&4
8230 $cat > try.c <<EOCP
8231#include <sys/types.h>
8232#include <stdio.h>
8233int main() {
8234 printf("%d\n", (int)sizeof($fpostype));
8235 exit(0);
8236}
8237EOCP
8238 set try
8239 if eval $compile_ok; then
8240 yyy=`$run ./try`
8241 dflt="$lseeksize"
8242 case "$yyy" in
8243 '') echo " "
8244 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8245 ;;
8246 *) fpossize=$yyy
8247 echo " $fpossize bytes." >&4
8248 ;;
8249 esac
8250 else
8251 dflt="$fpossize"
8252 echo " "
8253 echo "(I can't compile the test program. Guessing...)" >&4
8254 rp="What is the size of your file positions (in bytes)?"
8255 . ./myread
8256 fpossize="$ans"
8257 fi
8258 $rm -f try.c try
8259 fi
8260 ;;
8261esac
8262
b4eb6b3d
JH
8263case "$vendorprefix" in
8264'') d_vendorbin="$undef"
8265 vendorbin=''
8266 vendorbinexp=''
8267 ;;
8268*) d_vendorbin="$define"
8269 : determine where vendor-supplied executables go.
8270 case "$vendorbin" in
8271 '') dflt=$vendorprefix/bin ;;
8272 *) dflt="$vendorbin" ;;
8273 esac
8274 fn=d~+
8275 rp='Pathname for the vendor-supplied executables directory?'
8276 . ./getfile
8277 vendorbin="$ans"
8278 vendorbinexp="$ansexp"
8279 ;;
8280esac
8281: Change installation prefix, if necessary.
8282if $test X"$prefix" != X"$installprefix"; then
8283 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8284else
8285 installvendorbin="$vendorbinexp"
8286fi
8287
8288: see if qgcvt exists
8289set qgcvt d_qgcvt
8290eval $inlibc
8291
8292echo " "
8293
8294if $test X"$d_longdbl" = X"$define"; then
8295
8296echo "Checking how to print long doubles..." >&4
8297
8298if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8299 $cat >try.c <<'EOCP'
8300#include <sys/types.h>
8301#include <stdio.h>
8302int main() {
8303 double d = 123.456;
8304 printf("%.3f\n", d);
8305}
8306EOCP
8307 set try
8308 if eval $compile; then
5440bc8e 8309 yyy=`$run ./try`
b4eb6b3d
JH
8310 case "$yyy" in
8311 123.456)
8312 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8313 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8314 echo "We will use %f."
8315 ;;
8316 esac
8317 fi
8318fi
8319
8320if $test X"$sPRIfldbl" = X; then
8321 $cat >try.c <<'EOCP'
8322#include <sys/types.h>
8323#include <stdio.h>
8324int main() {
8325 long double d = 123.456;
2ef53570 8326 printf("%.3Lf\n", d);
b4eb6b3d
JH
8327}
8328EOCP
8329 set try
8330 if eval $compile; then
5440bc8e 8331 yyy=`$run ./try`
b4eb6b3d
JH
8332 case "$yyy" in
8333 123.456)
2ef53570
JH
8334 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8335 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8336 echo "We will use %Lf."
b4eb6b3d
JH
8337 ;;
8338 esac
8339 fi
8340fi
8341
8342if $test X"$sPRIfldbl" = X; then
8343 $cat >try.c <<'EOCP'
8344#include <sys/types.h>
8345#include <stdio.h>
8346int main() {
8347 long double d = 123.456;
2ef53570 8348 printf("%.3llf\n", d);
b4eb6b3d
JH
8349}
8350EOCP
8351 set try
8352 if eval $compile; then
5440bc8e 8353 yyy=`$run ./try`
b4eb6b3d
JH
8354 case "$yyy" in
8355 123.456)
2ef53570
JH
8356 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8357 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8358 echo "We will use %llf."
b4eb6b3d
JH
8359 ;;
8360 esac
8361 fi
8362fi
8363
8364if $test X"$sPRIfldbl" = X; then
8365 $cat >try.c <<'EOCP'
8366#include <sys/types.h>
8367#include <stdio.h>
8368int main() {
8369 long double d = 123.456;
8370 printf("%.3lf\n", d);
8371}
8372EOCP
8373 set try
8374 if eval $compile; then
5440bc8e 8375 yyy=`$run ./try`
b4eb6b3d
JH
8376 case "$yyy" in
8377 123.456)
8378 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8379 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8380 echo "We will use %lf."
8381 ;;
8382 esac
8383 fi
8384fi
8385
8386if $test X"$sPRIfldbl" = X; then
8387 echo "Cannot figure out how to print long doubles." >&4
8388else
8389 sSCNfldbl=$sPRIfldbl # expect consistency
8390fi
8391
8392$rm -f try try.*
8393
8394fi # d_longdbl
8395
8396case "$sPRIfldbl" in
8397'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8398 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8399 d_SCNfldbl="$undef";
8400 ;;
8401*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8402 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8403 d_SCNfldbl="$define";
8404 ;;
8405esac
8406
8407: Check how to convert floats to strings.
8408echo " "
8409echo "Checking for an efficient way to convert floats to strings."
8410echo " " > try.c
8411case "$uselongdouble" in
8412"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8413esac
8414case "$d_longdbl" in
8415"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8416esac
8417case "$d_PRIgldbl" in
8418"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8419esac
8420$cat >>try.c <<EOP
8421#ifdef TRY_gconvert
8422#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8423char *myname = "gconvert";
8424#endif
8425#ifdef TRY_gcvt
8426#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8427char *myname = "gcvt";
8428#endif
8429#ifdef TRY_qgcvt
8430#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8431char *myname = "qgcvt";
8432#define DOUBLETYPE long double
8433#endif
8434#ifdef TRY_sprintf
8435#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8436#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8437#else
8438#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8439#endif
8440char *myname = "sprintf";
8441#endif
8442
8443#ifndef DOUBLETYPE
8444#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8445#define DOUBLETYPE long double
8446#else
8447#define DOUBLETYPE double
8448#endif
8449#endif
8450
8451#include <stdio.h>
8452
8453#define I_STDLIB $i_stdlib
8454#ifdef I_STDLIB
8455#include <stdlib.h>
8456#endif
8457
8458int
8459checkit(expect, got)
8460char *expect;
8461char *got;
8462{
8463 if (strcmp(expect, got)) {
8464 printf("%s oddity: Expected %s, got %s\n",
8465 myname, expect, got);
8466 exit(1);
8467 }
8468}
8469
8470int main()
8471{
8472 char buf[64];
8473 buf[63] = '\0';
8474
8475 /* This must be 1st test on (which?) platform */
8476 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8477 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8478 checkit("0.1", buf);
8479
8480 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8481 checkit("1", buf);
8482
8483 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8484 checkit("1.1", buf);
8485
8486 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8487 checkit("1.01", buf);
8488
8489 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8490 checkit("1.001", buf);
8491
8492 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8493 checkit("1.0001", buf);
8494
8495 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8496 checkit("1.00001", buf);
8497
8498 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8499 checkit("1.000001", buf);
8500
8501 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8502 checkit("0", buf);
8503
8504 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8505 checkit("-1", buf);
8506
8507 /* Some Linux gcvt's give 1.e+5 here. */
8508 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8509 checkit("100000", buf);
8510
8511 /* Some Linux gcvt's give -1.e+5 here. */
8512 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8513 checkit("-100000", buf);
8514
8515 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8516 checkit("123.456", buf);
8517
8e2a5ede
SB
8518 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8519 Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8520 if (strlen(buf) > 5)
8521 checkit("1e+030", buf); /* for Microsoft */
8522 else
8523 checkit("1e+30", buf);
8524
b4eb6b3d
JH
8525 exit(0);
8526}
8527EOP
8528case "$d_Gconvert" in
8529gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8530gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8531sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8532*) xxx_list='gconvert gcvt sprintf' ;;
8533esac
8534
8535case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8536"$define$define$define")
8537 # for long doubles prefer first qgcvt, then sprintf
8538 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8539 xxx_list="sprintf $xxx_list"
8540 case "$d_qgcvt" in
8541 "$define") xxx_list="qgcvt $xxx_list" ;;
8542 esac
8543 ;;
8544esac
8545
8546for xxx_convert in $xxx_list; do
8547 echo "Trying $xxx_convert..."
8548 $rm -f try try$_o
8549 set try -DTRY_$xxx_convert
8550 if eval $compile; then
8551 echo "$xxx_convert() found." >&4
5440bc8e 8552 if $run ./try; then
b4eb6b3d
JH
8553 echo "I'll use $xxx_convert to convert floats into a string." >&4
8554 break;
8555 else
8556 echo "...But $xxx_convert didn't work as I expected."
8557 fi
8558 else
8559 echo "$xxx_convert NOT found." >&4
8560 fi
8561done
8562
8563case "$xxx_convert" in
8564gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8565gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8566qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8567*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8568 "$define$define$define")
8569 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8570 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8571 esac
8572 ;;
8573esac
8574
74cac757
JH
8575: see if _fwalk exists
8576set fwalk d__fwalk
8577eval $inlibc
8578
b4eb6b3d
JH
8579: Initialize h_fcntl
8580h_fcntl=false
8581
8582: Initialize h_sysfile
8583h_sysfile=false
8584
8585: access call always available on UNIX
8586set access d_access
8587eval $inlibc
8588
8589: locate the flags for 'access()'
8590case "$d_access" in
8591"$define")
8592 echo " "
8593 $cat >access.c <<'EOCP'
8594#include <sys/types.h>
8595#ifdef I_FCNTL
8596#include <fcntl.h>
8597#endif
8598#ifdef I_SYS_FILE
8599#include <sys/file.h>
8600#endif
8601#ifdef I_UNISTD
8602#include <unistd.h>
8603#endif
8604int main() {
8605 exit(R_OK);
8606}
8607EOCP
8608 : check sys/file.h first, no particular reason here
8609 if $test `./findhdr sys/file.h` && \
7a282f6d 8610 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8611 h_sysfile=true;
8612 echo "<sys/file.h> defines the *_OK access constants." >&4
8613 elif $test `./findhdr fcntl.h` && \
7a282f6d 8614 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8615 h_fcntl=true;
8616 echo "<fcntl.h> defines the *_OK access constants." >&4
8617 elif $test `./findhdr unistd.h` && \
7a282f6d 8618 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
8619 echo "<unistd.h> defines the *_OK access constants." >&4
8620 else
8621 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8622 fi
8623 ;;
8624esac
8625$rm -f access*
8626
8627: see if accessx exists
8628set accessx d_accessx
8629eval $inlibc
8630
8631: see if alarm exists
8632set alarm d_alarm
8633eval $inlibc
8634
8635: see if atolf exists
8636set atolf d_atolf
8637eval $inlibc
8638
8639: see if atoll exists
8640set atoll d_atoll
8641eval $inlibc
8642
8643: Look for GNU-cc style attribute checking
8644echo " "
8645echo "Checking whether your compiler can handle __attribute__ ..." >&4
8646$cat >attrib.c <<'EOCP'
8647#include <stdio.h>
8648void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8649EOCP
8650if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8651 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8652 echo "Your C compiler doesn't fully support __attribute__."
8653 val="$undef"
8654 else
8655 echo "Your C compiler supports __attribute__."
8656 val="$define"
8657 fi
8658else
8659 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8660 val="$undef"
8661fi
8662set d_attribut
8663eval $setvar
8664$rm -f attrib*
8665
8666: see if bcmp exists
8667set bcmp d_bcmp
8668eval $inlibc
8669
8670: see if bcopy exists
8671set bcopy d_bcopy
8672eval $inlibc
8673
8674: see if this is a unistd.h system
8675set unistd.h i_unistd
8676eval $inhdr
8677
8678: see if getpgrp exists
8679set getpgrp d_getpgrp
8680eval $inlibc
8681
8682case "$d_getpgrp" in
8683"$define")
8684 echo " "
8685 echo "Checking to see which flavor of getpgrp is in use..."
5440bc8e 8686 $cat >try.c <<EOP
b4eb6b3d
JH
8687#$i_unistd I_UNISTD
8688#include <sys/types.h>
8689#ifdef I_UNISTD
8690# include <unistd.h>
8691#endif
8692int main()
8693{
8694 if (getuid() == 0) {
8695 printf("(I see you are running Configure as super-user...)\n");
8696 setuid(1);
8697 }
8698#ifdef TRY_BSD_PGRP
8699 if (getpgrp(1) == 0)
8700 exit(0);
8701#else
8702 if (getpgrp() > 0)
8703 exit(0);
8704#endif
8705 exit(1);
8706}
8707EOP
5440bc8e 8708 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8709 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8710 val="$define"
5440bc8e 8711 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8712 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8713 val="$undef"
8714 else
8715 echo "I can't seem to compile and run the test program."
8716 if ./usg; then
8717 xxx="a USG one, i.e. you use getpgrp()."
8718 else
8719 # SVR4 systems can appear rather BSD-ish.
8720 case "$i_unistd" in
8721 $undef)
8722 xxx="a BSD one, i.e. you use getpgrp(pid)."
8723 val="$define"
8724 ;;
8725 $define)
8726 xxx="probably a USG one, i.e. you use getpgrp()."
8727 val="$undef"
8728 ;;
8729 esac
8730 fi
8731 echo "Assuming your getpgrp is $xxx" >&4
8732 fi
8733 ;;
8734*) val="$undef";;
8735esac
8736set d_bsdgetpgrp
8737eval $setvar
5440bc8e 8738$rm -f try try.*
b4eb6b3d
JH
8739
8740: see if setpgrp exists
8741set setpgrp d_setpgrp
8742eval $inlibc
8743
8744case "$d_setpgrp" in
8745"$define")
8746 echo " "
8747 echo "Checking to see which flavor of setpgrp is in use..."
5440bc8e 8748 $cat >try.c <<EOP
b4eb6b3d
JH
8749#$i_unistd I_UNISTD
8750#include <sys/types.h>
8751#ifdef I_UNISTD
8752# include <unistd.h>
8753#endif
8754int main()
8755{
8756 if (getuid() == 0) {
8757 printf("(I see you are running Configure as super-user...)\n");
8758 setuid(1);
8759 }
8760#ifdef TRY_BSD_PGRP
8761 if (-1 == setpgrp(1, 1))
8762 exit(0);
8763#else
8764 if (setpgrp() != -1)
8765 exit(0);
8766#endif
8767 exit(1);
8768}
8769EOP
5440bc8e 8770 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8771 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8772 val="$define"
5440bc8e 8773 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
b4eb6b3d
JH
8774 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8775 val="$undef"
8776 else
8777 echo "(I can't seem to compile and run the test program.)"
8778 if ./usg; then
8779 xxx="a USG one, i.e. you use setpgrp()."
8780 else
8781 # SVR4 systems can appear rather BSD-ish.
8782 case "$i_unistd" in
8783 $undef)
8784 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8785 val="$define"
8786 ;;
8787 $define)
8788 xxx="probably a USG one, i.e. you use setpgrp()."
8789 val="$undef"
8790 ;;
8791 esac
8792 fi
8793 echo "Assuming your setpgrp is $xxx" >&4
8794 fi
8795 ;;
8796*) val="$undef";;
8797esac
8798set d_bsdsetpgrp
8799eval $setvar
5440bc8e 8800$rm -f try try.*
b4eb6b3d
JH
8801: see if bzero exists
8802set bzero d_bzero
8803eval $inlibc
8804
8805: see if signal is declared as pointer to function returning int or void
8806echo " "
8807xxx=`./findhdr signal.h`
8808$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8809if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8810 echo "You have int (*signal())() instead of void." >&4
8811 val="$undef"
8812elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8813 echo "You have void (*signal())()." >&4
8814 val="$define"
8815elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8816 echo "You have int (*signal())() instead of void." >&4
8817 val="$undef"
8818elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8819 echo "You have void (*signal())()." >&4
8820 val="$define"
8821else
8822 case "$d_voidsig" in
8823 '')
8824 echo "I can't determine whether signal handler returns void or int..." >&4
8825 dflt=void
8826 rp="What type does your signal handler return?"
8827 . ./myread
8828 case "$ans" in
8829 v*) val="$define";;
8830 *) val="$undef";;
8831 esac;;
8832 "$define")
8833 echo "As you already told me, signal handler returns void." >&4
8834 val="$define"
8835 ;;
8836 *) echo "As you already told me, signal handler returns int." >&4
8837 val="$undef"
8838 ;;
8839 esac
8840fi
8841set d_voidsig
8842eval $setvar
8843case "$d_voidsig" in
8844"$define") signal_t="void";;
8845*) signal_t="int";;
8846esac
8847$rm -f $$.tmp
8848
8849: check for ability to cast large floats to 32-bit ints.
8850echo " "
8851echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8852if $test "$intsize" -ge 4; then
8853 xxx=int
8854else
8855 xxx=long
8856fi
8857$cat >try.c <<EOCP
8858#include <stdio.h>
8859#include <sys/types.h>
8860#include <signal.h>
8861$signal_t blech(s) int s; { exit(3); }
8862int main()
8863{
8864 $xxx i32;
8865 double f, g;
8866 int result = 0;
8867 char str[16];
8868 signal(SIGFPE, blech);
8869
8870 /* Don't let compiler optimize the test away. Store the number
8871 in a writable string for gcc to pass to sscanf under HP/UX.
8872 */
8873 sprintf(str, "2147483647");
8874 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8875 g = 10 * f;
8876 i32 = ($xxx) g;
8877
8878 /* x86 processors will probably give 0x8000 0000, which is a
8879 sign change. We don't want that. We want to mimic SPARC
8880 behavior here, which is to preserve the sign and give
8881 back 0x7fff ffff.
8882 */
8883 if (i32 != ($xxx) f)
8884 result |= 1;
8885 exit(result);
8886}
8887EOCP
8888set try
8889if eval $compile_ok; then
5440bc8e 8890 $run ./try
b4eb6b3d
JH
8891 yyy=$?
8892else
8893 echo "(I can't seem to compile the test program--assuming it can't)"
8894 yyy=1
8895fi
8896case "$yyy" in
88970) val="$define"
8898 echo "Yup, it can."
8899 ;;
8900*) val="$undef"
8901 echo "Nope, it can't."
8902 ;;
8903esac
8904set d_casti32
8905eval $setvar
8906$rm -f try try.*
8907
8908: check for ability to cast negative floats to unsigned
8909echo " "
8910echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8911$cat >try.c <<EOCP
8912#include <stdio.h>
8913#include <sys/types.h>
8914#include <signal.h>
8915$signal_t blech(s) int s; { exit(7); }
8916$signal_t blech_in_list(s) int s; { exit(4); }
8917unsigned long dummy_long(p) unsigned long p; { return p; }
8918unsigned int dummy_int(p) unsigned int p; { return p; }
8919unsigned short dummy_short(p) unsigned short p; { return p; }
8920int main()
8921{
8922 double f;
8923 unsigned long along;
8924 unsigned int aint;
8925 unsigned short ashort;
8926 int result = 0;
8927 char str[16];
8928
8929 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8930 a direct f = -123. assignment. gcc-2.8.0 reportedly
8931 optimized the whole file away
8932 */
8933 /* Store the number in a writable string for gcc to pass to
8934 sscanf under HP/UX.
8935 */
8936 sprintf(str, "-123");
8937 sscanf(str, "%lf", &f); /* f = -123.; */
8938
8939 signal(SIGFPE, blech);
8940 along = (unsigned long)f;
8941 aint = (unsigned int)f;
8942 ashort = (unsigned short)f;
8943 if (along != (unsigned long)-123)
8944 result |= 1;
8945 if (aint != (unsigned int)-123)
8946 result |= 1;
8947 if (ashort != (unsigned short)-123)
8948 result |= 1;
8949 sprintf(str, "1073741824.");
8950 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8951 f = f + f;
8952 along = 0;
8953 along = (unsigned long)f;
8954 if (along != 0x80000000)
8955 result |= 2;
8956 f -= 1.;
8957 along = 0;
8958 along = (unsigned long)f;
8959 if (along != 0x7fffffff)
8960 result |= 1;
8961 f += 2.;
8962 along = 0;
8963 along = (unsigned long)f;
8964 if (along != 0x80000001)
8965 result |= 2;
8966 if (result)
8967 exit(result);
8968 signal(SIGFPE, blech_in_list);
8969 sprintf(str, "123.");
8970 sscanf(str, "%lf", &f); /* f = 123.; */
8971 along = dummy_long((unsigned long)f);
8972 aint = dummy_int((unsigned int)f);
8973 ashort = dummy_short((unsigned short)f);
8974 if (along != (unsigned long)123)
8975 result |= 4;
8976 if (aint != (unsigned int)123)
8977 result |= 4;
8978 if (ashort != (unsigned short)123)
8979 result |= 4;
8980 exit(result);
8981
8982}
8983EOCP
8984set try
8985if eval $compile_ok; then
5440bc8e 8986 $run ./try
b4eb6b3d
JH
8987 castflags=$?
8988else
8989 echo "(I can't seem to compile the test program--assuming it can't)"
8990 castflags=7
8991fi
8992case "$castflags" in
89930) val="$define"
8994 echo "Yup, it can."
8995 ;;
8996*) val="$undef"
8997 echo "Nope, it can't."
8998 ;;
8999esac
9000set d_castneg
9001eval $setvar
9002$rm -f try.*
9003
9004: see if vprintf exists
9005echo " "
9006if set vprintf val -f d_vprintf; eval $csym; $val; then
9007 echo 'vprintf() found.' >&4
9008 val="$define"
5440bc8e 9009 $cat >try.c <<'EOF'
b4eb6b3d
JH
9010#include <varargs.h>
9011
9012int main() { xxx("foo"); }
9013
9014xxx(va_alist)
9015va_dcl
9016{
9017 va_list args;
9018 char buf[10];
9019
9020 va_start(args);
9021 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9022}
9023EOF
5440bc8e
JH
9024 set try
9025 if eval $compile && $run ./try; then
b4eb6b3d
JH
9026 echo "Your vsprintf() returns (int)." >&4
9027 val2="$undef"
9028 else
9029 echo "Your vsprintf() returns (char*)." >&4
9030 val2="$define"
9031 fi
9032else
9033 echo 'vprintf() NOT found.' >&4
9034 val="$undef"
9035 val2="$undef"
9036fi
5440bc8e 9037$rm -f try try.*
b4eb6b3d
JH
9038set d_vprintf
9039eval $setvar
9040val=$val2
9041set d_charvspr
9042eval $setvar
9043
9044: see if chown exists
9045set chown d_chown
9046eval $inlibc
9047
9048: see if chroot exists
9049set chroot d_chroot
9050eval $inlibc
9051
9052: see if chsize exists
9053set chsize d_chsize
9054eval $inlibc
9055
4e0554ec
JH
9056hasstruct='varname=$1; struct=$2; shift; shift;
9057while $test $# -ge 2; do
9058 case "$1" in
9059 $define) echo "#include <$2>";;
9060 esac ;
9061 shift 2;
9062done > try.c;
9063echo "int main () { struct $struct foo; }" >> try.c;
9064set try;
9065if eval $compile; then
9066 val="$define";
9067else
9068 val="$undef";
9069fi;
9070set $varname;
9071eval $setvar;
9072$rm -f try.c try.o'
9073
9074: see if sys/types.h has to be included
9075set sys/types.h i_systypes
9076eval $inhdr
9077
9078hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9079while $test $# -ge 2; do
9080 case "$1" in
9081 $define) echo "#include <$2>";;
9082 esac ;
9083 shift 2;
9084done > try.c;
9085echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9086set try;
9087if eval $compile; then
9088 val="$define";
9089else
9090 val="$undef";
9091fi;
9092set $varname;
9093eval $setvar;
9094$rm -f try.c try.o'
9095
9096socketlib=''
9097sockethdr=''
9098: see whether socket exists
9099echo " "
9100$echo $n "Hmm... $c" >&4
9101if set socket val -f d_socket; eval $csym; $val; then
9102 echo "Looks like you have Berkeley networking support." >&4
9103 d_socket="$define"
9104 if set setsockopt val -f; eval $csym; $val; then
9105 d_oldsock="$undef"
9106 else
9107 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9108 d_oldsock="$define"
9109 fi
9110else
9111 if $contains socklib libc.list >/dev/null 2>&1; then
9112 echo "Looks like you have Berkeley networking support." >&4
9113 d_socket="$define"
9114 : we will have to assume that it supports the 4.2 BSD interface
9115 d_oldsock="$undef"
9116 else
9117 echo "You don't have Berkeley networking in libc$_a..." >&4
9118 if test "X$d_socket" = "X$define"; then
9119 echo "...but you seem to believe that you have sockets." >&4
9120 else
9121 for net in net socket
9122 do
9123 if test -f /usr/lib/lib$net$_a; then
9124 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9125 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9126 if $contains socket libc.list >/dev/null 2>&1; then
9127 d_socket="$define"
9128 socketlib="-l$net"
9129 case "$net" in
9130 net)
9131 echo "...but the Wollongong group seems to have hacked it in." >&4
9132 sockethdr="-I/usr/netinclude"
9133 ;;
9134 esac
9135 echo "Found Berkeley sockets interface in lib$net." >& 4
9136 if $contains setsockopt libc.list >/dev/null 2>&1; then
9137 d_oldsock="$undef"
9138 else
9139 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9140 d_oldsock="$define"
9141 fi
9142 break
9143 fi
9144 fi
9145 done
9146 if test "X$d_socket" != "X$define"; then
9147 echo "or anywhere else I see." >&4
9148 d_socket="$undef"
9149 d_oldsock="$undef"
9150 fi
9151 fi
9152 fi
9153fi
9154
9155: see if socketpair exists
9156set socketpair d_sockpair
9157eval $inlibc
9158
9159
9160echo " "
9161echo "Checking the availability of certain socket constants..." >& 4
9162for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9163 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9164 $cat >try.c <<EOF
9165#include <sys/types.h>
9166#include <sys/socket.h>
9167int main() {
9168 int i = $ENUM;
9169}
9170EOF
9171 val="$undef"
9172 set try; if eval $compile; then
9173 val="$define"
9174 fi
9175 set d_${enum}; eval $setvar
9176 $rm -f try.c try
9177done
9178
9179: see if this is a sys/uio.h system
9180set sys/uio.h i_sysuio
9181eval $inhdr
9182
9183
9184echo " "
9185echo "Checking to see if your system supports struct cmsghdr..." >&4
9186set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9187eval $hasstruct
9188case "$d_cmsghdr_s" in
9189"$define") echo "Yes, it does." ;;
9190*) echo "No, it doesn't." ;;
9191esac
9192
9193
b4eb6b3d
JH
9194: check for const keyword
9195echo " "
9196echo 'Checking to see if your C compiler knows about "const"...' >&4
9197$cat >const.c <<'EOCP'
9198typedef struct spug { int drokk; } spug;
9199int main()
9200{
9201 const char *foo;
9202 const spug y;
9203}
9204EOCP
9205if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9206 val="$define"
9207 echo "Yup, it does."
9208else
9209 val="$undef"
9210 echo "Nope, it doesn't."
9211fi
9212set d_const
9213eval $setvar
9214
9215: see if crypt exists
9216echo " "
9217if set crypt val -f d_crypt; eval $csym; $val; then
9218 echo 'crypt() found.' >&4
9219 val="$define"
9220 cryptlib=''
9221else
9222 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9223 if $test -z "$cryptlib"; then
9224 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9225 else
9226 cryptlib=-lcrypt
9227 fi
9228 if $test -z "$cryptlib"; then
9229 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9230 else
9231 cryptlib=-lcrypt
9232 fi
9233 if $test -z "$cryptlib"; then
9234 cryptlib=`./loc libcrypt$_a "" $libpth`
9235 else
9236 cryptlib=-lcrypt
9237 fi
9238 if $test -z "$cryptlib"; then
9239 echo 'crypt() NOT found.' >&4
9240 val="$undef"
9241 else
9242 val="$define"
9243 fi
9244fi
9245set d_crypt
9246eval $setvar
9247
9248: get csh whereabouts
9249case "$csh" in
9250'csh') val="$undef" ;;
9251*) val="$define" ;;
9252esac
9253set d_csh
9254eval $setvar
9255: Respect a hint or command line value for full_csh.
9256case "$full_csh" in
9257'') full_csh=$csh ;;
9258esac
9259
9260: see if cuserid exists
9261set cuserid d_cuserid
9262eval $inlibc
9263
9264: see if this is a limits.h system
9265set limits.h i_limits
9266eval $inhdr
9267
9268: see if this is a float.h system
9269set float.h i_float
9270eval $inhdr
9271
9272: See if number of significant digits in a double precision number is known
9273echo " "
9274$cat >dbl_dig.c <<EOM
9275#$i_limits I_LIMITS
9276#$i_float I_FLOAT
9277#ifdef I_LIMITS
9278#include <limits.h>
9279#endif
9280#ifdef I_FLOAT
9281#include <float.h>
9282#endif
9283#ifdef DBL_DIG
9284printf("Contains DBL_DIG");
9285#endif
9286EOM
9287$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9288if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9289 echo "DBL_DIG found." >&4
9290 val="$define"
9291else
9292 echo "DBL_DIG NOT found." >&4
9293 val="$undef"
9294fi
9295$rm -f dbl_dig.?
9296set d_dbl_dig
9297eval $setvar
9298
2ef53570
JH
9299hasproto='varname=$1; func=$2; shift; shift;
9300while $test $# -ge 2; do
9301 case "$1" in
9302 $define) echo "#include <$2>";;
9303 esac ;
9304 shift 2;
9305done > try.c;
9306$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9307if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9308 echo "$func() prototype found.";
9309 val="$define";
9310else
9311 echo "$func() prototype NOT found.";
9312 val="$undef";
9313fi;
9314set $varname;
9315eval $setvar;
9316$rm -f try.c tryout.c'
9317
9318: see if dbm.h is available
9319: see if dbmclose exists
9320set dbmclose d_dbmclose
9321eval $inlibc
9322
9323case "$d_dbmclose" in
9324$define)
9325 set dbm.h i_dbm
9326 eval $inhdr
9327 case "$i_dbm" in
9328 $define)
9329 val="$undef"
9330 set i_rpcsvcdbm
9331 eval $setvar
9332 ;;
9333 *) set rpcsvc/dbm.h i_rpcsvcdbm
9334 eval $inhdr
9335 ;;
9336 esac
9337 ;;
9338*) echo "We won't be including <dbm.h>"
9339 val="$undef"
9340 set i_dbm
9341 eval $setvar
9342 val="$undef"
9343 set i_rpcsvcdbm
9344 eval $setvar
9345 ;;
9346esac
9347
9348: see if prototype for dbminit is available
9349echo " "
9350set d_dbminitproto dbminit $i_dbm dbm.h
9351eval $hasproto
9352
b4eb6b3d
JH
9353: see if difftime exists
9354set difftime d_difftime
9355eval $inlibc
9356
9357: see if this is a dirent system
9358echo " "
9359if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9360 val="$define"
9361 echo "<dirent.h> found." >&4
9362else
9363 val="$undef"
9364 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9365 echo "<sys/dir.h> found." >&4
9366 echo " "
9367 else
9368 xinc=`./findhdr sys/ndir.h`
9369 fi
9370 echo "<dirent.h> NOT found." >&4
9371fi
9372set i_dirent
9373eval $setvar
9374
9375: Look for type of directory structure.
9376echo " "
9377$cppstdin $cppflags $cppminus < "$xinc" > try.c
9378
9379case "$direntrytype" in
9380''|' ')
9381 case "$i_dirent" in
9382 $define) guess1='struct dirent' ;;
9383 *) guess1='struct direct' ;;
9384 esac
9385 ;;
9386*) guess1="$direntrytype"
9387 ;;
9388esac
9389
9390case "$guess1" in
9391'struct dirent') guess2='struct direct' ;;
9392*) guess2='struct dirent' ;;
9393esac
9394
9395if $contains "$guess1" try.c >/dev/null 2>&1; then
9396 direntrytype="$guess1"
9397 echo "Your directory entries are $direntrytype." >&4
9398elif $contains "$guess2" try.c >/dev/null 2>&1; then
9399 direntrytype="$guess2"
9400 echo "Your directory entries seem to be $direntrytype." >&4
9401else
9402 echo "I don't recognize your system's directory entries." >&4
9403 rp="What type is used for directory entries on this system?"
9404 dflt="$guess1"
9405 . ./myread
9406 direntrytype="$ans"
9407fi
9408$rm -f try.c
9409
9410
9411: see if the directory entry stores field length
9412echo " "
9413$cppstdin $cppflags $cppminus < "$xinc" > try.c
9414if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9415 echo "Good, your directory entry keeps length information in d_namlen." >&4
9416 val="$define"
9417else
9418 echo "Your directory entry does not know about the d_namlen field." >&4
9419 val="$undef"
9420fi
9421set d_dirnamlen
9422eval $setvar
9423$rm -f try.c
9424
9425: see if dlerror exists
9426xxx_runnm="$runnm"
9427runnm=false
9428set dlerror d_dlerror
9429eval $inlibc
9430runnm="$xxx_runnm"
9431
9432: see if dlfcn is available
9433set dlfcn.h i_dlfcn
9434eval $inhdr
9435
9436case "$usedl" in
9437$define|y|true)
9438 $cat << EOM
9439
9440On a few systems, the dynamically loaded modules that perl generates and uses
9441will need a different extension than shared libs. The default will probably
9442be appropriate.
9443
9444EOM
9445 case "$dlext" in
9446 '') dflt="$so" ;;
9447 *) dflt="$dlext" ;;
9448 esac
9449 rp='What is the extension of dynamically loaded modules'
9450 . ./myread
9451 dlext="$ans"
9452 ;;
9453*)
9454 dlext="none"
9455 ;;
9456esac
9457
9458: Check if dlsym need a leading underscore
9459echo " "
9460val="$undef"
9461
9462case "$dlsrc" in
9463dl_dlopen.xs)
9464 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9465 $cat >dyna.c <<'EOM'
9466fred () { }
9467EOM
9468
9469$cat >fred.c<<EOM
9470
9471#include <stdio.h>
9472#$i_dlfcn I_DLFCN
9473#ifdef I_DLFCN
5440bc8e 9474#include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
b4eb6b3d
JH
9475#else
9476#include <sys/types.h>
9477#include <nlist.h>
9478#include <link.h>
9479#endif
9480
9481extern int fred() ;
9482
9483int main()
9484{
9485 void * handle ;
9486 void * symbol ;
9487#ifndef RTLD_LAZY
9488 int mode = 1 ;
9489#else
9490 int mode = RTLD_LAZY ;
9491#endif
9492 handle = dlopen("./dyna.$dlext", mode) ;
9493 if (handle == NULL) {
9494 printf ("1\n") ;
9495 fflush (stdout) ;
9496 exit(0);
9497 }
9498 symbol = dlsym(handle, "fred") ;
9499 if (symbol == NULL) {
9500 /* try putting a leading underscore */
9501 symbol = dlsym(handle, "_fred") ;
9502 if (symbol == NULL) {
9503 printf ("2\n") ;
9504 fflush (stdout) ;
9505 exit(0);
9506 }
9507 printf ("3\n") ;
9508 }
9509 else
9510 printf ("4\n") ;
9511 fflush (stdout) ;
9512 exit(0);
9513}
9514EOM
9515 : Call the object file tmp-dyna.o in case dlext=o.
9516 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9517 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
e4778687 9518 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
5440bc8e
JH
9519 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9520 xxx=`$run ./fred`
b4eb6b3d
JH
9521 case $xxx in
9522 1) echo "Test program failed using dlopen." >&4
9523 echo "Perhaps you should not use dynamic loading." >&4;;
9524 2) echo "Test program failed using dlsym." >&4
9525 echo "Perhaps you should not use dynamic loading." >&4;;
9526 3) echo "dlsym needs a leading underscore" >&4
9527 val="$define" ;;
9528 4) echo "dlsym doesn't need a leading underscore." >&4;;
9529 esac
9530 else
9531 echo "I can't compile and run the test program." >&4
9532 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9533 fi
9534 ;;
9535esac
9536
9537$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9538
9539set d_dlsymun
9540eval $setvar
9541
b4eb6b3d
JH
9542: see if prototype for drand48 is available
9543echo " "
9544set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9545eval $hasproto
9546
9547: see if dup2 exists
9548set dup2 d_dup2
9549eval $inlibc
9550
9551: see if eaccess exists
9552set eaccess d_eaccess
9553eval $inlibc
9554
9555: see if endgrent exists
9556set endgrent d_endgrent
9557eval $inlibc
9558
9559: see if endhostent exists
9560set endhostent d_endhent
9561eval $inlibc
9562
9563: see if endnetent exists
9564set endnetent d_endnent
9565eval $inlibc
9566
9567: see if endprotoent exists
9568set endprotoent d_endpent
9569eval $inlibc
9570
9571: see if endpwent exists
9572set endpwent d_endpwent
9573eval $inlibc
9574
9575: see if endservent exists
9576set endservent d_endsent
9577eval $inlibc
9578
9579: Locate the flags for 'open()'
9580echo " "
5440bc8e 9581$cat >try.c <<'EOCP'
b4eb6b3d
JH
9582#include <sys/types.h>
9583#ifdef I_FCNTL
9584#include <fcntl.h>
9585#endif
9586#ifdef I_SYS_FILE
9587#include <sys/file.h>
9588#endif
9589int main() {
9590 if(O_RDONLY);
9591#ifdef O_TRUNC
9592 exit(0);
9593#else
9594 exit(1);
9595#endif
9596}
9597EOCP
9598: check sys/file.h first to get FREAD on Sun
9599if $test `./findhdr sys/file.h` && \
5440bc8e 9600 set try -DI_SYS_FILE && eval $compile; then
b4eb6b3d
JH
9601 h_sysfile=true;
9602 echo "<sys/file.h> defines the O_* constants..." >&4
5440bc8e 9603 if $run ./try; then
b4eb6b3d
JH
9604 echo "and you have the 3 argument form of open()." >&4
9605 val="$define"
9606 else
9607 echo "but not the 3 argument form of open(). Oh, well." >&4
9608 val="$undef"
9609 fi
9610elif $test `./findhdr fcntl.h` && \
5440bc8e 9611 set try -DI_FCNTL && eval $compile; then
b4eb6b3d
JH
9612 h_fcntl=true;
9613 echo "<fcntl.h> defines the O_* constants..." >&4
5440bc8e 9614 if $run ./try; then
b4eb6b3d
JH
9615 echo "and you have the 3 argument form of open()." >&4
9616 val="$define"
9617 else
9618 echo "but not the 3 argument form of open(). Oh, well." >&4
9619 val="$undef"
9620 fi
9621else
9622 val="$undef"
9623 echo "I can't find the O_* constant definitions! You got problems." >&4
9624fi
9625set d_open3
9626eval $setvar
5440bc8e 9627$rm -f try try.*
b4eb6b3d
JH
9628
9629: see which of string.h or strings.h is needed
9630echo " "
9631strings=`./findhdr string.h`
9632if $test "$strings" && $test -r "$strings"; then
9633 echo "Using <string.h> instead of <strings.h>." >&4
9634 val="$define"
9635else
9636 val="$undef"
9637 strings=`./findhdr strings.h`
9638 if $test "$strings" && $test -r "$strings"; then
9639 echo "Using <strings.h> instead of <string.h>." >&4
9640 else
9641 echo "No string header found -- You'll surely have problems." >&4
9642 fi
9643fi
9644set i_string
9645eval $setvar
9646case "$i_string" in
9647"$undef") strings=`./findhdr strings.h`;;
9648*) strings=`./findhdr string.h`;;
9649esac
9650
9651: check for non-blocking I/O stuff
9652case "$h_sysfile" in
a0acbdc3
JH
9653true) echo "#include <sys/file.h>" > head.c;;
9654*)
9655 case "$h_fcntl" in
9656 true) echo "#include <fcntl.h>" > head.c;;
9657 *) echo "#include <sys/fcntl.h>" > head.c;;
9658 esac
9659 ;;
b4eb6b3d
JH
9660esac
9661echo " "
9662echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9663case "$o_nonblock" in
9664'')
9665 $cat head.c > try.c
9666 $cat >>try.c <<'EOCP'
9667#include <stdio.h>
9668int main() {
9669#ifdef O_NONBLOCK
9670 printf("O_NONBLOCK\n");
9671 exit(0);
9672#endif
9673#ifdef O_NDELAY
9674 printf("O_NDELAY\n");
9675 exit(0);
9676#endif
9677#ifdef FNDELAY
9678 printf("FNDELAY\n");
9679 exit(0);
9680#endif
9681 exit(0);
9682}
9683EOCP
9684 set try
9685 if eval $compile_ok; then
5440bc8e 9686 o_nonblock=`$run ./try`
b4eb6b3d
JH
9687 case "$o_nonblock" in
9688 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9689 *) echo "Seems like we can use $o_nonblock.";;
9690 esac
9691 else
9692 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9693 fi
9694 ;;
9695*) echo "Using $hint value $o_nonblock.";;
9696esac
9697$rm -f try try.* .out core
9698
9699echo " "
9700echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9701case "$eagain" in
9702'')
9703 $cat head.c > try.c
9704 $cat >>try.c <<EOCP
9705#include <errno.h>
9706#include <sys/types.h>
9707#include <signal.h>
9708#include <stdio.h>
9709#define MY_O_NONBLOCK $o_nonblock
9710#ifndef errno /* XXX need better Configure test */
9711extern int errno;
9712#endif
9713#$i_unistd I_UNISTD
9714#ifdef I_UNISTD
9715#include <unistd.h>
9716#endif
9717#$i_string I_STRING
9718#ifdef I_STRING
9719#include <string.h>
9720#else
9721#include <strings.h>
9722#endif
9723$signal_t blech(x) int x; { exit(3); }
9724EOCP
9725 $cat >> try.c <<'EOCP'
9726int main()
9727{
9728 int pd[2];
9729 int pu[2];
9730 char buf[1];
9731 char string[100];
9732
9733 pipe(pd); /* Down: child -> parent */
9734 pipe(pu); /* Up: parent -> child */
9735 if (0 != fork()) {
9736 int ret;
9737 close(pd[1]); /* Parent reads from pd[0] */
9738 close(pu[0]); /* Parent writes (blocking) to pu[1] */
a0acbdc3 9739#ifdef F_SETFL
b4eb6b3d
JH
9740 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9741 exit(1);
a0acbdc3
JH
9742#else
9743 exit(4);
9744#endif
b4eb6b3d
JH
9745 signal(SIGALRM, blech);
9746 alarm(5);
9747 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9748 exit(2);
9749 sprintf(string, "%d\n", ret);
9750 write(2, string, strlen(string));
9751 alarm(0);
9752#ifdef EAGAIN
9753 if (errno == EAGAIN) {
9754 printf("EAGAIN\n");
9755 goto ok;
9756 }
9757#endif
9758#ifdef EWOULDBLOCK
9759 if (errno == EWOULDBLOCK)
9760 printf("EWOULDBLOCK\n");
9761#endif
9762 ok:
9763 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9764 sleep(2); /* Give it time to close our pipe */
9765 alarm(5);
9766 ret = read(pd[0], buf, 1); /* Should read EOF */
9767 alarm(0);
9768 sprintf(string, "%d\n", ret);
9769 write(3, string, strlen(string));
9770 exit(0);
9771 }
9772
9773 close(pd[0]); /* We write to pd[1] */
9774 close(pu[1]); /* We read from pu[0] */
9775 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9776 close(pd[1]); /* Pipe pd is now fully closed! */
9777 exit(0); /* Bye bye, thank you for playing! */
9778}
9779EOCP
9780 set try
9781 if eval $compile_ok; then
9782 echo "$startsh" >mtry
5440bc8e 9783 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
b4eb6b3d
JH
9784 chmod +x mtry
9785 ./mtry >/dev/null 2>&1
9786 case $? in
9787 0) eagain=`$cat try.out`;;
9788 1) echo "Could not perform non-blocking setting!";;
9789 2) echo "I did a successful read() for something that was not there!";;
9790 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
a0acbdc3 9791 4) echo "Could not find F_SETFL!";;
b4eb6b3d
JH
9792 *) echo "Something terribly wrong happened during testing.";;
9793 esac
9794 rd_nodata=`$cat try.ret`
9795 echo "A read() system call with no data present returns $rd_nodata."
9796 case "$rd_nodata" in
9797 0|-1) ;;
9798 *)
9799 echo "(That's peculiar, fixing that to be -1.)"
9800 rd_nodata=-1
9801 ;;
9802 esac
9803 case "$eagain" in
9804 '')
9805 echo "Forcing errno EAGAIN on read() with no data available."
9806 eagain=EAGAIN
9807 ;;
9808 *)
9809 echo "Your read() sets errno to $eagain when no data is available."
9810 ;;
9811 esac
9812 status=`$cat try.err`
9813 case "$status" in
9814 0) echo "And it correctly returns 0 to signal EOF.";;
9815 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9816 *) echo "However, your read() returns '$status' on EOF??";;
9817 esac
9818 val="$define"
9819 if test "$status" = "$rd_nodata"; then
9820 echo "WARNING: you can't distinguish between EOF and no data!"
9821 val="$undef"
9822 fi
9823 else
9824 echo "I can't compile the test program--assuming errno EAGAIN will do."
9825 eagain=EAGAIN
9826 fi
9827 set d_eofnblk
9828 eval $setvar
9829 ;;
9830*)
9831 echo "Using $hint value $eagain."
9832 echo "Your read() returns $rd_nodata when no data is present."
9833 case "$d_eofnblk" in
9834 "$define") echo "And you can see EOF because read() returns 0.";;
9835 "$undef") echo "But you can't see EOF status from read() returned value.";;
9836 *)
9837 echo "(Assuming you can't see EOF status from read anyway.)"
9838 d_eofnblk=$undef
9839 ;;
9840 esac
9841 ;;
9842esac
9843$rm -f try try.* .out core head.c mtry
9844
b363b713
JH
9845: see if fchdir exists
9846set fchdir d_fchdir
9847eval $inlibc
9848
b4eb6b3d
JH
9849: see if fchmod exists
9850set fchmod d_fchmod
9851eval $inlibc
9852
9853: see if fchown exists
9854set fchown d_fchown
9855eval $inlibc
9856
9857: see if this is an fcntl system
9858set fcntl d_fcntl
9859eval $inlibc
9860
9d9004a9
AD
9861echo " "
9862: See if fcntl-based locking works.
832492ee 9863$cat >try.c <<EOCP
9d9004a9
AD
9864#include <stdlib.h>
9865#include <unistd.h>
9866#include <fcntl.h>
832492ee 9867#include <signal.h>
832492ee 9868$signal_t blech(x) int x; { exit(3); }
9d9004a9
AD
9869int main() {
9870#if defined(F_SETLK) && defined(F_SETLKW)
9871 struct flock flock;
9872 int retval, fd;
9873 fd = open("try.c", O_RDONLY);
9874 flock.l_type = F_RDLCK;
9875 flock.l_whence = SEEK_SET;
9876 flock.l_start = flock.l_len = 0;
832492ee
JH
9877 signal(SIGALRM, blech);
9878 alarm(10);
9d9004a9
AD
9879 retval = fcntl(fd, F_SETLK, &flock);
9880 close(fd);
9881 (retval < 0 ? exit(2) : exit(0));
9882#else
9883 exit(2);
9884#endif
9885}
9886EOCP
9887echo "Checking if fcntl-based file locking works... "
9888case "$d_fcntl" in
9889"$define")
9890 set try
9891 if eval $compile_ok; then
5440bc8e 9892 if $run ./try; then
9d9004a9
AD
9893 echo "Yes, it seems to work."
9894 val="$define"
9895 else
9896 echo "Nope, it didn't work."
9897 val="$undef"
832492ee
JH
9898 case "$?" in
9899 3) $cat >&4 <<EOM
9900***
9901*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9902*** This is (almost) impossible.
9903*** If your NFS lock daemons are not feeling well, something like
9904*** this may happen, please investigate. Cannot continue, aborting.
9905***
9906EOM
9907 exit 1
9908 ;;
9909 esac
9d9004a9
AD
9910 fi
9911 else
9912 echo "I'm unable to compile the test program, so I'll assume not."
9913 val="$undef"
9914 fi
9915 ;;
9916*) val="$undef";
9917 echo "Nope, since you don't even have fcntl()."
9918 ;;
9919esac
9920set d_fcntl_can_lock
9921eval $setvar
9922$rm -f try*
9923
9924
b4eb6b3d
JH
9925: see if sys/select.h has to be included
9926set sys/select.h i_sysselct
9927eval $inhdr
9928
9929: see if we should include time.h, sys/time.h, or both
9930echo " "
9931if test "X$timeincl" = X; then
9932 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9933 $echo $n "I'm now running the test program...$c"
9934 $cat >try.c <<'EOCP'
9935#include <sys/types.h>
9936#ifdef I_TIME
9937#include <time.h>
9938#endif
9939#ifdef I_SYSTIME
9940#ifdef SYSTIMEKERNEL
9941#define KERNEL
9942#endif
9943#include <sys/time.h>
9944#endif
9945#ifdef I_SYSSELECT
9946#include <sys/select.h>
9947#endif
9948int main()
9949{
9950 struct tm foo;
9951#ifdef S_TIMEVAL
9952 struct timeval bar;
9953#endif
9954#ifdef S_TIMEZONE
9955 struct timezone tzp;
9956#endif
9957 if (foo.tm_sec == foo.tm_sec)
9958 exit(0);
9959#ifdef S_TIMEVAL
9960 if (bar.tv_sec == bar.tv_sec)
9961 exit(0);
9962#endif
9963 exit(1);
9964}
9965EOCP
9966 flags=''
9967 for s_timezone in '-DS_TIMEZONE' ''; do
9968 sysselect=''
9969 for s_timeval in '-DS_TIMEVAL' ''; do
9970 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9971 for i_time in '' '-DI_TIME'; do
9972 for i_systime in '-DI_SYSTIME' ''; do
9973 case "$flags" in
9974 '') $echo $n ".$c"
9975 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9976 if eval $compile; then
9977 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9978 shift
9979 flags="$*"
9980 echo " "
9981 $echo $n "Succeeded with $flags$c"
9982 fi
9983 ;;
9984 esac
9985 done
9986 done
9987 done
9988 done
9989 done
9990 timeincl=''
9991 echo " "
9992 case "$flags" in
9993 *SYSTIMEKERNEL*) i_systimek="$define"
9994 timeincl=`./findhdr sys/time.h`
9995 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9996 *) i_systimek="$undef";;
9997 esac
9998 case "$flags" in
9999 *I_TIME*) i_time="$define"
10000 timeincl=`./findhdr time.h`" $timeincl"
10001 echo "We'll include <time.h>." >&4;;
10002 *) i_time="$undef";;
10003 esac
10004 case "$flags" in
10005 *I_SYSTIME*) i_systime="$define"
10006 timeincl=`./findhdr sys/time.h`" $timeincl"
10007 echo "We'll include <sys/time.h>." >&4;;
10008 *) i_systime="$undef";;
10009 esac
10010 $rm -f try.c try
10011fi
10012
10013: check for fd_set items
10014$cat <<EOM
10015
10016Checking to see how well your C compiler handles fd_set and friends ...
10017EOM
5440bc8e 10018$cat >try.c <<EOCP
b4eb6b3d
JH
10019#$i_systime I_SYS_TIME
10020#$i_sysselct I_SYS_SELECT
10021#$d_socket HAS_SOCKET
10022#include <sys/types.h>
10023#ifdef HAS_SOCKET
10024#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10025#endif
10026#ifdef I_SYS_TIME
10027#include <sys/time.h>
10028#endif
10029#ifdef I_SYS_SELECT
10030#include <sys/select.h>
10031#endif
10032int main() {
10033 fd_set fds;
10034
10035#ifdef TRYBITS
10036 if(fds.fds_bits);
10037#endif
10038
10039#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10040 exit(0);
10041#else
10042 exit(1);
10043#endif
10044}
10045EOCP
5440bc8e 10046set try -DTRYBITS
b4eb6b3d
JH
10047if eval $compile; then
10048 d_fds_bits="$define"
10049 d_fd_set="$define"
10050 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10051 if $run ./try; then
b4eb6b3d
JH
10052 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10053 d_fd_macros="$define"
10054 else
10055 $cat >&4 <<'EOM'
10056but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10057EOM
10058 d_fd_macros="$undef"
10059 fi
10060else
10061 $cat <<'EOM'
10062Hmm, your compiler has some difficulty with fd_set. Checking further...
10063EOM
5440bc8e 10064 set try
b4eb6b3d
JH
10065 if eval $compile; then
10066 d_fds_bits="$undef"
10067 d_fd_set="$define"
10068 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10069 if $run ./try; then
b4eb6b3d
JH
10070 echo "and you have the normal fd_set macros." >&4
10071 d_fd_macros="$define"
10072 else
10073 $cat <<'EOM'
10074but not the normal fd_set macros! Gross! More work for me...
10075EOM
10076 d_fd_macros="$undef"
10077 fi
10078 else
10079 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10080 d_fd_set="$undef"
10081 d_fds_bits="$undef"
10082 d_fd_macros="$undef"
10083 fi
10084fi
5440bc8e 10085$rm -f try try.*
b4eb6b3d
JH
10086
10087: see if fgetpos exists
10088set fgetpos d_fgetpos
10089eval $inlibc
10090
10091: see if flock exists
10092set flock d_flock
10093eval $inlibc
10094
2ef53570
JH
10095: see if this is a sys/file.h system
10096val=''
10097set sys/file.h val
10098eval $inhdr
10099
10100: do we need to include sys/file.h ?
10101case "$val" in
10102"$define")
10103 echo " "
10104 if $h_sysfile; then
10105 val="$define"
10106 echo "We'll be including <sys/file.h>." >&4
10107 else
10108 val="$undef"
10109 echo "We won't be including <sys/file.h>." >&4
10110 fi
10111 ;;
10112*)
10113 h_sysfile=false
10114 ;;
10115esac
10116set i_sysfile
10117eval $setvar
10118
10119: see if prototype for flock is available
10120echo " "
10121set d_flockproto flock $i_sysfile sys/file.h
10122eval $hasproto
10123
b4eb6b3d
JH
10124: see if fork exists
10125set fork d_fork
10126eval $inlibc
10127
10128: see if pathconf exists
10129set pathconf d_pathconf
10130eval $inlibc
10131
10132: see if fpathconf exists
10133set fpathconf d_fpathconf
10134eval $inlibc
10135
10136
10137: check for fpos64_t
10138echo " "
10139echo "Checking to see if you have fpos64_t..." >&4
10140$cat >try.c <<EOCP
10141#include <stdio.h>
10142int main() { fpos64_t x = 7; }
10143EOCP
10144set try
10145if eval $compile; then
10146 val="$define"
10147 echo "You have fpos64_t."
10148else
10149 val="$undef"
10150 echo "You do not have fpos64_t."
10151 case "$fpossize" in
10152 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10153 esac
10154fi
10155$rm -f try.* try
10156set d_fpos64_t
10157eval $setvar
10158
10159: see if frexpl exists
10160set frexpl d_frexpl
10161eval $inlibc
10162
b4eb6b3d
JH
10163: see if this is a sys/param system
10164set sys/param.h i_sysparam
10165eval $inhdr
10166
10167: see if this is a sys/mount.h system
10168set sys/mount.h i_sysmount
10169eval $inhdr
10170
b4eb6b3d
JH
10171
10172echo " "
10173echo "Checking to see if your system supports struct fs_data..." >&4
10174set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10175eval $hasstruct
10176case "$d_fs_data_s" in
10177"$define") echo "Yes, it does." ;;
10178*) echo "No, it doesn't." ;;
10179esac
10180
10181: see if fseeko exists
10182set fseeko d_fseeko
10183eval $inlibc
10184case "$longsize" in
101858) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10186esac
10187
10188: see if fsetpos exists
10189set fsetpos d_fsetpos
10190eval $inlibc
10191
10192
10193: see if fstatfs exists
10194set fstatfs d_fstatfs
10195eval $inlibc
10196
10197
10198: see if statvfs exists
10199set statvfs d_statvfs
10200eval $inlibc
10201
10202: see if fstatvfs exists
10203set fstatvfs d_fstatvfs
10204eval $inlibc
10205
10206
411ab01c
JH
10207: see if fsync exists
10208set fsync d_fsync
10209eval $inlibc
10210
b4eb6b3d
JH
10211: see if ftello exists
10212set ftello d_ftello
10213eval $inlibc
10214case "$longsize" in
102158) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10216esac
10217
10218: see if getcwd exists
10219set getcwd d_getcwd
10220eval $inlibc
10221
10222: see if getespwnam exists
10223set getespwnam d_getespwnam
10224eval $inlibc
10225
10226
10227: see if getfsstat exists
10228set getfsstat d_getfsstat
10229eval $inlibc
10230
10231: see if getgrent exists
10232set getgrent d_getgrent
10233eval $inlibc
10234
10235: see if gethostbyaddr exists
10236set gethostbyaddr d_gethbyaddr
10237eval $inlibc
10238
10239: see if gethostbyname exists
10240set gethostbyname d_gethbyname
10241eval $inlibc
10242
10243: see if gethostent exists
10244set gethostent d_gethent
10245eval $inlibc
10246
10247: see how we will look up host name
10248echo " "
10249call=''
10250if set gethostname val -f d_gethname; eval $csym; $val; then
10251 echo 'gethostname() found.' >&4
10252 d_gethname="$define"
10253 call=gethostname
10254fi
10255if set uname val -f d_uname; eval $csym; $val; then
10256 if ./xenix; then
10257 $cat <<'EOM'
10258uname() was found, but you're running xenix, and older versions of xenix
10259have a broken uname(). If you don't really know whether your xenix is old
10260enough to have a broken system call, use the default answer.
10261
10262EOM
10263 dflt=y
10264 case "$d_uname" in
10265 "$define") dflt=n;;
10266 esac
10267 rp='Is your uname() broken?'
10268 . ./myread
10269 case "$ans" in
10270 n*) d_uname="$define"; call=uname;;
10271 esac
10272 else
10273 echo 'uname() found.' >&4
10274 d_uname="$define"
10275 case "$call" in
10276 '') call=uname ;;
10277 esac
10278 fi
10279fi
10280case "$d_gethname" in
10281'') d_gethname="$undef";;
10282esac
10283case "$d_uname" in
10284'') d_uname="$undef";;
10285esac
10286case "$d_uname$d_gethname" in
10287*define*)
10288 dflt=n
10289 cat <<EOM
10290
10291Every now and then someone has a $call() that lies about the hostname
10292but can't be fixed for political or economic reasons. If you wish, I can
10293pretend $call() isn't there and maybe compute hostname at run-time
10294thanks to the '$phostname' command.
10295
10296EOM
10297 rp="Shall I ignore $call() from now on?"
10298 . ./myread
10299 case "$ans" in
10300 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10301 esac;;
10302esac
10303case "$phostname" in
10304'') aphostname='';;
10305*) case "$aphostname" in
10306 /*) ;;
10307 *) set X $phostname
10308 shift
10309 file=$1
10310 shift
10311 file=`./loc $file $file $pth`
10312 aphostname=`echo $file $*`
10313 ;;
10314 esac
10315 ;;
10316esac
10317case "$d_uname$d_gethname" in
10318*define*) ;;
10319*)
10320 case "$phostname" in
10321 '')
10322 echo "There will be no way for $package to get your hostname." >&4;;
10323 *)
10324 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10325 ;;
10326 esac;;
10327esac
10328case "$d_phostname" in
10329'') d_phostname="$undef";;
10330esac
10331
10332: see if this is a netdb.h system
10333set netdb.h i_netdb
10334eval $inhdr
10335
10336: see if prototypes for various gethostxxx netdb.h functions are available
10337echo " "
10338set d_gethostprotos gethostent $i_netdb netdb.h
10339eval $hasproto
10340
4e0554ec
JH
10341: see if getitimer exists
10342set getitimer d_getitimer
10343eval $inlibc
10344
b4eb6b3d
JH
10345: see if getlogin exists
10346set getlogin d_getlogin
10347eval $inlibc
10348
10349: see if getmnt exists
10350set getmnt d_getmnt
10351eval $inlibc
10352
10353: see if getmntent exists
10354set getmntent d_getmntent
10355eval $inlibc
10356
10357: see if getnetbyaddr exists
10358set getnetbyaddr d_getnbyaddr
10359eval $inlibc
10360
10361: see if getnetbyname exists
10362set getnetbyname d_getnbyname
10363eval $inlibc
10364
10365: see if getnetent exists
10366set getnetent d_getnent
10367eval $inlibc
10368
10369: see if prototypes for various getnetxxx netdb.h functions are available
10370echo " "
10371set d_getnetprotos getnetent $i_netdb netdb.h
10372eval $hasproto
10373
0c0643d0
JH
10374: see if getpagesize exists
10375set getpagesize d_getpagsz
10376eval $inlibc
10377
b4eb6b3d
JH
10378
10379: see if getprotobyname exists
10380set getprotobyname d_getpbyname
10381eval $inlibc
10382
10383: see if getprotobynumber exists
10384set getprotobynumber d_getpbynumber
10385eval $inlibc
10386
10387: see if getprotoent exists
10388set getprotoent d_getpent
10389eval $inlibc
10390
10391: see if getpgid exists
10392set getpgid d_getpgid
10393eval $inlibc
10394
10395: see if getpgrp2 exists
10396set getpgrp2 d_getpgrp2
10397eval $inlibc
10398
10399: see if getppid exists
10400set getppid d_getppid
10401eval $inlibc
10402
10403: see if getpriority exists
10404set getpriority d_getprior
10405eval $inlibc
10406
10407: see if prototypes for various getprotoxxx netdb.h functions are available
10408echo " "
10409set d_getprotoprotos getprotoent $i_netdb netdb.h
10410eval $hasproto
10411
10412: see if getprpwnam exists
10413set getprpwnam d_getprpwnam
10414eval $inlibc
10415
10416: see if getpwent exists
10417set getpwent d_getpwent
10418eval $inlibc
10419
10420
10421: see if getservbyname exists
10422set getservbyname d_getsbyname
10423eval $inlibc
10424
10425: see if getservbyport exists
10426set getservbyport d_getsbyport
10427eval $inlibc
10428
10429: see if getservent exists
10430set getservent d_getsent
10431eval $inlibc
10432
10433: see if prototypes for various getservxxx netdb.h functions are available
10434echo " "
10435set d_getservprotos getservent $i_netdb netdb.h
10436eval $hasproto
10437
10438: see if getspnam exists
10439set getspnam d_getspnam
10440eval $inlibc
10441
10442: see if gettimeofday or ftime exists
10443set gettimeofday d_gettimeod
10444eval $inlibc
10445case "$d_gettimeod" in
10446"$undef")
10447 set ftime d_ftime
10448 eval $inlibc
10449 ;;
10450*)
10451 val="$undef"; set d_ftime; eval $setvar
10452 ;;
10453esac
10454case "$d_gettimeod$d_ftime" in
10455"$undef$undef")
10456 echo " "
10457 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10458 ;;
10459esac
10460
10461: see if this is an grp system
10462set grp.h i_grp
10463eval $inhdr
10464
10465case "$i_grp" in
10466$define)
10467 xxx=`./findhdr grp.h`
10468 $cppstdin $cppflags $cppminus < $xxx >$$.h
10469
10470 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10471 val="$define"
10472 else
10473 val="$undef"
10474 fi
10475 set d_grpasswd
10476 eval $setvar
10477
10478 $rm -f $$.h
10479 ;;
10480*)
10481 val="$undef";
10482 set d_grpasswd; eval $setvar
10483 ;;
10484esac
10485
10486: see if hasmntopt exists
10487set hasmntopt d_hasmntopt
10488eval $inlibc
10489
10490: see if this is a netinet/in.h or sys/in.h system
10491set netinet/in.h i_niin sys/in.h i_sysin
10492eval $inhdr
10493
10494: see if arpa/inet.h has to be included
10495set arpa/inet.h i_arpainet
10496eval $inhdr
10497
10498: see if htonl --and friends-- exists
10499val=''
10500set htonl val
10501eval $inlibc
10502
10503: Maybe they are macros.
10504case "$val" in
10505$undef)
10506 $cat >htonl.c <<EOM
10507#include <stdio.h>
10508#include <sys/types.h>
10509#$i_niin I_NETINET_IN
10510#$i_sysin I_SYS_IN
10511#$i_arpainet I_ARPA_INET
10512#ifdef I_NETINET_IN
10513#include <netinet/in.h>
10514#endif
10515#ifdef I_SYS_IN
10516#include <sys/in.h>
10517#endif
10518#ifdef I_ARPA_INET
10519#include <arpa/inet.h>
10520#endif
10521#ifdef htonl
10522printf("Defined as a macro.");
10523#endif
10524EOM
10525 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10526 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10527 val="$define"
10528 echo "But it seems to be defined as a macro." >&4
10529 fi
10530 $rm -f htonl.?
10531 ;;
10532esac
10533set d_htonl
10534eval $setvar
10535
10536: see if iconv exists
10537set iconv d_iconv
10538eval $inlibc
10539
10540: index or strchr
10541echo " "
10542if set index val -f; eval $csym; $val; then
10543 if set strchr val -f d_strchr; eval $csym; $val; then
10544 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10545 val="$define"
10546 vali="$undef"
10547 echo "strchr() found." >&4
10548 else
10549 val="$undef"
10550 vali="$define"
10551 echo "index() found." >&4
10552 fi
10553 else
10554 val="$undef"
10555 vali="$define"
8dfa8df9
JH
10556 echo "index() found." >&4
10557 fi
b4eb6b3d 10558else
8dfa8df9
JH
10559 if set strchr val -f d_strchr; eval $csym; $val; then
10560 val="$define"
10561 vali="$undef"
10562 echo "strchr() found." >&4
10563 else
10564 echo "No index() or strchr() found!" >&4
10565 val="$undef"
10566 vali="$undef"
10567 fi
b4eb6b3d 10568fi
8dfa8df9
JH
10569set d_strchr; eval $setvar
10570val="$vali"
10571set d_index; eval $setvar
10572
10573: check whether inet_aton exists
10574set inet_aton d_inetaton
10575eval $inlibc
b4eb6b3d
JH
10576
10577: Look for isascii
10578echo " "
10579$cat >isascii.c <<'EOCP'
10580#include <stdio.h>
10581#include <ctype.h>
10582int main() {
10583 int c = 'A';
10584 if (isascii(c))
10585 exit(0);
10586 else
10587 exit(1);
10588}
10589EOCP
10590set isascii
10591if eval $compile; then
10592 echo "isascii() found." >&4
10593 val="$define"
10594else
10595 echo "isascii() NOT found." >&4
10596 val="$undef"
10597fi
10598set d_isascii
10599eval $setvar
10600$rm -f isascii*
10601
10602: see if isnan exists
10603set isnan d_isnan
10604eval $inlibc
10605
10606: see if isnanl exists
10607set isnanl d_isnanl
10608eval $inlibc
10609
10610: see if killpg exists
10611set killpg d_killpg
10612eval $inlibc
10613
10614: see if lchown exists
10615echo " "
10616$cat > try.c <<'EOCP'
10617/* System header to define __stub macros and hopefully few prototypes,
10618 which can conflict with char lchown(); below. */
10619#include <assert.h>
10620/* Override any gcc2 internal prototype to avoid an error. */
10621/* We use char because int might match the return type of a gcc2
10622 builtin and then its argument prototype would still apply. */
10623char lchown();
10624int main() {
10625 /* The GNU C library defines this for functions which it implements
10626 to always fail with ENOSYS. Some functions are actually named
10627 something starting with __ and the normal name is an alias. */
10628#if defined (__stub_lchown) || defined (__stub___lchown)
10629choke me
10630#else
10631lchown();
10632#endif
10633; return 0; }
10634EOCP
10635set try
10636if eval $compile; then
10637 $echo "lchown() found." >&4
10638 val="$define"
10639else
10640 $echo "lchown() NOT found." >&4
10641 val="$undef"
10642fi
10643set d_lchown
10644eval $setvar
10645
10646: See if number of significant digits in a double precision number is known
10647echo " "
10648$cat >ldbl_dig.c <<EOM
10649#$i_limits I_LIMITS
10650#$i_float I_FLOAT
10651#ifdef I_LIMITS
10652#include <limits.h>
10653#endif
10654#ifdef I_FLOAT
10655#include <float.h>
10656#endif
10657#ifdef LDBL_DIG
10658printf("Contains LDBL_DIG");
10659#endif
10660EOM
10661$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10662if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10663 echo "LDBL_DIG found." >&4
10664 val="$define"
10665else
10666 echo "LDBL_DIG NOT found." >&4
10667 val="$undef"
10668fi
10669$rm -f ldbl_dig.?
10670set d_ldbl_dig
10671eval $setvar
10672
10673: see if link exists
10674set link d_link
10675eval $inlibc
10676
10677: see if localeconv exists
10678set localeconv d_locconv
10679eval $inlibc
10680
10681: see if lockf exists
10682set lockf d_lockf
10683eval $inlibc
10684
b4eb6b3d
JH
10685: see if prototype for lseek is available
10686echo " "
10687set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10688eval $hasproto
10689
10690: see if lstat exists
10691set lstat d_lstat
10692eval $inlibc
10693
10694: see if madvise exists
10695set madvise d_madvise
10696eval $inlibc
10697
10698: see if mblen exists
10699set mblen d_mblen
10700eval $inlibc
10701
10702: see if mbstowcs exists
10703set mbstowcs d_mbstowcs
10704eval $inlibc
10705
10706: see if mbtowc exists
10707set mbtowc d_mbtowc
10708eval $inlibc
10709
10710: see if memchr exists
10711set memchr d_memchr
10712eval $inlibc
10713
10714: see if memcmp exists
10715set memcmp d_memcmp
10716eval $inlibc
10717
10718: see if memcpy exists
10719set memcpy d_memcpy
10720eval $inlibc
10721
10722: see if memmove exists
10723set memmove d_memmove
10724eval $inlibc
10725
10726: see if memset exists
10727set memset d_memset
10728eval $inlibc
10729
10730: see if mkdir exists
10731set mkdir d_mkdir
10732eval $inlibc
10733
10734: see if mkdtemp exists
10735set mkdtemp d_mkdtemp
10736eval $inlibc
10737
10738: see if mkfifo exists
10739set mkfifo d_mkfifo
10740eval $inlibc
10741
10742: see if mkstemp exists
10743set mkstemp d_mkstemp
10744eval $inlibc
10745
10746: see if mkstemps exists
10747set mkstemps d_mkstemps
10748eval $inlibc
10749
10750: see if mktime exists
10751set mktime d_mktime
10752eval $inlibc
10753
10754: see if this is a sys/mman.h system
10755set sys/mman.h i_sysmman
10756eval $inhdr
10757
10758: see if mmap exists
10759set mmap d_mmap
10760eval $inlibc
10761: see what shmat returns
10762: default to something harmless
10763mmaptype='void *'
10764case "$i_sysmman$d_mmap" in
10765"$define$define")
10766 $cat >mmap.c <<'END'
10767#include <sys/mman.h>
10768void *mmap();
10769END
10770 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10771 mmaptype='void *'
10772 else
10773 mmaptype='caddr_t'
10774 fi
10775 echo "and it returns ($mmaptype)." >&4
10776 ;;
10777esac
10778
10779
10780
10781: see if modfl exists
10782set modfl d_modfl
10783eval $inlibc
10784
e67aeab1
JH
10785d_modfl_pow32_bug="$undef"
10786
2b2cdb4d
HS
10787case "$d_longdbl$d_modfl" in
10788$define$define)
10789 $cat <<EOM
10790Checking to see whether your modfl() is okay for large values...
10791EOM
10792$cat >try.c <<EOCP
10793#include <math.h>
10794#include <stdio.h>
10795int main() {
10796 long double nv = 4294967303.15;
10797 long double v, w;
10798 v = modfl(nv, &w);
10799#ifdef __GLIBC__
10800 printf("glibc");
10801#endif
10802 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10803 return 0;
10804}
10805EOCP
27f9615e
JH
10806 case "$osname:$gccversion" in
10807 aix:) saveccflags="$ccflags"
10808 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10809 esac
2b2cdb4d
HS
10810 set try
10811 if eval $compile; then
5440bc8e 10812 foo=`$run ./try`
2b2cdb4d
HS
10813 case "$foo" in
10814 *" 4294967303.150000 1.150000 4294967302.000000")
10815 echo >&4 "Your modfl() is broken for large values."
e67aeab1 10816 d_modfl_pow32_bug="$define"
2b2cdb4d
HS
10817 case "$foo" in
10818 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10819 ;;
10820 esac
10821 ;;
10822 *" 4294967303.150000 0.150000 4294967303.000000")
10823 echo >&4 "Your modfl() seems okay for large values."
10824 ;;
10825 *) echo >&4 "I don't understand your modfl() at all."
10826 d_modfl="$undef"
10827 ;;
10828 esac
10829 $rm -f try.* try core core.try.*
10830 else
10831 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10832 d_modfl="$undef"
10833 fi
27f9615e 10834 case "$osname:$gccversion" in
abcf653a 10835 aix:) ccflags="$saveccflags" ;; # restore
27f9615e 10836 esac
2b2cdb4d
HS
10837 ;;
10838esac
10839
b4eb6b3d
JH
10840: see if mprotect exists
10841set mprotect d_mprotect
10842eval $inlibc
10843
10844: see if msgctl exists
10845set msgctl d_msgctl
10846eval $inlibc
10847
10848: see if msgget exists
10849set msgget d_msgget
10850eval $inlibc
10851
10852: see if msgsnd exists
10853set msgsnd d_msgsnd
10854eval $inlibc
10855
10856: see if msgrcv exists
10857set msgrcv d_msgrcv
10858eval $inlibc
10859
10860: see how much of the 'msg*(2)' library is present.
10861h_msg=true
10862echo " "
10863case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10864*"$undef"*) h_msg=false;;
10865esac
10866case "$osname" in
10867freebsd)
10868 case "`ipcs 2>&1`" in
10869 "SVID messages"*"not configured"*)
10870 echo "Your $osname does not have the msg*(2) configured." >&4
10871 h_msg=false
10872 val="$undef"
10873 set msgctl d_msgctl
10874 eval $setvar
10875 set msgget d_msgget
10876 eval $setvar
10877 set msgsnd d_msgsnd
10878 eval $setvar
10879 set msgrcv d_msgrcv
10880 eval $setvar
10881 ;;
10882 esac
10883 ;;
10884esac
10885: we could also check for sys/ipc.h ...
10886if $h_msg && $test `./findhdr sys/msg.h`; then
10887 echo "You have the full msg*(2) library." >&4
10888 val="$define"
10889else
10890 echo "You don't have the full msg*(2) library." >&4
10891 val="$undef"
10892fi
10893set d_msg
10894eval $setvar
10895
4e0554ec
JH
10896
10897echo " "
10898echo "Checking to see if your system supports struct msghdr..." >&4
10899set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10900eval $hasstruct
10901case "$d_msghdr_s" in
10902"$define") echo "Yes, it does." ;;
10903*) echo "No, it doesn't." ;;
10904esac
10905
10906
b4eb6b3d
JH
10907: see if msync exists
10908set msync d_msync
10909eval $inlibc
10910
10911: see if munmap exists
10912set munmap d_munmap
10913eval $inlibc
10914
10915: see if nice exists
10916set nice d_nice
10917eval $inlibc
10918
2765b840
JH
10919: see if this is a langinfo.h system
10920set langinfo.h i_langinfo
10921eval $inhdr
10922
10923: see if nl_langinfo exists
10924set nl_langinfo d_nl_langinfo
10925eval $inlibc
10926
b4eb6b3d
JH
10927: check for length of character
10928echo " "
10929case "$charsize" in
10930'')
10931 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10932 $cat >try.c <<'EOCP'
10933#include <stdio.h>
10934int main()
10935{
10936 printf("%d\n", (int)sizeof(char));
10937 exit(0);
10938}
10939EOCP
10940 set try
10941 if eval $compile_ok; then
5440bc8e 10942 dflt=`$run ./try`
b4eb6b3d
JH
10943 else
10944 dflt='1'
10945 echo "(I can't seem to compile the test program. Guessing...)"
10946 fi
10947 ;;
10948*)
10949 dflt="$charsize"
10950 ;;
10951esac
10952rp="What is the size of a character (in bytes)?"
10953. ./myread
10954charsize="$ans"
10955$rm -f try.c try
10956
1d1be0dc
NC
10957: check for volatile keyword
10958echo " "
10959echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10960$cat >try.c <<'EOCP'
10961int main()
10962{
10963 typedef struct _goo_struct goo_struct;
10964 goo_struct * volatile goo = ((goo_struct *)0);
10965 struct _goo_struct {
10966 long long_int;
10967 int reg_int;
10968 char char_var;
10969 };
10970 typedef unsigned short foo_t;
10971 char *volatile foo;
10972 volatile int bar;
10973 volatile foo_t blech;
10974 foo = foo;
10975}
10976EOCP
10977if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10978 val="$define"
10979 echo "Yup, it does."
10980else
10981 val="$undef"
10982 echo "Nope, it doesn't."
10983fi
10984set d_volatile
10985eval $setvar
10986$rm -f try.*
10987
b4eb6b3d
JH
10988
10989echo " "
10990$echo "Choosing the C types to be used for Perl's internal types..." >&4
10991
10992case "$use64bitint:$d_quad:$quadtype" in
10993define:define:?*)
10994 ivtype="$quadtype"
10995 uvtype="$uquadtype"
10996 ivsize=8
10997 uvsize=8
10998 ;;
10999*) ivtype="long"
11000 uvtype="unsigned long"
11001 ivsize=$longsize
11002 uvsize=$longsize
11003 ;;
11004esac
11005
11006case "$uselongdouble:$d_longdbl" in
11007define:define)
11008 nvtype="long double"
11009 nvsize=$longdblsize
11010 ;;
11011*) nvtype=double
11012 nvsize=$doublesize
11013 ;;
11014esac
11015
11016$echo "(IV will be "$ivtype", $ivsize bytes)"
11017$echo "(UV will be "$uvtype", $uvsize bytes)"
11018$echo "(NV will be "$nvtype", $nvsize bytes)"
11019
11020$cat >try.c <<EOCP
11021#$i_inttypes I_INTTYPES
11022#ifdef I_INTTYPES
11023#include <inttypes.h>
11024#endif
11025#include <stdio.h>
11026int main() {
11027#ifdef INT8
11028 int8_t i = INT8_MAX;
11029 uint8_t u = UINT8_MAX;
11030 printf("int8_t\n");
11031#endif
11032#ifdef INT16
11033 int16_t i = INT16_MAX;
11034 uint16_t i = UINT16_MAX;
11035 printf("int16_t\n");
11036#endif
11037#ifdef INT32
11038 int32_t i = INT32_MAX;
11039 uint32_t u = UINT32_MAX;
11040 printf("int32_t\n");
11041#endif
11042}
11043EOCP
11044
11045case "$i8type" in
11046'') case "$charsize" in
11047 1) i8type=char
11048 u8type="unsigned char"
11049 i8size=$charsize
11050 u8size=$charsize
11051 ;;
11052 esac
11053 ;;
11054esac
11055case "$i8type" in
11056'') set try -DINT8
11057 if eval $compile; then
5440bc8e 11058 case "`$run ./try`" in
b4eb6b3d
JH
11059 int8_t) i8type=int8_t
11060 u8type=uint8_t
11061 i8size=1
11062 u8size=1
11063 ;;
11064 esac
11065 fi
11066 ;;
11067esac
11068case "$i8type" in
11069'') if $test $charsize -ge 1; then
11070 i8type=char
11071 u8type="unsigned char"
11072 i8size=$charsize
11073 u8size=$charsize
11074 fi
11075 ;;
11076esac
11077
11078case "$i16type" in
11079'') case "$shortsize" in
11080 2) i16type=short
11081 u16type="unsigned short"
11082 i16size=$shortsize
11083 u16size=$shortsize
11084 ;;
11085 esac
11086 ;;
11087esac
11088case "$i16type" in
11089'') set try -DINT16
11090 if eval $compile; then
5440bc8e 11091 case "`$run ./try`" in
b4eb6b3d
JH
11092 int16_t)
11093 i16type=int16_t
11094 u16type=uint16_t
11095 i16size=2
11096 u16size=2
11097 ;;
11098 esac
11099 fi
11100 ;;
11101esac
11102case "$i16type" in
11103'') if $test $shortsize -ge 2; then
11104 i16type=short
11105 u16type="unsigned short"
11106 i16size=$shortsize
11107 u16size=$shortsize
11108 fi
11109 ;;
11110esac
11111
11112case "$i32type" in
11113'') case "$longsize" in
11114 4) i32type=long
11115 u32type="unsigned long"
11116 i32size=$longsize
11117 u32size=$longsize
11118 ;;
11119 *) case "$intsize" in
11120 4) i32type=int
11121 u32type="unsigned int"
11122 i32size=$intsize
11123 u32size=$intsize
11124 ;;
11125 esac
11126 ;;
11127 esac
11128 ;;
11129esac
11130case "$i32type" in
11131'') set try -DINT32
11132 if eval $compile; then
5440bc8e 11133 case "`$run ./try`" in
b4eb6b3d
JH
11134 int32_t)
11135 i32type=int32_t
11136 u32type=uint32_t
11137 i32size=4
11138 u32size=4
11139 ;;
11140 esac
11141 fi
11142 ;;
11143esac
11144case "$i32type" in
11145'') if $test $intsize -ge 4; then
11146 i32type=int
11147 u32type="unsigned int"
11148 i32size=$intsize
11149 u32size=$intsize
11150 fi
11151 ;;
11152esac
11153
11154case "$i64type" in
11155'') case "$d_quad:$quadtype" in
11156 define:?*)
11157 i64type="$quadtype"
11158 u64type="$uquadtype"
11159 i64size=8
11160 u64size=8
11161 ;;
11162 esac
11163 ;;
11164esac
11165
1d1be0dc
NC
11166$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11167: volatile so that the compiler has to store it out to memory.
11168if test X"$d_volatile" = X"$define"; then
11169 volatile=volatile
11170fi
b4eb6b3d
JH
11171$cat <<EOP >try.c
11172#include <stdio.h>
1d1be0dc
NC
11173#include <sys/types.h>
11174#include <signal.h>
11175#ifdef SIGFPE
11176$volatile int bletched = 0;
11177$signal_t blech(s) int s; { bletched = 1; }
11178#endif
b4eb6b3d
JH
11179int main() {
11180 $uvtype u = 0;
1d1be0dc 11181 $nvtype d;
b4eb6b3d
JH
11182 int n = 8 * $uvsize;
11183 int i;
1d1be0dc
NC
11184#ifdef SIGFPE
11185 signal(SIGFPE, blech);
11186#endif
11187
b4eb6b3d
JH
11188 for (i = 0; i < n; i++) {
11189 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11190 d = ($nvtype)u;
11191 if (($uvtype)d != u)
b4eb6b3d 11192 break;
1d1be0dc
NC
11193 if (d <= 0)
11194 break;
11195 d = ($nvtype)(u - 1);
11196 if (($uvtype)d != (u - 1))
11197 break;
11198#ifdef SIGFPE
11199 if (bletched) {
11200 break;
11201#endif
11202 }
b4eb6b3d 11203 }
efd1522b 11204 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11205 exit(0);
11206}
11207EOP
1d1be0dc
NC
11208set try
11209
11210d_nv_preserves_uv="$undef"
11211if eval $compile; then
5440bc8e 11212 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11213fi
11214case "$d_nv_preserves_uv_bits" in
11215\-[1-9]*)
11216 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11217 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11218 d_nv_preserves_uv="$define"
b4eb6b3d 11219 ;;
1d1be0dc
NC
11220[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11221 d_nv_preserves_uv="$undef" ;;
11222*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11223 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11224esac
11225
1d1be0dc
NC
11226$rm -f try.* try
11227
b4eb6b3d
JH
11228
11229: check for off64_t
11230echo " "
11231echo "Checking to see if you have off64_t..." >&4
11232$cat >try.c <<EOCP
11233#include <sys/types.h>
11234#include <unistd.h>
11235int main() { off64_t x = 7; }
11236EOCP
11237set try
11238if eval $compile; then
11239 val="$define"
11240 echo "You have off64_t."
11241else
11242 val="$undef"
11243 echo "You do not have off64_t."
11244 case "$lseeksize" in
11245 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11246 esac
11247fi
11248$rm -f try.* try
11249set d_off64_t
11250eval $setvar
11251
11252: see if POSIX threads are available
11253set pthread.h i_pthread
11254eval $inhdr
11255
11256
11257
11258
11259: how to create joinable pthreads
11260if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11261 echo " "
11262 echo "Checking what constant to use for creating joinable pthreads..." >&4
11263 $cat >try.c <<'EOCP'
11264#include <pthread.h>
11265int main() {
11266 int detachstate = JOINABLE;
11267}
11268EOCP
11269 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11270 if eval $compile; then
11271 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11272 val="$undef" # Yes, undef.
11273 set d_old_pthread_create_joinable
11274 eval $setvar
11275 val=""
11276 set old_pthread_create_joinable
11277 eval $setvar
11278 else
11279 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11280 if eval $compile; then
11281 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11282 val="$define"
11283 set d_old_pthread_create_joinable
11284 eval $setvar
11285 val=PTHREAD_CREATE_UNDETACHED
11286 set old_pthread_create_joinable
11287 eval $setvar
11288 else
11289 set try -DJOINABLE=__UNDETACHED
11290 if eval $compile; then
11291 echo "You seem to use __UNDETACHED." >&4
11292 val="$define"
11293 set d_old_pthread_create_joinable
11294 eval $setvar
11295 val=__UNDETACHED
11296 set old_pthread_create_joinable
11297 eval $setvar
11298 else
11299 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11300 val="$define"
11301 set d_old_pthread_create_joinable
11302 eval $setvar
11303 val=0
11304 set old_pthread_create_joinable
11305 eval $setvar
11306 fi
11307 fi
11308 fi
11309 $rm -f try try.*
11310else
11311 d_old_pthread_create_joinable="$undef"
11312 old_pthread_create_joinable=""
11313fi
11314
11315: see if pause exists
11316set pause d_pause
11317eval $inlibc
11318
11319: see if pipe exists
11320set pipe d_pipe
11321eval $inlibc
11322
11323: see if poll exists
11324set poll d_poll
11325eval $inlibc
11326
11327
11328: see whether the various POSIXish _yields exist
11329$cat >try.c <<EOP
11330#include <pthread.h>
11331#include <stdio.h>
11332int main() {
11333#ifdef SCHED_YIELD
11334 sched_yield();
11335#else
11336#ifdef PTHREAD_YIELD
11337 pthread_yield();
11338#else
11339#ifdef PTHREAD_YIELD_NULL
11340 pthread_yield(NULL);
11341#endif
11342#endif
11343#endif
11344}
11345EOP
11346: see if sched_yield exists
11347set try -DSCHED_YIELD
11348if eval $compile; then
11349 val="$define"
11350 sched_yield='sched_yield()'
11351else
11352 val="$undef"
11353fi
11354case "$usethreads" in
11355$define)
11356 case "$val" in
11357 $define) echo 'sched_yield() found.' >&4 ;;
11358 *) echo 'sched_yield() NOT found.' >&4 ;;
11359 esac
11360esac
11361set d_sched_yield
11362eval $setvar
11363
11364: see if pthread_yield exists
11365set try -DPTHREAD_YIELD
11366if eval $compile; then
11367 val="$define"
11368 case "$sched_yield" in
11369 '') sched_yield='pthread_yield()' ;;
11370 esac
11371else
11372 set try -DPTHREAD_YIELD_NULL
11373 if eval $compile; then
11374 val="$define"
11375 case "$sched_yield" in
11376 '') sched_yield='pthread_yield(NULL)' ;;
11377 esac
11378 else
11379 val="$undef"
11380 fi
11381fi
11382case "$usethreads" in
11383$define)
11384 case "$val" in
11385 $define) echo 'pthread_yield() found.' >&4 ;;
11386 *) echo 'pthread_yield() NOT found.' >&4 ;;
11387 esac
11388 ;;
11389esac
11390set d_pthread_yield
11391eval $setvar
11392
11393case "$sched_yield" in
11394'') sched_yield=undef ;;
11395esac
11396
11397$rm -f try try.*
11398
11399: see if this is a pwd.h system
11400set pwd.h i_pwd
11401eval $inhdr
11402
11403case "$i_pwd" in
11404$define)
11405 xxx=`./findhdr pwd.h`
11406 $cppstdin $cppflags $cppminus < $xxx >$$.h
11407
11408 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11409 val="$define"
11410 else
11411 val="$undef"
11412 fi
11413 set d_pwquota
11414 eval $setvar
11415
11416 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11417 val="$define"
11418 else
11419 val="$undef"
11420 fi
11421 set d_pwage
11422 eval $setvar
11423
11424 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11425 val="$define"
11426 else
11427 val="$undef"
11428 fi
11429 set d_pwchange
11430 eval $setvar
11431
11432 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11433 val="$define"
11434 else
11435 val="$undef"
11436 fi
11437 set d_pwclass
11438 eval $setvar
11439
11440 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11441 val="$define"
11442 else
11443 val="$undef"
11444 fi
11445 set d_pwexpire
11446 eval $setvar
11447
11448 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11449 val="$define"
11450 else
11451 val="$undef"
11452 fi
11453 set d_pwcomment
11454 eval $setvar
11455
11456 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11457 val="$define"
11458 else
11459 val="$undef"
11460 fi
11461 set d_pwgecos
11462 eval $setvar
11463
11464 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11465 val="$define"
11466 else
11467 val="$undef"
11468 fi
11469 set d_pwpasswd
11470 eval $setvar
11471
11472 $rm -f $$.h
11473 ;;
11474*)
11475 val="$undef";
11476 set d_pwquota; eval $setvar
11477 set d_pwage; eval $setvar
11478 set d_pwchange; eval $setvar
11479 set d_pwclass; eval $setvar
11480 set d_pwexpire; eval $setvar
11481 set d_pwcomment; eval $setvar
11482 set d_pwgecos; eval $setvar
11483 set d_pwpasswd; eval $setvar
11484 ;;
11485esac
11486
11487: see if readdir and friends exist
11488set readdir d_readdir
11489eval $inlibc
11490set seekdir d_seekdir
11491eval $inlibc
11492set telldir d_telldir
11493eval $inlibc
11494set rewinddir d_rewinddir
11495eval $inlibc
11496
11497: see if readlink exists
11498set readlink d_readlink
11499eval $inlibc
11500
4e0554ec
JH
11501: see if readv exists
11502set readv d_readv
11503eval $inlibc
11504
11505: see if recvmsg exists
11506set recvmsg d_recvmsg
11507eval $inlibc
11508
b4eb6b3d
JH
11509: see if rename exists
11510set rename d_rename
11511eval $inlibc
11512
11513: see if rmdir exists
11514set rmdir d_rmdir
11515eval $inlibc
11516
11517: see if memory.h is available.
11518val=''
11519set memory.h val
11520eval $inhdr
11521
11522: See if it conflicts with string.h
11523case "$val" in
11524$define)
11525 case "$strings" in
11526 '') ;;
11527 *)
11528 $cppstdin $cppflags $cppminus < $strings > mem.h
11529 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11530 echo " "
11531 echo "We won't be including <memory.h>."
11532 val="$undef"
11533 fi
11534 $rm -f mem.h
11535 ;;
11536 esac
11537esac
11538set i_memory
11539eval $setvar
11540
11541: can bcopy handle overlapping blocks?
b6cc3bc4 11542echo " "
b4eb6b3d 11543val="$undef"
b6cc3bc4
AD
11544case "$d_memmove" in
11545"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11546*) case "$d_bcopy" in
11547 "$define")
11548 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11549 $cat >try.c <<EOCP
b4eb6b3d
JH
11550#$i_memory I_MEMORY
11551#$i_stdlib I_STDLIB
11552#$i_string I_STRING
11553#$i_unistd I_UNISTD
11554EOCP
11555 $cat >>try.c <<'EOCP'
11556#include <stdio.h>
11557#ifdef I_MEMORY
11558# include <memory.h>
11559#endif
11560#ifdef I_STDLIB
11561# include <stdlib.h>
11562#endif
11563#ifdef I_STRING
11564# include <string.h>
11565#else
11566# include <strings.h>
11567#endif
11568#ifdef I_UNISTD
11569# include <unistd.h> /* Needed for NetBSD */
11570#endif
11571int main()
11572{
11573char buf[128], abc[128];
11574char *b;
11575int len;
11576int off;
11577int align;
11578
b6cc3bc4
AD
11579/* Copy "abcde..." string to char abc[] so that gcc doesn't
11580 try to store the string in read-only memory. */
b4eb6b3d
JH
11581bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11582
11583for (align = 7; align >= 0; align--) {
11584 for (len = 36; len; len--) {
11585 b = buf+align;
11586 bcopy(abc, b, len);
11587 for (off = 1; off <= len; off++) {
11588 bcopy(b, b+off, len);
11589 bcopy(b+off, b, len);
11590 if (bcmp(b, abc, len))
11591 exit(1);
11592 }
11593 }
11594}
11595exit(0);
11596}
11597EOCP
b6cc3bc4
AD
11598 set try
11599 if eval $compile_ok; then
11600 if ./try 2>/dev/null; then
11601 echo "Yes, it can."
11602 val="$define"
11603 else
11604 echo "It can't, sorry."
11605 fi
b4eb6b3d 11606 else
b6cc3bc4 11607 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11608 fi
b6cc3bc4
AD
11609 ;;
11610 esac
11611 $rm -f try.* try core
b4eb6b3d
JH
11612 ;;
11613esac
b4eb6b3d
JH
11614set d_safebcpy
11615eval $setvar
11616
11617: can memcpy handle overlapping blocks?
b6cc3bc4 11618echo " "
b4eb6b3d 11619val="$undef"
b6cc3bc4
AD
11620case "$d_memmove" in
11621"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11622*) case "$d_memcpy" in
11623 "$define")
11624 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11625 $cat >try.c <<EOCP
b4eb6b3d
JH
11626#$i_memory I_MEMORY
11627#$i_stdlib I_STDLIB
11628#$i_string I_STRING
11629#$i_unistd I_UNISTD
11630EOCP
11631 $cat >>try.c <<'EOCP'
11632#include <stdio.h>
11633#ifdef I_MEMORY
11634# include <memory.h>
11635#endif
11636#ifdef I_STDLIB
11637# include <stdlib.h>
11638#endif
11639#ifdef I_STRING
11640# include <string.h>
11641#else
11642# include <strings.h>
11643#endif
11644#ifdef I_UNISTD
11645# include <unistd.h> /* Needed for NetBSD */
11646#endif
11647int main()
11648{
11649char buf[128], abc[128];
11650char *b;
11651int len;
11652int off;
11653int align;
11654
11655/* Copy "abcde..." string to char abc[] so that gcc doesn't
11656 try to store the string in read-only memory. */
11657memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11658
11659for (align = 7; align >= 0; align--) {
11660 for (len = 36; len; len--) {
11661 b = buf+align;
11662 memcpy(b, abc, len);
11663 for (off = 1; off <= len; off++) {
11664 memcpy(b+off, b, len);
11665 memcpy(b, b+off, len);
11666 if (memcmp(b, abc, len))
11667 exit(1);
11668 }
11669 }
11670}
11671exit(0);
11672}
11673EOCP
b6cc3bc4
AD
11674 set try
11675 if eval $compile_ok; then
11676 if ./try 2>/dev/null; then
11677 echo "Yes, it can."
11678 val="$define"
11679 else
11680 echo "It can't, sorry."
11681 fi
b4eb6b3d 11682 else
b6cc3bc4 11683 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11684 fi
b6cc3bc4
AD
11685 ;;
11686 esac
11687 $rm -f try.* try core
b4eb6b3d
JH
11688 ;;
11689esac
b4eb6b3d
JH
11690set d_safemcpy
11691eval $setvar
11692
11693: can memcmp be trusted to compare relative magnitude?
11694val="$undef"
11695case "$d_memcmp" in
11696"$define")
11697 echo " "
11698 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11699 $cat >try.c <<EOCP
11700#$i_memory I_MEMORY
11701#$i_stdlib I_STDLIB
11702#$i_string I_STRING
11703#$i_unistd I_UNISTD
11704EOCP
11705 $cat >>try.c <<'EOCP'
11706#include <stdio.h>
11707#ifdef I_MEMORY
11708# include <memory.h>
11709#endif
11710#ifdef I_STDLIB
11711# include <stdlib.h>
11712#endif
11713#ifdef I_STRING
11714# include <string.h>
11715#else
11716# include <strings.h>
11717#endif
11718#ifdef I_UNISTD
11719# include <unistd.h> /* Needed for NetBSD */
11720#endif
11721int main()
11722{
11723char a = -1;
11724char b = 0;
11725if ((a < b) && memcmp(&a, &b, 1) < 0)
11726 exit(1);
11727exit(0);
11728}
11729EOCP
11730 set try
11731 if eval $compile_ok; then
5440bc8e 11732 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11733 echo "Yes, it can."
11734 val="$define"
11735 else
11736 echo "No, it can't (it uses signed chars)."
11737 fi
11738 else
11739 echo "(I can't compile the test program, so we'll assume not...)"
11740 fi
11741 ;;
11742esac
11743$rm -f try.* try core
11744set d_sanemcmp
11745eval $setvar
11746
ef9f17be
JH
11747: see if prototype for sbrk is available
11748echo " "
11749set d_sbrkproto sbrk $i_unistd unistd.h
11750eval $hasproto
11751
b4eb6b3d
JH
11752: see if select exists
11753set select d_select
11754eval $inlibc
11755
11756: see if semctl exists
11757set semctl d_semctl
11758eval $inlibc
11759
11760: see if semget exists
11761set semget d_semget
11762eval $inlibc
11763
11764: see if semop exists
11765set semop d_semop
11766eval $inlibc
11767
11768: see how much of the 'sem*(2)' library is present.
11769h_sem=true
11770echo " "
11771case "$d_semctl$d_semget$d_semop" in
11772*"$undef"*) h_sem=false;;
11773esac
11774case "$osname" in
11775freebsd)
11776 case "`ipcs 2>&1`" in
11777 "SVID messages"*"not configured"*)
11778 echo "Your $osname does not have the sem*(2) configured." >&4
11779 h_sem=false
11780 val="$undef"
11781 set semctl d_semctl
11782 eval $setvar
11783 set semget d_semget
11784 eval $setvar
11785 set semop d_semop
11786 eval $setvar
11787 ;;
11788 esac
11789 ;;
11790esac
11791: we could also check for sys/ipc.h ...
11792if $h_sem && $test `./findhdr sys/sem.h`; then
11793 echo "You have the full sem*(2) library." >&4
11794 val="$define"
11795else
11796 echo "You don't have the full sem*(2) library." >&4
11797 val="$undef"
11798fi
11799set d_sem
11800eval $setvar
11801
11802: see whether sys/sem.h defines union semun
11803echo " "
11804$cat > try.c <<'END'
11805#include <sys/types.h>
11806#include <sys/ipc.h>
11807#include <sys/sem.h>
11808int main () { union semun semun; semun.buf = 0; }
11809END
11810set try
11811if eval $compile; then
11812 echo "You have union semun in <sys/sem.h>." >&4
11813 val="$define"
11814else
11815 echo "You do not have union semun in <sys/sem.h>." >&4
11816 val="$undef"
11817fi
11818$rm -f try try.c try.h
11819set d_union_semun
11820eval $setvar
11821
11822: see how to do semctl IPC_STAT
11823case "$d_sem" in
11824$define)
11825 : see whether semctl IPC_STAT can use union semun
11826 echo " "
11827 $cat > try.h <<END
11828#ifndef S_IRUSR
11829# ifdef S_IREAD
11830# define S_IRUSR S_IREAD
11831# define S_IWUSR S_IWRITE
11832# define S_IXUSR S_IEXEC
11833# else
11834# define S_IRUSR 0400
11835# define S_IWUSR 0200
11836# define S_IXUSR 0100
11837# endif
11838# define S_IRGRP (S_IRUSR>>3)
11839# define S_IWGRP (S_IWUSR>>3)
11840# define S_IXGRP (S_IXUSR>>3)
11841# define S_IROTH (S_IRUSR>>6)
11842# define S_IWOTH (S_IWUSR>>6)
11843# define S_IXOTH (S_IXUSR>>6)
11844#endif
11845#ifndef S_IRWXU
11846# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11847# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11848# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11849#endif
11850END
11851
11852 $cat > try.c <<END
11853#include <sys/types.h>
11854#include <sys/ipc.h>
11855#include <sys/sem.h>
11856#include <sys/stat.h>
11857#include <stdio.h>
11858#include <errno.h>
11859#include "try.h"
11860#ifndef errno
11861extern int errno;
11862#endif
11863#$d_union_semun HAS_UNION_SEMUN
11864int main() {
11865 union semun
11866#ifndef HAS_UNION_SEMUN
11867 {
11868 int val;
11869 struct semid_ds *buf;
11870 unsigned short *array;
11871 }
11872#endif
11873 arg;
11874 int sem, st;
11875
11876#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11877 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11878 if (sem > -1) {
11879 struct semid_ds argbuf;
11880 arg.buf = &argbuf;
11881# ifdef IPC_STAT
11882 st = semctl(sem, 0, IPC_STAT, arg);
11883 if (st == 0)
11884 printf("semun\n");
11885 else
11886# endif /* IPC_STAT */
11887 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11888# ifdef IPC_RMID
11889 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11890# endif /* IPC_RMID */
11891 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11892 } else
11893#endif /* IPC_PRIVATE && ... */
11894 printf("semget failed: errno = %d\n", errno);
11895 return 0;
11896}
11897END
11898 val="$undef"
11899 set try
11900 if eval $compile; then
5440bc8e 11901 xxx=`$run ./try`
b4eb6b3d
JH
11902 case "$xxx" in
11903 semun) val="$define" ;;
11904 esac
11905 fi
11906 $rm -f try try.c
11907 set d_semctl_semun
11908 eval $setvar
11909 case "$d_semctl_semun" in
11910 $define)
11911 echo "You can use union semun for semctl IPC_STAT." >&4
11912 also='also'
11913 ;;
11914 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11915 also=''
11916 ;;
11917 esac
11918
11919 : see whether semctl IPC_STAT can use struct semid_ds pointer
11920 $cat > try.c <<'END'
11921#include <sys/types.h>
11922#include <sys/ipc.h>
11923#include <sys/sem.h>
11924#include <sys/stat.h>
11925#include "try.h"
11926#include <stdio.h>
11927#include <errno.h>
11928#ifndef errno
11929extern int errno;
11930#endif
11931int main() {
11932 struct semid_ds arg;
11933 int sem, st;
11934
11935#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11936 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11937 if (sem > -1) {
11938# ifdef IPC_STAT
11939 st = semctl(sem, 0, IPC_STAT, &arg);
11940 if (st == 0)
11941 printf("semid_ds\n");
11942 else
11943# endif /* IPC_STAT */
11944 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11945# ifdef IPC_RMID
11946 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11947# endif /* IPC_RMID */
11948 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11949 } else
11950#endif /* IPC_PRIVATE && ... */
11951 printf("semget failed: errno = %d\n", errno);
11952
11953 return 0;
11954}
11955END
11956 val="$undef"
11957 set try
11958 if eval $compile; then
5440bc8e 11959 xxx=`$run ./try`
b4eb6b3d
JH
11960 case "$xxx" in
11961 semid_ds) val="$define" ;;
11962 esac
11963 fi
11964 $rm -f try try.c
11965 set d_semctl_semid_ds
11966 eval $setvar
11967 case "$d_semctl_semid_ds" in
11968 $define)
11969 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11970 ;;
11971 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11972 ;;
11973 esac
11974 $rm -f try.h
11975 ;;
11976*) val="$undef"
11977
11978 # We do not have the full sem*(2) library, so assume we can not
11979 # use either.
11980
11981 set d_semctl_semun
11982 eval $setvar
11983
11984 set d_semctl_semid_ds
11985 eval $setvar
11986 ;;
11987esac
11988
4e0554ec
JH
11989: see if sendmsg exists
11990set sendmsg d_sendmsg
11991eval $inlibc
11992
b4eb6b3d
JH
11993: see if setegid exists
11994set setegid d_setegid
11995eval $inlibc
11996
11997: see if seteuid exists
11998set seteuid d_seteuid
11999eval $inlibc
12000
12001: see if setgrent exists
12002set setgrent d_setgrent
12003eval $inlibc
12004
12005: see if sethostent exists
12006set sethostent d_sethent
12007eval $inlibc
12008
4e0554ec
JH
12009: see if setitimer exists
12010set setitimer d_setitimer
12011eval $inlibc
12012
b4eb6b3d
JH
12013: see if setlinebuf exists
12014set setlinebuf d_setlinebuf
12015eval $inlibc
12016
12017: see if setlocale exists
12018set setlocale d_setlocale
12019eval $inlibc
12020
12021: see if setnetent exists
12022set setnetent d_setnent
12023eval $inlibc
12024
12025: see if setprotoent exists
12026set setprotoent d_setpent
12027eval $inlibc
12028
12029: see if setpgid exists
12030set setpgid d_setpgid
12031eval $inlibc
12032
12033: see if setpgrp2 exists
12034set setpgrp2 d_setpgrp2
12035eval $inlibc
12036
12037: see if setpriority exists
12038set setpriority d_setprior
12039eval $inlibc
12040
12041: see if setproctitle exists
12042set setproctitle d_setproctitle
12043eval $inlibc
12044
12045: see if setpwent exists
12046set setpwent d_setpwent
12047eval $inlibc
12048
12049: see if setregid exists
12050set setregid d_setregid
12051eval $inlibc
12052set setresgid d_setresgid
12053eval $inlibc
12054
12055: see if setreuid exists
12056set setreuid d_setreuid
12057eval $inlibc
12058set setresuid d_setresuid
12059eval $inlibc
12060
12061: see if setrgid exists
12062set setrgid d_setrgid
12063eval $inlibc
12064
12065: see if setruid exists
12066set setruid d_setruid
12067eval $inlibc
12068
12069: see if setservent exists
12070set setservent d_setsent
12071eval $inlibc
12072
12073: see if setsid exists
12074set setsid d_setsid
12075eval $inlibc
12076
12077: see if setvbuf exists
12078set setvbuf d_setvbuf
12079eval $inlibc
12080
12081: see if sfio.h is available
12082set sfio.h i_sfio
12083eval $inhdr
12084
12085
12086: see if sfio library is available
12087case "$i_sfio" in
12088$define)
12089 val=''
12090 set sfreserve val
12091 eval $inlibc
12092 ;;
12093*)
12094 val="$undef"
12095 ;;
12096esac
12097: Ok, but do we want to use it.
12098case "$val" in
12099$define)
12100 case "$usesfio" in
12101 true|$define|[yY]*) dflt='y';;
12102 *) dflt='n';;
12103 esac
12104 echo "$package can use the sfio library, but it is experimental."
12105 case "$useperlio" in
12106 "$undef")
12107 echo "For sfio also the PerlIO abstraction layer is needed."
12108 echo "Earlier you said you wouldn't want that."
12109 ;;
12110 esac
12111 rp="You seem to have sfio available, do you want to try using it?"
12112 . ./myread
12113 case "$ans" in
12114 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12115 useperlio="$define"
12116 val="$define"
12117 ;;
12118 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12119 val="$undef"
b4eb6b3d
JH
12120 ;;
12121 esac
12122 ;;
12123*) case "$usesfio" in
12124 true|$define|[yY]*)
12125 echo "Sorry, cannot find sfio on this machine." >&4
12126 echo "Ignoring your setting of usesfio=$usesfio." >&4
12127 val="$undef"
12128 ;;
12129 esac
12130 ;;
12131esac
12132set d_sfio
12133eval $setvar
12134case "$d_sfio" in
12135$define) usesfio='true';;
12136*) usesfio='false';;
12137esac
3659ebf1
JH
12138case "$d_sfio" in
12139$define) ;;
12140*) : Remove sfio from list of libraries to use
7483f793
JH
12141 case "$libs" in
12142 *-lsfio*)
12143 echo "Removing unneeded -lsfio from library list" >&4
12144 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12145 shift
12146 libs="$*"
12147 echo "libs = $libs" >&4
12148 ;;
12149 esac
3659ebf1
JH
12150;;
12151esac
12152
b4eb6b3d
JH
12153
12154: see if shmctl exists
12155set shmctl d_shmctl
12156eval $inlibc
12157
12158: see if shmget exists
12159set shmget d_shmget
12160eval $inlibc
12161
12162: see if shmat exists
12163set shmat d_shmat
12164eval $inlibc
12165: see what shmat returns
12166case "$d_shmat" in
12167"$define")
12168 $cat >shmat.c <<'END'
12169#include <sys/shm.h>
12170void *shmat();
12171END
12172 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12173 shmattype='void *'
12174 else
12175 shmattype='char *'
12176 fi
12177 echo "and it returns ($shmattype)." >&4
12178 : see if a prototype for shmat is available
12179 xxx=`./findhdr sys/shm.h`
12180 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12181 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12182 val="$define"
12183 else
12184 val="$undef"
12185 fi
12186 $rm -f shmat.[co]
12187 ;;
12188*)
12189 val="$undef"
12190 ;;
12191esac
12192set d_shmatprototype
12193eval $setvar
12194
12195: see if shmdt exists
12196set shmdt d_shmdt
12197eval $inlibc
12198
12199: see how much of the 'shm*(2)' library is present.
12200h_shm=true
12201echo " "
12202case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12203*"$undef"*) h_shm=false;;
12204esac
12205case "$osname" in
12206freebsd)
12207 case "`ipcs 2>&1`" in
12208 "SVID shared memory"*"not configured"*)
12209 echo "Your $osname does not have the shm*(2) configured." >&4
12210 h_shm=false
12211 val="$undef"
12212 set shmctl d_shmctl
12213 evat $setvar
12214 set shmget d_shmget
12215 evat $setvar
12216 set shmat d_shmat
12217 evat $setvar
12218 set shmdt d_shmdt
12219 evat $setvar
12220 ;;
12221 esac
12222 ;;
12223esac
12224: we could also check for sys/ipc.h ...
12225if $h_shm && $test `./findhdr sys/shm.h`; then
12226 echo "You have the full shm*(2) library." >&4
12227 val="$define"
12228else
12229 echo "You don't have the full shm*(2) library." >&4
12230 val="$undef"
12231fi
12232set d_shm
12233eval $setvar
12234
12235echo " "
12236: see if we have sigaction
12237if set sigaction val -f d_sigaction; eval $csym; $val; then
12238 echo 'sigaction() found.' >&4
12239 $cat > try.c <<'EOP'
12240#include <stdio.h>
12241#include <sys/types.h>
12242#include <signal.h>
12243int main()
12244{
12245 struct sigaction act, oact;
12246 act.sa_flags = 0;
12247 oact.sa_handler = 0;
12248 /* so that act and oact are used */
12249 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12250}
12251EOP
12252 set try
12253 if eval $compile_ok; then
12254 val="$define"
12255 else
12256 echo "But you don't seem to have a useable struct sigaction." >&4
12257 val="$undef"
12258 fi
12259else
12260 echo 'sigaction NOT found.' >&4
12261 val="$undef"
12262fi
12263set d_sigaction; eval $setvar
12264$rm -f try try$_o try.c
12265
983dbef6
JH
12266: see if sigprocmask exists
12267set sigprocmask d_sigprocmask
12268eval $inlibc
12269
b4eb6b3d
JH
12270: see if sigsetjmp exists
12271echo " "
12272case "$d_sigsetjmp" in
12273'')
12274 $cat >try.c <<'EOP'
12275#include <setjmp.h>
12276sigjmp_buf env;
12277int set = 1;
12278int main()
12279{
12280 if (sigsetjmp(env,1))
12281 exit(set);
12282 set = 0;
12283 siglongjmp(env, 1);
12284 exit(1);
12285}
12286EOP
12287 set try
12288 if eval $compile; then
5440bc8e 12289 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12290 echo "POSIX sigsetjmp found." >&4
12291 val="$define"
12292 else
12293 $cat >&4 <<EOM
12294Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12295I'll ignore them.
12296EOM
12297 val="$undef"
12298 fi
12299 else
12300 echo "sigsetjmp not found." >&4
12301 val="$undef"
12302 fi
12303 ;;
12304*) val="$d_sigsetjmp"
12305 case "$d_sigsetjmp" in
12306 $define) echo "POSIX sigsetjmp found." >&4;;
12307 $undef) echo "sigsetjmp not found." >&4;;
12308 esac
12309 ;;
12310esac
12311set d_sigsetjmp
12312eval $setvar
12313$rm -f try.c try
12314
49a78c82
JH
12315: see if sockatmark exists
12316set sockatmark d_sockatmark
12317eval $inlibc
12318
2ef53570
JH
12319: see if prototype for sockatmark is available
12320echo " "
12321set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12322eval $hasproto
12323
b4eb6b3d
JH
12324: see if socks5_init exists
12325set socks5_init d_socks5_init
12326eval $inlibc
12327
eef837ea
JH
12328: see if prototype for setresgid is available
12329echo " "
12330set d_sresgproto setresgid $i_unistd unistd.h
12331eval $hasproto
12332
640374d0
JH
12333: see if prototype for setresuid is available
12334echo " "
12335set d_sresuproto setresuid $i_unistd unistd.h
12336eval $hasproto
12337
b4eb6b3d
JH
12338: see if sys/stat.h is available
12339set sys/stat.h i_sysstat
12340eval $inhdr
12341
12342
12343: see if stat knows about block sizes
12344echo " "
12345echo "Checking to see if your struct stat has st_blocks field..." >&4
12346set d_statblks stat st_blocks $i_sysstat sys/stat.h
12347eval $hasfield
12348
12349
12350: see if this is a sys/vfs.h system
12351set sys/vfs.h i_sysvfs
12352eval $inhdr
12353
12354
12355: see if this is a sys/statfs.h system
12356set sys/statfs.h i_sysstatfs
12357eval $inhdr
12358
12359
12360echo " "
12361echo "Checking to see if your system supports struct statfs..." >&4
12362set 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
12363eval $hasstruct
12364case "$d_statfs_s" in
12365"$define") echo "Yes, it does." ;;
12366*) echo "No, it doesn't." ;;
12367esac
12368
12369
12370
12371: see if struct statfs knows about f_flags
12372case "$d_statfs_s" in
12373define)
12374 echo " "
12375 echo "Checking to see if your struct statfs has f_flags field..." >&4
12376 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
12377 eval $hasfield
12378 ;;
12379*) val="$undef"
12380 set d_statfs_f_flags
12381 eval $setvar
12382 ;;
12383esac
12384case "$d_statfs_f_flags" in
12385"$define") echo "Yes, it does." ;;
12386*) echo "No, it doesn't." ;;
12387esac
12388
12389: see if _ptr and _cnt from stdio act std
12390echo " "
80f36755
NC
12391
12392if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12393 echo "(Looks like you have stdio.h from BSD.)"
12394 case "$stdio_ptr" in
12395 '') stdio_ptr='((fp)->_p)'
12396 ptr_lval=$define
12397 ;;
12398 *) ptr_lval=$d_stdio_ptr_lval;;
12399 esac
12400 case "$stdio_cnt" in
12401 '') stdio_cnt='((fp)->_r)'
12402 cnt_lval=$define
12403 ;;
12404 *) cnt_lval=$d_stdio_cnt_lval;;
12405 esac
12406 case "$stdio_base" in
12407 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12408 esac
12409 case "$stdio_bufsiz" in
12410 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12411 esac
12412elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12413 echo "(Looks like you have stdio.h from Linux.)"
12414 case "$stdio_ptr" in
12415 '') stdio_ptr='((fp)->_IO_read_ptr)'
12416 ptr_lval=$define
12417 ;;
12418 *) ptr_lval=$d_stdio_ptr_lval;;
12419 esac
12420 case "$stdio_cnt" in
12421 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12422 cnt_lval=$undef
12423 ;;
12424 *) cnt_lval=$d_stdio_cnt_lval;;
12425 esac
12426 case "$stdio_base" in
12427 '') stdio_base='((fp)->_IO_read_base)';;
12428 esac
12429 case "$stdio_bufsiz" in
12430 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12431 esac
12432else
12433 case "$stdio_ptr" in
12434 '') stdio_ptr='((fp)->_ptr)'
12435 ptr_lval=$define
12436 ;;
12437 *) ptr_lval=$d_stdio_ptr_lval;;
12438 esac
12439 case "$stdio_cnt" in
12440 '') stdio_cnt='((fp)->_cnt)'
12441 cnt_lval=$define
12442 ;;
12443 *) cnt_lval=$d_stdio_cnt_lval;;
12444 esac
12445 case "$stdio_base" in
12446 '') stdio_base='((fp)->_base)';;
12447 esac
12448 case "$stdio_bufsiz" in
12449 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12450 esac
12451fi
80f36755 12452
b4eb6b3d
JH
12453: test whether _ptr and _cnt really work
12454echo "Checking how std your stdio is..." >&4
12455$cat >try.c <<EOP
12456#include <stdio.h>
12457#define FILE_ptr(fp) $stdio_ptr
12458#define FILE_cnt(fp) $stdio_cnt
12459int main() {
12460 FILE *fp = fopen("try.c", "r");
12461 char c = getc(fp);
12462 if (
12463 18 <= FILE_cnt(fp) &&
12464 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12465 )
12466 exit(0);
12467 exit(1);
12468}
12469EOP
12470val="$undef"
12471set try
5440bc8e
JH
12472if eval $compile && $to try.c; then
12473 if $run ./try; then
b4eb6b3d
JH
12474 echo "Your stdio acts pretty std."
12475 val="$define"
12476 else
12477 echo "Your stdio isn't very std."
12478 fi
12479else
12480 echo "Your stdio doesn't appear very std."
12481fi
12482$rm -f try.c try
12483set d_stdstdio
12484eval $setvar
12485
12486: Can _ptr be used as an lvalue?
12487case "$d_stdstdio$ptr_lval" in
12488$define$define) val=$define ;;
12489*) val=$undef ;;
12490esac
12491set d_stdio_ptr_lval
12492eval $setvar
12493
12494: Can _cnt be used as an lvalue?
12495case "$d_stdstdio$cnt_lval" in
12496$define$define) val=$define ;;
12497*) val=$undef ;;
12498esac
12499set d_stdio_cnt_lval
12500eval $setvar
12501
a7ffa9b9
NC
12502
12503: test whether setting _ptr sets _cnt as a side effect
12504d_stdio_ptr_lval_sets_cnt="$undef"
12505d_stdio_ptr_lval_nochange_cnt="$undef"
12506case "$d_stdio_ptr_lval$d_stdstdio" in
12507$define$define)
12508 echo "Checking to see what happens if we set the stdio ptr..." >&4
12509$cat >try.c <<EOP
12510#include <stdio.h>
12511/* Can we scream? */
12512/* Eat dust sed :-) */
c1d9e6fa 12513/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12514#define FILE_ptr(fp) $stdio_ptr
12515#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12516#include <sys/types.h>
a7ffa9b9
NC
12517int main() {
12518 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12519 int c;
a7ffa9b9
NC
12520 char *ptr;
12521 size_t cnt;
c1d9e6fa
JH
12522 if (!fp) {
12523 puts("Fail even to read");
12524 exit(1);
12525 }
12526 c = getc(fp); /* Read away the first # */
12527 if (c == EOF) {
12528 puts("Fail even to read");
12529 exit(1);
12530 }
a7ffa9b9
NC
12531 if (!(
12532 18 <= FILE_cnt(fp) &&
12533 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12534 )) {
12535 puts("Fail even to read");
12536 exit (1);
12537 }
c1d9e6fa
JH
12538 ptr = (char*) FILE_ptr(fp);
12539 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12540
c1d9e6fa 12541 FILE_ptr(fp) += 42;
a7ffa9b9 12542
c1d9e6fa 12543 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12544 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12545 exit (1);
12546 }
12547 if (FILE_cnt(fp) <= 20) {
12548 printf ("Fail (<20 chars to test)");
12549 exit (1);
12550 }
12551 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12552 puts("Fail compare");
12553 exit (1);
12554 }
12555 if (cnt == FILE_cnt(fp)) {
12556 puts("Pass_unchanged");
12557 exit (0);
12558 }
12559 if (FILE_cnt(fp) == (cnt - 42)) {
12560 puts("Pass_changed");
12561 exit (0);
12562 }
12563 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12564 return 1;
12565
12566}
12567EOP
12568 set try
5440bc8e
JH
12569 if eval $compile && $to try.c; then
12570 case `$run ./try` in
a7ffa9b9 12571 Pass_changed)
2e32dcfe 12572 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12573 d_stdio_ptr_lval_sets_cnt="$define" ;;
12574 Pass_unchanged)
12575 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12576 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12577 Fail*)
12578 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12579 *)
12580 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12581 esac
12582 else
12583 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12584 fi
12585 $rm -f try.c try
12586 ;;
12587esac
12588
b4eb6b3d
JH
12589: see if _base is also standard
12590val="$undef"
12591case "$d_stdstdio" in
12592$define)
12593 $cat >try.c <<EOP
12594#include <stdio.h>
12595#define FILE_base(fp) $stdio_base
12596#define FILE_bufsiz(fp) $stdio_bufsiz
12597int main() {
12598 FILE *fp = fopen("try.c", "r");
12599 char c = getc(fp);
12600 if (
12601 19 <= FILE_bufsiz(fp) &&
12602 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12603 )
12604 exit(0);
12605 exit(1);
12606}
12607EOP
12608 set try
5440bc8e
JH
12609 if eval $compile && $to try.c; then
12610 if $run ./try; then
b4eb6b3d
JH
12611 echo "And its _base field acts std."
12612 val="$define"
12613 else
12614 echo "But its _base field isn't std."
12615 fi
12616 else
12617 echo "However, it seems to be lacking the _base field."
12618 fi
12619 $rm -f try.c try
12620 ;;
12621esac
12622set d_stdiobase
12623eval $setvar
12624
12625$cat >&4 <<EOM
12626Checking how to access stdio streams by file descriptor number...
12627EOM
12628case "$stdio_stream_array" in
12629'') $cat >try.c <<EOCP
12630#include <stdio.h>
12631int main() {
12632 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12633 printf("yes\n");
12634}
12635EOCP
12636 for s in _iob __iob __sF
12637 do
12638 set try -DSTDIO_STREAM_ARRAY=$s
12639 if eval $compile; then
5440bc8e 12640 case "`$run ./try`" in
b4eb6b3d
JH
12641 yes) stdio_stream_array=$s; break ;;
12642 esac
12643 fi
12644 done
12645 $rm -f try.* try$exe_ext
12646esac
12647case "$stdio_stream_array" in
12648'') $cat >&4 <<EOM
12649I can't figure out how to access stdio streams by file descriptor number.
12650EOM
12651 d_stdio_stream_array="$undef"
12652 ;;
12653*) $cat >&4 <<EOM
12654You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12655EOM
12656 d_stdio_stream_array="$define"
12657 ;;
12658esac
12659
12660: see if strcoll exists
12661set strcoll d_strcoll
12662eval $inlibc
12663
12664: check for structure copying
12665echo " "
12666echo "Checking to see if your C compiler can copy structs..." >&4
12667$cat >try.c <<'EOCP'
12668int main()
12669{
12670 struct blurfl {
12671 int dyick;
12672 } foo, bar;
12673
12674 foo = bar;
12675}
12676EOCP
12677if $cc -c try.c >/dev/null 2>&1 ; then
12678 val="$define"
12679 echo "Yup, it can."
12680else
12681 val="$undef"
12682 echo "Nope, it can't."
12683fi
12684set d_strctcpy
12685eval $setvar
12686$rm -f try.*
12687
12688: see if strerror and/or sys_errlist[] exist
12689echo " "
12690if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12691 if set strerror val -f d_strerror; eval $csym; $val; then
12692 echo 'strerror() found.' >&4
12693 d_strerror="$define"
12694 d_strerrm='strerror(e)'
12695 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12696 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12697 d_syserrlst="$define"
12698 else
12699 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12700 d_syserrlst="$undef"
12701 fi
12702 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12703 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12704 echo 'strerror() found in string header.' >&4
12705 d_strerror="$define"
12706 d_strerrm='strerror(e)'
12707 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12708 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12709 d_syserrlst="$define"
12710 else
12711 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12712 d_syserrlst="$undef"
12713 fi
12714 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12715 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12716 d_strerror="$undef"
12717 d_syserrlst="$define"
12718 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12719 else
12720 echo 'strerror() and sys_errlist[] NOT found.' >&4
12721 d_strerror="$undef"
12722 d_syserrlst="$undef"
12723 d_strerrm='"unknown"'
12724 fi
12725fi
12726
b3c85772
JH
12727: see if strftime exists
12728set strftime d_strftime
12729eval $inlibc
12730
b4eb6b3d
JH
12731: see if strtod exists
12732set strtod d_strtod
12733eval $inlibc
12734
12735: see if strtol exists
12736set strtol d_strtol
12737eval $inlibc
12738
12739: see if strtold exists
12740set strtold d_strtold
12741eval $inlibc
12742
12743: see if strtoll exists
12744set strtoll d_strtoll
12745eval $inlibc
12746
12747case "$d_longlong-$d_strtoll" in
12748"$define-$define")
12749 $cat <<EOM
12750Checking whether your strtoll() works okay...
12751EOM
12752 $cat >try.c <<'EOCP'
12753#include <errno.h>
12754#ifdef __hpux
12755#define strtoll __strtoll
12756#endif
e75931a7
YST
12757#ifdef __EMX__
12758#define strtoll _strtoll
12759#endif
b4eb6b3d
JH
12760#include <stdio.h>
12761extern long long int strtoll(char *s, char **, int);
12762static int bad = 0;
12763int check(char *s, long long ell, int een) {
12764 long long gll;
12765 errno = 0;
12766 gll = strtoll(s, 0, 10);
12767 if (!((gll == ell) && (errno == een)))
12768 bad++;
12769}
12770int main() {
12771 check(" 1", 1LL, 0);
12772 check(" 0", 0LL, 0);
12773 check("-1", -1LL, 0);
12774 check("-9223372036854775808", -9223372036854775808LL, 0);
12775 check("-9223372036854775808", -9223372036854775808LL, 0);
12776 check(" 9223372036854775807", 9223372036854775807LL, 0);
12777 check("-9223372036854775808", -9223372036854775808LL, 0);
12778 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12779 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12780 if (!bad)
12781 printf("ok\n");
12782}
12783EOCP
12784 set try
12785 if eval $compile; then
5440bc8e 12786 yyy=`$run ./try`
e75931a7 12787 case "$yyy" in
b4eb6b3d
JH
12788 ok) echo "Your strtoll() seems to be working okay." ;;
12789 *) cat <<EOM >&4
12790Your strtoll() doesn't seem to be working okay.
12791EOM
12792 d_strtoll="$undef"
12793 ;;
69eadf66 12794 esac
e75931a7
YST
12795 else
12796 echo "(I can't seem to compile the test program--assuming it doesn't)"
12797 d_strtoll="$undef"
b4eb6b3d
JH
12798 fi
12799 ;;
12800esac
12801
28e5dec8
JH
12802: see if strtoq exists
12803set strtoq d_strtoq
12804eval $inlibc
12805
b4eb6b3d
JH
12806: see if strtoul exists
12807set strtoul d_strtoul
12808eval $inlibc
12809
d0e6d399
NC
12810case "$d_strtoul" in
12811"$define")
12812 $cat <<EOM
12813Checking whether your strtoul() works okay...
12814EOM
12815 $cat >try.c <<'EOCP'
12816#include <errno.h>
12817#include <stdio.h>
12818extern unsigned long int strtoul(char *s, char **, int);
12819static int bad = 0;
12820void check(char *s, unsigned long eul, int een) {
12821 unsigned long gul;
12822 errno = 0;
12823 gul = strtoul(s, 0, 10);
12824 if (!((gul == eul) && (errno == een)))
12825 bad++;
12826}
12827int main() {
12828 check(" 1", 1L, 0);
12829 check(" 0", 0L, 0);
12830EOCP
12831 case "$longsize" in
12832 8)
12833 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12834 check("18446744073709551615", 18446744073709551615UL, 0);
12835 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12836#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12837 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12838 check("-18446744073709551614", 2, 0);
12839 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12840 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12841 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12842#endif
d0e6d399
NC
12843EOCP
12844 ;;
12845 4)
12846 $cat >>try.c <<'EOCP'
12847 check("4294967295", 4294967295UL, 0);
12848 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12849#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12850 check("-1", 4294967295UL, 0);
12851 check("-4294967294", 2, 0);
12852 check("-4294967295", 1, 0);
12853 check("-4294967296", 4294967295UL, ERANGE);
12854 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12855#endif
d0e6d399
NC
12856EOCP
12857 ;;
12858 *)
12859: Should we write these tests to be more portable by sprintf-ing
12860: ~0 and then manipulating that char string as input for strtol?
12861 ;;
12862 esac
12863 $cat >>try.c <<'EOCP'
12864 if (!bad)
12865 printf("ok\n");
12866 return 0;
12867}
12868EOCP
12869 set try
12870 if eval $compile; then
5440bc8e 12871 case "`$run ./try`" in
d0e6d399
NC
12872 ok) echo "Your strtoul() seems to be working okay." ;;
12873 *) cat <<EOM >&4
12874Your strtoul() doesn't seem to be working okay.
12875EOM
12876 d_strtoul="$undef"
12877 ;;
12878 esac
12879 fi
12880 ;;
12881esac
12882
b4eb6b3d
JH
12883: see if strtoull exists
12884set strtoull d_strtoull
12885eval $inlibc
12886
12887case "$d_longlong-$d_strtoull" in
12888"$define-$define")
12889 $cat <<EOM
12890Checking whether your strtoull() works okay...
12891EOM
12892 $cat >try.c <<'EOCP'
12893#include <errno.h>
12894#ifdef __hpux
12895#define strtoull __strtoull
12896#endif
12897#include <stdio.h>
12898extern unsigned long long int strtoull(char *s, char **, int);
12899static int bad = 0;
12900int check(char *s, long long eull, int een) {
12901 long long gull;
12902 errno = 0;
12903 gull = strtoull(s, 0, 10);
12904 if (!((gull == eull) && (errno == een)))
12905 bad++;
12906}
12907int main() {
d0e6d399
NC
12908 check(" 1", 1LL, 0);
12909 check(" 0", 0LL, 0);
12910 check("18446744073709551615", 18446744073709551615ULL, 0);
12911 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12912#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
12913 check("-1", 18446744073709551615ULL, 0);
12914 check("-18446744073709551614", 2LL, 0);
12915 check("-18446744073709551615", 1LL, 0);
12916 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12917 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12918#endif
b4eb6b3d
JH
12919 if (!bad)
12920 printf("ok\n");
12921}
12922EOCP
12923 set try
12924 if eval $compile; then
5440bc8e 12925 case "`$run ./try`" in
b4eb6b3d
JH
12926 ok) echo "Your strtoull() seems to be working okay." ;;
12927 *) cat <<EOM >&4
12928Your strtoull() doesn't seem to be working okay.
12929EOM
12930 d_strtoull="$undef"
12931 ;;
12932 esac
12933 fi
12934 ;;
12935esac
12936
12937: see if strtouq exists
12938set strtouq d_strtouq
12939eval $inlibc
12940
d0e6d399
NC
12941case "$d_strtouq" in
12942"$define")
12943 $cat <<EOM
12944Checking whether your strtouq() works okay...
12945EOM
12946 $cat >try.c <<'EOCP'
12947#include <errno.h>
12948#include <stdio.h>
12949extern unsigned long long int strtouq(char *s, char **, int);
12950static int bad = 0;
12951void check(char *s, unsigned long long eull, int een) {
12952 unsigned long long gull;
12953 errno = 0;
12954 gull = strtouq(s, 0, 10);
12955 if (!((gull == eull) && (errno == een)))
12956 bad++;
12957}
12958int main() {
12959 check(" 1", 1LL, 0);
12960 check(" 0", 0LL, 0);
12961 check("18446744073709551615", 18446744073709551615ULL, 0);
12962 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12963#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
12964 check("-1", 18446744073709551615ULL, 0);
12965 check("-18446744073709551614", 2LL, 0);
12966 check("-18446744073709551615", 1LL, 0);
12967 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12968 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12969#endif
d0e6d399
NC
12970 if (!bad)
12971 printf("ok\n");
12972 return 0;
12973}
12974EOCP
12975 set try
12976 if eval $compile; then
5440bc8e 12977 case "`$run ./try`" in
d0e6d399
NC
12978 ok) echo "Your strtouq() seems to be working okay." ;;
12979 *) cat <<EOM >&4
12980Your strtouq() doesn't seem to be working okay.
12981EOM
12982 d_strtouq="$undef"
12983 ;;
12984 esac
12985 fi
12986 ;;
12987esac
12988
b4eb6b3d
JH
12989: see if strxfrm exists
12990set strxfrm d_strxfrm
12991eval $inlibc
12992
12993: see if symlink exists
12994set symlink d_symlink
12995eval $inlibc
12996
12997: see if syscall exists
12998set syscall d_syscall
12999eval $inlibc
13000
2ef53570
JH
13001: see if prototype for syscall is available
13002echo " "
13003set d_syscallproto syscall $i_unistd unistd.h
13004eval $hasproto
13005
b4eb6b3d
JH
13006: see if sysconf exists
13007set sysconf d_sysconf
13008eval $inlibc
13009
13010: see if system exists
13011set system d_system
13012eval $inlibc
13013
13014: see if tcgetpgrp exists
13015set tcgetpgrp d_tcgetpgrp
13016eval $inlibc
13017
13018: see if tcsetpgrp exists
13019set tcsetpgrp d_tcsetpgrp
13020eval $inlibc
13021
13022: see if prototype for telldir is available
13023echo " "
13024set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13025eval $hasproto
13026
13027: see if this is a sys/times.h system
13028set sys/times.h i_systimes
13029eval $inhdr
13030
13031: see if times exists
13032echo " "
13033if set times val -f d_times; eval $csym; $val; then
13034 echo 'times() found.' >&4
13035 d_times="$define"
13036 inc=''
13037 case "$i_systimes" in
13038 "$define") inc='sys/times.h';;
13039 esac
13040 rp="What is the type returned by times() on this system?"
13041 set clock_t clocktype long stdio.h sys/types.h $inc
13042 eval $typedef_ask
13043else
13044 echo 'times() NOT found, hope that will do.' >&4
13045 d_times="$undef"
13046 clocktype='int'
13047fi
13048
13049: see if truncate exists
13050set truncate d_truncate
13051eval $inlibc
13052
13053: see if tzname[] exists
13054echo " "
13055if set tzname val -a d_tzname; eval $csym; $val; then
13056 val="$define"
13057 echo 'tzname[] found.' >&4
13058else
13059 val="$undef"
13060 echo 'tzname[] NOT found.' >&4
13061fi
13062set d_tzname
13063eval $setvar
13064
4e0554ec
JH
13065case "$osname" in
13066next|rhapsody|darwin) multiarch="$define" ;;
13067esac
13068case "$multiarch" in
13069''|[nN]*) multiarch="$undef" ;;
13070esac
13071
13072: check for ordering of bytes in a long
13073echo " "
5440bc8e 13074case "$usecrosscompile$multiarch" in
4e0554ec
JH
13075*$define*)
13076 $cat <<EOM
13077You seem to be either cross-compiling or doing a multiarchitecture build,
13078skipping the byteorder check.
13079
13080EOM
5440bc8e 13081 byteorder='ffff'
4e0554ec
JH
13082 ;;
13083*)
13084 case "$byteorder" in
13085 '')
13086 $cat <<'EOM'
13087In the following, larger digits indicate more significance. A big-endian
13088machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13089little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13090machines may have weird orders like 3412. A Cray will report 87654321,
13091an Alpha will report 12345678. If the test program works the default is
13092probably right.
13093I'm now running the test program...
13094EOM
13095 $cat >try.c <<'EOCP'
13096#include <stdio.h>
13097int main()
13098{
13099 int i;
13100 union {
13101 unsigned long l;
13102 char c[sizeof(long)];
13103 } u;
13104
13105 if (sizeof(long) > 4)
13106 u.l = (0x08070605L << 32) | 0x04030201L;
13107 else
13108 u.l = 0x04030201L;
13109 for (i = 0; i < sizeof(long); i++)
13110 printf("%c", u.c[i]+'0');
13111 printf("\n");
13112 exit(0);
13113}
13114EOCP
13115 xxx_prompt=y
13116 set try
13117 if eval $compile && ./try > /dev/null; then
5440bc8e 13118 dflt=`$run ./try`
4e0554ec
JH
13119 case "$dflt" in
13120 [1-4][1-4][1-4][1-4]|12345678|87654321)
13121 echo "(The test program ran ok.)"
13122 echo "byteorder=$dflt"
13123 xxx_prompt=n
13124 ;;
13125 ????|????????) echo "(The test program ran ok.)" ;;
13126 *) echo "(The test program didn't run right for some reason.)" ;;
13127 esac
13128 else
13129 dflt='4321'
13130 cat <<'EOM'
13131(I can't seem to compile the test program. Guessing big-endian...)
13132EOM
13133 fi
13134 case "$xxx_prompt" in
13135 y)
13136 rp="What is the order of bytes in a long?"
13137 . ./myread
13138 byteorder="$ans"
13139 ;;
13140 *) byteorder=$dflt
13141 ;;
13142 esac
13143 ;;
13144 esac
13145 $rm -f try.c try
13146 ;;
13147esac
13148
13149
13150$cat <<EOM
13151
13152Checking to see whether you can access character data unalignedly...
13153EOM
13154$cat >try.c <<EOCP
13155#include <stdio.h>
13156#define U32 $u32type
13157#define BYTEORDER $byteorder
13158int main() {
13159#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13160 U8 buf[] = "\0\0\0\1\0\0\0\0";
13161 U32 *up;
13162 int i;
13163
13164 if (sizeof(U32) != 4) {
13165 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13166 exit(1);
13167 }
13168
13169 fflush(stdout);
13170
13171 for (i = 0; i < 4; i++) {
13172 up = (U32*)(buf + i);
13173 if (! ((*up == 1 << (8*i)) || /* big-endian */
13174 (*up == 1 << (8*(3-i))) /* little-endian */
13175 )
13176 )
13177 {
13178 printf("read failed (%x)\n", *up);
13179 exit(2);
13180 }
13181 }
13182
13183 /* write test */
13184 for (i = 0; i < 4; i++) {
13185 up = (U32*)(buf + i);
13186 *up = 0xBeef;
13187 if (*up != 0xBeef) {
13188 printf("write failed (%x)\n", *up);
13189 exit(3);
13190 }
13191 }
13192
13193 exit(0);
13194#else
13195 printf("1\n");
13196 exit(1);
13197#endif
13198 return 0;
13199}
13200EOCP
13201set try
13202if eval $compile_ok; then
5440bc8e
JH
13203 echo "(Testing for character data alignment may dump core.)" >&4
13204 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13205 case "$?" in
13206 0) cat >&4 <<EOM
13207You can access character data pretty unalignedly.
13208EOM
13209 d_u32align="$undef"
13210 ;;
13211 *) cat >&4 <<EOM
13212It seems that you must access character data in an aligned manner.
13213EOM
13214 d_u32align="$define"
13215 ;;
13216 esac
13217 $rm -f core core.try.* try.core
13218else
13219 rp='Can you access character data at unaligned addresses?'
13220 dflt='n'
13221 . ./myread
13222 case "$ans" in
13223 [yY]*) d_u32align="$undef" ;;
13224 *) d_u32align="$define" ;;
13225 esac
13226fi
13227
13228: see if ualarm exists
13229set ualarm d_ualarm
13230eval $inlibc
13231
b4eb6b3d
JH
13232: see if umask exists
13233set umask d_umask
13234eval $inlibc
13235
4e0554ec
JH
13236: see if usleep exists
13237set usleep d_usleep
13238eval $inlibc
13239
2ef53570
JH
13240: see if prototype for usleep is available
13241echo " "
13242set d_usleepproto usleep $i_unistd unistd.h
13243eval $hasproto
13244
b4eb6b3d
JH
13245: see if ustat exists
13246set ustat d_ustat
13247eval $inlibc
13248
13249: backward compatibility for d_hvfork
13250if test X$d_hvfork != X; then
13251 d_vfork="$d_hvfork"
13252 d_hvfork=''
13253fi
13254: see if there is a vfork
13255val=''
13256set vfork val
13257eval $inlibc
13258
13259: Ok, but do we want to use it. vfork is reportedly unreliable in
13260: perl on Solaris 2.x, and probably elsewhere.
13261case "$val" in
13262$define)
13263 echo " "
13264 case "$usevfork" in
13265 false) dflt='n';;
13266 *) dflt='y';;
13267 esac
13268 cat <<'EOM'
13269
13270Perl can only use a vfork() that doesn't suffer from strict
13271restrictions on calling functions or modifying global data in
13272the child. For example, glibc-2.1 contains such a vfork()
13273that is unsuitable. If your system provides a proper fork()
13274call, chances are that you do NOT want perl to use vfork().
13275
13276EOM
13277 rp="Do you still want to use vfork()?"
13278 . ./myread
13279 case "$ans" in
13280 y|Y) ;;
13281 *)
13282 echo "Ok, we won't use vfork()."
13283 val="$undef"
13284 ;;
13285 esac
13286 ;;
13287esac
13288set d_vfork
13289eval $setvar
13290case "$d_vfork" in
13291$define) usevfork='true';;
13292*) usevfork='false';;
13293esac
13294
13295: see if this is an sysdir system
13296set sys/dir.h i_sysdir
13297eval $inhdr
13298
13299: see if this is an sysndir system
13300set sys/ndir.h i_sysndir
13301eval $inhdr
13302
13303: see if closedir exists
13304set closedir d_closedir
13305eval $inlibc
13306
13307case "$d_closedir" in
13308"$define")
13309 echo " "
13310 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13311 cat > try.c <<EOM
b4eb6b3d
JH
13312#$i_dirent I_DIRENT /**/
13313#$i_sysdir I_SYS_DIR /**/
13314#$i_sysndir I_SYS_NDIR /**/
13315#$i_systypes I_SYS_TYPES /**/
13316
13317#if defined(I_SYS_TYPES)
13318#include <sys/types.h>
13319#endif
13320#if defined(I_DIRENT)
13321#include <dirent.h>
13322#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13323#include <sys/dir.h>
13324#endif
13325#else
13326#ifdef I_SYS_NDIR
13327#include <sys/ndir.h>
13328#else
13329#ifdef I_SYS_DIR
13330#ifdef hp9000s500
13331#include <ndir.h> /* may be wrong in the future */
13332#else
13333#include <sys/dir.h>
13334#endif
13335#endif
13336#endif
13337#endif
13338int main() { return closedir(opendir(".")); }
13339EOM
5440bc8e 13340 set try
b4eb6b3d 13341 if eval $compile_ok; then
5440bc8e 13342 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13343 echo "Yes, it does."
13344 val="$undef"
13345 else
13346 echo "No, it doesn't."
13347 val="$define"
13348 fi
13349 else
13350 echo "(I can't seem to compile the test program--assuming it doesn't)"
13351 val="$define"
13352 fi
13353 ;;
13354*)
13355 val="$undef";
13356 ;;
13357esac
13358set d_void_closedir
13359eval $setvar
5440bc8e 13360$rm -f try try.*
b4eb6b3d
JH
13361: see if there is a wait4
13362set wait4 d_wait4
13363eval $inlibc
13364
13365: see if waitpid exists
13366set waitpid d_waitpid
13367eval $inlibc
13368
13369: see if wcstombs exists
13370set wcstombs d_wcstombs
13371eval $inlibc
13372
13373: see if wctomb exists
13374set wctomb d_wctomb
13375eval $inlibc
13376
4e0554ec
JH
13377: see if writev exists
13378set writev d_writev
13379eval $inlibc
13380
b4eb6b3d
JH
13381: preserve RCS keywords in files with variable substitution, grrr
13382Date='$Date'
13383Id='$Id'
13384Log='$Log'
13385RCSfile='$RCSfile'
13386Revision='$Revision'
13387
b4eb6b3d
JH
13388: check for alignment requirements
13389echo " "
5440bc8e 13390case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13391*$define*)
13392 $cat <<EOM
13393You seem to be either cross-compiling or doing a multiarchitecture build,
13394skipping the memory alignment check.
13395
13396EOM
13397 case "$alignbytes" in
13398 '') alignbytes=8 ;;
13399 esac
13400 ;;
13401*)
13402 case "$alignbytes" in
13403 '') echo "Checking alignment constraints..." >&4
13404 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13405 $cat >try.c <<'EOCP'
13406typedef long double NV;
13407EOCP
13408 else
13409 $cat >try.c <<'EOCP'
13410typedef double NV;
13411EOCP
13412 fi
13413 $cat >>try.c <<'EOCP'
13414#include <stdio.h>
13415struct foobar {
13416 char foo;
13417 NV bar;
13418} try_algn;
13419int main()
13420{
13421 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13422 return(0);
13423}
13424EOCP
13425 set try
13426 if eval $compile_ok; then
5440bc8e 13427 dflt=`$run ./try`
b4eb6b3d
JH
13428 else
13429 dflt='8'
13430 echo "(I can't seem to compile the test program...)"
13431 fi
13432 ;;
13433 *) dflt="$alignbytes"
13434 ;;
13435 esac
13436 rp="Doubles must be aligned on a how-many-byte boundary?"
13437 . ./myread
13438 alignbytes="$ans"
13439 $rm -f try.c try
13440 ;;
13441esac
13442
13443
13444: set the base revision
13445baserev=5.0
13446
b4eb6b3d
JH
13447: how do we catenate cpp tokens here?
13448echo " "
13449echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13450$cat >cpp_stuff.c <<'EOCP'
13451#define RCAT(a,b)a/**/b
13452#define ACAT(a,b)a ## b
13453RCAT(Rei,ser)
13454ACAT(Cir,cus)
13455EOCP
13456$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13457if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13458 echo "Oh! Smells like ANSI's been here." >&4
13459 echo "We can catify or stringify, separately or together!"
13460 cpp_stuff=42
13461elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13462 echo "Ah, yes! The good old days!" >&4
13463 echo "However, in the good old days we don't know how to stringify and"
13464 echo "catify at the same time."
13465 cpp_stuff=1
13466else
13467 $cat >&4 <<EOM
13468Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13469to have to edit the values of CAT[2-5] in config.h...
13470EOM
13471 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13472fi
13473$rm -f cpp_stuff.*
13474
13475: see if this is a db.h system
13476set db.h i_db
13477eval $inhdr
13478
13479case "$i_db" in
13480$define)
13481 : Check db version.
13482 echo " "
13483 echo "Checking Berkeley DB version ..." >&4
13484 $cat >try.c <<EOCP
13485#$d_const HASCONST
13486#ifndef HASCONST
13487#define const
13488#endif
13489#include <sys/types.h>
13490#include <stdio.h>
13491#include <db.h>
640374d0 13492int main(int argc, char *argv[])
b4eb6b3d
JH
13493{
13494#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13495 int Major, Minor, Patch ;
13496 unsigned long Version ;
13497 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13498 if (argc == 2) {
13499 printf("%d %d %d %d %d %d\n",
13500 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13501 Major, Minor, Patch);
13502 exit(0);
13503 }
13504 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13505
13506 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13507 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13508 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13509 Major, Minor, Patch) ;
13510
13511 /* check that db.h & libdb are compatible */
13512 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13513 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13514 exit(3);
13515 }
13516
640374d0 13517 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13518
13519 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13520 + DB_VERSION_PATCH ;
13521
13522 /* needs to be >= 2.3.4 */
13523 if (Version < 2003004) {
13524 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13525 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13526 exit(2);
13527 }
13528
13529 exit(0);
13530#else
13531#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13532 if (argc == 2) {
13533 printf("1 0 0\n");
13534 exit(0);
13535 }
13536 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13537 exit(0); /* DB version < 2: the coast is clear. */
13538#else
13539 exit(1); /* <db.h> not Berkeley DB? */
13540#endif
13541#endif
13542}
13543EOCP
13544 set try
5440bc8e 13545 if eval $compile_ok && $run ./try; then
b4eb6b3d 13546 echo 'Looks OK.' >&4
5440bc8e 13547 set `$run ./try 1`
640374d0
JH
13548 db_version_major=$1
13549 db_version_minor=$2
13550 db_version_patch=$3
b4eb6b3d
JH
13551 else
13552 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13553 i_db=$undef
13554 case " $libs " in
13555 *"-ldb "*)
13556 : Remove db from list of libraries to use
13557 echo "Removing unusable -ldb from library list" >&4
13558 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13559 shift
13560 libs="$*"
13561 echo "libs = $libs" >&4
13562 ;;
13563 esac
13564 fi
13565 $rm -f try.*
13566 ;;
13567esac
13568
13569case "$i_db" in
13570define)
13571 : Check the return type needed for hash
13572 echo " "
13573 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13574 $cat >try.c <<EOCP
13575#$d_const HASCONST
13576#ifndef HASCONST
13577#define const
13578#endif
13579#include <sys/types.h>
13580#include <db.h>
13581
13582#ifndef DB_VERSION_MAJOR
13583u_int32_t hash_cb (ptr, size)
13584const void *ptr;
13585size_t size;
13586{
13587}
13588HASHINFO info;
13589int main()
13590{
13591 info.hash = hash_cb;
13592}
13593#endif
13594EOCP
13595 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13596 if $contains warning try.out >>/dev/null 2>&1 ; then
13597 db_hashtype='int'
13598 else
13599 db_hashtype='u_int32_t'
13600 fi
13601 else
13602 : XXX Maybe we should just give up here.
13603 db_hashtype=u_int32_t
13604 $cat try.out >&4
13605 echo "Help: I can't seem to compile the db test program." >&4
13606 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13607 fi
13608 $rm -f try.*
13609 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13610 ;;
13611*) db_hashtype=u_int32_t
13612 ;;
13613esac
13614case "$i_db" in
13615define)
13616 : Check the return type needed for prefix
13617 echo " "
13618 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13619 cat >try.c <<EOCP
13620#$d_const HASCONST
13621#ifndef HASCONST
13622#define const
13623#endif
13624#include <sys/types.h>
13625#include <db.h>
13626
13627#ifndef DB_VERSION_MAJOR
13628size_t prefix_cb (key1, key2)
13629const DBT *key1;
13630const DBT *key2;
13631{
13632}
13633BTREEINFO info;
13634int main()
13635{
13636 info.prefix = prefix_cb;
13637}
13638#endif
13639EOCP
13640 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13641 if $contains warning try.out >>/dev/null 2>&1 ; then
13642 db_prefixtype='int'
13643 else
13644 db_prefixtype='size_t'
13645 fi
13646 else
13647 db_prefixtype='size_t'
13648 : XXX Maybe we should just give up here.
13649 $cat try.out >&4
13650 echo "Help: I can't seem to compile the db test program." >&4
13651 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13652 fi
13653 $rm -f try.*
13654 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13655 ;;
13656*) db_prefixtype='size_t'
13657 ;;
13658esac
13659
b4eb6b3d
JH
13660
13661: How can we generate normalized random numbers ?
13662echo " "
13663echo "Looking for a random number function..." >&4
13664case "$randfunc" in
13665'')
13666 if set drand48 val -f; eval $csym; $val; then
13667 dflt="drand48"
13668 echo "Good, found drand48()." >&4
13669 elif set random val -f; eval $csym; $val; then
13670 dflt="random"
13671 echo "OK, found random()." >&4
13672 else
13673 dflt="rand"
13674 echo "Yick, looks like I have to use rand()." >&4
13675 fi
13676 echo " "
13677 ;;
13678*)
13679 dflt="$randfunc"
13680 ;;
13681esac
13682cont=true
13683
13684case "$ccflags" in
13685*-Dmy_rand=*|*-Dmy_srand=*)
13686 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13687 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13688 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13689 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13690 ;;
13691esac
13692
13693while $test "$cont"; do
13694 rp="Use which function to generate random numbers?"
13695 . ./myread
13696 if $test "$ans" = "$dflt"; then
13697 : null
13698 else
13699 randbits=''
13700 fi
13701 randfunc="$ans"
13702 if set $ans val -f; eval $csym; $val; then
13703 cont=''
13704 else
13705 dflt=y
13706 rp="I cannot find function $ans. Use that name anyway?"
13707 . ./myread
13708 dflt=rand
13709 case "$ans" in
13710 [yY]*) cont='';;
13711 esac
13712 fi
13713 case "$cont" in
13714 '')
13715 case "$randfunc" in
13716 drand48)
13717 drand01="drand48()"
13718 seedfunc="srand48"
13719 randbits=48
13720 randseedtype=long
13721 ;;
13722 rand|random)
13723 case "$randbits" in
13724 '')
13725echo "Checking to see how many bits your $randfunc() function produces..." >&4
13726 $cat >try.c <<EOCP
13727#$i_unistd I_UNISTD
13728#$i_stdlib I_STDLIB
13729#include <stdio.h>
13730#ifdef I_UNISTD
13731# include <unistd.h>
13732#endif
13733#ifdef I_STDLIB
13734# include <stdlib.h>
13735#endif
13736int main()
13737{
13738 register int i;
13739 register unsigned long tmp;
13740 register unsigned long max = 0L;
13741
13742 for (i = 1000; i; i--) {
13743 tmp = (unsigned long) $randfunc();
13744 if (tmp > max) max = tmp;
13745 }
13746 for (i = 0; max; i++)
13747 max /= 2;
13748 printf("%d\n",i);
13749}
13750EOCP
13751 set try
13752 if eval $compile_ok; then
13753 dflt=`try`
13754 else
13755 dflt='?'
13756 echo "(I can't seem to compile the test program...)"
13757 fi
13758 ;;
13759 *)
13760 dflt="$randbits"
13761 ;;
13762 esac
13763 rp="How many bits does your $randfunc() function produce?"
13764 . ./myread
13765 randbits="$ans"
13766 $rm -f try.c try
13767 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13768 seedfunc="s$randfunc"
13769 randseedtype=unsigned
13770 ;;
13771 *)
13772 dflt="31"
13773 rp="How many bits does your $randfunc() function produce?"
13774 . ./myread
13775 randbits="$ans"
13776 seedfunc="s$randfunc"
13777 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13778 if set $seedfunc val -f; eval $csym; $val; then
13779 echo "(Using $seedfunc() to seed random generator)"
13780 else
13781 echo "(Warning: no $seedfunc() to seed random generator)"
13782 seedfunc=rand
13783 fi
13784 randseedtype=unsigned
13785 ;;
13786 esac
13787 ;;
13788 esac
13789done
13790
13791echo " "
13792echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 13793$cat >try.c <<'EOM'
b4eb6b3d
JH
13794int main()
13795{
13796 if ('M'==0xd4) return 0;
13797 return 1;
13798}
13799EOM
13800
13801val=$undef
5440bc8e 13802set try
b4eb6b3d 13803if eval $compile_ok; then
5440bc8e 13804 if $run ./try; then
b4eb6b3d
JH
13805 echo "You seem to speak EBCDIC." >&4
13806 val="$define"
13807 else
5440bc8e 13808 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
13809 fi
13810else
13811 echo "I'm unable to compile the test program." >&4
13812 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13813fi
5440bc8e 13814$rm -f try try.*
b4eb6b3d
JH
13815set ebcdic
13816eval $setvar
13817
13818echo " "
13819$cat >&4 <<EOM
13820Checking how to flush all pending stdio output...
13821EOM
13822# I only know how to find the first 32 possibly open files on SunOS.
13823# See also hints/sunos_4_1.sh and util.c --AD
13824case "$osname" in
13825sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13826esac
13827$cat >>try.c <<EOCP
13828#include <stdio.h>
13829#$i_unistd I_UNISTD
13830#ifdef I_UNISTD
13831# include <unistd.h>
13832#endif
13833#$d_sysconf HAS_SYSCONF
13834#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13835#ifdef HAS_STDIO_STREAM_ARRAY
13836# define STDIO_STREAM_ARRAY $stdio_stream_array
13837#endif
13838int main() {
5440bc8e
JH
13839 FILE* p;
13840 unlink("try.out");
13841 p = fopen("try.out", "w");
b4eb6b3d
JH
13842#ifdef TRY_FPUTC
13843 fputc('x', p);
13844#else
13845# ifdef TRY_FPRINTF
13846 fprintf(p, "x");
13847# endif
13848#endif
13849#ifdef TRY_FFLUSH_NULL
13850 fflush(NULL);
13851#endif
13852#ifdef TRY_FFLUSH_ALL
13853 {
13854 long open_max = -1;
13855# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13856 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13857# else
13858# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13859 open_max = sysconf(_SC_OPEN_MAX);
13860# else
13861# ifdef FOPEN_MAX
13862 open_max = FOPEN_MAX;
13863# else
13864# ifdef OPEN_MAX
13865 open_max = OPEN_MAX;
13866# else
13867# ifdef _NFILE
13868 open_max = _NFILE;
13869# endif
13870# endif
13871# endif
13872# endif
13873# endif
13874# ifdef HAS_STDIO_STREAM_ARRAY
13875 if (open_max > 0) {
13876 long i;
13877 for (i = 0; i < open_max; i++)
13878 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13879 STDIO_STREAM_ARRAY[i]._file < open_max &&
13880 STDIO_STREAM_ARRAY[i]._flag)
13881 fflush(&STDIO_STREAM_ARRAY[i]);
13882 }
13883 }
13884# endif
13885#endif
13886 _exit(42);
13887}
13888EOCP
13889: first we have to find out how _not_ to flush
5440bc8e 13890$to try.c
b4eb6b3d
JH
13891if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13892 output=''
13893 set try -DTRY_FPUTC
13894 if eval $compile; then
fbe73d74 13895 $run ./try 2>/dev/null
28f5ac64 13896 code="$?"
5440bc8e 13897 $from try.out
28f5ac64 13898 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13899 output=-DTRY_FPUTC
13900 fi
13901 fi
13902 case "$output" in
13903 '')
13904 set try -DTRY_FPRINTF
b4eb6b3d 13905 if eval $compile; then
fbe73d74 13906 $run ./try 2>/dev/null
28f5ac64 13907 code="$?"
5440bc8e 13908 $from try.out
28f5ac64 13909 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13910 output=-DTRY_FPRINTF
13911 fi
13912 fi
13913 ;;
13914 esac
13915fi
13916: check for fflush NULL behaviour
13917case "$fflushNULL" in
13918'') set try -DTRY_FFLUSH_NULL $output
13919 if eval $compile; then
5440bc8e 13920 $run ./try 2>/dev/null
b4eb6b3d 13921 code="$?"
5440bc8e 13922 $from try.out
b4eb6b3d
JH
13923 if $test -s try.out -a "X$code" = X42; then
13924 fflushNULL="`$cat try.out`"
13925 else
13926 if $test "X$code" != X42; then
13927 $cat >&4 <<EOM
13928(If this test failed, don't worry, we'll try another method shortly.)
13929EOM
13930 fi
13931 fi
13932 fi
13933 $rm -f core try.core core.try.*
13934 case "$fflushNULL" in
13935 x) $cat >&4 <<EOM
13936Your fflush(NULL) works okay for output streams.
13937Let's see if it clobbers input pipes...
13938EOM
13939# As of mid-March 2000 all versions of Solaris appear to have a stdio
13940# bug that improperly flushes the input end of pipes. So we avoid the
13941# autoflush on fork/system/exec support for now. :-(
13942$cat >tryp.c <<EOCP
13943#include <stdio.h>
13944int
13945main(int argc, char **argv)
13946{
13947 char buf[1024];
13948 int i;
13949 char *bp = buf;
13950 while (1) {
13951 while ((i = getc(stdin)) != -1
13952 && (*bp++ = i) != '\n'
13953 && bp < &buf[1024])
13954 /* DO NOTHING */ ;
13955 *bp = '\0';
13956 fprintf(stdout, "%s", buf);
13957 fflush(NULL);
13958 if (i == -1)
13959 return 0;
13960 bp = buf;
13961 }
13962}
13963EOCP
13964 fflushNULL="$define"
13965 set tryp
13966 if eval $compile; then
13967 $rm -f tryp.out
5440bc8e 13968 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
13969 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13970 $cat >&4 <<EOM
13971fflush(NULL) seems to behave okay with input streams.
13972EOM
13973 fflushNULL="$define"
13974 else
13975 $cat >&4 <<EOM
13976Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13977EOM
13978 fflushNULL="$undef"
13979 fi
13980 fi
13981 $rm -f core tryp.c tryp.core core.tryp.*
13982 ;;
13983 '') $cat >&4 <<EOM
13984Your fflush(NULL) isn't working (contrary to ANSI C).
13985EOM
13986 fflushNULL="$undef"
13987 ;;
13988 *) $cat >&4 <<EOM
13989Cannot figure out whether your fflush(NULL) works or not.
13990I'm assuming it doesn't (contrary to ANSI C).
13991EOM
13992 fflushNULL="$undef"
13993 ;;
13994 esac
13995 ;;
13996$define|true|[yY]*)
13997 fflushNULL="$define"
13998 ;;
13999*)
14000 fflushNULL="$undef"
14001 ;;
14002esac
14003: check explicit looping only if NULL did not work, and if the pipe
14004: bug does not show up on an explicit flush too
14005case "$fflushNULL" in
14006"$undef")
14007 $cat >tryp.c <<EOCP
14008#include <stdio.h>
14009int
14010main(int argc, char **argv)
14011{
14012 char buf[1024];
14013 int i;
14014 char *bp = buf;
14015 while (1) {
14016 while ((i = getc(stdin)) != -1
14017 && (*bp++ = i) != '\n'
14018 && bp < &buf[1024])
14019 /* DO NOTHING */ ;
14020 *bp = '\0';
14021 fprintf(stdout, "%s", buf);
14022 fflush(stdin);
14023 if (i == -1)
14024 return 0;
14025 bp = buf;
14026 }
14027}
14028EOCP
14029 set tryp
14030 if eval $compile; then
14031 $rm -f tryp.out
5440bc8e 14032 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14033 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14034 $cat >&4 <<EOM
14035Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14036EOM
14037 : now check for fflushall behaviour
14038 case "$fflushall" in
14039 '') set try -DTRY_FFLUSH_ALL $output
14040 if eval $compile; then
14041 $cat >&4 <<EOM
14042(Now testing the other method--but note that this also may fail.)
14043EOM
5440bc8e 14044 $run ./try 2>/dev/null
28f5ac64 14045 code=$?
fbe73d74 14046 $from try.out
28f5ac64 14047 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14048 fflushall="`$cat try.out`"
14049 fi
14050 fi
14051 $rm -f core try.core core.try.*
14052 case "$fflushall" in
14053 x) $cat >&4 <<EOM
14054Whew. Flushing explicitly all the stdio streams works.
14055EOM
14056 fflushall="$define"
14057 ;;
14058 '') $cat >&4 <<EOM
14059Sigh. Flushing explicitly all the stdio streams doesn't work.
14060EOM
14061 fflushall="$undef"
14062 ;;
14063 *) $cat >&4 <<EOM
14064Cannot figure out whether flushing stdio streams explicitly works or not.
14065I'm assuming it doesn't.
14066EOM
14067 fflushall="$undef"
14068 ;;
14069 esac
14070 ;;
14071 "$define"|true|[yY]*)
14072 fflushall="$define"
14073 ;;
14074 *)
14075 fflushall="$undef"
14076 ;;
14077 esac
14078 else
14079 $cat >&4 <<EOM
14080All is futile. Even fflush(stdin) clobbers input pipes!
14081EOM
14082 fflushall="$undef"
14083 fi
14084 else
14085 fflushall="$undef"
14086 fi
14087 $rm -f core tryp.c tryp.core core.tryp.*
14088 ;;
14089*) fflushall="$undef"
14090 ;;
14091esac
14092
14093case "$fflushNULL$fflushall" in
14094undefundef)
14095 $cat <<EOM
14096OK, I give up. I cannot figure out how to flush pending stdio output.
14097We won't be flushing handles at all before fork/exec/popen.
14098EOM
14099 ;;
14100esac
14101$rm -f try.* try$exe_ext
14102
14103: Store the full pathname to the ar program for use in the C program
14104: Respect a hint or command line value for full_ar.
14105case "$full_ar" in
14106'') full_ar=$ar ;;
14107esac
14108
14109: Store the full pathname to the sed program for use in the C program
14110full_sed=$sed
14111
14112: see what type gids are declared as in the kernel
14113echo " "
14114echo "Looking for the type for group ids returned by getgid()."
14115set gid_t gidtype xxx stdio.h sys/types.h
14116eval $typedef
14117case "$gidtype" in
14118xxx)
14119 xxx=`./findhdr sys/user.h`
14120 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14121 case $1 in
14122 unsigned) dflt="$1 $2" ;;
14123 *) dflt="$1" ;;
14124 esac
14125 ;;
14126*) dflt="$gidtype";;
14127esac
14128case "$gidtype" in
14129gid_t) echo "gid_t found." ;;
14130*) rp="What is the type for group ids returned by getgid()?"
14131 . ./myread
14132 gidtype="$ans"
14133 ;;
14134esac
14135
14136echo " "
14137case "$gidtype" in
14138*_t) zzz="$gidtype" ;;
14139*) zzz="gid" ;;
14140esac
14141echo "Checking the size of $zzz..." >&4
14142cat > try.c <<EOCP
14143#include <sys/types.h>
14144#include <stdio.h>
14145int main() {
14146 printf("%d\n", (int)sizeof($gidtype));
14147 exit(0);
14148}
14149EOCP
14150set try
14151if eval $compile_ok; then
5440bc8e 14152 yyy=`$run ./try`
b4eb6b3d
JH
14153 case "$yyy" in
14154 '') gidsize=4
14155 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14156 ;;
14157 *) gidsize=$yyy
14158 echo "Your $zzz is $gidsize bytes long."
14159 ;;
14160 esac
14161else
14162 gidsize=4
14163 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14164fi
14165
14166
14167echo " "
14168case "$gidtype" in
14169*_t) zzz="$gidtype" ;;
14170*) zzz="gid" ;;
14171esac
14172echo "Checking the sign of $zzz..." >&4
14173cat > try.c <<EOCP
14174#include <sys/types.h>
14175#include <stdio.h>
14176int main() {
14177 $gidtype foo = -1;
14178 if (foo < 0)
14179 printf("-1\n");
14180 else
14181 printf("1\n");
14182}
14183EOCP
14184set try
14185if eval $compile; then
5440bc8e 14186 yyy=`$run ./try`
b4eb6b3d
JH
14187 case "$yyy" in
14188 '') gidsign=1
14189 echo "(I can't execute the test program--guessing unsigned.)" >&4
14190 ;;
14191 *) gidsign=$yyy
14192 case "$gidsign" in
14193 1) echo "Your $zzz is unsigned." ;;
14194 -1) echo "Your $zzz is signed." ;;
14195 esac
14196 ;;
14197 esac
14198else
14199 gidsign=1
14200 echo "(I can't compile the test program--guessing unsigned.)" >&4
14201fi
14202
14203
14204echo " "
14205
14206if $test X"$quadtype" != X; then
14207
14208echo "Checking how to print 64-bit integers..." >&4
14209
14210if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14211 $cat >try.c <<'EOCP'
14212#include <sys/types.h>
14213#include <stdio.h>
14214int main() {
14215 int q = 12345678901;
14216 printf("%ld\n", q);
14217}
14218EOCP
14219 set try
14220 if eval $compile; then
5440bc8e 14221 yyy=`$run ./try`
b4eb6b3d
JH
14222 case "$yyy" in
14223 12345678901)
14224 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14225 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14226 echo "We will use %d."
14227 ;;
14228 esac
14229 fi
14230fi
14231
14232if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14233 $cat >try.c <<'EOCP'
14234#include <sys/types.h>
14235#include <stdio.h>
14236int main() {
14237 long q = 12345678901;
14238 printf("%ld\n", q);
14239}
14240EOCP
14241 set try
14242 if eval $compile; then
5440bc8e 14243 yyy=`$run ./try`
b4eb6b3d
JH
14244 case "$yyy" in
14245 12345678901)
14246 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14247 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14248 echo "We will use %ld."
14249 ;;
14250 esac
14251 fi
14252fi
14253
14254if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14255 $cat >try.c <<'EOCP'
14256#include <sys/types.h>
14257#include <inttypes.h>
14258#include <stdio.h>
14259int main() {
14260 int64_t q = 12345678901;
14261 printf("%" PRId64 "\n", q);
14262}
14263EOCP
14264 set try
14265 if eval $compile; then
5440bc8e 14266 yyy=`$run ./try`
b4eb6b3d
JH
14267 case "$yyy" in
14268 12345678901)
14269 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14270 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14271 echo "We will use the C9X style."
14272 ;;
14273 esac
14274 fi
14275fi
14276
2ef53570
JH
14277if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14278 $cat >try.c <<EOCP
b4eb6b3d
JH
14279#include <sys/types.h>
14280#include <stdio.h>
14281int main() {
2ef53570
JH
14282 $quadtype q = 12345678901;
14283 printf("%Ld\n", q);
b4eb6b3d
JH
14284}
14285EOCP
14286 set try
14287 if eval $compile; then
5440bc8e 14288 yyy=`$run ./try`
b4eb6b3d
JH
14289 case "$yyy" in
14290 12345678901)
2ef53570
JH
14291 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14292 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14293 echo "We will use %Ld."
b4eb6b3d
JH
14294 ;;
14295 esac
14296 fi
14297fi
14298
2ef53570
JH
14299if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14300 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14301#include <sys/types.h>
14302#include <stdio.h>
14303int main() {
2ef53570
JH
14304 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14305 printf("%lld\n", q);
b4eb6b3d
JH
14306}
14307EOCP
14308 set try
14309 if eval $compile; then
5440bc8e 14310 yyy=`$run ./try`
b4eb6b3d
JH
14311 case "$yyy" in
14312 12345678901)
2ef53570
JH
14313 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14314 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14315 echo "We will use the %lld style."
b4eb6b3d
JH
14316 ;;
14317 esac
14318 fi
14319fi
14320
14321if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14322 $cat >try.c <<EOCP
14323#include <sys/types.h>
14324#include <stdio.h>
14325int main() {
14326 $quadtype q = 12345678901;
14327 printf("%qd\n", q);
14328}
14329EOCP
14330 set try
14331 if eval $compile; then
5440bc8e 14332 yyy=`$run ./try`
b4eb6b3d
JH
14333 case "$yyy" in
14334 12345678901)
14335 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14336 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14337 echo "We will use %qd."
14338 ;;
14339 esac
14340 fi
14341fi
14342
14343if $test X"$sPRId64" = X; then
14344 echo "Cannot figure out how to print 64-bit integers." >&4
14345fi
14346
14347$rm -f try try.*
14348
14349fi
14350
14351case "$sPRId64" in
14352'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14353 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14354 ;;
14355*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14356 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14357 ;;
14358esac
14359
14360
14361echo " "
14362$echo "Checking the format strings to be used for Perl's internal types..." >&4
14363
14364if $test X"$ivsize" = X8; then
14365 ivdformat="$sPRId64"
14366 uvuformat="$sPRIu64"
14367 uvoformat="$sPRIo64"
14368 uvxformat="$sPRIx64"
14369 uvXUformat="$sPRIXU64"
14370else
14371 if $test X"$ivsize" = X"$longsize"; then
14372 ivdformat='"ld"'
14373 uvuformat='"lu"'
14374 uvoformat='"lo"'
14375 uvxformat='"lx"'
14376 uvXUformat='"lX"'
14377 else
14378 if $test X"$ivsize" = X"$intsize"; then
14379 ivdformat='"d"'
14380 uvuformat='"u"'
14381 uvoformat='"o"'
14382 uvxformat='"x"'
14383 uvXUformat='"X"'
14384 else
14385 : far out
14386 if $test X"$ivsize" = X"$shortsize"; then
14387 ivdformat='"hd"'
14388 uvuformat='"hu"'
14389 uvoformat='"ho"'
14390 uvxformat='"hx"'
14391 uvXUformat='"hX"'
14392 fi
14393 fi
14394 fi
14395fi
14396
14397if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14398 nveformat="$sPRIeldbl"
14399 nvfformat="$sPRIfldbl"
14400 nvgformat="$sPRIgldbl"
14401 nvEUformat="$sPRIEUldbl"
14402 nvFUformat="$sPRIFUldbl"
14403 nvGUformat="$sPRIGUldbl"
14404else
14405 nveformat='"e"'
14406 nvfformat='"f"'
14407 nvgformat='"g"'
14408 nvEUformat='"E"'
14409 nvFUformat='"F"'
14410 nvGUformat='"G"'
14411fi
14412
14413case "$ivdformat" in
14414'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14415 exit 1
14416 ;;
14417esac
14418
14419
14420echo " "
14421$echo "Checking the format string to be used for gids..." >&4
14422
14423case "$gidsign" in
14424-1) if $test X"$gidsize" = X"$ivsize"; then
14425 gidformat="$ivdformat"
14426 else
14427 if $test X"$gidsize" = X"$longsize"; then
14428 gidformat='"ld"'
14429 else
14430 if $test X"$gidsize" = X"$intsize"; then
14431 gidformat='"d"'
14432 else
14433 if $test X"$gidsize" = X"$shortsize"; then
14434 gidformat='"hd"'
14435 fi
14436 fi
14437 fi
14438 fi
14439 ;;
14440*) if $test X"$gidsize" = X"$uvsize"; then
14441 gidformat="$uvuformat"
14442 else
14443 if $test X"$gidsize" = X"$longsize"; then
14444 gidformat='"lu"'
14445 else
14446 if $test X"$gidsize" = X"$intsize"; then
14447 gidformat='"u"'
14448 else
14449 if $test X"$gidsize" = X"$shortsize"; then
14450 gidformat='"hu"'
14451 fi
14452 fi
14453 fi
14454 fi
14455 ;;
14456esac
14457
14458: see if getgroups exists
14459set getgroups d_getgrps
14460eval $inlibc
14461
14462: see if setgroups exists
14463set setgroups d_setgrps
14464eval $inlibc
14465
14466
14467: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14468echo " "
14469case "$d_getgrps$d_setgrps" in
14470*define*)
14471 case "$groupstype" in
14472 '') dflt="$gidtype" ;;
14473 *) dflt="$groupstype" ;;
14474 esac
14475 $cat <<EOM
14476What type of pointer is the second argument to getgroups() and setgroups()?
14477Usually this is the same as group ids, $gidtype, but not always.
14478
14479EOM
14480 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14481 . ./myread
14482 groupstype="$ans"
14483 ;;
14484*) groupstype="$gidtype";;
14485esac
14486
14487echo " "
14488echo "Checking if your $make program sets \$(MAKE)..." >&4
14489case "$make_set_make" in
14490'')
14491 $sed 's/^X //' > testmake.mak << 'EOF'
14492Xall:
14493X @echo 'maketemp="$(MAKE)"'
14494EOF
14495 case "`$make -f testmake.mak 2>/dev/null`" in
14496 *maketemp=*) make_set_make='#' ;;
14497 *) make_set_make="MAKE=$make" ;;
14498 esac
14499 $rm -f testmake.mak
14500 ;;
14501esac
14502case "$make_set_make" in
14503'#') echo "Yup, it does.";;
14504*) echo "Nope, it doesn't.";;
14505esac
14506
14507: see what type is used for mode_t
14508rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14509set mode_t modetype int stdio.h sys/types.h
14510eval $typedef_ask
14511
2cc61e15
DD
14512: see if stdarg is available
14513echo " "
14514if $test `./findhdr stdarg.h`; then
14515 echo "<stdarg.h> found." >&4
14516 valstd="$define"
14517else
14518 echo "<stdarg.h> NOT found." >&4
14519 valstd="$undef"
14520fi
14521
14522: see if varags is available
14523echo " "
14524if $test `./findhdr varargs.h`; then
14525 echo "<varargs.h> found." >&4
14526else
14527 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14528fi
14529
14530: set up the varargs testing programs
14531$cat > varargs.c <<EOP
14532#ifdef I_STDARG
14533#include <stdarg.h>
14534#endif
14535#ifdef I_VARARGS
14536#include <varargs.h>
14537#endif
14538
14539#ifdef I_STDARG
14540int f(char *p, ...)
14541#else
14542int f(va_alist)
14543va_dcl
14544#endif
14545{
14546 va_list ap;
14547#ifndef I_STDARG
14548 char *p;
14549#endif
14550#ifdef I_STDARG
14551 va_start(ap,p);
14552#else
14553 va_start(ap);
14554 p = va_arg(ap, char *);
14555#endif
14556 va_end(ap);
14557}
14558EOP
14559$cat > varargs <<EOP
14560$startsh
14561if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14562 echo "true"
14563else
14564 echo "false"
14565fi
14566$rm -f varargs$_o
14567EOP
14568chmod +x varargs
14569
14570: now check which varargs header should be included
14571echo " "
14572i_varhdr=''
14573case "$valstd" in
14574"$define")
14575 if `./varargs I_STDARG`; then
14576 val='stdarg.h'
14577 elif `./varargs I_VARARGS`; then
14578 val='varargs.h'
14579 fi
14580 ;;
14581*)
14582 if `./varargs I_VARARGS`; then
14583 val='varargs.h'
14584 fi
14585 ;;
14586esac
14587case "$val" in
14588'')
14589echo "I could not find the definition for va_dcl... You have problems..." >&4
14590 val="$undef"; set i_stdarg; eval $setvar
14591 val="$undef"; set i_varargs; eval $setvar
14592 ;;
14593*)
14594 set i_varhdr
14595 eval $setvar
14596 case "$i_varhdr" in
14597 stdarg.h)
14598 val="$define"; set i_stdarg; eval $setvar
14599 val="$undef"; set i_varargs; eval $setvar
14600 ;;
14601 varargs.h)
14602 val="$undef"; set i_stdarg; eval $setvar
14603 val="$define"; set i_varargs; eval $setvar
14604 ;;
14605 esac
14606 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14607esac
14608$rm -f varargs*
14609
14610: see if we need va_copy
14611echo " "
14612case "$i_stdarg" in
14613"$define")
14614 $cat >try.c <<EOCP
14615#include <stdarg.h>
14616#include <stdio.h>
85c8a686
DD
14617#$i_stdlib I_STDLIB
14618#ifdef I_STDLIB
14619#include <stdlib.h>
14620#endif
14621#include <signal.h>
2cc61e15
DD
14622
14623int
14624ivfprintf(FILE *f, const char *fmt, va_list *valp)
14625{
14626 return vfprintf(f, fmt, *valp);
14627}
14628
14629int
14630myvfprintf(FILE *f, const char *fmt, va_list val)
14631{
14632 return ivfprintf(f, fmt, &val);
14633}
14634
14635int
14636myprintf(char *fmt, ...)
14637{
14638 va_list val;
14639 va_start(val, fmt);
14640 return myvfprintf(stdout, fmt, val);
14641}
14642
14643int
14644main(int ac, char **av)
14645{
85c8a686
DD
14646 signal(SIGSEGV, exit);
14647
2cc61e15
DD
14648 myprintf("%s%cs all right, then\n", "that", '\'');
14649 exit(0);
14650}
14651EOCP
14652 set try
5440bc8e
JH
14653 if eval $compile && $run ./try 2>&1 >/dev/null; then
14654 case "`$run ./try`" in
2cc61e15
DD
14655 "that's all right, then")
14656 okay=yes
14657 ;;
14658 esac
14659 fi
14660 case "$okay" in
14661 yes) echo "It seems that you don't need va_copy()." >&4
14662 need_va_copy="$undef"
14663 ;;
14664 *) echo "It seems that va_copy() or similar will be needed." >&4
14665 need_va_copy="$define"
14666 ;;
14667 esac
14668 $rm -f try.* core core.* *.core *.core.*
14669 ;;
14670*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14671 ;;
14672esac
14673
b4eb6b3d
JH
14674: define a fucntion to check prototypes
14675$cat > protochk <<EOSH
14676$startsh
14677cc="$cc"
14678optimize="$optimize"
14679ccflags="$ccflags"
14680prototype="$prototype"
14681define="$define"
14682rm=$rm
14683EOSH
14684
14685$cat >> protochk <<'EOSH'
14686
14687$rm -f try.c
14688foo="$1"
14689shift
14690while test $# -ge 2; do
14691 case "$1" in
14692 $define) echo "#include <$2>" >> try.c ;;
14693 literal) echo "$2" >> try.c ;;
14694 esac
14695 shift 2
14696done
14697test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14698cat >> try.c <<'EOCP'
14699#ifdef CAN_PROTOTYPE
14700#define _(args) args
14701#else
14702#define _(args) ()
14703#endif
14704EOCP
14705echo "$foo" >> try.c
14706echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14707$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14708status=$?
14709$rm -f try.[co]
14710exit $status
14711EOSH
14712chmod +x protochk
14713$eunicefix protochk
14714
14715: see what type is used for size_t
14716rp="What is the type used for the length parameter for string functions?"
14717set size_t sizetype 'unsigned int' stdio.h sys/types.h
14718eval $typedef_ask
14719
14720: check for type of arguments to gethostbyaddr.
14721if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14722 case "$d_gethbyaddr" in
14723 $define)
14724 $cat <<EOM
14725
14726Checking to see what type of arguments are accepted by gethostbyaddr().
14727EOM
14728 hdrs="$define sys/types.h
14729 $d_socket sys/socket.h
14730 $i_niin netinet/in.h
14731 $i_netdb netdb.h
14732 $i_unistd unistd.h"
14733 : The first arg can 'char *' or 'void *'
14734 : The second arg is some of integral type
14735 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14736 for yyy in size_t long int; do
14737 case "$netdb_host_type" in
14738 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14739 if ./protochk "$try" $hdrs; then
14740 echo "Your system accepts $xxx for the first arg."
14741 echo "...and $yyy for the second arg."
14742 netdb_host_type="$xxx"
14743 netdb_hlen_type="$yyy"
14744 fi
14745 ;;
14746 esac
14747 done
14748 done
14749 : In case none of those worked, prompt the user.
14750 case "$netdb_host_type" in
14751 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14752 dflt='char *'
14753 . ./myread
14754 netdb_host_type=$ans
14755 rp='What is the type for the 2nd argument to gethostbyaddr?'
14756 dflt="$sizetype"
14757 . ./myread
14758 netdb_hlen_type=$ans
14759 ;;
14760 esac
14761 ;;
14762 *) : no gethostbyaddr, so pick harmless defaults
14763 netdb_host_type='char *'
14764 netdb_hlen_type="$sizetype"
14765 ;;
14766 esac
14767 # Remove the "const" if needed. -- but then we'll have a
14768 # prototype clash!
14769 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14770fi
14771
14772: check for type of argument to gethostbyname.
14773if test "X$netdb_name_type" = X ; then
14774 case "$d_gethbyname" in
14775 $define)
14776 $cat <<EOM
14777
14778Checking to see what type of argument is accepted by gethostbyname().
14779EOM
14780 hdrs="$define sys/types.h
14781 $d_socket sys/socket.h
14782 $i_niin netinet/in.h
14783 $i_netdb netdb.h
14784 $i_unistd unistd.h"
14785 for xxx in "const char *" "char *"; do
14786 case "$netdb_name_type" in
14787 '') try="extern struct hostent *gethostbyname($xxx);"
14788 if ./protochk "$try" $hdrs; then
14789 echo "Your system accepts $xxx."
14790 netdb_name_type="$xxx"
14791 fi
14792 ;;
14793 esac
14794 done
14795 : In case none of those worked, prompt the user.
14796 case "$netdb_name_type" in
14797 '') rp='What is the type for the 1st argument to gethostbyname?'
14798 dflt='char *'
14799 . ./myread
14800 netdb_name_type=$ans
14801 ;;
14802 esac
14803 ;;
14804 *) : no gethostbyname, so pick harmless default
14805 netdb_name_type='char *'
14806 ;;
14807 esac
14808fi
14809
14810: check for type of 1st argument to getnetbyaddr.
14811if test "X$netdb_net_type" = X ; then
14812 case "$d_getnbyaddr" in
14813 $define)
14814 $cat <<EOM
14815
14816Checking to see what type of 1st argument is accepted by getnetbyaddr().
14817EOM
14818 hdrs="$define sys/types.h
14819 $d_socket sys/socket.h
14820 $i_niin netinet/in.h
14821 $i_netdb netdb.h
14822 $i_unistd unistd.h"
14823 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14824 case "$netdb_net_type" in
14825 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14826 if ./protochk "$try" $hdrs; then
14827 echo "Your system accepts $xxx."
14828 netdb_net_type="$xxx"
14829 fi
14830 ;;
14831 esac
14832 done
14833 : In case none of those worked, prompt the user.
14834 case "$netdb_net_type" in
14835 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14836 dflt='long'
14837 . ./myread
14838 netdb_net_type=$ans
14839 ;;
14840 esac
14841 ;;
14842 *) : no getnetbyaddr, so pick harmless default
14843 netdb_net_type='long'
14844 ;;
14845 esac
14846fi
14847: locate the preferred pager for this system
14848case "$pager" in
14849'')
14850 dflt=''
14851 case "$pg" in
14852 /*) dflt=$pg;;
14853 [a-zA-Z]:/*) dflt=$pg;;
14854 esac
14855 case "$more" in
14856 /*) dflt=$more;;
14857 [a-zA-Z]:/*) dflt=$more;;
14858 esac
14859 case "$less" in
14860 /*) dflt=$less;;
14861 [a-zA-Z]:/*) dflt=$less;;
14862 esac
14863 case "$dflt" in
14864 '') dflt=/usr/ucb/more;;
14865 esac
14866 ;;
14867*) dflt="$pager";;
14868esac
14869echo " "
14870fn=f/
14871rp='What pager is used on your system?'
14872. ./getfile
14873pager="$ans"
14874
14875: see what type pids are declared as in the kernel
14876rp="What is the type of process ids on this system?"
14877set pid_t pidtype int stdio.h sys/types.h
14878eval $typedef_ask
14879
14880: Find earliest binary compatible site_perl subdirectory perl can use.
14881case "$bincompat5005" in
14882"$define") xs_apiversion='5.005' ;;
14883*) xs_apiversion=$version ;; # The current site_perl version.
14884esac
14885: Find earliest pure perl site_perl subdirectory perl can use.
14886: The versioned directories started at 5.005.
14887pm_apiversion='5.005'
14888
b4eb6b3d
JH
14889: see if ar generates random libraries by itself
14890echo " "
14891echo "Checking how to generate random libraries on your machine..." >&4
14892echo 'int bar1() { return bar2(); }' > bar1.c
14893echo 'int bar2() { return 2; }' > bar2.c
14894$cat > foo.c <<'EOP'
14895int main() { printf("%d\n", bar1()); exit(0); }
14896EOP
14897$cc $ccflags -c bar1.c >/dev/null 2>&1
14898$cc $ccflags -c bar2.c >/dev/null 2>&1
14899$cc $ccflags -c foo.c >/dev/null 2>&1
14900$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 14901if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14902 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14903 echo "$ar appears to generate random libraries itself."
14904 orderlib=false
14905 ranlib=":"
14906elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 14907 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14908 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14909 echo "a table of contents needs to be added with '$ar ts'."
14910 orderlib=false
14911 ranlib="$ar ts"
14912else
14913 case "$ranlib" in
14914 :) ranlib='';;
14915 '')
14916 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14917 $test -f $ranlib || ranlib=''
14918 ;;
14919 esac
14920 if $test -n "$ranlib"; then
14921 echo "your system has '$ranlib'; we'll use that."
14922 orderlib=false
14923 else
14924 echo "your system doesn't seem to support random libraries"
14925 echo "so we'll use lorder and tsort to order the libraries."
14926 orderlib=true
14927 ranlib=":"
14928 fi
14929fi
14930$rm -f foo* bar*
14931
14932: check for type of arguments to select.
14933case "$selecttype" in
14934'') case "$d_select" in
14935 $define)
14936 echo " "
14937 $cat <<EOM
14938Checking to see what type of arguments are accepted by select().
14939EOM
14940 hdrs="$define sys/types.h
14941 $i_systime sys/time.h
14942 $i_sysselct sys/select.h
14943 $d_socket sys/socket.h"
14944 : The first arg can be int, unsigned, or size_t
14945 : The last arg may or may not be 'const'
14946 val=''
14947 : void pointer has been seen but using that
14948 : breaks the selectminbits test
14949 for xxx in 'fd_set *' 'int *'; do
14950 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14951 for tmo in 'struct timeval *' 'const struct timeval *'; do
14952 case "$val" in
14953 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14954 if ./protochk "$try" $hdrs; then
14955 echo "Your system accepts $xxx."
14956 val="$xxx"
14957 fi
14958 ;;
14959 esac
14960 done
14961 done
14962 done
14963 case "$val" in
14964 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14965 case "$d_fd_set" in
14966 $define) dflt="fd_set *" ;;
14967 *) dflt="int *" ;;
14968 esac
14969 . ./myread
14970 val=$ans
14971 ;;
14972 esac
14973 selecttype="$val"
14974 ;;
14975 *) : no select, so pick a harmless default
14976 selecttype='int *'
14977 ;;
14978 esac
14979 ;;
14980esac
14981
14982: check for the select 'width'
14983case "$selectminbits" in
14984'') case "$d_select" in
14985 $define)
14986 $cat <<EOM
14987
14988Checking to see on how many bits at a time your select() operates...
14989EOM
14990 $cat >try.c <<EOCP
14991#include <sys/types.h>
14992#$i_time I_TIME
14993#$i_systime I_SYS_TIME
14994#$i_systimek I_SYS_TIME_KERNEL
14995#ifdef I_TIME
14996# include <time.h>
14997#endif
14998#ifdef I_SYS_TIME
14999# ifdef I_SYS_TIME_KERNEL
15000# define KERNEL
15001# endif
15002# include <sys/time.h>
15003# ifdef I_SYS_TIME_KERNEL
15004# undef KERNEL
15005# endif
15006#endif
15007#$i_sysselct I_SYS_SELECT
15008#ifdef I_SYS_SELECT
15009#include <sys/select.h>
15010#endif
15011#$d_socket HAS_SOCKET
15012#ifdef HAS_SOCKET
15013# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15014#endif
15015#include <stdio.h>
15016$selecttype b;
15017#define S sizeof(*(b))
15018#define MINBITS 64
15019#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15020#define NBITS (NBYTES * 8)
15021int main() {
15022 char s[NBYTES];
15023 struct timeval t;
15024 int i;
15025 FILE* fp;
15026 int fd;
15027
15028 fclose(stdin);
15029 fp = fopen("try.c", "r");
15030 if (fp == 0)
15031 exit(1);
15032 fd = fileno(fp);
15033 if (fd < 0)
15034 exit(2);
15035 b = ($selecttype)s;
15036 for (i = 0; i < NBITS; i++)
15037 FD_SET(i, b);
15038 t.tv_sec = 0;
15039 t.tv_usec = 0;
15040 select(fd + 1, b, 0, 0, &t);
15041 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15042 printf("%d\n", i + 1);
15043 return 0;
15044}
15045EOCP
15046 set try
15047 if eval $compile_ok; then
5440bc8e 15048 selectminbits=`$run ./try`
b4eb6b3d
JH
15049 case "$selectminbits" in
15050 '') cat >&4 <<EOM
15051Cannot figure out on how many bits at a time your select() operates.
15052I'll play safe and guess it is 32 bits.
15053EOM
15054 selectminbits=32
15055 bits="32 bits"
15056 ;;
15057 1) bits="1 bit" ;;
15058 *) bits="$selectminbits bits" ;;
15059 esac
15060 echo "Your select() operates on $bits at a time." >&4
15061 else
15062 rp='What is the minimum number of bits your select() operates on?'
15063 case "$byteorder" in
15064 1234|12345678) dflt=32 ;;
15065 *) dflt=1 ;;
15066 esac
15067 . ./myread
15068 val=$ans
15069 selectminbits="$val"
15070 fi
15071 $rm -f try.* try
15072 ;;
15073 *) : no select, so pick a harmless default
15074 selectminbits='32'
15075 ;;
15076 esac
15077 ;;
15078esac
15079
15080: Trace out the files included by signal.h, then look for SIGxxx names.
15081: Remove SIGARRAYSIZE used by HPUX.
15082: Remove SIGSTKSIZE used by Linux.
15083: Remove SIGSTKSZ used by Posix.
15084: Remove SIGTYP void lines used by OS2.
15085: Some cpps, like os390, dont give the file name anywhere
15086if [ "X$fieldn" = X ]; then
15087 : Just make some guesses. We check them later.
15088 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15089else
15090 xxx=`echo '#include <signal.h>' |
15091 $cppstdin $cppminus $cppflags 2>/dev/null |
15092 $grep '^[ ]*#.*include' |
a938a3bb 15093 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15094fi
15095: Check this list of files to be sure we have parsed the cpp output ok.
15096: This will also avoid potentially non-existent files, such
15097: as ../foo/bar.h
15098xxxfiles=''
15099for xx in $xxx /dev/null ; do
15100 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15101done
15102: If we have found no files, at least try signal.h
15103case "$xxxfiles" in
15104'') xxxfiles=`./findhdr signal.h` ;;
15105esac
15106xxx=`awk '
15107$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15108 print substr($2, 4, 20)
15109}
15110$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15111 print substr($3, 4, 20)
15112}' $xxxfiles`
15113: Append some common names just in case the awk scan failed.
15114xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15115xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15116xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15117xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15118xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15119
15120: generate a few handy files for later
15121$cat > signal.c <<'EOCP'
15122#include <sys/types.h>
15123#include <signal.h>
15124#include <stdio.h>
15125int main() {
15126
15127/* Strange style to avoid deeply-nested #if/#else/#endif */
15128#ifndef NSIG
15129# ifdef _NSIG
15130# define NSIG (_NSIG)
15131# endif
15132#endif
15133
15134#ifndef NSIG
15135# ifdef SIGMAX
15136# define NSIG (SIGMAX+1)
15137# endif
15138#endif
15139
15140#ifndef NSIG
15141# ifdef SIG_MAX
15142# define NSIG (SIG_MAX+1)
15143# endif
15144#endif
15145
15146#ifndef NSIG
15147# ifdef MAXSIG
15148# define NSIG (MAXSIG+1)
15149# endif
15150#endif
15151
15152#ifndef NSIG
15153# ifdef MAX_SIG
15154# define NSIG (MAX_SIG+1)
15155# endif
15156#endif
15157
15158#ifndef NSIG
15159# ifdef SIGARRAYSIZE
15160# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15161# endif
15162#endif
15163
15164#ifndef NSIG
15165# ifdef _sys_nsig
15166# define NSIG (_sys_nsig) /* Solaris 2.5 */
15167# endif
15168#endif
15169
15170/* Default to some arbitrary number that's big enough to get most
15171 of the common signals.
15172*/
15173#ifndef NSIG
15174# define NSIG 50
15175#endif
15176
15177printf("NSIG %d\n", NSIG);
15178
15179#ifndef JUST_NSIG
15180
15181EOCP
15182
15183echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15184{
15185 printf "#ifdef SIG"; printf $1; printf "\n"
15186 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15187 printf $1; printf ");\n"
15188 printf "#endif\n"
15189}
15190END {
15191 printf "#endif /* JUST_NSIG */\n";
15192 printf "exit(0);\n}\n";
15193}
15194' >>signal.c
15195$cat >signal.awk <<'EOP'
15196BEGIN { ndups = 0 }
15197$1 ~ /^NSIG$/ { nsig = $2 }
15198($1 !~ /^NSIG$/) && (NF == 2) {
15199 if ($2 > maxsig) { maxsig = $2 }
15200 if (sig_name[$2]) {
15201 dup_name[ndups] = $1
15202 dup_num[ndups] = $2
15203 ndups++
15204 }
15205 else {
15206 sig_name[$2] = $1
15207 sig_num[$2] = $2
15208 }
15209}
15210END {
15211 if (nsig == 0) {
15212 nsig = maxsig + 1
15213 }
15214 printf("NSIG %d\n", nsig);
15215 for (n = 1; n < nsig; n++) {
15216 if (sig_name[n]) {
15217 printf("%s %d\n", sig_name[n], sig_num[n])
15218 }
15219 else {
15220 printf("NUM%d %d\n", n, n)
15221 }
15222 }
15223 for (n = 0; n < ndups; n++) {
15224 printf("%s %d\n", dup_name[n], dup_num[n])
15225 }
15226}
15227EOP
15228$cat >signal_cmd <<EOS
15229$startsh
15230if $test -s signal.lst; then
15231 echo "Using your existing signal.lst file"
15232 exit 0
15233fi
15234xxx="$xxx"
15235EOS
15236$cat >>signal_cmd <<'EOS'
15237
15238set signal
15239if eval $compile_ok; then
5440bc8e 15240 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15241else
15242 echo "(I can't seem be able to compile the whole test program)" >&4
15243 echo "(I'll try it in little pieces.)" >&4
15244 set signal -DJUST_NSIG
15245 if eval $compile_ok; then
5440bc8e 15246 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15247 $cat signal.nsg
15248 else
15249 echo "I can't seem to figure out how many signals you have." >&4
15250 echo "Guessing 50." >&4
15251 echo 'NSIG 50' > signal.nsg
15252 fi
15253 : Now look at all the signal names, one at a time.
15254 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15255 $cat > signal.c <<EOCP
15256#include <sys/types.h>
15257#include <signal.h>
15258#include <stdio.h>
15259int main() {
15260printf("$xx %d\n", SIG${xx});
15261return 0;
15262}
15263EOCP
15264 set signal
15265 if eval $compile; then
15266 echo "SIG${xx} found."
5440bc8e 15267 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15268 else
15269 echo "SIG${xx} NOT found."
15270 fi
15271 done
15272 if $test -s signal.ls1; then
15273 $cat signal.nsg signal.ls1 |
15274 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15275 fi
15276
15277fi
15278if $test -s signal.lst; then
15279 :
15280else
15281 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15282 echo 'kill -l' >signal
15283 set X `csh -f <signal`
15284 $rm -f signal
15285 shift
15286 case $# in
15287 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15288 esac
15289 echo $@ | $tr ' ' $trnl | \
15290 $awk '{ printf "%s %d\n", $1, ++s; }
15291 END { printf "NSIG %d\n", ++s }' >signal.lst
15292fi
15293$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15294EOS
15295chmod a+x signal_cmd
15296$eunicefix signal_cmd
15297
15298: generate list of signal names
15299echo " "
15300case "$sig_name_init" in
15301'') doinit=yes ;;
15302*) case "$sig_num_init" in
15303 ''|*,*) doinit=yes ;;
15304 esac ;;
15305esac
15306case "$doinit" in
15307yes)
15308 echo "Generating a list of signal names and numbers..." >&4
15309 . ./signal_cmd
15310 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15311 sig_name=`$awk 'BEGIN { printf "ZERO " }
15312 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15313 sig_num=`$awk 'BEGIN { printf "0 " }
15314 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15315 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15316 !/^NSIG/ { printf "\"%s\", ", $1 }
15317 END { printf "0\n" }' signal.lst`
15318 sig_num_init=`$awk 'BEGIN { printf "0, " }
15319 !/^NSIG/ { printf "%d, ", $2}
15320 END { printf "0\n"}' signal.lst`
15321 ;;
15322esac
15323echo "The following $sig_count signals are available:"
15324echo " "
15325echo $sig_name | $awk \
15326'BEGIN { linelen = 0 }
15327{
15328 for (i = 1; i <= NF; i++) {
15329 name = "SIG" $i " "
15330 linelen = linelen + length(name)
15331 if (linelen > 70) {
15332 printf "\n"
15333 linelen = length(name)
15334 }
15335 printf "%s", name
15336 }
15337 printf "\n"
15338}'
76d3c696 15339sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15340$rm -f signal signal.c signal.awk signal.lst signal_cmd
15341
15342echo " "
15343case "$sizetype" in
15344*_t) zzz="$sizetype" ;;
15345*) zzz="filesize" ;;
15346esac
15347echo "Checking the size of $zzz..." >&4
15348cat > try.c <<EOCP
15349#include <sys/types.h>
15350#include <stdio.h>
15351int main() {
15352 printf("%d\n", (int)sizeof($sizetype));
15353 exit(0);
15354}
15355EOCP
15356set try
15357if eval $compile_ok; then
5440bc8e 15358 yyy=`$run ./try`
b4eb6b3d
JH
15359 case "$yyy" in
15360 '') sizesize=4
15361 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15362 ;;
15363 *) sizesize=$yyy
15364 echo "Your $zzz size is $sizesize bytes."
15365 ;;
15366 esac
15367else
15368 sizesize=4
15369 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15370fi
15371
15372
15373: check for socklen_t
15374echo " "
15375echo "Checking to see if you have socklen_t..." >&4
15376$cat >try.c <<EOCP
15377#include <sys/types.h>
15378#$d_socket HAS_SOCKET
15379#ifdef HAS_SOCKET
15380#include <sys/socket.h>
15381#endif
15382int main() { socklen_t x = 16; }
15383EOCP
15384set try
15385if eval $compile; then
15386 val="$define"
15387 echo "You have socklen_t."
15388else
15389 val="$undef"
15390 echo "You do not have socklen_t."
15391 case "$sizetype" in
15392 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15393 esac
15394fi
15395$rm -f try try.*
15396set d_socklen_t
15397eval $setvar
15398
a7710f8d
JH
15399: see if this is a socks.h system
15400set socks.h i_socks
15401eval $inhdr
15402
b4eb6b3d
JH
15403: check for type of the size argument to socket calls
15404case "$d_socket" in
15405"$define")
15406 $cat <<EOM
15407
15408Checking to see what type is the last argument of accept().
15409EOM
b4eb6b3d
JH
15410 yyy=''
15411 case "$d_socklen_t" in
15412 "$define") yyy="$yyy socklen_t"
15413 esac
15414 yyy="$yyy $sizetype int long unsigned"
15415 for xxx in $yyy; do
15416 case "$socksizetype" in
15417 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15418 case "$usesocks" in
15419 "$define")
15420 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15421 echo "Your system accepts '$xxx *' for the last argument of accept()."
15422 socksizetype="$xxx"
15423 fi
15424 ;;
15425 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15426 echo "Your system accepts '$xxx *' for the last argument of accept()."
15427 socksizetype="$xxx"
15428 fi
15429 ;;
15430 esac
b4eb6b3d
JH
15431 ;;
15432 esac
15433 done
15434: In case none of those worked, prompt the user.
15435 case "$socksizetype" in
15436 '') rp='What is the type for socket address structure sizes?'
15437 dflt='int'
15438 . ./myread
15439 socksizetype=$ans
15440 ;;
15441 esac
15442 ;;
15443*) : no sockets, so pick relatively harmless default
15444 socksizetype='int'
15445 ;;
15446esac
15447
15448: see what type is used for signed size_t
15449set ssize_t ssizetype int stdio.h sys/types.h
15450eval $typedef
15451dflt="$ssizetype"
5440bc8e 15452$cat > try.c <<EOM
b4eb6b3d
JH
15453#include <stdio.h>
15454#include <sys/types.h>
15455#define Size_t $sizetype
15456#define SSize_t $dflt
15457int main()
15458{
15459 if (sizeof(Size_t) == sizeof(SSize_t))
15460 printf("$dflt\n");
15461 else if (sizeof(Size_t) == sizeof(int))
15462 printf("int\n");
15463 else
15464 printf("long\n");
15465 exit(0);
15466}
15467EOM
15468echo " "
5440bc8e
JH
15469set try
15470if eval $compile_ok && $run ./try > /dev/null; then
15471 ssizetype=`$run ./try`
b4eb6b3d
JH
15472 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15473else
15474 $cat >&4 <<EOM
15475Help! I can't compile and run the ssize_t test program: please enlighten me!
15476(This is probably a misconfiguration in your system or libraries, and
15477you really ought to fix it. Still, I'll try anyway.)
15478
15479I need a type that is the same size as $sizetype, but is guaranteed to
15480be signed. Common values are ssize_t, int and long.
15481
15482EOM
15483 rp="What signed type is the same size as $sizetype?"
15484 . ./myread
15485 ssizetype="$ans"
15486fi
5440bc8e 15487$rm -f try try.*
b4eb6b3d
JH
15488
15489: see what type of char stdio uses.
15490echo " "
aa517f50
JH
15491echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15492if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15493 echo "Your stdio uses unsigned chars." >&4
15494 stdchar="unsigned char"
15495else
aa517f50
JH
15496 echo "Your stdio uses signed chars." >&4
15497 stdchar="char"
b4eb6b3d 15498fi
aa517f50
JH
15499$rm -f stdioh
15500
15501
b4eb6b3d
JH
15502
15503: see if time exists
15504echo " "
15505if test "X$d_time" = X -o X"$timetype" = X; then
15506 if set time val -f d_time; eval $csym; $val; then
15507 echo 'time() found.' >&4
15508 val="$define"
15509 rp="What is the type returned by time() on this system?"
15510 set time_t timetype long stdio.h sys/types.h
15511 eval $typedef_ask
15512 else
15513 echo 'time() not found, hope that will do.' >&4
15514 val="$undef"
15515 timetype='int';
15516 fi
15517 set d_time
15518 eval $setvar
15519fi
15520
15521: see what type uids are declared as in the kernel
15522echo " "
15523echo "Looking for the type for user ids returned by getuid()."
15524set uid_t uidtype xxx stdio.h sys/types.h
15525eval $typedef
15526case "$uidtype" in
15527xxx)
15528 xxx=`./findhdr sys/user.h`
15529 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15530 case $1 in
15531 unsigned) dflt="$1 $2" ;;
15532 *) dflt="$1" ;;
15533 esac
15534 ;;
15535*) dflt="$uidtype";;
15536esac
15537case "$uidtype" in
15538uid_t) echo "uid_t found." ;;
15539*) rp="What is the type for user ids returned by getuid()?"
15540 . ./myread
15541 uidtype="$ans"
15542 ;;
15543esac
15544
15545echo " "
15546case "$uidtype" in
15547*_t) zzz="$uidtype" ;;
15548*) zzz="uid" ;;
15549esac
15550echo "Checking the size of $zzz..." >&4
15551cat > try.c <<EOCP
15552#include <sys/types.h>
15553#include <stdio.h>
15554int main() {
15555 printf("%d\n", (int)sizeof($uidtype));
15556 exit(0);
15557}
15558EOCP
15559set try
15560if eval $compile_ok; then
5440bc8e 15561 yyy=`$run ./try`
b4eb6b3d
JH
15562 case "$yyy" in
15563 '') uidsize=4
15564 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15565 ;;
15566 *) uidsize=$yyy
15567 echo "Your $zzz is $uidsize bytes long."
15568 ;;
15569 esac
15570else
15571 uidsize=4
15572 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15573fi
15574
15575echo " "
15576case "$uidtype" in
15577*_t) zzz="$uidtype" ;;
15578*) zzz="uid" ;;
15579esac
15580echo "Checking the sign of $zzz..." >&4
15581cat > try.c <<EOCP
15582#include <sys/types.h>
15583#include <stdio.h>
15584int main() {
15585 $uidtype foo = -1;
15586 if (foo < 0)
15587 printf("-1\n");
15588 else
15589 printf("1\n");
15590}
15591EOCP
15592set try
15593if eval $compile; then
5440bc8e 15594 yyy=`$run ./try`
b4eb6b3d
JH
15595 case "$yyy" in
15596 '') uidsign=1
15597 echo "(I can't execute the test program--guessing unsigned.)" >&4
15598 ;;
15599 *) uidsign=$yyy
15600 case "$uidsign" in
15601 1) echo "Your $zzz is unsigned." ;;
15602 -1) echo "Your $zzz is signed." ;;
15603 esac
15604 ;;
15605 esac
15606else
15607 uidsign=1
15608 echo "(I can't compile the test program--guessing unsigned.)" >&4
15609fi
15610
15611
15612
15613echo " "
15614$echo "Checking the format string to be used for uids..." >&4
15615
15616case "$uidsign" in
15617-1) if $test X"$uidsize" = X"$ivsize"; then
15618 uidformat="$ivdformat"
15619 else
15620 if $test X"$uidsize" = X"$longsize"; then
15621 uidformat='"ld"'
15622 else
15623 if $test X"$uidsize" = X"$intsize"; then
15624 uidformat='"d"'
15625 else
15626 if $test X"$uidsize" = X"$shortsize"; then
15627 uidformat='"hd"'
15628 fi
15629 fi
15630 fi
15631 fi
15632 ;;
15633*) if $test X"$uidsize" = X"$uvsize"; then
15634 uidformat="$uvuformat"
15635 else
15636 if $test X"$uidsize" = X"$longsize"; then
15637 uidformat='"lu"'
15638 else
15639 if $test X"$uidsize" = X"$intsize"; then
15640 uidformat='"u"'
15641 else
15642 if $test X"$uidsize" = X"$shortsize"; then
15643 uidformat='"hu"'
15644 fi
15645 fi
15646 fi
15647 fi
15648 ;;
15649esac
15650
3659ebf1
JH
15651: determine compiler compiler
15652case "$yacc" in
15653'')
15654 dflt=yacc;;
15655*)
15656 dflt="$yacc";;
15657esac
15658echo " "
15659comp='yacc'
15660if $test -f "$byacc"; then
15661 dflt="$byacc"
15662 comp="byacc or $comp"
15663fi
15664if $test -f "$bison"; then
15665 comp="$comp or bison -y"
15666fi
15667rp="Which compiler compiler ($comp) shall I use?"
15668. ./myread
15669yacc="$ans"
15670case "$yacc" in
15671*bis*)
15672 case "$yacc" in
15673 *-y*) ;;
15674 *)
15675 yacc="$yacc -y"
15676 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15677 ;;
15678 esac
15679 ;;
15680esac
15681
b4eb6b3d
JH
15682: see if fcntl.h is there
15683val=''
15684set fcntl.h val
15685eval $inhdr
15686
15687: see if we can include fcntl.h
15688case "$val" in
15689"$define")
15690 echo " "
15691 if $h_fcntl; then
15692 val="$define"
15693 echo "We'll be including <fcntl.h>." >&4
15694 else
15695 val="$undef"
15696 if $h_sysfile; then
15697 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15698 else
15699 echo "We won't be including <fcntl.h>." >&4
15700 fi
15701 fi
15702 ;;
15703*)
15704 h_fcntl=false
15705 val="$undef"
15706 ;;
15707esac
15708set i_fcntl
15709eval $setvar
15710
15711: see if this is a iconv.h system
15712set iconv.h i_iconv
15713eval $inhdr
15714
15715: see if this is a ieeefp.h system
15716set ieeefp.h i_ieeefp
15717eval $inhdr
15718
15719: see if this is a libutil.h system
15720set libutil.h i_libutil
15721eval $inhdr
15722
15723: see if locale.h is available
15724set locale.h i_locale
15725eval $inhdr
15726
15727: see if mach cthreads are available
15728if test "X$usethreads" = "X$define"; then
15729 set mach/cthreads.h i_machcthr
15730 eval $inhdr
15731else
15732 i_machcthr="$undef"
15733fi
15734
15735
15736
15737: see if this is a math.h system
15738set math.h i_math
15739eval $inhdr
15740
15741: see if this is a mntent.h system
15742set mntent.h i_mntent
15743eval $inhdr
15744
15745: see if ndbm.h is available
15746set ndbm.h t_ndbm
15747eval $inhdr
15748case "$t_ndbm" in
15749$define)
15750 : see if dbm_open exists
15751 set dbm_open d_dbm_open
15752 eval $inlibc
15753 case "$d_dbm_open" in
15754 $undef)
15755 t_ndbm="$undef"
15756 echo "We won't be including <ndbm.h>"
15757 ;;
15758 esac
15759 ;;
15760esac
15761val="$t_ndbm"
15762set i_ndbm
15763eval $setvar
15764
15765: see if net/errno.h is available
15766val=''
15767set net/errno.h val
15768eval $inhdr
15769
15770: Unfortunately, it causes problems on some systems. Arrgh.
15771case "$val" in
15772$define)
15773 cat > try.c <<'EOM'
15774#include <stdio.h>
15775#include <errno.h>
15776#include <net/errno.h>
15777int func()
15778{
15779 return ENOTSOCK;
15780}
15781EOM
15782 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15783 echo "We'll be including <net/errno.h>." >&4
15784 else
15785 echo "We won't be including <net/errno.h>." >&4
15786 val="$undef"
15787 fi
15788 $rm -f try.* try
15789 ;;
15790esac
15791set i_neterrno
15792eval $setvar
15793
15794: see if netinet/tcp.h is available
15795set netinet/tcp.h i_netinettcp
15796eval $inhdr
15797
15798: see if this is a poll.h system
15799set poll.h i_poll
15800eval $inhdr
15801
15802: see if this is a prot.h system
15803set prot.h i_prot
15804eval $inhdr
15805
15806echo " "
15807$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15808$cat <<'EOSH' > Cppsym.know
15809a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15810AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
15811alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15812ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15813BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
15814BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15815bull c cadmus clipper CMU COFF COMPILER_VERSION
15816concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15817CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15818Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15819FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15820GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15821H3050R H3050RX hbullx20 hcx host_mips
15822hp200 hp300 hp700 HP700 hp800 hp9000
15823hp9000s200 hp9000s300 hp9000s400 hp9000s500
15824hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15825i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 15826IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
15827INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15828LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15829LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15830Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15831LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15832M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15833M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15834M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15835MATH_HAS_NO_SIDE_EFFECTS
15836mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15837mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15838mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15839MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15840mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15841NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15842news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15843ns32016 ns32332 ns32k nsc32000
15844OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15845pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15846pc532 pdp11 PGC PIC plexus PORTAR posix
15847POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15848POSIX_C_SOURCE POSIX_SOURCE POWER
15849PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 15850riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
15851SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15852sony sony_news sonyrisc sparc sparclite spectrum
15853stardent stdc STDC_EXT stratos sun sun3 sun386
15854Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15855SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15856SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15857sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 15858TM3200 TM5400 TM5600
b4eb6b3d
JH
15859tower tower32 tower32_200 tower32_600 tower32_700
15860tower32_800 tower32_850 tss
15861u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15862ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15863unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15864Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15865XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15866XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15867z8000
15868EOSH
15869# Maybe put other stuff here too.
15870cat <<EOSH >>Cppsym.know
15871$osname
15872EOSH
15873./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15874./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15875$cat Cppsym.know > Cppsym.c
381aa1ff 15876$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15877$rm -f Cppsym.a Cppsym.b Cppsym.c
15878cat <<EOSH > Cppsym
15879$startsh
15880if $test \$# -gt 0; then
15881 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15882 if $test -s Cppsym.got; then
15883 $rm -f Cppsym.got
15884 exit 0
15885 fi
15886 $rm -f Cppsym.got
15887 exit 1
15888else
15889 $tr " " "$trnl" | ./Cppsym.try
15890 exit 0
15891fi
15892EOSH
15893chmod +x Cppsym
15894$eunicefix Cppsym
15895cat <<EOSH > Cppsym.try
15896$startsh
15897cat <<'EOCP' > try.c
15898#include <stdio.h>
15899int main() {
15900EOCP
15901$awk \\
15902EOSH
15903cat <<'EOSH' >> Cppsym.try
15904'length($1) > 0 {
2ef53570
JH
15905 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
15906 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
15907 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
15908 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 15909}' >> try.c
2ef53570 15910echo 'return 0;}' >> try.c
b4eb6b3d
JH
15911EOSH
15912cat <<EOSH >> Cppsym.try
15913ccflags="$ccflags"
15914case "$osname-$gccversion" in
15915irix-) ccflags="\$ccflags -woff 1178" ;;
15916os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15917esac
5440bc8e 15918$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
15919EOSH
15920chmod +x Cppsym.try
15921$eunicefix Cppsym.try
15922./Cppsym < Cppsym.know > Cppsym.true
15923: now check the C compiler for additional symbols
15924postprocess_cc_v=''
15925case "$osname" in
15926aix) postprocess_cc_v="|$tr , ' '" ;;
15927esac
15928$cat >ccsym <<EOS
15929$startsh
15930$cat >tmp.c <<EOF
15931extern int foo;
15932EOF
15933for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15934do
15935 case "\$i" in
15936 -D*) echo "\$i" | $sed 's/^-D//';;
15937 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15938 esac
15939done
15940$rm -f try.c
15941EOS
15942postprocess_cc_v=''
15943chmod +x ccsym
15944$eunicefix ccsym
15945./ccsym > ccsym1.raw
15946if $test -s ccsym1.raw; then
15947 $sort ccsym1.raw | $uniq >ccsym.raw
15948else
15949 mv ccsym1.raw ccsym.raw
15950fi
15951
15952$awk '/\=/ { print $0; next }
15953 { print $0"=1" }' ccsym.raw >ccsym.list
15954$awk '/\=/ { print $0; next }
15955 { print $0"=1" }' Cppsym.true >ccsym.true
15956$comm -13 ccsym.true ccsym.list >ccsym.own
15957$comm -12 ccsym.true ccsym.list >ccsym.com
15958$comm -23 ccsym.true ccsym.list >ccsym.cpp
15959also=''
15960if $test -z ccsym.raw; then
15961 echo "Your C compiler doesn't seem to define any symbols!" >&4
15962 echo " "
15963 echo "However, your C preprocessor defines the following symbols:"
15964 $cat Cppsym.true
15965 ccsymbols=''
15966 cppsymbols=`$cat Cppsym.true`
15967 cppsymbols=`echo $cppsymbols`
15968 cppccsymbols="$cppsymbols"
15969else
15970 if $test -s ccsym.com; then
15971 echo "Your C compiler and pre-processor define these symbols:"
15972 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15973 also='also '
15974 symbols='ones'
15975 cppccsymbols=`$cat ccsym.com`
15976 cppccsymbols=`echo $cppccsymbols`
15977 $test "$silent" || sleep 1
15978 fi
15979 if $test -s ccsym.cpp; then
15980 $test "$also" && echo " "
15981 echo "Your C pre-processor ${also}defines the following symbols:"
15982 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15983 also='further '
15984 cppsymbols=`$cat ccsym.cpp`
15985 cppsymbols=`echo $cppsymbols`
15986 $test "$silent" || sleep 1
15987 fi
15988 if $test -s ccsym.own; then
15989 $test "$also" && echo " "
15990 echo "Your C compiler ${also}defines the following cpp symbols:"
15991 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15992 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15993 ccsymbols=`$cat ccsym.own`
15994 ccsymbols=`echo $ccsymbols`
15995 $test "$silent" || sleep 1
15996 fi
15997fi
b4eb6b3d
JH
15998
15999: see if this is a termio system
16000val="$undef"
16001val2="$undef"
16002val3="$undef"
16003if $test `./findhdr termios.h`; then
16004 set tcsetattr i_termios
16005 eval $inlibc
16006 val3="$i_termios"
16007fi
16008echo " "
16009case "$val3" in
16010"$define") echo "You have POSIX termios.h... good!" >&4;;
16011*) if ./Cppsym pyr; then
16012 case "`/bin/universe`" in
16013 ucb) if $test `./findhdr sgtty.h`; then
16014 val2="$define"
16015 echo "<sgtty.h> found." >&4
16016 else
16017 echo "System is pyramid with BSD universe."
16018 echo "<sgtty.h> not found--you could have problems." >&4
16019 fi;;
16020 *) if $test `./findhdr termio.h`; then
16021 val="$define"
16022 echo "<termio.h> found." >&4
16023 else
16024 echo "System is pyramid with USG universe."
16025 echo "<termio.h> not found--you could have problems." >&4
16026 fi;;
16027 esac
16028 elif ./usg; then
16029 if $test `./findhdr termio.h`; then
16030 echo "<termio.h> found." >&4
16031 val="$define"
16032 elif $test `./findhdr sgtty.h`; then
16033 echo "<sgtty.h> found." >&4
16034 val2="$define"
16035 else
16036echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16037 fi
16038 else
16039 if $test `./findhdr sgtty.h`; then
16040 echo "<sgtty.h> found." >&4
16041 val2="$define"
16042 elif $test `./findhdr termio.h`; then
16043 echo "<termio.h> found." >&4
16044 val="$define"
16045 else
16046echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16047 fi
16048 fi;;
16049esac
16050set i_termio; eval $setvar
16051val=$val2; set i_sgtty; eval $setvar
16052val=$val3; set i_termios; eval $setvar
16053
16054: see if this is a shadow.h system
16055set shadow.h i_shadow
16056eval $inhdr
16057
b4eb6b3d
JH
16058: see if stddef is available
16059set stddef.h i_stddef
16060eval $inhdr
923fc586 16061
b4eb6b3d
JH
16062: see if this is a sunmath.h system
16063set sunmath.h i_sunmath
16064eval $inhdr
5f80c64f 16065
b4eb6b3d
JH
16066: see if sys/access.h is available
16067set sys/access.h i_sysaccess
16068eval $inhdr
16069
16070: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16071set sys/filio.h i_sysfilio
16072eval $inhdr
16073echo " "
16074if $test `./findhdr sys/ioctl.h`; then
16075 val="$define"
16076 echo '<sys/ioctl.h> found.' >&4
16077else
16078 val="$undef"
16079 if $test $i_sysfilio = "$define"; then
16080 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16081 else
b4eb6b3d
JH
16082 $test $i_sgtty = "$define" && xxx="sgtty.h"
16083 $test $i_termio = "$define" && xxx="termio.h"
16084 $test $i_termios = "$define" && xxx="termios.h"
16085echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16086 fi
16087fi
16088set i_sysioctl
16089eval $setvar
16090
49a78c82
JH
16091: see if socket ioctl defs are in sys/sockio.h
16092echo " "
16093xxx=`./findhdr sys/sockio.h`
16094if $test "$xxx"; then
16095 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16096 val="$define"
16097 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16098 else
16099 val="$undef"
16100 echo "No socket ioctls found in <sys/sockio.h>." >&4
16101 fi
16102else
16103 val="$undef"
16104 $cat <<EOM
16105<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16106EOM
16107fi
16108set i_syssockio
16109eval $setvar
16110
b4eb6b3d
JH
16111
16112: see if this is a syslog.h system
16113set syslog.h i_syslog
16114eval $inhdr
16115
16116
16117: see if this is a sys/mode.h system
16118set sys/mode.h i_sysmode
16119eval $inhdr
16120
16121: see if sys/resource.h has to be included
16122set sys/resource.h i_sysresrc
16123eval $inhdr
16124
16125: see if sys/security.h is available
16126set sys/security.h i_syssecrt
16127eval $inhdr
16128
16129: see if this is a sys/statvfs.h system
16130set sys/statvfs.h i_sysstatvfs
16131eval $inhdr
16132
b4eb6b3d
JH
16133: see if this is a sys/un.h system
16134set sys/un.h i_sysun
16135eval $inhdr
16136
16137
16138: see if this is a sys/utsname.h system
16139set sys/utsname.h i_sysutsname
16140eval $inhdr
16141
16142: see if this is a syswait system
16143set sys/wait.h i_syswait
16144eval $inhdr
16145
16146: see if this is a ustat.h system
16147set ustat.h i_ustat
16148eval $inhdr
16149
16150: see if this is an utime system
16151set utime.h i_utime
16152eval $inhdr
16153
16154: see if this is a values.h system
16155set values.h i_values
16156eval $inhdr
16157
16158: see if this is a vfork system
16159case "$d_vfork" in
16160"$define")
16161 set vfork.h i_vfork
16162 eval $inhdr
16163 ;;
16164*)
16165 i_vfork="$undef"
16166 ;;
16167esac
16168
16169: see if gdbm.h is available
16170set gdbm.h t_gdbm
16171eval $inhdr
16172case "$t_gdbm" in
16173$define)
16174 : see if gdbm_open exists
16175 set gdbm_open d_gdbm_open
16176 eval $inlibc
16177 case "$d_gdbm_open" in
16178 $undef)
16179 t_gdbm="$undef"
16180 echo "We won't be including <gdbm.h>"
5f80c64f 16181 ;;
b4eb6b3d
JH
16182 esac
16183 ;;
16184esac
16185val="$t_gdbm"
16186set i_gdbm
16187eval $setvar
16188
16189echo " "
16190echo "Looking for extensions..." >&4
16191: If we are using the old config.sh, known_extensions may contain
16192: old or inaccurate or duplicate values.
16193known_extensions=''
16194nonxs_extensions=''
16195: We do not use find because it might not be available.
16196: We do not just use MANIFEST because the user may have dropped
16197: some additional extensions into the source tree and expect them
16198: to be built.
16199
16200: Function to recursively find available extensions, ignoring DynaLoader
16201: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16202find_extensions='
16203 for xxx in *; do
16204 case "$xxx" in
16205 DynaLoader|dynaload) ;;
16206 *)
16207 if $test -f $xxx/$xxx.xs; then
16208 known_extensions="$known_extensions $1$xxx";
16209 elif $test -f $xxx/Makefile.PL; then
16210 nonxs_extensions="$nonxs_extensions $1$xxx";
16211 else
16212 if $test -d $xxx -a $# -lt 10; then
16213 set $1$xxx/ $*;
16214 cd $xxx;
16215 eval $find_extensions;
16216 cd ..;
16217 shift;
16218 fi;
16219 fi
16220 ;;
16221 esac;
16222 done'
16223tdir=`pwd`
16224cd $rsrc/ext
16225set X
16226shift
16227eval $find_extensions
16228set X $nonxs_extensions
16229shift
16230nonxs_extensions="$*"
16231set X $known_extensions
16232shift
16233known_extensions="$*"
16234cd $tdir
16235
16236: Now see which are supported on this system.
16237avail_ext=''
16238for xxx in $known_extensions ; do
16239 case "$xxx" in
16240 DB_File|db_file)
16241 case "$i_db" in
16242 $define) avail_ext="$avail_ext $xxx" ;;
16243 esac
16244 ;;
16245 GDBM_File|gdbm_fil)
16246 case "$i_gdbm" in
16247 $define) avail_ext="$avail_ext $xxx" ;;
16248 esac
16249 ;;
16250 NDBM_File|ndbm_fil)
16251 case "$i_ndbm" in
16252 $define)
16253 case "$osname-$use64bitint" in
252f4fb1 16254 cygwin-*|hpux-define)
b4eb6b3d
JH
16255 case "$libs" in
16256 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16257 esac
16258 ;;
16259 *) avail_ext="$avail_ext $xxx" ;;
16260 esac
16261 ;;
16262 esac
16263 ;;
16264 ODBM_File|odbm_fil)
16265 case "${i_dbm}${i_rpcsvcdbm}" in
16266 *"${define}"*)
16267 case "$osname-$use64bitint" in
252f4fb1 16268 cygwin-*|hpux-define)
b4eb6b3d
JH
16269 case "$libs" in
16270 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16271 esac
16272 ;;
16273 *) avail_ext="$avail_ext $xxx" ;;
16274 esac
16275 ;;
16276 esac
16277 ;;
16278 POSIX|posix)
16279 case "$useposix" in
16280 true|define|y) avail_ext="$avail_ext $xxx" ;;
16281 esac
16282 ;;
16283 Opcode|opcode)
16284 case "$useopcode" in
16285 true|define|y) avail_ext="$avail_ext $xxx" ;;
16286 esac
16287 ;;
16288 Socket|socket)
16289 case "$d_socket" in
16290 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16291 esac
16292 ;;
16293 Sys/Syslog|sys/syslog)
16294 : XXX syslog requires socket
16295 case "$d_socket" in
16296 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16297 esac
16298 ;;
16299 Thread|thread)
b00ec89b
AB
16300 case "$usethreads" in
16301 true|$define|y)
16302 case "$useithreads" in
16303 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16304 esac
b4eb6b3d
JH
16305 esac
16306 ;;
16307 IPC/SysV|ipc/sysv)
16308 : XXX Do we need a useipcsysv variable here
16309 case "${d_msg}${d_sem}${d_shm}" in
16310 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16311 esac
16312 ;;
16313 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16314 ;;
16315 esac
b4eb6b3d 16316done
5f80c64f 16317
b4eb6b3d
JH
16318set X $avail_ext
16319shift
16320avail_ext="$*"
5f80c64f 16321
b4eb6b3d
JH
16322: Now see which nonxs extensions are supported on this system.
16323: For now assume all are.
16324nonxs_ext=''
16325for xxx in $nonxs_extensions ; do
16326 case "$xxx" in
16327 *) nonxs_ext="$nonxs_ext $xxx"
16328 ;;
16329 esac
16330done
5f80c64f 16331
b4eb6b3d
JH
16332set X $nonxs_ext
16333shift
16334nonxs_ext="$*"
16335
16336case $usedl in
16337$define)
16338 $cat <<EOM
16339A number of extensions are supplied with $package. You may choose to
16340compile these extensions for dynamic loading (the default), compile
16341them into the $package executable (static loading), or not include
16342them at all. Answer "none" to include no extensions.
16343Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16344
16345EOM
b4eb6b3d
JH
16346 case "$dynamic_ext" in
16347 '') dflt="$avail_ext" ;;
16348 *) dflt="$dynamic_ext"
16349 # Perhaps we are reusing an old out-of-date config.sh.
16350 case "$hint" in
16351 previous)
16352 if test X"$dynamic_ext" != X"$avail_ext"; then
16353 $cat <<EOM
16354NOTICE: Your previous config.sh list may be incorrect.
16355The extensions now available to you are
16356 ${avail_ext}
16357but the default list from your previous config.sh is
16358 ${dynamic_ext}
9c839522 16359
b4eb6b3d
JH
16360EOM
16361 fi
9c839522
PM
16362 ;;
16363 esac
b4eb6b3d
JH
16364 ;;
16365 esac
5f80c64f 16366 case "$dflt" in
b4eb6b3d
JH
16367 '') dflt=none;;
16368 esac
16369 rp="What extensions do you wish to load dynamically?"
16370 . ./myread
16371 case "$ans" in
16372 none) dynamic_ext=' ' ;;
16373 *) dynamic_ext="$ans" ;;
5f80c64f 16374 esac
5f80c64f 16375
b4eb6b3d
JH
16376 case "$static_ext" in
16377 '')
16378 : Exclude those already listed in dynamic linking
16379 dflt=''
16380 for xxx in $avail_ext; do
16381 case " $dynamic_ext " in
16382 *" $xxx "*) ;;
16383 *) dflt="$dflt $xxx" ;;
16384 esac
16385 done
16386 set X $dflt
16387 shift
16388 dflt="$*"
16389 ;;
16390 *) dflt="$static_ext"
16391 ;;
16392 esac
9c839522 16393
b4eb6b3d
JH
16394 case "$dflt" in
16395 '') dflt=none;;
16396 esac
16397 rp="What extensions do you wish to load statically?"
16398 . ./myread
16399 case "$ans" in
16400 none) static_ext=' ' ;;
16401 *) static_ext="$ans" ;;
16402 esac
16403 ;;
16404*)
16405 $cat <<EOM
16406A number of extensions are supplied with $package. Answer "none"
16407to include no extensions.
16408Note that DynaLoader is always built and need not be mentioned here.
9c839522 16409
b4eb6b3d
JH
16410EOM
16411 case "$static_ext" in
16412 '') dflt="$avail_ext" ;;
16413 *) dflt="$static_ext"
16414 # Perhaps we are reusing an old out-of-date config.sh.
16415 case "$hint" in
16416 previous)
16417 if test X"$static_ext" != X"$avail_ext"; then
16418 $cat <<EOM
16419NOTICE: Your previous config.sh list may be incorrect.
16420The extensions now available to you are
16421 ${avail_ext}
16422but the default list from your previous config.sh is
16423 ${static_ext}
5f80c64f
JH
16424
16425EOM
b4eb6b3d
JH
16426 fi
16427 ;;
16428 esac
16429 ;;
16430 esac
16431 : Exclude those that are not xs extensions
16432 case "$dflt" in
16433 '') dflt=none;;
16434 esac
16435 rp="What extensions do you wish to include?"
16436 . ./myread
16437 case "$ans" in
16438 none) static_ext=' ' ;;
16439 *) static_ext="$ans" ;;
16440 esac
16441 ;;
5f80c64f
JH
16442esac
16443
b4eb6b3d
JH
16444set X $dynamic_ext $static_ext $nonxs_ext
16445shift
16446extensions="$*"
16447
9c839522
PM
16448: Remove libraries needed only for extensions
16449: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16450: The exception is SunOS 4.x, which needs them.
16451case "${osname}X${osvers}" in
16452sunos*X4*)
16453 perllibs="$libs"
16454 ;;
16455*) case "$usedl" in
16456 $define|true|[yY]*)
16457 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16458 shift
16459 perllibs="$*"
16460 ;;
16461 *) perllibs="$libs"
16462 ;;
16463 esac
16464 ;;
9c839522 16465esac
5f80c64f
JH
16466
16467: Remove build directory name from cppstdin so it can be used from
16468: either the present location or the final installed location.
16469echo " "
16470: Get out of the UU directory to get correct path name.
16471cd ..
16472case "$cppstdin" in
16473`pwd`/cppstdin)
16474 echo "Stripping down cppstdin path name"
16475 cppstdin=cppstdin
16476 ;;
16477esac
16478cd UU
16479
16480: end of configuration questions
16481echo " "
16482echo "End of configuration questions."
16483echo " "
16484
16485: back to where it started
16486if test -d ../UU; then
16487 cd ..
16488fi
16489
16490: configuration may be patched via a 'config.over' file
16491if $test -f config.over; then
16492 echo " "
16493 dflt=y
16494 rp='I see a config.over file. Do you wish to load it?'
16495 . UU/myread
16496 case "$ans" in
16497 n*) echo "OK, I'll ignore it.";;
16498 *) . ./config.over
16499 echo "Configuration override changes have been loaded."
16500 ;;
16501 esac
16502fi
16503
16504: in case they want portability, strip down executable paths
16505case "$d_portable" in
16506"$define")
16507 echo " "
16508 echo "Stripping down executable paths..." >&4
16509 for file in $loclist $trylist; do
534ac15a
JH
16510 eval temp=\$$file
16511 eval $file=`basename $temp`
5f80c64f
JH
16512 done
16513 ;;
16514esac
16515
16516: create config.sh file
16517echo " "
16518echo "Creating config.sh..." >&4
16519$spitshell <<EOT >config.sh
16520$startsh
16521#
16522# This file was produced by running the Configure script. It holds all the
16523# definitions figured out by Configure. Should you modify one of these values,
16524# do not forget to propagate your changes by running "Configure -der". You may
16525# instead choose to run each of the .SH files by yourself, or "Configure -S".
16526#
16527
16528# Package name : $package
16529# Source directory : $src
16530# Configuration time: $cf_time
16531# Configured by : $cf_by
16532# Target system : $myuname
16533
16534Author='$Author'
16535Date='$Date'
16536Header='$Header'
16537Id='$Id'
16538Locker='$Locker'
16539Log='$Log'
16540Mcc='$Mcc'
16541RCSfile='$RCSfile'
16542Revision='$Revision'
16543Source='$Source'
16544State='$State'
16545_a='$_a'
16546_exe='$_exe'
16547_o='$_o'
b4eb6b3d 16548afs='$afs'
a6d26a0d 16549afsroot='$afsroot'
b4eb6b3d
JH
16550alignbytes='$alignbytes'
16551ansi2knr='$ansi2knr'
16552aphostname='$aphostname'
16553api_revision='$api_revision'
16554api_subversion='$api_subversion'
16555api_version='$api_version'
16556api_versionstring='$api_versionstring'
5f80c64f 16557ar='$ar'
b4eb6b3d
JH
16558archlib='$archlib'
16559archlibexp='$archlibexp'
16560archname64='$archname64'
16561archname='$archname'
5f80c64f
JH
16562archobjs='$archobjs'
16563awk='$awk'
b4eb6b3d 16564baserev='$baserev'
5f80c64f 16565bash='$bash'
b4eb6b3d
JH
16566bin='$bin'
16567bincompat5005='$bincompat5005'
16568binexp='$binexp'
5f80c64f
JH
16569bison='$bison'
16570byacc='$byacc'
b4eb6b3d 16571byteorder='$byteorder'
5f80c64f 16572c='$c'
b4eb6b3d 16573castflags='$castflags'
5f80c64f
JH
16574cat='$cat'
16575cc='$cc'
16576cccdlflags='$cccdlflags'
16577ccdlflags='$ccdlflags'
16578ccflags='$ccflags'
b4eb6b3d 16579ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16580ccname='$ccname'
b4eb6b3d 16581ccsymbols='$ccsymbols'
6b356c8e 16582ccversion='$ccversion'
5f80c64f 16583cf_by='$cf_by'
b4eb6b3d 16584cf_email='$cf_email'
5f80c64f 16585cf_time='$cf_time'
b4eb6b3d 16586charsize='$charsize'
5f80c64f
JH
16587chgrp='$chgrp'
16588chmod='$chmod'
16589chown='$chown'
b4eb6b3d 16590clocktype='$clocktype'
5f80c64f
JH
16591comm='$comm'
16592compress='$compress'
16593contains='$contains'
16594cp='$cp'
16595cpio='$cpio'
16596cpp='$cpp'
b4eb6b3d
JH
16597cpp_stuff='$cpp_stuff'
16598cppccsymbols='$cppccsymbols'
5f80c64f
JH
16599cppflags='$cppflags'
16600cpplast='$cpplast'
16601cppminus='$cppminus'
16602cpprun='$cpprun'
16603cppstdin='$cppstdin'
b4eb6b3d 16604cppsymbols='$cppsymbols'
b4eb6b3d 16605cryptlib='$cryptlib'
5f80c64f 16606csh='$csh'
b4eb6b3d
JH
16607d_Gconvert='$d_Gconvert'
16608d_PRIEUldbl='$d_PRIEUldbl'
16609d_PRIFUldbl='$d_PRIFUldbl'
16610d_PRIGUldbl='$d_PRIGUldbl'
16611d_PRIXU64='$d_PRIXU64'
16612d_PRId64='$d_PRId64'
16613d_PRIeldbl='$d_PRIeldbl'
16614d_PRIfldbl='$d_PRIfldbl'
16615d_PRIgldbl='$d_PRIgldbl'
16616d_PRIi64='$d_PRIi64'
16617d_PRIo64='$d_PRIo64'
16618d_PRIu64='$d_PRIu64'
16619d_PRIx64='$d_PRIx64'
16620d_SCNfldbl='$d_SCNfldbl'
74cac757 16621d__fwalk='$d__fwalk'
b4eb6b3d
JH
16622d_access='$d_access'
16623d_accessx='$d_accessx'
16624d_alarm='$d_alarm'
16625d_archlib='$d_archlib'
16626d_atolf='$d_atolf'
16627d_atoll='$d_atoll'
16628d_attribut='$d_attribut'
16629d_bcmp='$d_bcmp'
16630d_bcopy='$d_bcopy'
16631d_bincompat5005='$d_bincompat5005'
5f80c64f 16632d_bsd='$d_bsd'
b4eb6b3d
JH
16633d_bsdgetpgrp='$d_bsdgetpgrp'
16634d_bsdsetpgrp='$d_bsdsetpgrp'
16635d_bzero='$d_bzero'
16636d_casti32='$d_casti32'
16637d_castneg='$d_castneg'
16638d_charvspr='$d_charvspr'
16639d_chown='$d_chown'
16640d_chroot='$d_chroot'
16641d_chsize='$d_chsize'
16642d_closedir='$d_closedir'
4e0554ec 16643d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
16644d_const='$d_const'
16645d_crypt='$d_crypt'
16646d_csh='$d_csh'
16647d_cuserid='$d_cuserid'
16648d_dbl_dig='$d_dbl_dig'
2ef53570 16649d_dbminitproto='$d_dbminitproto'
b4eb6b3d
JH
16650d_difftime='$d_difftime'
16651d_dirnamlen='$d_dirnamlen'
16652d_dlerror='$d_dlerror'
5f80c64f 16653d_dlopen='$d_dlopen'
b4eb6b3d
JH
16654d_dlsymun='$d_dlsymun'
16655d_dosuid='$d_dosuid'
16656d_drand48proto='$d_drand48proto'
16657d_dup2='$d_dup2'
16658d_eaccess='$d_eaccess'
16659d_endgrent='$d_endgrent'
16660d_endhent='$d_endhent'
16661d_endnent='$d_endnent'
16662d_endpent='$d_endpent'
16663d_endpwent='$d_endpwent'
16664d_endsent='$d_endsent'
16665d_eofnblk='$d_eofnblk'
5f80c64f 16666d_eunice='$d_eunice'
b363b713 16667d_fchdir='$d_fchdir'
b4eb6b3d
JH
16668d_fchmod='$d_fchmod'
16669d_fchown='$d_fchown'
16670d_fcntl='$d_fcntl'
9d9004a9 16671d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
16672d_fd_macros='$d_fd_macros'
16673d_fd_set='$d_fd_set'
16674d_fds_bits='$d_fds_bits'
16675d_fgetpos='$d_fgetpos'
16676d_flexfnam='$d_flexfnam'
16677d_flock='$d_flock'
2ef53570 16678d_flockproto='$d_flockproto'
b4eb6b3d
JH
16679d_fork='$d_fork'
16680d_fpathconf='$d_fpathconf'
16681d_fpos64_t='$d_fpos64_t'
16682d_frexpl='$d_frexpl'
16683d_fs_data_s='$d_fs_data_s'
16684d_fseeko='$d_fseeko'
16685d_fsetpos='$d_fsetpos'
16686d_fstatfs='$d_fstatfs'
16687d_fstatvfs='$d_fstatvfs'
411ab01c 16688d_fsync='$d_fsync'
b4eb6b3d
JH
16689d_ftello='$d_ftello'
16690d_ftime='$d_ftime'
16691d_getcwd='$d_getcwd'
16692d_getespwnam='$d_getespwnam'
16693d_getfsstat='$d_getfsstat'
16694d_getgrent='$d_getgrent'
16695d_getgrps='$d_getgrps'
16696d_gethbyaddr='$d_gethbyaddr'
16697d_gethbyname='$d_gethbyname'
16698d_gethent='$d_gethent'
16699d_gethname='$d_gethname'
16700d_gethostprotos='$d_gethostprotos'
4e0554ec 16701d_getitimer='$d_getitimer'
b4eb6b3d
JH
16702d_getlogin='$d_getlogin'
16703d_getmnt='$d_getmnt'
16704d_getmntent='$d_getmntent'
16705d_getnbyaddr='$d_getnbyaddr'
16706d_getnbyname='$d_getnbyname'
16707d_getnent='$d_getnent'
16708d_getnetprotos='$d_getnetprotos'
0c0643d0 16709d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16710d_getpbyname='$d_getpbyname'
16711d_getpbynumber='$d_getpbynumber'
16712d_getpent='$d_getpent'
16713d_getpgid='$d_getpgid'
16714d_getpgrp2='$d_getpgrp2'
16715d_getpgrp='$d_getpgrp'
16716d_getppid='$d_getppid'
16717d_getprior='$d_getprior'
16718d_getprotoprotos='$d_getprotoprotos'
16719d_getprpwnam='$d_getprpwnam'
16720d_getpwent='$d_getpwent'
16721d_getsbyname='$d_getsbyname'
16722d_getsbyport='$d_getsbyport'
16723d_getsent='$d_getsent'
16724d_getservprotos='$d_getservprotos'
16725d_getspnam='$d_getspnam'
16726d_gettimeod='$d_gettimeod'
5f80c64f 16727d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16728d_grpasswd='$d_grpasswd'
16729d_hasmntopt='$d_hasmntopt'
16730d_htonl='$d_htonl'
16731d_iconv='$d_iconv'
16732d_index='$d_index'
16733d_inetaton='$d_inetaton'
16734d_int64_t='$d_int64_t'
16735d_isascii='$d_isascii'
16736d_isnan='$d_isnan'
16737d_isnanl='$d_isnanl'
16738d_killpg='$d_killpg'
16739d_lchown='$d_lchown'
16740d_ldbl_dig='$d_ldbl_dig'
16741d_link='$d_link'
16742d_locconv='$d_locconv'
16743d_lockf='$d_lockf'
16744d_longdbl='$d_longdbl'
16745d_longlong='$d_longlong'
16746d_lseekproto='$d_lseekproto'
16747d_lstat='$d_lstat'
16748d_madvise='$d_madvise'
16749d_mblen='$d_mblen'
16750d_mbstowcs='$d_mbstowcs'
16751d_mbtowc='$d_mbtowc'
16752d_memchr='$d_memchr'
16753d_memcmp='$d_memcmp'
16754d_memcpy='$d_memcpy'
16755d_memmove='$d_memmove'
16756d_memset='$d_memset'
16757d_mkdir='$d_mkdir'
16758d_mkdtemp='$d_mkdtemp'
16759d_mkfifo='$d_mkfifo'
16760d_mkstemp='$d_mkstemp'
16761d_mkstemps='$d_mkstemps'
16762d_mktime='$d_mktime'
16763d_mmap='$d_mmap'
16764d_modfl='$d_modfl'
e67aeab1 16765d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
16766d_mprotect='$d_mprotect'
16767d_msg='$d_msg'
16768d_msg_ctrunc='$d_msg_ctrunc'
16769d_msg_dontroute='$d_msg_dontroute'
16770d_msg_oob='$d_msg_oob'
16771d_msg_peek='$d_msg_peek'
16772d_msg_proxy='$d_msg_proxy'
16773d_msgctl='$d_msgctl'
16774d_msgget='$d_msgget'
4e0554ec 16775d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
16776d_msgrcv='$d_msgrcv'
16777d_msgsnd='$d_msgsnd'
16778d_msync='$d_msync'
16779d_munmap='$d_munmap'
16780d_mymalloc='$d_mymalloc'
16781d_nice='$d_nice'
2765b840 16782d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
16783d_nv_preserves_uv='$d_nv_preserves_uv'
16784d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16785d_off64_t='$d_off64_t'
16786d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16787d_oldpthreads='$d_oldpthreads'
16788d_oldsock='$d_oldsock'
16789d_open3='$d_open3'
16790d_pathconf='$d_pathconf'
16791d_pause='$d_pause'
16792d_perl_otherlibdirs='$d_perl_otherlibdirs'
16793d_phostname='$d_phostname'
16794d_pipe='$d_pipe'
16795d_poll='$d_poll'
5f80c64f 16796d_portable='$d_portable'
b4eb6b3d
JH
16797d_pthread_yield='$d_pthread_yield'
16798d_pwage='$d_pwage'
16799d_pwchange='$d_pwchange'
16800d_pwclass='$d_pwclass'
16801d_pwcomment='$d_pwcomment'
16802d_pwexpire='$d_pwexpire'
16803d_pwgecos='$d_pwgecos'
16804d_pwpasswd='$d_pwpasswd'
16805d_pwquota='$d_pwquota'
16806d_qgcvt='$d_qgcvt'
16807d_quad='$d_quad'
16808d_readdir='$d_readdir'
16809d_readlink='$d_readlink'
4e0554ec
JH
16810d_readv='$d_readv'
16811d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
16812d_rename='$d_rename'
16813d_rewinddir='$d_rewinddir'
16814d_rmdir='$d_rmdir'
16815d_safebcpy='$d_safebcpy'
16816d_safemcpy='$d_safemcpy'
16817d_sanemcmp='$d_sanemcmp'
ef9f17be 16818d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16819d_sched_yield='$d_sched_yield'
16820d_scm_rights='$d_scm_rights'
16821d_seekdir='$d_seekdir'
16822d_select='$d_select'
16823d_sem='$d_sem'
16824d_semctl='$d_semctl'
16825d_semctl_semid_ds='$d_semctl_semid_ds'
16826d_semctl_semun='$d_semctl_semun'
16827d_semget='$d_semget'
16828d_semop='$d_semop'
4e0554ec 16829d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
16830d_setegid='$d_setegid'
16831d_seteuid='$d_seteuid'
16832d_setgrent='$d_setgrent'
16833d_setgrps='$d_setgrps'
16834d_sethent='$d_sethent'
4e0554ec 16835d_setitimer='$d_setitimer'
b4eb6b3d
JH
16836d_setlinebuf='$d_setlinebuf'
16837d_setlocale='$d_setlocale'
16838d_setnent='$d_setnent'
16839d_setpent='$d_setpent'
16840d_setpgid='$d_setpgid'
16841d_setpgrp2='$d_setpgrp2'
16842d_setpgrp='$d_setpgrp'
16843d_setprior='$d_setprior'
16844d_setproctitle='$d_setproctitle'
16845d_setpwent='$d_setpwent'
16846d_setregid='$d_setregid'
16847d_setresgid='$d_setresgid'
16848d_setresuid='$d_setresuid'
16849d_setreuid='$d_setreuid'
16850d_setrgid='$d_setrgid'
16851d_setruid='$d_setruid'
16852d_setsent='$d_setsent'
16853d_setsid='$d_setsid'
16854d_setvbuf='$d_setvbuf'
16855d_sfio='$d_sfio'
16856d_shm='$d_shm'
16857d_shmat='$d_shmat'
16858d_shmatprototype='$d_shmatprototype'
16859d_shmctl='$d_shmctl'
16860d_shmdt='$d_shmdt'
16861d_shmget='$d_shmget'
16862d_sigaction='$d_sigaction'
983dbef6 16863d_sigprocmask='$d_sigprocmask'
b4eb6b3d 16864d_sigsetjmp='$d_sigsetjmp'
49a78c82 16865d_sockatmark='$d_sockatmark'
2ef53570 16866d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
16867d_socket='$d_socket'
16868d_socklen_t='$d_socklen_t'
16869d_sockpair='$d_sockpair'
16870d_socks5_init='$d_socks5_init'
16871d_sqrtl='$d_sqrtl'
eef837ea 16872d_sresgproto='$d_sresgproto'
640374d0 16873d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
16874d_statblks='$d_statblks'
16875d_statfs_f_flags='$d_statfs_f_flags'
16876d_statfs_s='$d_statfs_s'
16877d_statvfs='$d_statvfs'
16878d_stdio_cnt_lval='$d_stdio_cnt_lval'
16879d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
16880d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16881d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
16882d_stdio_stream_array='$d_stdio_stream_array'
16883d_stdiobase='$d_stdiobase'
16884d_stdstdio='$d_stdstdio'
16885d_strchr='$d_strchr'
16886d_strcoll='$d_strcoll'
16887d_strctcpy='$d_strctcpy'
16888d_strerrm='$d_strerrm'
16889d_strerror='$d_strerror'
b3c85772 16890d_strftime='$d_strftime'
b4eb6b3d
JH
16891d_strtod='$d_strtod'
16892d_strtol='$d_strtol'
16893d_strtold='$d_strtold'
16894d_strtoll='$d_strtoll'
28e5dec8 16895d_strtoq='$d_strtoq'
b4eb6b3d
JH
16896d_strtoul='$d_strtoul'
16897d_strtoull='$d_strtoull'
16898d_strtouq='$d_strtouq'
16899d_strxfrm='$d_strxfrm'
16900d_suidsafe='$d_suidsafe'
16901d_symlink='$d_symlink'
16902d_syscall='$d_syscall'
2ef53570 16903d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
16904d_sysconf='$d_sysconf'
16905d_sysernlst='$d_sysernlst'
16906d_syserrlst='$d_syserrlst'
16907d_system='$d_system'
16908d_tcgetpgrp='$d_tcgetpgrp'
16909d_tcsetpgrp='$d_tcsetpgrp'
16910d_telldir='$d_telldir'
16911d_telldirproto='$d_telldirproto'
16912d_time='$d_time'
16913d_times='$d_times'
16914d_truncate='$d_truncate'
16915d_tzname='$d_tzname'
4e0554ec
JH
16916d_u32align='$d_u32align'
16917d_ualarm='$d_ualarm'
b4eb6b3d
JH
16918d_umask='$d_umask'
16919d_uname='$d_uname'
16920d_union_semun='$d_union_semun'
4e0554ec 16921d_usleep='$d_usleep'
2ef53570 16922d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
16923d_ustat='$d_ustat'
16924d_vendorarch='$d_vendorarch'
16925d_vendorbin='$d_vendorbin'
16926d_vendorlib='$d_vendorlib'
16927d_vfork='$d_vfork'
16928d_void_closedir='$d_void_closedir'
16929d_voidsig='$d_voidsig'
16930d_voidtty='$d_voidtty'
16931d_volatile='$d_volatile'
16932d_vprintf='$d_vprintf'
16933d_wait4='$d_wait4'
16934d_waitpid='$d_waitpid'
16935d_wcstombs='$d_wcstombs'
16936d_wctomb='$d_wctomb'
4e0554ec 16937d_writev='$d_writev'
5f80c64f
JH
16938d_xenix='$d_xenix'
16939date='$date'
b4eb6b3d
JH
16940db_hashtype='$db_hashtype'
16941db_prefixtype='$db_prefixtype'
640374d0
JH
16942db_version_major='$db_version_major'
16943db_version_minor='$db_version_minor'
16944db_version_patch='$db_version_patch'
b4eb6b3d
JH
16945defvoidused='$defvoidused'
16946direntrytype='$direntrytype'
16947dlext='$dlext'
5f80c64f 16948dlsrc='$dlsrc'
b4eb6b3d
JH
16949doublesize='$doublesize'
16950drand01='$drand01'
16951dynamic_ext='$dynamic_ext'
16952eagain='$eagain'
16953ebcdic='$ebcdic'
5f80c64f
JH
16954echo='$echo'
16955egrep='$egrep'
16956emacs='$emacs'
16957eunicefix='$eunicefix'
16958exe_ext='$exe_ext'
16959expr='$expr'
b4eb6b3d
JH
16960extensions='$extensions'
16961fflushNULL='$fflushNULL'
16962fflushall='$fflushall'
5f80c64f
JH
16963find='$find'
16964firstmakefile='$firstmakefile'
16965flex='$flex'
b4eb6b3d
JH
16966fpossize='$fpossize'
16967fpostype='$fpostype'
16968freetype='$freetype'
5440bc8e 16969from='$from'
b4eb6b3d
JH
16970full_ar='$full_ar'
16971full_csh='$full_csh'
16972full_sed='$full_sed'
5b463ca7 16973gccosandvers='$gccosandvers'
5f80c64f 16974gccversion='$gccversion'
b4eb6b3d
JH
16975gidformat='$gidformat'
16976gidsign='$gidsign'
16977gidsize='$gidsize'
16978gidtype='$gidtype'
5f80c64f
JH
16979glibpth='$glibpth'
16980grep='$grep'
b4eb6b3d
JH
16981groupcat='$groupcat'
16982groupstype='$groupstype'
5f80c64f 16983gzip='$gzip'
b4eb6b3d
JH
16984h_fcntl='$h_fcntl'
16985h_sysfile='$h_sysfile'
5f80c64f 16986hint='$hint'
b4eb6b3d
JH
16987hostcat='$hostcat'
16988i16size='$i16size'
16989i16type='$i16type'
16990i32size='$i32size'
16991i32type='$i32type'
16992i64size='$i64size'
16993i64type='$i64type'
16994i8size='$i8size'
16995i8type='$i8type'
16996i_arpainet='$i_arpainet'
16997i_bsdioctl='$i_bsdioctl'
16998i_db='$i_db'
16999i_dbm='$i_dbm'
17000i_dirent='$i_dirent'
5f80c64f 17001i_dld='$i_dld'
b4eb6b3d
JH
17002i_dlfcn='$i_dlfcn'
17003i_fcntl='$i_fcntl'
17004i_float='$i_float'
17005i_gdbm='$i_gdbm'
17006i_grp='$i_grp'
17007i_iconv='$i_iconv'
17008i_ieeefp='$i_ieeefp'
17009i_inttypes='$i_inttypes'
2765b840 17010i_langinfo='$i_langinfo'
b4eb6b3d
JH
17011i_libutil='$i_libutil'
17012i_limits='$i_limits'
17013i_locale='$i_locale'
17014i_machcthr='$i_machcthr'
17015i_malloc='$i_malloc'
17016i_math='$i_math'
17017i_memory='$i_memory'
17018i_mntent='$i_mntent'
17019i_ndbm='$i_ndbm'
17020i_netdb='$i_netdb'
17021i_neterrno='$i_neterrno'
17022i_netinettcp='$i_netinettcp'
17023i_niin='$i_niin'
17024i_poll='$i_poll'
17025i_prot='$i_prot'
17026i_pthread='$i_pthread'
17027i_pwd='$i_pwd'
17028i_rpcsvcdbm='$i_rpcsvcdbm'
17029i_sfio='$i_sfio'
17030i_sgtty='$i_sgtty'
17031i_shadow='$i_shadow'
17032i_socks='$i_socks'
17033i_stdarg='$i_stdarg'
17034i_stddef='$i_stddef'
17035i_stdlib='$i_stdlib'
17036i_string='$i_string'
17037i_sunmath='$i_sunmath'
17038i_sysaccess='$i_sysaccess'
17039i_sysdir='$i_sysdir'
17040i_sysfile='$i_sysfile'
17041i_sysfilio='$i_sysfilio'
17042i_sysin='$i_sysin'
17043i_sysioctl='$i_sysioctl'
17044i_syslog='$i_syslog'
17045i_sysmman='$i_sysmman'
17046i_sysmode='$i_sysmode'
17047i_sysmount='$i_sysmount'
17048i_sysndir='$i_sysndir'
17049i_sysparam='$i_sysparam'
17050i_sysresrc='$i_sysresrc'
17051i_syssecrt='$i_syssecrt'
17052i_sysselct='$i_sysselct'
17053i_syssockio='$i_syssockio'
17054i_sysstat='$i_sysstat'
17055i_sysstatfs='$i_sysstatfs'
17056i_sysstatvfs='$i_sysstatvfs'
17057i_systime='$i_systime'
17058i_systimek='$i_systimek'
17059i_systimes='$i_systimes'
17060i_systypes='$i_systypes'
17061i_sysuio='$i_sysuio'
17062i_sysun='$i_sysun'
17063i_sysutsname='$i_sysutsname'
17064i_sysvfs='$i_sysvfs'
17065i_syswait='$i_syswait'
17066i_termio='$i_termio'
17067i_termios='$i_termios'
17068i_time='$i_time'
17069i_unistd='$i_unistd'
17070i_ustat='$i_ustat'
17071i_utime='$i_utime'
17072i_values='$i_values'
17073i_varargs='$i_varargs'
17074i_varhdr='$i_varhdr'
17075i_vfork='$i_vfork'
5f80c64f 17076ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17077inc_version_list='$inc_version_list'
17078inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17079incpath='$incpath'
17080inews='$inews'
b4eb6b3d
JH
17081installarchlib='$installarchlib'
17082installbin='$installbin'
17083installman1dir='$installman1dir'
17084installman3dir='$installman3dir'
17085installprefix='$installprefix'
17086installprefixexp='$installprefixexp'
17087installprivlib='$installprivlib'
17088installscript='$installscript'
17089installsitearch='$installsitearch'
17090installsitebin='$installsitebin'
17091installsitelib='$installsitelib'
17092installstyle='$installstyle'
17093installusrbinperl='$installusrbinperl'
17094installvendorarch='$installvendorarch'
17095installvendorbin='$installvendorbin'
17096installvendorlib='$installvendorlib'
17097intsize='$intsize'
4b661809 17098issymlink='$issymlink'
b4eb6b3d
JH
17099ivdformat='$ivdformat'
17100ivsize='$ivsize'
17101ivtype='$ivtype'
17102known_extensions='$known_extensions'
5f80c64f 17103ksh='$ksh'
5f80c64f
JH
17104ld='$ld'
17105lddlflags='$lddlflags'
17106ldflags='$ldflags'
b4eb6b3d
JH
17107ldflags_uselargefiles='$ldflags_uselargefiles'
17108ldlibpthname='$ldlibpthname'
5f80c64f
JH
17109less='$less'
17110lib_ext='$lib_ext'
17111libc='$libc'
b4eb6b3d 17112libperl='$libperl'
5f80c64f
JH
17113libpth='$libpth'
17114libs='$libs'
43999f95
JH
17115libsdirs='$libsdirs'
17116libsfiles='$libsfiles'
17117libsfound='$libsfound'
13b3f787 17118libspath='$libspath'
5f80c64f 17119libswanted='$libswanted'
b4eb6b3d 17120libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17121line='$line'
17122lint='$lint'
17123lkflags='$lkflags'
17124ln='$ln'
17125lns='$lns'
17126locincpth='$locincpth'
17127loclibpth='$loclibpth'
b4eb6b3d
JH
17128longdblsize='$longdblsize'
17129longlongsize='$longlongsize'
17130longsize='$longsize'
5f80c64f
JH
17131lp='$lp'
17132lpr='$lpr'
17133ls='$ls'
b4eb6b3d
JH
17134lseeksize='$lseeksize'
17135lseektype='$lseektype'
5f80c64f
JH
17136mail='$mail'
17137mailx='$mailx'
17138make='$make'
17139make_set_make='$make_set_make'
b4eb6b3d
JH
17140mallocobj='$mallocobj'
17141mallocsrc='$mallocsrc'
17142malloctype='$malloctype'
17143man1dir='$man1dir'
17144man1direxp='$man1direxp'
17145man1ext='$man1ext'
17146man3dir='$man3dir'
17147man3direxp='$man3direxp'
17148man3ext='$man3ext'
5f80c64f
JH
17149mips_type='$mips_type'
17150mkdir='$mkdir'
b4eb6b3d
JH
17151mmaptype='$mmaptype'
17152modetype='$modetype'
5f80c64f 17153more='$more'
b4eb6b3d 17154multiarch='$multiarch'
5f80c64f 17155mv='$mv'
b4eb6b3d
JH
17156myarchname='$myarchname'
17157mydomain='$mydomain'
17158myhostname='$myhostname'
5f80c64f
JH
17159myuname='$myuname'
17160n='$n'
2cc61e15 17161need_va_copy='$need_va_copy'
b4eb6b3d
JH
17162netdb_hlen_type='$netdb_hlen_type'
17163netdb_host_type='$netdb_host_type'
17164netdb_name_type='$netdb_name_type'
17165netdb_net_type='$netdb_net_type'
5f80c64f
JH
17166nm='$nm'
17167nm_opt='$nm_opt'
17168nm_so_opt='$nm_so_opt'
b4eb6b3d 17169nonxs_ext='$nonxs_ext'
5f80c64f 17170nroff='$nroff'
b4eb6b3d
JH
17171nvEUformat='$nvEUformat'
17172nvFUformat='$nvFUformat'
17173nvGUformat='$nvGUformat'
17174nveformat='$nveformat'
17175nvfformat='$nvfformat'
17176nvgformat='$nvgformat'
17177nvsize='$nvsize'
17178nvtype='$nvtype'
17179o_nonblock='$o_nonblock'
5f80c64f 17180obj_ext='$obj_ext'
b4eb6b3d 17181old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17182optimize='$optimize'
b4eb6b3d 17183orderlib='$orderlib'
5f80c64f
JH
17184osname='$osname'
17185osvers='$osvers'
b4eb6b3d 17186otherlibdirs='$otherlibdirs'
5f80c64f 17187package='$package'
b4eb6b3d
JH
17188pager='$pager'
17189passcat='$passcat'
17190patchlevel='$patchlevel'
5f80c64f 17191path_sep='$path_sep'
b4eb6b3d 17192perl5='$perl5'
5f80c64f 17193perl='$perl'
151e6568 17194perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17195perladmin='$perladmin'
9c839522 17196perllibs='$perllibs'
b4eb6b3d 17197perlpath='$perlpath'
5f80c64f 17198pg='$pg'
b4eb6b3d
JH
17199phostname='$phostname'
17200pidtype='$pidtype'
5f80c64f 17201plibpth='$plibpth'
b4eb6b3d 17202pm_apiversion='$pm_apiversion'
5f80c64f
JH
17203pmake='$pmake'
17204pr='$pr'
b4eb6b3d
JH
17205prefix='$prefix'
17206prefixexp='$prefixexp'
17207privlib='$privlib'
17208privlibexp='$privlibexp'
17209prototype='$prototype'
17210ptrsize='$ptrsize'
17211quadkind='$quadkind'
17212quadtype='$quadtype'
17213randbits='$randbits'
17214randfunc='$randfunc'
17215randseedtype='$randseedtype'
17216ranlib='$ranlib'
17217rd_nodata='$rd_nodata'
17218revision='$revision'
5f80c64f
JH
17219rm='$rm'
17220rmail='$rmail'
5440bc8e 17221run='$run'
5f80c64f 17222runnm='$runnm'
b4eb6b3d
JH
17223sPRIEUldbl='$sPRIEUldbl'
17224sPRIFUldbl='$sPRIFUldbl'
17225sPRIGUldbl='$sPRIGUldbl'
17226sPRIXU64='$sPRIXU64'
17227sPRId64='$sPRId64'
17228sPRIeldbl='$sPRIeldbl'
17229sPRIfldbl='$sPRIfldbl'
17230sPRIgldbl='$sPRIgldbl'
17231sPRIi64='$sPRIi64'
17232sPRIo64='$sPRIo64'
17233sPRIu64='$sPRIu64'
17234sPRIx64='$sPRIx64'
17235sSCNfldbl='$sSCNfldbl'
17236sched_yield='$sched_yield'
17237scriptdir='$scriptdir'
17238scriptdirexp='$scriptdirexp'
5f80c64f 17239sed='$sed'
b4eb6b3d
JH
17240seedfunc='$seedfunc'
17241selectminbits='$selectminbits'
17242selecttype='$selecttype'
5f80c64f
JH
17243sendmail='$sendmail'
17244sh='$sh'
17245shar='$shar'
17246sharpbang='$sharpbang'
b4eb6b3d
JH
17247shmattype='$shmattype'
17248shortsize='$shortsize'
17249shrpenv='$shrpenv'
5f80c64f 17250shsharp='$shsharp'
b4eb6b3d
JH
17251sig_count='$sig_count'
17252sig_name='$sig_name'
17253sig_name_init='$sig_name_init'
17254sig_num='$sig_num'
17255sig_num_init='$sig_num_init'
76d3c696 17256sig_size='$sig_size'
b4eb6b3d
JH
17257signal_t='$signal_t'
17258sitearch='$sitearch'
17259sitearchexp='$sitearchexp'
17260sitebin='$sitebin'
17261sitebinexp='$sitebinexp'
17262sitelib='$sitelib'
17263sitelib_stem='$sitelib_stem'
17264sitelibexp='$sitelibexp'
17265siteprefix='$siteprefix'
17266siteprefixexp='$siteprefixexp'
17267sizesize='$sizesize'
17268sizetype='$sizetype'
5f80c64f
JH
17269sleep='$sleep'
17270smail='$smail'
5f80c64f 17271so='$so'
b4eb6b3d
JH
17272sockethdr='$sockethdr'
17273socketlib='$socketlib'
17274socksizetype='$socksizetype'
5f80c64f
JH
17275sort='$sort'
17276spackage='$spackage'
17277spitshell='$spitshell'
5f80c64f 17278src='$src'
b4eb6b3d
JH
17279ssizetype='$ssizetype'
17280startperl='$startperl'
5f80c64f 17281startsh='$startsh'
b4eb6b3d
JH
17282static_ext='$static_ext'
17283stdchar='$stdchar'
17284stdio_base='$stdio_base'
17285stdio_bufsiz='$stdio_bufsiz'
17286stdio_cnt='$stdio_cnt'
17287stdio_filbuf='$stdio_filbuf'
17288stdio_ptr='$stdio_ptr'
17289stdio_stream_array='$stdio_stream_array'
17290strings='$strings'
5f80c64f 17291submit='$submit'
b4eb6b3d
JH
17292subversion='$subversion'
17293sysman='$sysman'
5f80c64f
JH
17294tail='$tail'
17295tar='$tar'
5440bc8e 17296targetarch='$targetarch'
5f80c64f
JH
17297tbl='$tbl'
17298tee='$tee'
17299test='$test'
b4eb6b3d
JH
17300timeincl='$timeincl'
17301timetype='$timetype'
5440bc8e 17302to='$to'
5f80c64f
JH
17303touch='$touch'
17304tr='$tr'
17305trnl='$trnl'
17306troff='$troff'
b4eb6b3d
JH
17307u16size='$u16size'
17308u16type='$u16type'
17309u32size='$u32size'
17310u32type='$u32type'
17311u64size='$u64size'
17312u64type='$u64type'
17313u8size='$u8size'
17314u8type='$u8type'
17315uidformat='$uidformat'
17316uidsign='$uidsign'
17317uidsize='$uidsize'
17318uidtype='$uidtype'
5f80c64f
JH
17319uname='$uname'
17320uniq='$uniq'
b4eb6b3d
JH
17321uquadtype='$uquadtype'
17322use5005threads='$use5005threads'
17323use64bitall='$use64bitall'
17324use64bitint='$use64bitint'
5440bc8e 17325usecrosscompile='$usecrosscompile'
5f80c64f 17326usedl='$usedl'
b4eb6b3d
JH
17327useithreads='$useithreads'
17328uselargefiles='$uselargefiles'
17329uselongdouble='$uselongdouble'
17330usemorebits='$usemorebits'
17331usemultiplicity='$usemultiplicity'
17332usemymalloc='$usemymalloc'
5f80c64f 17333usenm='$usenm'
b4eb6b3d
JH
17334useopcode='$useopcode'
17335useperlio='$useperlio'
17336useposix='$useposix'
9514c62b 17337usereentrant='$usereentrant'
b4eb6b3d
JH
17338usesfio='$usesfio'
17339useshrplib='$useshrplib'
29209bc5 17340usesocks='$usesocks'
b4eb6b3d
JH
17341usethreads='$usethreads'
17342usevendorprefix='$usevendorprefix'
17343usevfork='$usevfork'
5f80c64f
JH
17344usrinc='$usrinc'
17345uuname='$uuname'
b4eb6b3d
JH
17346uvXUformat='$uvXUformat'
17347uvoformat='$uvoformat'
17348uvsize='$uvsize'
17349uvtype='$uvtype'
17350uvuformat='$uvuformat'
17351uvxformat='$uvxformat'
17352vendorarch='$vendorarch'
17353vendorarchexp='$vendorarchexp'
17354vendorbin='$vendorbin'
17355vendorbinexp='$vendorbinexp'
17356vendorlib='$vendorlib'
17357vendorlib_stem='$vendorlib_stem'
17358vendorlibexp='$vendorlibexp'
17359vendorprefix='$vendorprefix'
17360vendorprefixexp='$vendorprefixexp'
17361version='$version'
d56c5707 17362versiononly='$versiononly'
5f80c64f 17363vi='$vi'
b4eb6b3d 17364voidflags='$voidflags'
5f80c64f 17365xlibpth='$xlibpth'
b4eb6b3d 17366xs_apiversion='$xs_apiversion'
3659ebf1
JH
17367yacc='$yacc'
17368yaccflags='$yaccflags'
5f80c64f
JH
17369zcat='$zcat'
17370zip='$zip'
17371EOT
17372
17373: Add in command line options if available
17374$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17375
17376: add special variables
17377$test -f $src/patchlevel.h && \
d00b958f 17378awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17379echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17380echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17381
17382: propagate old symbols
17383if $test -f UU/config.sh; then
381aa1ff 17384 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17385 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17386 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17387 set X `cat UU/oldsyms`
17388 shift
17389 case $# in
17390 0) ;;
17391 *)
17392 cat <<EOM
17393Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17394EOM
17395 echo "# Variables propagated from previous config.sh file." >>config.sh
17396 for sym in `cat UU/oldsyms`; do
17397 echo " Propagating $hint variable "'$'"$sym..."
17398 eval 'tmp="$'"${sym}"'"'
17399 echo "$tmp" | \
17400 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17401 done
17402 ;;
17403 esac
17404fi
17405
17406: Finish up by extracting the .SH files
17407case "$alldone" in
17408exit)
17409 $rm -rf UU
24ccb310 17410 echo "Extraction done."
5f80c64f
JH
17411 exit 0
17412 ;;
17413cont)
17414 ;;
17415'')
17416 dflt=''
17417 nostick=true
17418 $cat <<EOM
17419
17420If you'd like to make any changes to the config.sh file before I begin
17421to configure things, do it as a shell escape now (e.g. !vi config.sh).
17422
17423EOM
17424 rp="Press return or use a shell escape to edit config.sh:"
17425 . UU/myread
17426 nostick=''
17427 case "$ans" in
17428 '') ;;
17429 *) : in case they cannot read
17430 sh 1>&4 -c "$ans";;
17431 esac
17432 ;;
17433esac
17434
17435: if this fails, just run all the .SH files by hand
17436. ./config.sh
17437
17438echo " "
17439exec 1>&4
a43e8593 17440pwd=`pwd`
5f80c64f 17441. ./UU/extract
a43e8593 17442cd $pwd
5f80c64f
JH
17443
17444if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17445 dflt=y
17446 case "$silent" in
17447 true) ;;
17448 *)
17449 $cat <<EOM
17450
17451Now you need to generate make dependencies by running "$make depend".
17452You might prefer to run it in background: "$make depend > makedepend.out &"
17453It can take a while, so you might not want to run it right now.
17454
17455EOM
17456 ;;
17457 esac
17458 rp="Run $make depend now?"
17459 . UU/myread
17460 case "$ans" in
17461 y*)
3d5d58b1 17462 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17463 ;;
17464 *)
17465 echo "You must run '$make depend' then '$make'."
17466 ;;
17467 esac
17468elif test -f [Mm]akefile; then
17469 echo " "
17470 echo "Now you must run a $make."
17471else
24ccb310 17472 echo "Configure done."
5f80c64f
JH
17473fi
17474
17475if $test -f Policy.sh; then
17476 $cat <<EOM
17477
17478If you compile $package on a different machine or from a different object
17479directory, copy the Policy.sh file from this object directory to the
17480new one before you run Configure -- this will help you with most of
17481the policy defaults.
17482
17483EOM
17484fi
17485if $test -f config.msg; then
17486 echo "Hmm. I also noted the following information while running:"
17487 echo " "
17488 $cat config.msg >&4
17489 $rm -f config.msg
17490fi
17491$rm -f kit*isdone ark*isdone
17492$rm -rf UU
17493
17494: End of Configure
17495