This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Retract #10142, the real culprit found by Richard Hatch,
[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#
832492ee 23# Generated on Mon Jul 2 19:35:08 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
5579 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
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
JH
9867#include <signal.h>
9868#ifdef SIGALRM
9869$signal_t blech(x) int x; { exit(3); }
9870#endif
9871EOCP
9872$cat >try.c <<'EOCP'
9d9004a9
AD
9873int main() {
9874#if defined(F_SETLK) && defined(F_SETLKW)
9875 struct flock flock;
9876 int retval, fd;
9877 fd = open("try.c", O_RDONLY);
9878 flock.l_type = F_RDLCK;
9879 flock.l_whence = SEEK_SET;
9880 flock.l_start = flock.l_len = 0;
832492ee
JH
9881#ifdef SIGALRM
9882 signal(SIGALRM, blech);
9883 alarm(10);
9884#endif
9d9004a9
AD
9885 retval = fcntl(fd, F_SETLK, &flock);
9886 close(fd);
9887 (retval < 0 ? exit(2) : exit(0));
9888#else
9889 exit(2);
9890#endif
9891}
9892EOCP
9893echo "Checking if fcntl-based file locking works... "
9894case "$d_fcntl" in
9895"$define")
9896 set try
9897 if eval $compile_ok; then
5440bc8e 9898 if $run ./try; then
9d9004a9
AD
9899 echo "Yes, it seems to work."
9900 val="$define"
9901 else
9902 echo "Nope, it didn't work."
9903 val="$undef"
832492ee
JH
9904 case "$?" in
9905 3) $cat >&4 <<EOM
9906***
9907*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9908*** This is (almost) impossible.
9909*** If your NFS lock daemons are not feeling well, something like
9910*** this may happen, please investigate. Cannot continue, aborting.
9911***
9912EOM
9913 exit 1
9914 ;;
9915 esac
9d9004a9
AD
9916 fi
9917 else
9918 echo "I'm unable to compile the test program, so I'll assume not."
9919 val="$undef"
9920 fi
9921 ;;
9922*) val="$undef";
9923 echo "Nope, since you don't even have fcntl()."
9924 ;;
9925esac
9926set d_fcntl_can_lock
9927eval $setvar
9928$rm -f try*
9929
9930
b4eb6b3d
JH
9931: see if sys/select.h has to be included
9932set sys/select.h i_sysselct
9933eval $inhdr
9934
9935: see if we should include time.h, sys/time.h, or both
9936echo " "
9937if test "X$timeincl" = X; then
9938 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9939 $echo $n "I'm now running the test program...$c"
9940 $cat >try.c <<'EOCP'
9941#include <sys/types.h>
9942#ifdef I_TIME
9943#include <time.h>
9944#endif
9945#ifdef I_SYSTIME
9946#ifdef SYSTIMEKERNEL
9947#define KERNEL
9948#endif
9949#include <sys/time.h>
9950#endif
9951#ifdef I_SYSSELECT
9952#include <sys/select.h>
9953#endif
9954int main()
9955{
9956 struct tm foo;
9957#ifdef S_TIMEVAL
9958 struct timeval bar;
9959#endif
9960#ifdef S_TIMEZONE
9961 struct timezone tzp;
9962#endif
9963 if (foo.tm_sec == foo.tm_sec)
9964 exit(0);
9965#ifdef S_TIMEVAL
9966 if (bar.tv_sec == bar.tv_sec)
9967 exit(0);
9968#endif
9969 exit(1);
9970}
9971EOCP
9972 flags=''
9973 for s_timezone in '-DS_TIMEZONE' ''; do
9974 sysselect=''
9975 for s_timeval in '-DS_TIMEVAL' ''; do
9976 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9977 for i_time in '' '-DI_TIME'; do
9978 for i_systime in '-DI_SYSTIME' ''; do
9979 case "$flags" in
9980 '') $echo $n ".$c"
9981 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9982 if eval $compile; then
9983 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9984 shift
9985 flags="$*"
9986 echo " "
9987 $echo $n "Succeeded with $flags$c"
9988 fi
9989 ;;
9990 esac
9991 done
9992 done
9993 done
9994 done
9995 done
9996 timeincl=''
9997 echo " "
9998 case "$flags" in
9999 *SYSTIMEKERNEL*) i_systimek="$define"
10000 timeincl=`./findhdr sys/time.h`
10001 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10002 *) i_systimek="$undef";;
10003 esac
10004 case "$flags" in
10005 *I_TIME*) i_time="$define"
10006 timeincl=`./findhdr time.h`" $timeincl"
10007 echo "We'll include <time.h>." >&4;;
10008 *) i_time="$undef";;
10009 esac
10010 case "$flags" in
10011 *I_SYSTIME*) i_systime="$define"
10012 timeincl=`./findhdr sys/time.h`" $timeincl"
10013 echo "We'll include <sys/time.h>." >&4;;
10014 *) i_systime="$undef";;
10015 esac
10016 $rm -f try.c try
10017fi
10018
10019: check for fd_set items
10020$cat <<EOM
10021
10022Checking to see how well your C compiler handles fd_set and friends ...
10023EOM
5440bc8e 10024$cat >try.c <<EOCP
b4eb6b3d
JH
10025#$i_systime I_SYS_TIME
10026#$i_sysselct I_SYS_SELECT
10027#$d_socket HAS_SOCKET
10028#include <sys/types.h>
10029#ifdef HAS_SOCKET
10030#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10031#endif
10032#ifdef I_SYS_TIME
10033#include <sys/time.h>
10034#endif
10035#ifdef I_SYS_SELECT
10036#include <sys/select.h>
10037#endif
10038int main() {
10039 fd_set fds;
10040
10041#ifdef TRYBITS
10042 if(fds.fds_bits);
10043#endif
10044
10045#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10046 exit(0);
10047#else
10048 exit(1);
10049#endif
10050}
10051EOCP
5440bc8e 10052set try -DTRYBITS
b4eb6b3d
JH
10053if eval $compile; then
10054 d_fds_bits="$define"
10055 d_fd_set="$define"
10056 echo "Well, your system knows about the normal fd_set typedef..." >&4
5440bc8e 10057 if $run ./try; then
b4eb6b3d
JH
10058 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10059 d_fd_macros="$define"
10060 else
10061 $cat >&4 <<'EOM'
10062but not the normal fd_set macros! Gaaack! I'll have to cover for you.
10063EOM
10064 d_fd_macros="$undef"
10065 fi
10066else
10067 $cat <<'EOM'
10068Hmm, your compiler has some difficulty with fd_set. Checking further...
10069EOM
5440bc8e 10070 set try
b4eb6b3d
JH
10071 if eval $compile; then
10072 d_fds_bits="$undef"
10073 d_fd_set="$define"
10074 echo "Well, your system has some sort of fd_set available..." >&4
5440bc8e 10075 if $run ./try; then
b4eb6b3d
JH
10076 echo "and you have the normal fd_set macros." >&4
10077 d_fd_macros="$define"
10078 else
10079 $cat <<'EOM'
10080but not the normal fd_set macros! Gross! More work for me...
10081EOM
10082 d_fd_macros="$undef"
10083 fi
10084 else
10085 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
10086 d_fd_set="$undef"
10087 d_fds_bits="$undef"
10088 d_fd_macros="$undef"
10089 fi
10090fi
5440bc8e 10091$rm -f try try.*
b4eb6b3d
JH
10092
10093: see if fgetpos exists
10094set fgetpos d_fgetpos
10095eval $inlibc
10096
10097: see if flock exists
10098set flock d_flock
10099eval $inlibc
10100
2ef53570
JH
10101: see if this is a sys/file.h system
10102val=''
10103set sys/file.h val
10104eval $inhdr
10105
10106: do we need to include sys/file.h ?
10107case "$val" in
10108"$define")
10109 echo " "
10110 if $h_sysfile; then
10111 val="$define"
10112 echo "We'll be including <sys/file.h>." >&4
10113 else
10114 val="$undef"
10115 echo "We won't be including <sys/file.h>." >&4
10116 fi
10117 ;;
10118*)
10119 h_sysfile=false
10120 ;;
10121esac
10122set i_sysfile
10123eval $setvar
10124
10125: see if prototype for flock is available
10126echo " "
10127set d_flockproto flock $i_sysfile sys/file.h
10128eval $hasproto
10129
b4eb6b3d
JH
10130: see if fork exists
10131set fork d_fork
10132eval $inlibc
10133
10134: see if pathconf exists
10135set pathconf d_pathconf
10136eval $inlibc
10137
10138: see if fpathconf exists
10139set fpathconf d_fpathconf
10140eval $inlibc
10141
10142
10143: check for fpos64_t
10144echo " "
10145echo "Checking to see if you have fpos64_t..." >&4
10146$cat >try.c <<EOCP
10147#include <stdio.h>
10148int main() { fpos64_t x = 7; }
10149EOCP
10150set try
10151if eval $compile; then
10152 val="$define"
10153 echo "You have fpos64_t."
10154else
10155 val="$undef"
10156 echo "You do not have fpos64_t."
10157 case "$fpossize" in
10158 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10159 esac
10160fi
10161$rm -f try.* try
10162set d_fpos64_t
10163eval $setvar
10164
10165: see if frexpl exists
10166set frexpl d_frexpl
10167eval $inlibc
10168
b4eb6b3d
JH
10169: see if this is a sys/param system
10170set sys/param.h i_sysparam
10171eval $inhdr
10172
10173: see if this is a sys/mount.h system
10174set sys/mount.h i_sysmount
10175eval $inhdr
10176
b4eb6b3d
JH
10177
10178echo " "
10179echo "Checking to see if your system supports struct fs_data..." >&4
10180set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10181eval $hasstruct
10182case "$d_fs_data_s" in
10183"$define") echo "Yes, it does." ;;
10184*) echo "No, it doesn't." ;;
10185esac
10186
10187: see if fseeko exists
10188set fseeko d_fseeko
10189eval $inlibc
10190case "$longsize" in
101918) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10192esac
10193
10194: see if fsetpos exists
10195set fsetpos d_fsetpos
10196eval $inlibc
10197
10198
10199: see if fstatfs exists
10200set fstatfs d_fstatfs
10201eval $inlibc
10202
10203
10204: see if statvfs exists
10205set statvfs d_statvfs
10206eval $inlibc
10207
10208: see if fstatvfs exists
10209set fstatvfs d_fstatvfs
10210eval $inlibc
10211
10212
411ab01c
JH
10213: see if fsync exists
10214set fsync d_fsync
10215eval $inlibc
10216
b4eb6b3d
JH
10217: see if ftello exists
10218set ftello d_ftello
10219eval $inlibc
10220case "$longsize" in
102218) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10222esac
10223
10224: see if getcwd exists
10225set getcwd d_getcwd
10226eval $inlibc
10227
10228: see if getespwnam exists
10229set getespwnam d_getespwnam
10230eval $inlibc
10231
10232
10233: see if getfsstat exists
10234set getfsstat d_getfsstat
10235eval $inlibc
10236
10237: see if getgrent exists
10238set getgrent d_getgrent
10239eval $inlibc
10240
10241: see if gethostbyaddr exists
10242set gethostbyaddr d_gethbyaddr
10243eval $inlibc
10244
10245: see if gethostbyname exists
10246set gethostbyname d_gethbyname
10247eval $inlibc
10248
10249: see if gethostent exists
10250set gethostent d_gethent
10251eval $inlibc
10252
10253: see how we will look up host name
10254echo " "
10255call=''
10256if set gethostname val -f d_gethname; eval $csym; $val; then
10257 echo 'gethostname() found.' >&4
10258 d_gethname="$define"
10259 call=gethostname
10260fi
10261if set uname val -f d_uname; eval $csym; $val; then
10262 if ./xenix; then
10263 $cat <<'EOM'
10264uname() was found, but you're running xenix, and older versions of xenix
10265have a broken uname(). If you don't really know whether your xenix is old
10266enough to have a broken system call, use the default answer.
10267
10268EOM
10269 dflt=y
10270 case "$d_uname" in
10271 "$define") dflt=n;;
10272 esac
10273 rp='Is your uname() broken?'
10274 . ./myread
10275 case "$ans" in
10276 n*) d_uname="$define"; call=uname;;
10277 esac
10278 else
10279 echo 'uname() found.' >&4
10280 d_uname="$define"
10281 case "$call" in
10282 '') call=uname ;;
10283 esac
10284 fi
10285fi
10286case "$d_gethname" in
10287'') d_gethname="$undef";;
10288esac
10289case "$d_uname" in
10290'') d_uname="$undef";;
10291esac
10292case "$d_uname$d_gethname" in
10293*define*)
10294 dflt=n
10295 cat <<EOM
10296
10297Every now and then someone has a $call() that lies about the hostname
10298but can't be fixed for political or economic reasons. If you wish, I can
10299pretend $call() isn't there and maybe compute hostname at run-time
10300thanks to the '$phostname' command.
10301
10302EOM
10303 rp="Shall I ignore $call() from now on?"
10304 . ./myread
10305 case "$ans" in
10306 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10307 esac;;
10308esac
10309case "$phostname" in
10310'') aphostname='';;
10311*) case "$aphostname" in
10312 /*) ;;
10313 *) set X $phostname
10314 shift
10315 file=$1
10316 shift
10317 file=`./loc $file $file $pth`
10318 aphostname=`echo $file $*`
10319 ;;
10320 esac
10321 ;;
10322esac
10323case "$d_uname$d_gethname" in
10324*define*) ;;
10325*)
10326 case "$phostname" in
10327 '')
10328 echo "There will be no way for $package to get your hostname." >&4;;
10329 *)
10330 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10331 ;;
10332 esac;;
10333esac
10334case "$d_phostname" in
10335'') d_phostname="$undef";;
10336esac
10337
10338: see if this is a netdb.h system
10339set netdb.h i_netdb
10340eval $inhdr
10341
10342: see if prototypes for various gethostxxx netdb.h functions are available
10343echo " "
10344set d_gethostprotos gethostent $i_netdb netdb.h
10345eval $hasproto
10346
4e0554ec
JH
10347: see if getitimer exists
10348set getitimer d_getitimer
10349eval $inlibc
10350
b4eb6b3d
JH
10351: see if getlogin exists
10352set getlogin d_getlogin
10353eval $inlibc
10354
10355: see if getmnt exists
10356set getmnt d_getmnt
10357eval $inlibc
10358
10359: see if getmntent exists
10360set getmntent d_getmntent
10361eval $inlibc
10362
10363: see if getnetbyaddr exists
10364set getnetbyaddr d_getnbyaddr
10365eval $inlibc
10366
10367: see if getnetbyname exists
10368set getnetbyname d_getnbyname
10369eval $inlibc
10370
10371: see if getnetent exists
10372set getnetent d_getnent
10373eval $inlibc
10374
10375: see if prototypes for various getnetxxx netdb.h functions are available
10376echo " "
10377set d_getnetprotos getnetent $i_netdb netdb.h
10378eval $hasproto
10379
0c0643d0
JH
10380: see if getpagesize exists
10381set getpagesize d_getpagsz
10382eval $inlibc
10383
b4eb6b3d
JH
10384
10385: see if getprotobyname exists
10386set getprotobyname d_getpbyname
10387eval $inlibc
10388
10389: see if getprotobynumber exists
10390set getprotobynumber d_getpbynumber
10391eval $inlibc
10392
10393: see if getprotoent exists
10394set getprotoent d_getpent
10395eval $inlibc
10396
10397: see if getpgid exists
10398set getpgid d_getpgid
10399eval $inlibc
10400
10401: see if getpgrp2 exists
10402set getpgrp2 d_getpgrp2
10403eval $inlibc
10404
10405: see if getppid exists
10406set getppid d_getppid
10407eval $inlibc
10408
10409: see if getpriority exists
10410set getpriority d_getprior
10411eval $inlibc
10412
10413: see if prototypes for various getprotoxxx netdb.h functions are available
10414echo " "
10415set d_getprotoprotos getprotoent $i_netdb netdb.h
10416eval $hasproto
10417
10418: see if getprpwnam exists
10419set getprpwnam d_getprpwnam
10420eval $inlibc
10421
10422: see if getpwent exists
10423set getpwent d_getpwent
10424eval $inlibc
10425
10426
10427: see if getservbyname exists
10428set getservbyname d_getsbyname
10429eval $inlibc
10430
10431: see if getservbyport exists
10432set getservbyport d_getsbyport
10433eval $inlibc
10434
10435: see if getservent exists
10436set getservent d_getsent
10437eval $inlibc
10438
10439: see if prototypes for various getservxxx netdb.h functions are available
10440echo " "
10441set d_getservprotos getservent $i_netdb netdb.h
10442eval $hasproto
10443
10444: see if getspnam exists
10445set getspnam d_getspnam
10446eval $inlibc
10447
10448: see if gettimeofday or ftime exists
10449set gettimeofday d_gettimeod
10450eval $inlibc
10451case "$d_gettimeod" in
10452"$undef")
10453 set ftime d_ftime
10454 eval $inlibc
10455 ;;
10456*)
10457 val="$undef"; set d_ftime; eval $setvar
10458 ;;
10459esac
10460case "$d_gettimeod$d_ftime" in
10461"$undef$undef")
10462 echo " "
10463 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10464 ;;
10465esac
10466
10467: see if this is an grp system
10468set grp.h i_grp
10469eval $inhdr
10470
10471case "$i_grp" in
10472$define)
10473 xxx=`./findhdr grp.h`
10474 $cppstdin $cppflags $cppminus < $xxx >$$.h
10475
10476 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10477 val="$define"
10478 else
10479 val="$undef"
10480 fi
10481 set d_grpasswd
10482 eval $setvar
10483
10484 $rm -f $$.h
10485 ;;
10486*)
10487 val="$undef";
10488 set d_grpasswd; eval $setvar
10489 ;;
10490esac
10491
10492: see if hasmntopt exists
10493set hasmntopt d_hasmntopt
10494eval $inlibc
10495
10496: see if this is a netinet/in.h or sys/in.h system
10497set netinet/in.h i_niin sys/in.h i_sysin
10498eval $inhdr
10499
10500: see if arpa/inet.h has to be included
10501set arpa/inet.h i_arpainet
10502eval $inhdr
10503
10504: see if htonl --and friends-- exists
10505val=''
10506set htonl val
10507eval $inlibc
10508
10509: Maybe they are macros.
10510case "$val" in
10511$undef)
10512 $cat >htonl.c <<EOM
10513#include <stdio.h>
10514#include <sys/types.h>
10515#$i_niin I_NETINET_IN
10516#$i_sysin I_SYS_IN
10517#$i_arpainet I_ARPA_INET
10518#ifdef I_NETINET_IN
10519#include <netinet/in.h>
10520#endif
10521#ifdef I_SYS_IN
10522#include <sys/in.h>
10523#endif
10524#ifdef I_ARPA_INET
10525#include <arpa/inet.h>
10526#endif
10527#ifdef htonl
10528printf("Defined as a macro.");
10529#endif
10530EOM
10531 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10532 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10533 val="$define"
10534 echo "But it seems to be defined as a macro." >&4
10535 fi
10536 $rm -f htonl.?
10537 ;;
10538esac
10539set d_htonl
10540eval $setvar
10541
10542: see if iconv exists
10543set iconv d_iconv
10544eval $inlibc
10545
10546: index or strchr
10547echo " "
10548if set index val -f; eval $csym; $val; then
10549 if set strchr val -f d_strchr; eval $csym; $val; then
10550 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10551 val="$define"
10552 vali="$undef"
10553 echo "strchr() found." >&4
10554 else
10555 val="$undef"
10556 vali="$define"
10557 echo "index() found." >&4
10558 fi
10559 else
10560 val="$undef"
10561 vali="$define"
8dfa8df9
JH
10562 echo "index() found." >&4
10563 fi
b4eb6b3d 10564else
8dfa8df9
JH
10565 if set strchr val -f d_strchr; eval $csym; $val; then
10566 val="$define"
10567 vali="$undef"
10568 echo "strchr() found." >&4
10569 else
10570 echo "No index() or strchr() found!" >&4
10571 val="$undef"
10572 vali="$undef"
10573 fi
b4eb6b3d 10574fi
8dfa8df9
JH
10575set d_strchr; eval $setvar
10576val="$vali"
10577set d_index; eval $setvar
10578
10579: check whether inet_aton exists
10580set inet_aton d_inetaton
10581eval $inlibc
b4eb6b3d
JH
10582
10583: Look for isascii
10584echo " "
10585$cat >isascii.c <<'EOCP'
10586#include <stdio.h>
10587#include <ctype.h>
10588int main() {
10589 int c = 'A';
10590 if (isascii(c))
10591 exit(0);
10592 else
10593 exit(1);
10594}
10595EOCP
10596set isascii
10597if eval $compile; then
10598 echo "isascii() found." >&4
10599 val="$define"
10600else
10601 echo "isascii() NOT found." >&4
10602 val="$undef"
10603fi
10604set d_isascii
10605eval $setvar
10606$rm -f isascii*
10607
10608: see if isnan exists
10609set isnan d_isnan
10610eval $inlibc
10611
10612: see if isnanl exists
10613set isnanl d_isnanl
10614eval $inlibc
10615
10616: see if killpg exists
10617set killpg d_killpg
10618eval $inlibc
10619
10620: see if lchown exists
10621echo " "
10622$cat > try.c <<'EOCP'
10623/* System header to define __stub macros and hopefully few prototypes,
10624 which can conflict with char lchown(); below. */
10625#include <assert.h>
10626/* Override any gcc2 internal prototype to avoid an error. */
10627/* We use char because int might match the return type of a gcc2
10628 builtin and then its argument prototype would still apply. */
10629char lchown();
10630int main() {
10631 /* The GNU C library defines this for functions which it implements
10632 to always fail with ENOSYS. Some functions are actually named
10633 something starting with __ and the normal name is an alias. */
10634#if defined (__stub_lchown) || defined (__stub___lchown)
10635choke me
10636#else
10637lchown();
10638#endif
10639; return 0; }
10640EOCP
10641set try
10642if eval $compile; then
10643 $echo "lchown() found." >&4
10644 val="$define"
10645else
10646 $echo "lchown() NOT found." >&4
10647 val="$undef"
10648fi
10649set d_lchown
10650eval $setvar
10651
10652: See if number of significant digits in a double precision number is known
10653echo " "
10654$cat >ldbl_dig.c <<EOM
10655#$i_limits I_LIMITS
10656#$i_float I_FLOAT
10657#ifdef I_LIMITS
10658#include <limits.h>
10659#endif
10660#ifdef I_FLOAT
10661#include <float.h>
10662#endif
10663#ifdef LDBL_DIG
10664printf("Contains LDBL_DIG");
10665#endif
10666EOM
10667$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10668if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10669 echo "LDBL_DIG found." >&4
10670 val="$define"
10671else
10672 echo "LDBL_DIG NOT found." >&4
10673 val="$undef"
10674fi
10675$rm -f ldbl_dig.?
10676set d_ldbl_dig
10677eval $setvar
10678
10679: see if link exists
10680set link d_link
10681eval $inlibc
10682
10683: see if localeconv exists
10684set localeconv d_locconv
10685eval $inlibc
10686
10687: see if lockf exists
10688set lockf d_lockf
10689eval $inlibc
10690
b4eb6b3d
JH
10691: see if prototype for lseek is available
10692echo " "
10693set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10694eval $hasproto
10695
10696: see if lstat exists
10697set lstat d_lstat
10698eval $inlibc
10699
10700: see if madvise exists
10701set madvise d_madvise
10702eval $inlibc
10703
10704: see if mblen exists
10705set mblen d_mblen
10706eval $inlibc
10707
10708: see if mbstowcs exists
10709set mbstowcs d_mbstowcs
10710eval $inlibc
10711
10712: see if mbtowc exists
10713set mbtowc d_mbtowc
10714eval $inlibc
10715
10716: see if memchr exists
10717set memchr d_memchr
10718eval $inlibc
10719
10720: see if memcmp exists
10721set memcmp d_memcmp
10722eval $inlibc
10723
10724: see if memcpy exists
10725set memcpy d_memcpy
10726eval $inlibc
10727
10728: see if memmove exists
10729set memmove d_memmove
10730eval $inlibc
10731
10732: see if memset exists
10733set memset d_memset
10734eval $inlibc
10735
10736: see if mkdir exists
10737set mkdir d_mkdir
10738eval $inlibc
10739
10740: see if mkdtemp exists
10741set mkdtemp d_mkdtemp
10742eval $inlibc
10743
10744: see if mkfifo exists
10745set mkfifo d_mkfifo
10746eval $inlibc
10747
10748: see if mkstemp exists
10749set mkstemp d_mkstemp
10750eval $inlibc
10751
10752: see if mkstemps exists
10753set mkstemps d_mkstemps
10754eval $inlibc
10755
10756: see if mktime exists
10757set mktime d_mktime
10758eval $inlibc
10759
10760: see if this is a sys/mman.h system
10761set sys/mman.h i_sysmman
10762eval $inhdr
10763
10764: see if mmap exists
10765set mmap d_mmap
10766eval $inlibc
10767: see what shmat returns
10768: default to something harmless
10769mmaptype='void *'
10770case "$i_sysmman$d_mmap" in
10771"$define$define")
10772 $cat >mmap.c <<'END'
10773#include <sys/mman.h>
10774void *mmap();
10775END
10776 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10777 mmaptype='void *'
10778 else
10779 mmaptype='caddr_t'
10780 fi
10781 echo "and it returns ($mmaptype)." >&4
10782 ;;
10783esac
10784
10785
10786
10787: see if modfl exists
10788set modfl d_modfl
10789eval $inlibc
10790
e67aeab1
JH
10791d_modfl_pow32_bug="$undef"
10792
2b2cdb4d
HS
10793case "$d_longdbl$d_modfl" in
10794$define$define)
10795 $cat <<EOM
10796Checking to see whether your modfl() is okay for large values...
10797EOM
10798$cat >try.c <<EOCP
10799#include <math.h>
10800#include <stdio.h>
10801int main() {
10802 long double nv = 4294967303.15;
10803 long double v, w;
10804 v = modfl(nv, &w);
10805#ifdef __GLIBC__
10806 printf("glibc");
10807#endif
10808 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10809 return 0;
10810}
10811EOCP
27f9615e
JH
10812 case "$osname:$gccversion" in
10813 aix:) saveccflags="$ccflags"
10814 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10815 esac
2b2cdb4d
HS
10816 set try
10817 if eval $compile; then
5440bc8e 10818 foo=`$run ./try`
2b2cdb4d
HS
10819 case "$foo" in
10820 *" 4294967303.150000 1.150000 4294967302.000000")
10821 echo >&4 "Your modfl() is broken for large values."
e67aeab1 10822 d_modfl_pow32_bug="$define"
2b2cdb4d
HS
10823 case "$foo" in
10824 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10825 ;;
10826 esac
10827 ;;
10828 *" 4294967303.150000 0.150000 4294967303.000000")
10829 echo >&4 "Your modfl() seems okay for large values."
10830 ;;
10831 *) echo >&4 "I don't understand your modfl() at all."
10832 d_modfl="$undef"
10833 ;;
10834 esac
10835 $rm -f try.* try core core.try.*
10836 else
10837 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10838 d_modfl="$undef"
10839 fi
27f9615e 10840 case "$osname:$gccversion" in
abcf653a 10841 aix:) ccflags="$saveccflags" ;; # restore
27f9615e 10842 esac
2b2cdb4d
HS
10843 ;;
10844esac
10845
b4eb6b3d
JH
10846: see if mprotect exists
10847set mprotect d_mprotect
10848eval $inlibc
10849
10850: see if msgctl exists
10851set msgctl d_msgctl
10852eval $inlibc
10853
10854: see if msgget exists
10855set msgget d_msgget
10856eval $inlibc
10857
10858: see if msgsnd exists
10859set msgsnd d_msgsnd
10860eval $inlibc
10861
10862: see if msgrcv exists
10863set msgrcv d_msgrcv
10864eval $inlibc
10865
10866: see how much of the 'msg*(2)' library is present.
10867h_msg=true
10868echo " "
10869case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10870*"$undef"*) h_msg=false;;
10871esac
10872case "$osname" in
10873freebsd)
10874 case "`ipcs 2>&1`" in
10875 "SVID messages"*"not configured"*)
10876 echo "Your $osname does not have the msg*(2) configured." >&4
10877 h_msg=false
10878 val="$undef"
10879 set msgctl d_msgctl
10880 eval $setvar
10881 set msgget d_msgget
10882 eval $setvar
10883 set msgsnd d_msgsnd
10884 eval $setvar
10885 set msgrcv d_msgrcv
10886 eval $setvar
10887 ;;
10888 esac
10889 ;;
10890esac
10891: we could also check for sys/ipc.h ...
10892if $h_msg && $test `./findhdr sys/msg.h`; then
10893 echo "You have the full msg*(2) library." >&4
10894 val="$define"
10895else
10896 echo "You don't have the full msg*(2) library." >&4
10897 val="$undef"
10898fi
10899set d_msg
10900eval $setvar
10901
4e0554ec
JH
10902
10903echo " "
10904echo "Checking to see if your system supports struct msghdr..." >&4
10905set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10906eval $hasstruct
10907case "$d_msghdr_s" in
10908"$define") echo "Yes, it does." ;;
10909*) echo "No, it doesn't." ;;
10910esac
10911
10912
b4eb6b3d
JH
10913: see if msync exists
10914set msync d_msync
10915eval $inlibc
10916
10917: see if munmap exists
10918set munmap d_munmap
10919eval $inlibc
10920
10921: see if nice exists
10922set nice d_nice
10923eval $inlibc
10924
2765b840
JH
10925: see if this is a langinfo.h system
10926set langinfo.h i_langinfo
10927eval $inhdr
10928
10929: see if nl_langinfo exists
10930set nl_langinfo d_nl_langinfo
10931eval $inlibc
10932
b4eb6b3d
JH
10933: check for length of character
10934echo " "
10935case "$charsize" in
10936'')
10937 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10938 $cat >try.c <<'EOCP'
10939#include <stdio.h>
10940int main()
10941{
10942 printf("%d\n", (int)sizeof(char));
10943 exit(0);
10944}
10945EOCP
10946 set try
10947 if eval $compile_ok; then
5440bc8e 10948 dflt=`$run ./try`
b4eb6b3d
JH
10949 else
10950 dflt='1'
10951 echo "(I can't seem to compile the test program. Guessing...)"
10952 fi
10953 ;;
10954*)
10955 dflt="$charsize"
10956 ;;
10957esac
10958rp="What is the size of a character (in bytes)?"
10959. ./myread
10960charsize="$ans"
10961$rm -f try.c try
10962
1d1be0dc
NC
10963: check for volatile keyword
10964echo " "
10965echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10966$cat >try.c <<'EOCP'
10967int main()
10968{
10969 typedef struct _goo_struct goo_struct;
10970 goo_struct * volatile goo = ((goo_struct *)0);
10971 struct _goo_struct {
10972 long long_int;
10973 int reg_int;
10974 char char_var;
10975 };
10976 typedef unsigned short foo_t;
10977 char *volatile foo;
10978 volatile int bar;
10979 volatile foo_t blech;
10980 foo = foo;
10981}
10982EOCP
10983if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10984 val="$define"
10985 echo "Yup, it does."
10986else
10987 val="$undef"
10988 echo "Nope, it doesn't."
10989fi
10990set d_volatile
10991eval $setvar
10992$rm -f try.*
10993
b4eb6b3d
JH
10994
10995echo " "
10996$echo "Choosing the C types to be used for Perl's internal types..." >&4
10997
10998case "$use64bitint:$d_quad:$quadtype" in
10999define:define:?*)
11000 ivtype="$quadtype"
11001 uvtype="$uquadtype"
11002 ivsize=8
11003 uvsize=8
11004 ;;
11005*) ivtype="long"
11006 uvtype="unsigned long"
11007 ivsize=$longsize
11008 uvsize=$longsize
11009 ;;
11010esac
11011
11012case "$uselongdouble:$d_longdbl" in
11013define:define)
11014 nvtype="long double"
11015 nvsize=$longdblsize
11016 ;;
11017*) nvtype=double
11018 nvsize=$doublesize
11019 ;;
11020esac
11021
11022$echo "(IV will be "$ivtype", $ivsize bytes)"
11023$echo "(UV will be "$uvtype", $uvsize bytes)"
11024$echo "(NV will be "$nvtype", $nvsize bytes)"
11025
11026$cat >try.c <<EOCP
11027#$i_inttypes I_INTTYPES
11028#ifdef I_INTTYPES
11029#include <inttypes.h>
11030#endif
11031#include <stdio.h>
11032int main() {
11033#ifdef INT8
11034 int8_t i = INT8_MAX;
11035 uint8_t u = UINT8_MAX;
11036 printf("int8_t\n");
11037#endif
11038#ifdef INT16
11039 int16_t i = INT16_MAX;
11040 uint16_t i = UINT16_MAX;
11041 printf("int16_t\n");
11042#endif
11043#ifdef INT32
11044 int32_t i = INT32_MAX;
11045 uint32_t u = UINT32_MAX;
11046 printf("int32_t\n");
11047#endif
11048}
11049EOCP
11050
11051case "$i8type" in
11052'') case "$charsize" in
11053 1) i8type=char
11054 u8type="unsigned char"
11055 i8size=$charsize
11056 u8size=$charsize
11057 ;;
11058 esac
11059 ;;
11060esac
11061case "$i8type" in
11062'') set try -DINT8
11063 if eval $compile; then
5440bc8e 11064 case "`$run ./try`" in
b4eb6b3d
JH
11065 int8_t) i8type=int8_t
11066 u8type=uint8_t
11067 i8size=1
11068 u8size=1
11069 ;;
11070 esac
11071 fi
11072 ;;
11073esac
11074case "$i8type" in
11075'') if $test $charsize -ge 1; then
11076 i8type=char
11077 u8type="unsigned char"
11078 i8size=$charsize
11079 u8size=$charsize
11080 fi
11081 ;;
11082esac
11083
11084case "$i16type" in
11085'') case "$shortsize" in
11086 2) i16type=short
11087 u16type="unsigned short"
11088 i16size=$shortsize
11089 u16size=$shortsize
11090 ;;
11091 esac
11092 ;;
11093esac
11094case "$i16type" in
11095'') set try -DINT16
11096 if eval $compile; then
5440bc8e 11097 case "`$run ./try`" in
b4eb6b3d
JH
11098 int16_t)
11099 i16type=int16_t
11100 u16type=uint16_t
11101 i16size=2
11102 u16size=2
11103 ;;
11104 esac
11105 fi
11106 ;;
11107esac
11108case "$i16type" in
11109'') if $test $shortsize -ge 2; then
11110 i16type=short
11111 u16type="unsigned short"
11112 i16size=$shortsize
11113 u16size=$shortsize
11114 fi
11115 ;;
11116esac
11117
11118case "$i32type" in
11119'') case "$longsize" in
11120 4) i32type=long
11121 u32type="unsigned long"
11122 i32size=$longsize
11123 u32size=$longsize
11124 ;;
11125 *) case "$intsize" in
11126 4) i32type=int
11127 u32type="unsigned int"
11128 i32size=$intsize
11129 u32size=$intsize
11130 ;;
11131 esac
11132 ;;
11133 esac
11134 ;;
11135esac
11136case "$i32type" in
11137'') set try -DINT32
11138 if eval $compile; then
5440bc8e 11139 case "`$run ./try`" in
b4eb6b3d
JH
11140 int32_t)
11141 i32type=int32_t
11142 u32type=uint32_t
11143 i32size=4
11144 u32size=4
11145 ;;
11146 esac
11147 fi
11148 ;;
11149esac
11150case "$i32type" in
11151'') if $test $intsize -ge 4; then
11152 i32type=int
11153 u32type="unsigned int"
11154 i32size=$intsize
11155 u32size=$intsize
11156 fi
11157 ;;
11158esac
11159
11160case "$i64type" in
11161'') case "$d_quad:$quadtype" in
11162 define:?*)
11163 i64type="$quadtype"
11164 u64type="$uquadtype"
11165 i64size=8
11166 u64size=8
11167 ;;
11168 esac
11169 ;;
11170esac
11171
1d1be0dc
NC
11172$echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11173: volatile so that the compiler has to store it out to memory.
11174if test X"$d_volatile" = X"$define"; then
11175 volatile=volatile
11176fi
b4eb6b3d
JH
11177$cat <<EOP >try.c
11178#include <stdio.h>
1d1be0dc
NC
11179#include <sys/types.h>
11180#include <signal.h>
11181#ifdef SIGFPE
11182$volatile int bletched = 0;
11183$signal_t blech(s) int s; { bletched = 1; }
11184#endif
b4eb6b3d
JH
11185int main() {
11186 $uvtype u = 0;
1d1be0dc 11187 $nvtype d;
b4eb6b3d
JH
11188 int n = 8 * $uvsize;
11189 int i;
1d1be0dc
NC
11190#ifdef SIGFPE
11191 signal(SIGFPE, blech);
11192#endif
11193
b4eb6b3d
JH
11194 for (i = 0; i < n; i++) {
11195 u = u << 1 | ($uvtype)1;
1d1be0dc
NC
11196 d = ($nvtype)u;
11197 if (($uvtype)d != u)
b4eb6b3d 11198 break;
1d1be0dc
NC
11199 if (d <= 0)
11200 break;
11201 d = ($nvtype)(u - 1);
11202 if (($uvtype)d != (u - 1))
11203 break;
11204#ifdef SIGFPE
11205 if (bletched) {
11206 break;
11207#endif
11208 }
b4eb6b3d 11209 }
efd1522b 11210 printf("%d\n", ((i == n) ? -n : i));
b4eb6b3d
JH
11211 exit(0);
11212}
11213EOP
1d1be0dc
NC
11214set try
11215
11216d_nv_preserves_uv="$undef"
11217if eval $compile; then
5440bc8e 11218 d_nv_preserves_uv_bits="`$run ./try`"
1d1be0dc
NC
11219fi
11220case "$d_nv_preserves_uv_bits" in
11221\-[1-9]*)
11222 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11223 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11224 d_nv_preserves_uv="$define"
b4eb6b3d 11225 ;;
1d1be0dc
NC
11226[1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11227 d_nv_preserves_uv="$undef" ;;
11228*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11229 d_nv_preserves_uv_bits="$undef" ;;
b4eb6b3d
JH
11230esac
11231
1d1be0dc
NC
11232$rm -f try.* try
11233
b4eb6b3d
JH
11234
11235: check for off64_t
11236echo " "
11237echo "Checking to see if you have off64_t..." >&4
11238$cat >try.c <<EOCP
11239#include <sys/types.h>
11240#include <unistd.h>
11241int main() { off64_t x = 7; }
11242EOCP
11243set try
11244if eval $compile; then
11245 val="$define"
11246 echo "You have off64_t."
11247else
11248 val="$undef"
11249 echo "You do not have off64_t."
11250 case "$lseeksize" in
11251 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11252 esac
11253fi
11254$rm -f try.* try
11255set d_off64_t
11256eval $setvar
11257
11258: see if POSIX threads are available
11259set pthread.h i_pthread
11260eval $inhdr
11261
11262
11263
11264
11265: how to create joinable pthreads
11266if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11267 echo " "
11268 echo "Checking what constant to use for creating joinable pthreads..." >&4
11269 $cat >try.c <<'EOCP'
11270#include <pthread.h>
11271int main() {
11272 int detachstate = JOINABLE;
11273}
11274EOCP
11275 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11276 if eval $compile; then
11277 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11278 val="$undef" # Yes, undef.
11279 set d_old_pthread_create_joinable
11280 eval $setvar
11281 val=""
11282 set old_pthread_create_joinable
11283 eval $setvar
11284 else
11285 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11286 if eval $compile; then
11287 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11288 val="$define"
11289 set d_old_pthread_create_joinable
11290 eval $setvar
11291 val=PTHREAD_CREATE_UNDETACHED
11292 set old_pthread_create_joinable
11293 eval $setvar
11294 else
11295 set try -DJOINABLE=__UNDETACHED
11296 if eval $compile; then
11297 echo "You seem to use __UNDETACHED." >&4
11298 val="$define"
11299 set d_old_pthread_create_joinable
11300 eval $setvar
11301 val=__UNDETACHED
11302 set old_pthread_create_joinable
11303 eval $setvar
11304 else
11305 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11306 val="$define"
11307 set d_old_pthread_create_joinable
11308 eval $setvar
11309 val=0
11310 set old_pthread_create_joinable
11311 eval $setvar
11312 fi
11313 fi
11314 fi
11315 $rm -f try try.*
11316else
11317 d_old_pthread_create_joinable="$undef"
11318 old_pthread_create_joinable=""
11319fi
11320
11321: see if pause exists
11322set pause d_pause
11323eval $inlibc
11324
11325: see if pipe exists
11326set pipe d_pipe
11327eval $inlibc
11328
11329: see if poll exists
11330set poll d_poll
11331eval $inlibc
11332
11333
11334: see whether the various POSIXish _yields exist
11335$cat >try.c <<EOP
11336#include <pthread.h>
11337#include <stdio.h>
11338int main() {
11339#ifdef SCHED_YIELD
11340 sched_yield();
11341#else
11342#ifdef PTHREAD_YIELD
11343 pthread_yield();
11344#else
11345#ifdef PTHREAD_YIELD_NULL
11346 pthread_yield(NULL);
11347#endif
11348#endif
11349#endif
11350}
11351EOP
11352: see if sched_yield exists
11353set try -DSCHED_YIELD
11354if eval $compile; then
11355 val="$define"
11356 sched_yield='sched_yield()'
11357else
11358 val="$undef"
11359fi
11360case "$usethreads" in
11361$define)
11362 case "$val" in
11363 $define) echo 'sched_yield() found.' >&4 ;;
11364 *) echo 'sched_yield() NOT found.' >&4 ;;
11365 esac
11366esac
11367set d_sched_yield
11368eval $setvar
11369
11370: see if pthread_yield exists
11371set try -DPTHREAD_YIELD
11372if eval $compile; then
11373 val="$define"
11374 case "$sched_yield" in
11375 '') sched_yield='pthread_yield()' ;;
11376 esac
11377else
11378 set try -DPTHREAD_YIELD_NULL
11379 if eval $compile; then
11380 val="$define"
11381 case "$sched_yield" in
11382 '') sched_yield='pthread_yield(NULL)' ;;
11383 esac
11384 else
11385 val="$undef"
11386 fi
11387fi
11388case "$usethreads" in
11389$define)
11390 case "$val" in
11391 $define) echo 'pthread_yield() found.' >&4 ;;
11392 *) echo 'pthread_yield() NOT found.' >&4 ;;
11393 esac
11394 ;;
11395esac
11396set d_pthread_yield
11397eval $setvar
11398
11399case "$sched_yield" in
11400'') sched_yield=undef ;;
11401esac
11402
11403$rm -f try try.*
11404
11405: see if this is a pwd.h system
11406set pwd.h i_pwd
11407eval $inhdr
11408
11409case "$i_pwd" in
11410$define)
11411 xxx=`./findhdr pwd.h`
11412 $cppstdin $cppflags $cppminus < $xxx >$$.h
11413
11414 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11415 val="$define"
11416 else
11417 val="$undef"
11418 fi
11419 set d_pwquota
11420 eval $setvar
11421
11422 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11423 val="$define"
11424 else
11425 val="$undef"
11426 fi
11427 set d_pwage
11428 eval $setvar
11429
11430 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11431 val="$define"
11432 else
11433 val="$undef"
11434 fi
11435 set d_pwchange
11436 eval $setvar
11437
11438 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11439 val="$define"
11440 else
11441 val="$undef"
11442 fi
11443 set d_pwclass
11444 eval $setvar
11445
11446 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11447 val="$define"
11448 else
11449 val="$undef"
11450 fi
11451 set d_pwexpire
11452 eval $setvar
11453
11454 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11455 val="$define"
11456 else
11457 val="$undef"
11458 fi
11459 set d_pwcomment
11460 eval $setvar
11461
11462 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11463 val="$define"
11464 else
11465 val="$undef"
11466 fi
11467 set d_pwgecos
11468 eval $setvar
11469
11470 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11471 val="$define"
11472 else
11473 val="$undef"
11474 fi
11475 set d_pwpasswd
11476 eval $setvar
11477
11478 $rm -f $$.h
11479 ;;
11480*)
11481 val="$undef";
11482 set d_pwquota; eval $setvar
11483 set d_pwage; eval $setvar
11484 set d_pwchange; eval $setvar
11485 set d_pwclass; eval $setvar
11486 set d_pwexpire; eval $setvar
11487 set d_pwcomment; eval $setvar
11488 set d_pwgecos; eval $setvar
11489 set d_pwpasswd; eval $setvar
11490 ;;
11491esac
11492
11493: see if readdir and friends exist
11494set readdir d_readdir
11495eval $inlibc
11496set seekdir d_seekdir
11497eval $inlibc
11498set telldir d_telldir
11499eval $inlibc
11500set rewinddir d_rewinddir
11501eval $inlibc
11502
11503: see if readlink exists
11504set readlink d_readlink
11505eval $inlibc
11506
4e0554ec
JH
11507: see if readv exists
11508set readv d_readv
11509eval $inlibc
11510
11511: see if recvmsg exists
11512set recvmsg d_recvmsg
11513eval $inlibc
11514
b4eb6b3d
JH
11515: see if rename exists
11516set rename d_rename
11517eval $inlibc
11518
11519: see if rmdir exists
11520set rmdir d_rmdir
11521eval $inlibc
11522
11523: see if memory.h is available.
11524val=''
11525set memory.h val
11526eval $inhdr
11527
11528: See if it conflicts with string.h
11529case "$val" in
11530$define)
11531 case "$strings" in
11532 '') ;;
11533 *)
11534 $cppstdin $cppflags $cppminus < $strings > mem.h
11535 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11536 echo " "
11537 echo "We won't be including <memory.h>."
11538 val="$undef"
11539 fi
11540 $rm -f mem.h
11541 ;;
11542 esac
11543esac
11544set i_memory
11545eval $setvar
11546
11547: can bcopy handle overlapping blocks?
b6cc3bc4 11548echo " "
b4eb6b3d 11549val="$undef"
b6cc3bc4
AD
11550case "$d_memmove" in
11551"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11552*) case "$d_bcopy" in
11553 "$define")
11554 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11555 $cat >try.c <<EOCP
b4eb6b3d
JH
11556#$i_memory I_MEMORY
11557#$i_stdlib I_STDLIB
11558#$i_string I_STRING
11559#$i_unistd I_UNISTD
11560EOCP
11561 $cat >>try.c <<'EOCP'
11562#include <stdio.h>
11563#ifdef I_MEMORY
11564# include <memory.h>
11565#endif
11566#ifdef I_STDLIB
11567# include <stdlib.h>
11568#endif
11569#ifdef I_STRING
11570# include <string.h>
11571#else
11572# include <strings.h>
11573#endif
11574#ifdef I_UNISTD
11575# include <unistd.h> /* Needed for NetBSD */
11576#endif
11577int main()
11578{
11579char buf[128], abc[128];
11580char *b;
11581int len;
11582int off;
11583int align;
11584
b6cc3bc4
AD
11585/* Copy "abcde..." string to char abc[] so that gcc doesn't
11586 try to store the string in read-only memory. */
b4eb6b3d
JH
11587bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11588
11589for (align = 7; align >= 0; align--) {
11590 for (len = 36; len; len--) {
11591 b = buf+align;
11592 bcopy(abc, b, len);
11593 for (off = 1; off <= len; off++) {
11594 bcopy(b, b+off, len);
11595 bcopy(b+off, b, len);
11596 if (bcmp(b, abc, len))
11597 exit(1);
11598 }
11599 }
11600}
11601exit(0);
11602}
11603EOCP
b6cc3bc4
AD
11604 set try
11605 if eval $compile_ok; then
11606 if ./try 2>/dev/null; then
11607 echo "Yes, it can."
11608 val="$define"
11609 else
11610 echo "It can't, sorry."
11611 fi
b4eb6b3d 11612 else
b6cc3bc4 11613 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11614 fi
b6cc3bc4
AD
11615 ;;
11616 esac
11617 $rm -f try.* try core
b4eb6b3d
JH
11618 ;;
11619esac
b4eb6b3d
JH
11620set d_safebcpy
11621eval $setvar
11622
11623: can memcpy handle overlapping blocks?
b6cc3bc4 11624echo " "
b4eb6b3d 11625val="$undef"
b6cc3bc4
AD
11626case "$d_memmove" in
11627"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11628*) case "$d_memcpy" in
11629 "$define")
11630 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11631 $cat >try.c <<EOCP
b4eb6b3d
JH
11632#$i_memory I_MEMORY
11633#$i_stdlib I_STDLIB
11634#$i_string I_STRING
11635#$i_unistd I_UNISTD
11636EOCP
11637 $cat >>try.c <<'EOCP'
11638#include <stdio.h>
11639#ifdef I_MEMORY
11640# include <memory.h>
11641#endif
11642#ifdef I_STDLIB
11643# include <stdlib.h>
11644#endif
11645#ifdef I_STRING
11646# include <string.h>
11647#else
11648# include <strings.h>
11649#endif
11650#ifdef I_UNISTD
11651# include <unistd.h> /* Needed for NetBSD */
11652#endif
11653int main()
11654{
11655char buf[128], abc[128];
11656char *b;
11657int len;
11658int off;
11659int align;
11660
11661/* Copy "abcde..." string to char abc[] so that gcc doesn't
11662 try to store the string in read-only memory. */
11663memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11664
11665for (align = 7; align >= 0; align--) {
11666 for (len = 36; len; len--) {
11667 b = buf+align;
11668 memcpy(b, abc, len);
11669 for (off = 1; off <= len; off++) {
11670 memcpy(b+off, b, len);
11671 memcpy(b, b+off, len);
11672 if (memcmp(b, abc, len))
11673 exit(1);
11674 }
11675 }
11676}
11677exit(0);
11678}
11679EOCP
b6cc3bc4
AD
11680 set try
11681 if eval $compile_ok; then
11682 if ./try 2>/dev/null; then
11683 echo "Yes, it can."
11684 val="$define"
11685 else
11686 echo "It can't, sorry."
11687 fi
b4eb6b3d 11688 else
b6cc3bc4 11689 echo "(I can't compile the test program, so we'll assume not...)"
b4eb6b3d 11690 fi
b6cc3bc4
AD
11691 ;;
11692 esac
11693 $rm -f try.* try core
b4eb6b3d
JH
11694 ;;
11695esac
b4eb6b3d
JH
11696set d_safemcpy
11697eval $setvar
11698
11699: can memcmp be trusted to compare relative magnitude?
11700val="$undef"
11701case "$d_memcmp" in
11702"$define")
11703 echo " "
11704 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11705 $cat >try.c <<EOCP
11706#$i_memory I_MEMORY
11707#$i_stdlib I_STDLIB
11708#$i_string I_STRING
11709#$i_unistd I_UNISTD
11710EOCP
11711 $cat >>try.c <<'EOCP'
11712#include <stdio.h>
11713#ifdef I_MEMORY
11714# include <memory.h>
11715#endif
11716#ifdef I_STDLIB
11717# include <stdlib.h>
11718#endif
11719#ifdef I_STRING
11720# include <string.h>
11721#else
11722# include <strings.h>
11723#endif
11724#ifdef I_UNISTD
11725# include <unistd.h> /* Needed for NetBSD */
11726#endif
11727int main()
11728{
11729char a = -1;
11730char b = 0;
11731if ((a < b) && memcmp(&a, &b, 1) < 0)
11732 exit(1);
11733exit(0);
11734}
11735EOCP
11736 set try
11737 if eval $compile_ok; then
5440bc8e 11738 if $run ./try 2>/dev/null; then
b4eb6b3d
JH
11739 echo "Yes, it can."
11740 val="$define"
11741 else
11742 echo "No, it can't (it uses signed chars)."
11743 fi
11744 else
11745 echo "(I can't compile the test program, so we'll assume not...)"
11746 fi
11747 ;;
11748esac
11749$rm -f try.* try core
11750set d_sanemcmp
11751eval $setvar
11752
ef9f17be
JH
11753: see if prototype for sbrk is available
11754echo " "
11755set d_sbrkproto sbrk $i_unistd unistd.h
11756eval $hasproto
11757
b4eb6b3d
JH
11758: see if select exists
11759set select d_select
11760eval $inlibc
11761
11762: see if semctl exists
11763set semctl d_semctl
11764eval $inlibc
11765
11766: see if semget exists
11767set semget d_semget
11768eval $inlibc
11769
11770: see if semop exists
11771set semop d_semop
11772eval $inlibc
11773
11774: see how much of the 'sem*(2)' library is present.
11775h_sem=true
11776echo " "
11777case "$d_semctl$d_semget$d_semop" in
11778*"$undef"*) h_sem=false;;
11779esac
11780case "$osname" in
11781freebsd)
11782 case "`ipcs 2>&1`" in
11783 "SVID messages"*"not configured"*)
11784 echo "Your $osname does not have the sem*(2) configured." >&4
11785 h_sem=false
11786 val="$undef"
11787 set semctl d_semctl
11788 eval $setvar
11789 set semget d_semget
11790 eval $setvar
11791 set semop d_semop
11792 eval $setvar
11793 ;;
11794 esac
11795 ;;
11796esac
11797: we could also check for sys/ipc.h ...
11798if $h_sem && $test `./findhdr sys/sem.h`; then
11799 echo "You have the full sem*(2) library." >&4
11800 val="$define"
11801else
11802 echo "You don't have the full sem*(2) library." >&4
11803 val="$undef"
11804fi
11805set d_sem
11806eval $setvar
11807
11808: see whether sys/sem.h defines union semun
11809echo " "
11810$cat > try.c <<'END'
11811#include <sys/types.h>
11812#include <sys/ipc.h>
11813#include <sys/sem.h>
11814int main () { union semun semun; semun.buf = 0; }
11815END
11816set try
11817if eval $compile; then
11818 echo "You have union semun in <sys/sem.h>." >&4
11819 val="$define"
11820else
11821 echo "You do not have union semun in <sys/sem.h>." >&4
11822 val="$undef"
11823fi
11824$rm -f try try.c try.h
11825set d_union_semun
11826eval $setvar
11827
11828: see how to do semctl IPC_STAT
11829case "$d_sem" in
11830$define)
11831 : see whether semctl IPC_STAT can use union semun
11832 echo " "
11833 $cat > try.h <<END
11834#ifndef S_IRUSR
11835# ifdef S_IREAD
11836# define S_IRUSR S_IREAD
11837# define S_IWUSR S_IWRITE
11838# define S_IXUSR S_IEXEC
11839# else
11840# define S_IRUSR 0400
11841# define S_IWUSR 0200
11842# define S_IXUSR 0100
11843# endif
11844# define S_IRGRP (S_IRUSR>>3)
11845# define S_IWGRP (S_IWUSR>>3)
11846# define S_IXGRP (S_IXUSR>>3)
11847# define S_IROTH (S_IRUSR>>6)
11848# define S_IWOTH (S_IWUSR>>6)
11849# define S_IXOTH (S_IXUSR>>6)
11850#endif
11851#ifndef S_IRWXU
11852# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11853# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11854# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11855#endif
11856END
11857
11858 $cat > try.c <<END
11859#include <sys/types.h>
11860#include <sys/ipc.h>
11861#include <sys/sem.h>
11862#include <sys/stat.h>
11863#include <stdio.h>
11864#include <errno.h>
11865#include "try.h"
11866#ifndef errno
11867extern int errno;
11868#endif
11869#$d_union_semun HAS_UNION_SEMUN
11870int main() {
11871 union semun
11872#ifndef HAS_UNION_SEMUN
11873 {
11874 int val;
11875 struct semid_ds *buf;
11876 unsigned short *array;
11877 }
11878#endif
11879 arg;
11880 int sem, st;
11881
11882#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11883 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11884 if (sem > -1) {
11885 struct semid_ds argbuf;
11886 arg.buf = &argbuf;
11887# ifdef IPC_STAT
11888 st = semctl(sem, 0, IPC_STAT, arg);
11889 if (st == 0)
11890 printf("semun\n");
11891 else
11892# endif /* IPC_STAT */
11893 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11894# ifdef IPC_RMID
11895 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11896# endif /* IPC_RMID */
11897 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11898 } else
11899#endif /* IPC_PRIVATE && ... */
11900 printf("semget failed: errno = %d\n", errno);
11901 return 0;
11902}
11903END
11904 val="$undef"
11905 set try
11906 if eval $compile; then
5440bc8e 11907 xxx=`$run ./try`
b4eb6b3d
JH
11908 case "$xxx" in
11909 semun) val="$define" ;;
11910 esac
11911 fi
11912 $rm -f try try.c
11913 set d_semctl_semun
11914 eval $setvar
11915 case "$d_semctl_semun" in
11916 $define)
11917 echo "You can use union semun for semctl IPC_STAT." >&4
11918 also='also'
11919 ;;
11920 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11921 also=''
11922 ;;
11923 esac
11924
11925 : see whether semctl IPC_STAT can use struct semid_ds pointer
11926 $cat > try.c <<'END'
11927#include <sys/types.h>
11928#include <sys/ipc.h>
11929#include <sys/sem.h>
11930#include <sys/stat.h>
11931#include "try.h"
11932#include <stdio.h>
11933#include <errno.h>
11934#ifndef errno
11935extern int errno;
11936#endif
11937int main() {
11938 struct semid_ds arg;
11939 int sem, st;
11940
11941#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11942 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11943 if (sem > -1) {
11944# ifdef IPC_STAT
11945 st = semctl(sem, 0, IPC_STAT, &arg);
11946 if (st == 0)
11947 printf("semid_ds\n");
11948 else
11949# endif /* IPC_STAT */
11950 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11951# ifdef IPC_RMID
11952 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11953# endif /* IPC_RMID */
11954 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11955 } else
11956#endif /* IPC_PRIVATE && ... */
11957 printf("semget failed: errno = %d\n", errno);
11958
11959 return 0;
11960}
11961END
11962 val="$undef"
11963 set try
11964 if eval $compile; then
5440bc8e 11965 xxx=`$run ./try`
b4eb6b3d
JH
11966 case "$xxx" in
11967 semid_ds) val="$define" ;;
11968 esac
11969 fi
11970 $rm -f try try.c
11971 set d_semctl_semid_ds
11972 eval $setvar
11973 case "$d_semctl_semid_ds" in
11974 $define)
11975 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11976 ;;
11977 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11978 ;;
11979 esac
11980 $rm -f try.h
11981 ;;
11982*) val="$undef"
11983
11984 # We do not have the full sem*(2) library, so assume we can not
11985 # use either.
11986
11987 set d_semctl_semun
11988 eval $setvar
11989
11990 set d_semctl_semid_ds
11991 eval $setvar
11992 ;;
11993esac
11994
4e0554ec
JH
11995: see if sendmsg exists
11996set sendmsg d_sendmsg
11997eval $inlibc
11998
b4eb6b3d
JH
11999: see if setegid exists
12000set setegid d_setegid
12001eval $inlibc
12002
12003: see if seteuid exists
12004set seteuid d_seteuid
12005eval $inlibc
12006
12007: see if setgrent exists
12008set setgrent d_setgrent
12009eval $inlibc
12010
12011: see if sethostent exists
12012set sethostent d_sethent
12013eval $inlibc
12014
4e0554ec
JH
12015: see if setitimer exists
12016set setitimer d_setitimer
12017eval $inlibc
12018
b4eb6b3d
JH
12019: see if setlinebuf exists
12020set setlinebuf d_setlinebuf
12021eval $inlibc
12022
12023: see if setlocale exists
12024set setlocale d_setlocale
12025eval $inlibc
12026
12027: see if setnetent exists
12028set setnetent d_setnent
12029eval $inlibc
12030
12031: see if setprotoent exists
12032set setprotoent d_setpent
12033eval $inlibc
12034
12035: see if setpgid exists
12036set setpgid d_setpgid
12037eval $inlibc
12038
12039: see if setpgrp2 exists
12040set setpgrp2 d_setpgrp2
12041eval $inlibc
12042
12043: see if setpriority exists
12044set setpriority d_setprior
12045eval $inlibc
12046
12047: see if setproctitle exists
12048set setproctitle d_setproctitle
12049eval $inlibc
12050
12051: see if setpwent exists
12052set setpwent d_setpwent
12053eval $inlibc
12054
12055: see if setregid exists
12056set setregid d_setregid
12057eval $inlibc
12058set setresgid d_setresgid
12059eval $inlibc
12060
12061: see if setreuid exists
12062set setreuid d_setreuid
12063eval $inlibc
12064set setresuid d_setresuid
12065eval $inlibc
12066
12067: see if setrgid exists
12068set setrgid d_setrgid
12069eval $inlibc
12070
12071: see if setruid exists
12072set setruid d_setruid
12073eval $inlibc
12074
12075: see if setservent exists
12076set setservent d_setsent
12077eval $inlibc
12078
12079: see if setsid exists
12080set setsid d_setsid
12081eval $inlibc
12082
12083: see if setvbuf exists
12084set setvbuf d_setvbuf
12085eval $inlibc
12086
12087: see if sfio.h is available
12088set sfio.h i_sfio
12089eval $inhdr
12090
12091
12092: see if sfio library is available
12093case "$i_sfio" in
12094$define)
12095 val=''
12096 set sfreserve val
12097 eval $inlibc
12098 ;;
12099*)
12100 val="$undef"
12101 ;;
12102esac
12103: Ok, but do we want to use it.
12104case "$val" in
12105$define)
12106 case "$usesfio" in
12107 true|$define|[yY]*) dflt='y';;
12108 *) dflt='n';;
12109 esac
12110 echo "$package can use the sfio library, but it is experimental."
12111 case "$useperlio" in
12112 "$undef")
12113 echo "For sfio also the PerlIO abstraction layer is needed."
12114 echo "Earlier you said you wouldn't want that."
12115 ;;
12116 esac
12117 rp="You seem to have sfio available, do you want to try using it?"
12118 . ./myread
12119 case "$ans" in
12120 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
12121 useperlio="$define"
12122 val="$define"
12123 ;;
12124 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
12125 val="$undef"
b4eb6b3d
JH
12126 ;;
12127 esac
12128 ;;
12129*) case "$usesfio" in
12130 true|$define|[yY]*)
12131 echo "Sorry, cannot find sfio on this machine." >&4
12132 echo "Ignoring your setting of usesfio=$usesfio." >&4
12133 val="$undef"
12134 ;;
12135 esac
12136 ;;
12137esac
12138set d_sfio
12139eval $setvar
12140case "$d_sfio" in
12141$define) usesfio='true';;
12142*) usesfio='false';;
12143esac
3659ebf1
JH
12144case "$d_sfio" in
12145$define) ;;
12146*) : Remove sfio from list of libraries to use
7483f793
JH
12147 case "$libs" in
12148 *-lsfio*)
12149 echo "Removing unneeded -lsfio from library list" >&4
12150 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12151 shift
12152 libs="$*"
12153 echo "libs = $libs" >&4
12154 ;;
12155 esac
3659ebf1
JH
12156;;
12157esac
12158
b4eb6b3d
JH
12159
12160: see if shmctl exists
12161set shmctl d_shmctl
12162eval $inlibc
12163
12164: see if shmget exists
12165set shmget d_shmget
12166eval $inlibc
12167
12168: see if shmat exists
12169set shmat d_shmat
12170eval $inlibc
12171: see what shmat returns
12172case "$d_shmat" in
12173"$define")
12174 $cat >shmat.c <<'END'
12175#include <sys/shm.h>
12176void *shmat();
12177END
12178 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12179 shmattype='void *'
12180 else
12181 shmattype='char *'
12182 fi
12183 echo "and it returns ($shmattype)." >&4
12184 : see if a prototype for shmat is available
12185 xxx=`./findhdr sys/shm.h`
12186 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12187 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12188 val="$define"
12189 else
12190 val="$undef"
12191 fi
12192 $rm -f shmat.[co]
12193 ;;
12194*)
12195 val="$undef"
12196 ;;
12197esac
12198set d_shmatprototype
12199eval $setvar
12200
12201: see if shmdt exists
12202set shmdt d_shmdt
12203eval $inlibc
12204
12205: see how much of the 'shm*(2)' library is present.
12206h_shm=true
12207echo " "
12208case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12209*"$undef"*) h_shm=false;;
12210esac
12211case "$osname" in
12212freebsd)
12213 case "`ipcs 2>&1`" in
12214 "SVID shared memory"*"not configured"*)
12215 echo "Your $osname does not have the shm*(2) configured." >&4
12216 h_shm=false
12217 val="$undef"
12218 set shmctl d_shmctl
12219 evat $setvar
12220 set shmget d_shmget
12221 evat $setvar
12222 set shmat d_shmat
12223 evat $setvar
12224 set shmdt d_shmdt
12225 evat $setvar
12226 ;;
12227 esac
12228 ;;
12229esac
12230: we could also check for sys/ipc.h ...
12231if $h_shm && $test `./findhdr sys/shm.h`; then
12232 echo "You have the full shm*(2) library." >&4
12233 val="$define"
12234else
12235 echo "You don't have the full shm*(2) library." >&4
12236 val="$undef"
12237fi
12238set d_shm
12239eval $setvar
12240
12241echo " "
12242: see if we have sigaction
12243if set sigaction val -f d_sigaction; eval $csym; $val; then
12244 echo 'sigaction() found.' >&4
12245 $cat > try.c <<'EOP'
12246#include <stdio.h>
12247#include <sys/types.h>
12248#include <signal.h>
12249int main()
12250{
12251 struct sigaction act, oact;
12252 act.sa_flags = 0;
12253 oact.sa_handler = 0;
12254 /* so that act and oact are used */
12255 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12256}
12257EOP
12258 set try
12259 if eval $compile_ok; then
12260 val="$define"
12261 else
12262 echo "But you don't seem to have a useable struct sigaction." >&4
12263 val="$undef"
12264 fi
12265else
12266 echo 'sigaction NOT found.' >&4
12267 val="$undef"
12268fi
12269set d_sigaction; eval $setvar
12270$rm -f try try$_o try.c
12271
983dbef6
JH
12272: see if sigprocmask exists
12273set sigprocmask d_sigprocmask
12274eval $inlibc
12275
b4eb6b3d
JH
12276: see if sigsetjmp exists
12277echo " "
12278case "$d_sigsetjmp" in
12279'')
12280 $cat >try.c <<'EOP'
12281#include <setjmp.h>
12282sigjmp_buf env;
12283int set = 1;
12284int main()
12285{
12286 if (sigsetjmp(env,1))
12287 exit(set);
12288 set = 0;
12289 siglongjmp(env, 1);
12290 exit(1);
12291}
12292EOP
12293 set try
12294 if eval $compile; then
5440bc8e 12295 if $run ./try >/dev/null 2>&1; then
b4eb6b3d
JH
12296 echo "POSIX sigsetjmp found." >&4
12297 val="$define"
12298 else
12299 $cat >&4 <<EOM
12300Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12301I'll ignore them.
12302EOM
12303 val="$undef"
12304 fi
12305 else
12306 echo "sigsetjmp not found." >&4
12307 val="$undef"
12308 fi
12309 ;;
12310*) val="$d_sigsetjmp"
12311 case "$d_sigsetjmp" in
12312 $define) echo "POSIX sigsetjmp found." >&4;;
12313 $undef) echo "sigsetjmp not found." >&4;;
12314 esac
12315 ;;
12316esac
12317set d_sigsetjmp
12318eval $setvar
12319$rm -f try.c try
12320
49a78c82
JH
12321: see if sockatmark exists
12322set sockatmark d_sockatmark
12323eval $inlibc
12324
2ef53570
JH
12325: see if prototype for sockatmark is available
12326echo " "
12327set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12328eval $hasproto
12329
b4eb6b3d
JH
12330: see if socks5_init exists
12331set socks5_init d_socks5_init
12332eval $inlibc
12333
eef837ea
JH
12334: see if prototype for setresgid is available
12335echo " "
12336set d_sresgproto setresgid $i_unistd unistd.h
12337eval $hasproto
12338
640374d0
JH
12339: see if prototype for setresuid is available
12340echo " "
12341set d_sresuproto setresuid $i_unistd unistd.h
12342eval $hasproto
12343
b4eb6b3d
JH
12344: see if sys/stat.h is available
12345set sys/stat.h i_sysstat
12346eval $inhdr
12347
12348
12349: see if stat knows about block sizes
12350echo " "
12351echo "Checking to see if your struct stat has st_blocks field..." >&4
12352set d_statblks stat st_blocks $i_sysstat sys/stat.h
12353eval $hasfield
12354
12355
12356: see if this is a sys/vfs.h system
12357set sys/vfs.h i_sysvfs
12358eval $inhdr
12359
12360
12361: see if this is a sys/statfs.h system
12362set sys/statfs.h i_sysstatfs
12363eval $inhdr
12364
12365
12366echo " "
12367echo "Checking to see if your system supports struct statfs..." >&4
12368set 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
12369eval $hasstruct
12370case "$d_statfs_s" in
12371"$define") echo "Yes, it does." ;;
12372*) echo "No, it doesn't." ;;
12373esac
12374
12375
12376
12377: see if struct statfs knows about f_flags
12378case "$d_statfs_s" in
12379define)
12380 echo " "
12381 echo "Checking to see if your struct statfs has f_flags field..." >&4
12382 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
12383 eval $hasfield
12384 ;;
12385*) val="$undef"
12386 set d_statfs_f_flags
12387 eval $setvar
12388 ;;
12389esac
12390case "$d_statfs_f_flags" in
12391"$define") echo "Yes, it does." ;;
12392*) echo "No, it doesn't." ;;
12393esac
12394
12395: see if _ptr and _cnt from stdio act std
12396echo " "
80f36755
NC
12397
12398if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12399 echo "(Looks like you have stdio.h from BSD.)"
12400 case "$stdio_ptr" in
12401 '') stdio_ptr='((fp)->_p)'
12402 ptr_lval=$define
12403 ;;
12404 *) ptr_lval=$d_stdio_ptr_lval;;
12405 esac
12406 case "$stdio_cnt" in
12407 '') stdio_cnt='((fp)->_r)'
12408 cnt_lval=$define
12409 ;;
12410 *) cnt_lval=$d_stdio_cnt_lval;;
12411 esac
12412 case "$stdio_base" in
12413 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12414 esac
12415 case "$stdio_bufsiz" in
12416 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12417 esac
12418elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
b4eb6b3d
JH
12419 echo "(Looks like you have stdio.h from Linux.)"
12420 case "$stdio_ptr" in
12421 '') stdio_ptr='((fp)->_IO_read_ptr)'
12422 ptr_lval=$define
12423 ;;
12424 *) ptr_lval=$d_stdio_ptr_lval;;
12425 esac
12426 case "$stdio_cnt" in
12427 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12428 cnt_lval=$undef
12429 ;;
12430 *) cnt_lval=$d_stdio_cnt_lval;;
12431 esac
12432 case "$stdio_base" in
12433 '') stdio_base='((fp)->_IO_read_base)';;
12434 esac
12435 case "$stdio_bufsiz" in
12436 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12437 esac
12438else
12439 case "$stdio_ptr" in
12440 '') stdio_ptr='((fp)->_ptr)'
12441 ptr_lval=$define
12442 ;;
12443 *) ptr_lval=$d_stdio_ptr_lval;;
12444 esac
12445 case "$stdio_cnt" in
12446 '') stdio_cnt='((fp)->_cnt)'
12447 cnt_lval=$define
12448 ;;
12449 *) cnt_lval=$d_stdio_cnt_lval;;
12450 esac
12451 case "$stdio_base" in
12452 '') stdio_base='((fp)->_base)';;
12453 esac
12454 case "$stdio_bufsiz" in
12455 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12456 esac
12457fi
80f36755 12458
b4eb6b3d
JH
12459: test whether _ptr and _cnt really work
12460echo "Checking how std your stdio is..." >&4
12461$cat >try.c <<EOP
12462#include <stdio.h>
12463#define FILE_ptr(fp) $stdio_ptr
12464#define FILE_cnt(fp) $stdio_cnt
12465int main() {
12466 FILE *fp = fopen("try.c", "r");
12467 char c = getc(fp);
12468 if (
12469 18 <= FILE_cnt(fp) &&
12470 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12471 )
12472 exit(0);
12473 exit(1);
12474}
12475EOP
12476val="$undef"
12477set try
5440bc8e
JH
12478if eval $compile && $to try.c; then
12479 if $run ./try; then
b4eb6b3d
JH
12480 echo "Your stdio acts pretty std."
12481 val="$define"
12482 else
12483 echo "Your stdio isn't very std."
12484 fi
12485else
12486 echo "Your stdio doesn't appear very std."
12487fi
12488$rm -f try.c try
12489set d_stdstdio
12490eval $setvar
12491
12492: Can _ptr be used as an lvalue?
12493case "$d_stdstdio$ptr_lval" in
12494$define$define) val=$define ;;
12495*) val=$undef ;;
12496esac
12497set d_stdio_ptr_lval
12498eval $setvar
12499
12500: Can _cnt be used as an lvalue?
12501case "$d_stdstdio$cnt_lval" in
12502$define$define) val=$define ;;
12503*) val=$undef ;;
12504esac
12505set d_stdio_cnt_lval
12506eval $setvar
12507
a7ffa9b9
NC
12508
12509: test whether setting _ptr sets _cnt as a side effect
12510d_stdio_ptr_lval_sets_cnt="$undef"
12511d_stdio_ptr_lval_nochange_cnt="$undef"
12512case "$d_stdio_ptr_lval$d_stdstdio" in
12513$define$define)
12514 echo "Checking to see what happens if we set the stdio ptr..." >&4
12515$cat >try.c <<EOP
12516#include <stdio.h>
12517/* Can we scream? */
12518/* Eat dust sed :-) */
c1d9e6fa 12519/* In the buffer space, no one can hear you scream. */
0bbfc344
JH
12520#define FILE_ptr(fp) $stdio_ptr
12521#define FILE_cnt(fp) $stdio_cnt
c1d9e6fa 12522#include <sys/types.h>
a7ffa9b9
NC
12523int main() {
12524 FILE *fp = fopen("try.c", "r");
c1d9e6fa 12525 int c;
a7ffa9b9
NC
12526 char *ptr;
12527 size_t cnt;
c1d9e6fa
JH
12528 if (!fp) {
12529 puts("Fail even to read");
12530 exit(1);
12531 }
12532 c = getc(fp); /* Read away the first # */
12533 if (c == EOF) {
12534 puts("Fail even to read");
12535 exit(1);
12536 }
a7ffa9b9
NC
12537 if (!(
12538 18 <= FILE_cnt(fp) &&
12539 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12540 )) {
12541 puts("Fail even to read");
12542 exit (1);
12543 }
c1d9e6fa
JH
12544 ptr = (char*) FILE_ptr(fp);
12545 cnt = (size_t)FILE_cnt(fp);
a7ffa9b9 12546
c1d9e6fa 12547 FILE_ptr(fp) += 42;
a7ffa9b9 12548
c1d9e6fa 12549 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
a7ffa9b9
NC
12550 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12551 exit (1);
12552 }
12553 if (FILE_cnt(fp) <= 20) {
12554 printf ("Fail (<20 chars to test)");
12555 exit (1);
12556 }
12557 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12558 puts("Fail compare");
12559 exit (1);
12560 }
12561 if (cnt == FILE_cnt(fp)) {
12562 puts("Pass_unchanged");
12563 exit (0);
12564 }
12565 if (FILE_cnt(fp) == (cnt - 42)) {
12566 puts("Pass_changed");
12567 exit (0);
12568 }
12569 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12570 return 1;
12571
12572}
12573EOP
12574 set try
5440bc8e
JH
12575 if eval $compile && $to try.c; then
12576 case `$run ./try` in
a7ffa9b9 12577 Pass_changed)
2e32dcfe 12578 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
a7ffa9b9
NC
12579 d_stdio_ptr_lval_sets_cnt="$define" ;;
12580 Pass_unchanged)
12581 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12582 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12583 Fail*)
12584 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12585 *)
12586 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12587 esac
12588 else
12589 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12590 fi
12591 $rm -f try.c try
12592 ;;
12593esac
12594
b4eb6b3d
JH
12595: see if _base is also standard
12596val="$undef"
12597case "$d_stdstdio" in
12598$define)
12599 $cat >try.c <<EOP
12600#include <stdio.h>
12601#define FILE_base(fp) $stdio_base
12602#define FILE_bufsiz(fp) $stdio_bufsiz
12603int main() {
12604 FILE *fp = fopen("try.c", "r");
12605 char c = getc(fp);
12606 if (
12607 19 <= FILE_bufsiz(fp) &&
12608 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12609 )
12610 exit(0);
12611 exit(1);
12612}
12613EOP
12614 set try
5440bc8e
JH
12615 if eval $compile && $to try.c; then
12616 if $run ./try; then
b4eb6b3d
JH
12617 echo "And its _base field acts std."
12618 val="$define"
12619 else
12620 echo "But its _base field isn't std."
12621 fi
12622 else
12623 echo "However, it seems to be lacking the _base field."
12624 fi
12625 $rm -f try.c try
12626 ;;
12627esac
12628set d_stdiobase
12629eval $setvar
12630
12631$cat >&4 <<EOM
12632Checking how to access stdio streams by file descriptor number...
12633EOM
12634case "$stdio_stream_array" in
12635'') $cat >try.c <<EOCP
12636#include <stdio.h>
12637int main() {
12638 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12639 printf("yes\n");
12640}
12641EOCP
12642 for s in _iob __iob __sF
12643 do
12644 set try -DSTDIO_STREAM_ARRAY=$s
12645 if eval $compile; then
5440bc8e 12646 case "`$run ./try`" in
b4eb6b3d
JH
12647 yes) stdio_stream_array=$s; break ;;
12648 esac
12649 fi
12650 done
12651 $rm -f try.* try$exe_ext
12652esac
12653case "$stdio_stream_array" in
12654'') $cat >&4 <<EOM
12655I can't figure out how to access stdio streams by file descriptor number.
12656EOM
12657 d_stdio_stream_array="$undef"
12658 ;;
12659*) $cat >&4 <<EOM
12660You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12661EOM
12662 d_stdio_stream_array="$define"
12663 ;;
12664esac
12665
12666: see if strcoll exists
12667set strcoll d_strcoll
12668eval $inlibc
12669
12670: check for structure copying
12671echo " "
12672echo "Checking to see if your C compiler can copy structs..." >&4
12673$cat >try.c <<'EOCP'
12674int main()
12675{
12676 struct blurfl {
12677 int dyick;
12678 } foo, bar;
12679
12680 foo = bar;
12681}
12682EOCP
12683if $cc -c try.c >/dev/null 2>&1 ; then
12684 val="$define"
12685 echo "Yup, it can."
12686else
12687 val="$undef"
12688 echo "Nope, it can't."
12689fi
12690set d_strctcpy
12691eval $setvar
12692$rm -f try.*
12693
12694: see if strerror and/or sys_errlist[] exist
12695echo " "
12696if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12697 if set strerror val -f d_strerror; eval $csym; $val; then
12698 echo 'strerror() found.' >&4
12699 d_strerror="$define"
12700 d_strerrm='strerror(e)'
12701 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12702 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12703 d_syserrlst="$define"
12704 else
12705 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12706 d_syserrlst="$undef"
12707 fi
12708 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12709 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12710 echo 'strerror() found in string header.' >&4
12711 d_strerror="$define"
12712 d_strerrm='strerror(e)'
12713 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12714 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12715 d_syserrlst="$define"
12716 else
12717 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12718 d_syserrlst="$undef"
12719 fi
12720 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12721 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12722 d_strerror="$undef"
12723 d_syserrlst="$define"
12724 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12725 else
12726 echo 'strerror() and sys_errlist[] NOT found.' >&4
12727 d_strerror="$undef"
12728 d_syserrlst="$undef"
12729 d_strerrm='"unknown"'
12730 fi
12731fi
12732
b3c85772
JH
12733: see if strftime exists
12734set strftime d_strftime
12735eval $inlibc
12736
b4eb6b3d
JH
12737: see if strtod exists
12738set strtod d_strtod
12739eval $inlibc
12740
12741: see if strtol exists
12742set strtol d_strtol
12743eval $inlibc
12744
12745: see if strtold exists
12746set strtold d_strtold
12747eval $inlibc
12748
12749: see if strtoll exists
12750set strtoll d_strtoll
12751eval $inlibc
12752
12753case "$d_longlong-$d_strtoll" in
12754"$define-$define")
12755 $cat <<EOM
12756Checking whether your strtoll() works okay...
12757EOM
12758 $cat >try.c <<'EOCP'
12759#include <errno.h>
12760#ifdef __hpux
12761#define strtoll __strtoll
12762#endif
e75931a7
YST
12763#ifdef __EMX__
12764#define strtoll _strtoll
12765#endif
b4eb6b3d
JH
12766#include <stdio.h>
12767extern long long int strtoll(char *s, char **, int);
12768static int bad = 0;
12769int check(char *s, long long ell, int een) {
12770 long long gll;
12771 errno = 0;
12772 gll = strtoll(s, 0, 10);
12773 if (!((gll == ell) && (errno == een)))
12774 bad++;
12775}
12776int main() {
12777 check(" 1", 1LL, 0);
12778 check(" 0", 0LL, 0);
12779 check("-1", -1LL, 0);
12780 check("-9223372036854775808", -9223372036854775808LL, 0);
12781 check("-9223372036854775808", -9223372036854775808LL, 0);
12782 check(" 9223372036854775807", 9223372036854775807LL, 0);
12783 check("-9223372036854775808", -9223372036854775808LL, 0);
12784 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12785 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12786 if (!bad)
12787 printf("ok\n");
12788}
12789EOCP
12790 set try
12791 if eval $compile; then
5440bc8e 12792 yyy=`$run ./try`
e75931a7 12793 case "$yyy" in
b4eb6b3d
JH
12794 ok) echo "Your strtoll() seems to be working okay." ;;
12795 *) cat <<EOM >&4
12796Your strtoll() doesn't seem to be working okay.
12797EOM
12798 d_strtoll="$undef"
12799 ;;
69eadf66 12800 esac
e75931a7
YST
12801 else
12802 echo "(I can't seem to compile the test program--assuming it doesn't)"
12803 d_strtoll="$undef"
b4eb6b3d
JH
12804 fi
12805 ;;
12806esac
12807
28e5dec8
JH
12808: see if strtoq exists
12809set strtoq d_strtoq
12810eval $inlibc
12811
b4eb6b3d
JH
12812: see if strtoul exists
12813set strtoul d_strtoul
12814eval $inlibc
12815
d0e6d399
NC
12816case "$d_strtoul" in
12817"$define")
12818 $cat <<EOM
12819Checking whether your strtoul() works okay...
12820EOM
12821 $cat >try.c <<'EOCP'
12822#include <errno.h>
12823#include <stdio.h>
12824extern unsigned long int strtoul(char *s, char **, int);
12825static int bad = 0;
12826void check(char *s, unsigned long eul, int een) {
12827 unsigned long gul;
12828 errno = 0;
12829 gul = strtoul(s, 0, 10);
12830 if (!((gul == eul) && (errno == een)))
12831 bad++;
12832}
12833int main() {
12834 check(" 1", 1L, 0);
12835 check(" 0", 0L, 0);
12836EOCP
12837 case "$longsize" in
12838 8)
12839 $cat >>try.c <<'EOCP'
09c0d2c4
JH
12840 check("18446744073709551615", 18446744073709551615UL, 0);
12841 check("18446744073709551616", 18446744073709551615UL, ERANGE);
c11ecd62 12842#if 0 /* strtoul() for /^-/ strings is undefined. */
09c0d2c4 12843 check("-1", 18446744073709551615UL, 0);
d0e6d399
NC
12844 check("-18446744073709551614", 2, 0);
12845 check("-18446744073709551615", 1, 0);
09c0d2c4
JH
12846 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12847 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
c11ecd62 12848#endif
d0e6d399
NC
12849EOCP
12850 ;;
12851 4)
12852 $cat >>try.c <<'EOCP'
12853 check("4294967295", 4294967295UL, 0);
12854 check("4294967296", 4294967295UL, ERANGE);
c11ecd62 12855#if 0 /* strtoul() for /^-/ strings is undefined. */
d0e6d399
NC
12856 check("-1", 4294967295UL, 0);
12857 check("-4294967294", 2, 0);
12858 check("-4294967295", 1, 0);
12859 check("-4294967296", 4294967295UL, ERANGE);
12860 check("-4294967297", 4294967295UL, ERANGE);
c11ecd62 12861#endif
d0e6d399
NC
12862EOCP
12863 ;;
12864 *)
12865: Should we write these tests to be more portable by sprintf-ing
12866: ~0 and then manipulating that char string as input for strtol?
12867 ;;
12868 esac
12869 $cat >>try.c <<'EOCP'
12870 if (!bad)
12871 printf("ok\n");
12872 return 0;
12873}
12874EOCP
12875 set try
12876 if eval $compile; then
5440bc8e 12877 case "`$run ./try`" in
d0e6d399
NC
12878 ok) echo "Your strtoul() seems to be working okay." ;;
12879 *) cat <<EOM >&4
12880Your strtoul() doesn't seem to be working okay.
12881EOM
12882 d_strtoul="$undef"
12883 ;;
12884 esac
12885 fi
12886 ;;
12887esac
12888
b4eb6b3d
JH
12889: see if strtoull exists
12890set strtoull d_strtoull
12891eval $inlibc
12892
12893case "$d_longlong-$d_strtoull" in
12894"$define-$define")
12895 $cat <<EOM
12896Checking whether your strtoull() works okay...
12897EOM
12898 $cat >try.c <<'EOCP'
12899#include <errno.h>
12900#ifdef __hpux
12901#define strtoull __strtoull
12902#endif
12903#include <stdio.h>
12904extern unsigned long long int strtoull(char *s, char **, int);
12905static int bad = 0;
12906int check(char *s, long long eull, int een) {
12907 long long gull;
12908 errno = 0;
12909 gull = strtoull(s, 0, 10);
12910 if (!((gull == eull) && (errno == een)))
12911 bad++;
12912}
12913int main() {
d0e6d399
NC
12914 check(" 1", 1LL, 0);
12915 check(" 0", 0LL, 0);
12916 check("18446744073709551615", 18446744073709551615ULL, 0);
12917 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12918#if 0 /* strtoull() for /^-/ strings is undefined. */
d0e6d399
NC
12919 check("-1", 18446744073709551615ULL, 0);
12920 check("-18446744073709551614", 2LL, 0);
12921 check("-18446744073709551615", 1LL, 0);
12922 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12923 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12924#endif
b4eb6b3d
JH
12925 if (!bad)
12926 printf("ok\n");
12927}
12928EOCP
12929 set try
12930 if eval $compile; then
5440bc8e 12931 case "`$run ./try`" in
b4eb6b3d
JH
12932 ok) echo "Your strtoull() seems to be working okay." ;;
12933 *) cat <<EOM >&4
12934Your strtoull() doesn't seem to be working okay.
12935EOM
12936 d_strtoull="$undef"
12937 ;;
12938 esac
12939 fi
12940 ;;
12941esac
12942
12943: see if strtouq exists
12944set strtouq d_strtouq
12945eval $inlibc
12946
d0e6d399
NC
12947case "$d_strtouq" in
12948"$define")
12949 $cat <<EOM
12950Checking whether your strtouq() works okay...
12951EOM
12952 $cat >try.c <<'EOCP'
12953#include <errno.h>
12954#include <stdio.h>
12955extern unsigned long long int strtouq(char *s, char **, int);
12956static int bad = 0;
12957void check(char *s, unsigned long long eull, int een) {
12958 unsigned long long gull;
12959 errno = 0;
12960 gull = strtouq(s, 0, 10);
12961 if (!((gull == eull) && (errno == een)))
12962 bad++;
12963}
12964int main() {
12965 check(" 1", 1LL, 0);
12966 check(" 0", 0LL, 0);
12967 check("18446744073709551615", 18446744073709551615ULL, 0);
12968 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
c11ecd62 12969#if 0 /* strtouq() for /^-/ strings is undefined. */
d0e6d399
NC
12970 check("-1", 18446744073709551615ULL, 0);
12971 check("-18446744073709551614", 2LL, 0);
12972 check("-18446744073709551615", 1LL, 0);
12973 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12974 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
c11ecd62 12975#endif
d0e6d399
NC
12976 if (!bad)
12977 printf("ok\n");
12978 return 0;
12979}
12980EOCP
12981 set try
12982 if eval $compile; then
5440bc8e 12983 case "`$run ./try`" in
d0e6d399
NC
12984 ok) echo "Your strtouq() seems to be working okay." ;;
12985 *) cat <<EOM >&4
12986Your strtouq() doesn't seem to be working okay.
12987EOM
12988 d_strtouq="$undef"
12989 ;;
12990 esac
12991 fi
12992 ;;
12993esac
12994
b4eb6b3d
JH
12995: see if strxfrm exists
12996set strxfrm d_strxfrm
12997eval $inlibc
12998
12999: see if symlink exists
13000set symlink d_symlink
13001eval $inlibc
13002
13003: see if syscall exists
13004set syscall d_syscall
13005eval $inlibc
13006
2ef53570
JH
13007: see if prototype for syscall is available
13008echo " "
13009set d_syscallproto syscall $i_unistd unistd.h
13010eval $hasproto
13011
b4eb6b3d
JH
13012: see if sysconf exists
13013set sysconf d_sysconf
13014eval $inlibc
13015
13016: see if system exists
13017set system d_system
13018eval $inlibc
13019
13020: see if tcgetpgrp exists
13021set tcgetpgrp d_tcgetpgrp
13022eval $inlibc
13023
13024: see if tcsetpgrp exists
13025set tcsetpgrp d_tcsetpgrp
13026eval $inlibc
13027
13028: see if prototype for telldir is available
13029echo " "
13030set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13031eval $hasproto
13032
13033: see if this is a sys/times.h system
13034set sys/times.h i_systimes
13035eval $inhdr
13036
13037: see if times exists
13038echo " "
13039if set times val -f d_times; eval $csym; $val; then
13040 echo 'times() found.' >&4
13041 d_times="$define"
13042 inc=''
13043 case "$i_systimes" in
13044 "$define") inc='sys/times.h';;
13045 esac
13046 rp="What is the type returned by times() on this system?"
13047 set clock_t clocktype long stdio.h sys/types.h $inc
13048 eval $typedef_ask
13049else
13050 echo 'times() NOT found, hope that will do.' >&4
13051 d_times="$undef"
13052 clocktype='int'
13053fi
13054
13055: see if truncate exists
13056set truncate d_truncate
13057eval $inlibc
13058
13059: see if tzname[] exists
13060echo " "
13061if set tzname val -a d_tzname; eval $csym; $val; then
13062 val="$define"
13063 echo 'tzname[] found.' >&4
13064else
13065 val="$undef"
13066 echo 'tzname[] NOT found.' >&4
13067fi
13068set d_tzname
13069eval $setvar
13070
4e0554ec
JH
13071case "$osname" in
13072next|rhapsody|darwin) multiarch="$define" ;;
13073esac
13074case "$multiarch" in
13075''|[nN]*) multiarch="$undef" ;;
13076esac
13077
13078: check for ordering of bytes in a long
13079echo " "
5440bc8e 13080case "$usecrosscompile$multiarch" in
4e0554ec
JH
13081*$define*)
13082 $cat <<EOM
13083You seem to be either cross-compiling or doing a multiarchitecture build,
13084skipping the byteorder check.
13085
13086EOM
5440bc8e 13087 byteorder='ffff'
4e0554ec
JH
13088 ;;
13089*)
13090 case "$byteorder" in
13091 '')
13092 $cat <<'EOM'
13093In the following, larger digits indicate more significance. A big-endian
13094machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13095little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13096machines may have weird orders like 3412. A Cray will report 87654321,
13097an Alpha will report 12345678. If the test program works the default is
13098probably right.
13099I'm now running the test program...
13100EOM
13101 $cat >try.c <<'EOCP'
13102#include <stdio.h>
13103int main()
13104{
13105 int i;
13106 union {
13107 unsigned long l;
13108 char c[sizeof(long)];
13109 } u;
13110
13111 if (sizeof(long) > 4)
13112 u.l = (0x08070605L << 32) | 0x04030201L;
13113 else
13114 u.l = 0x04030201L;
13115 for (i = 0; i < sizeof(long); i++)
13116 printf("%c", u.c[i]+'0');
13117 printf("\n");
13118 exit(0);
13119}
13120EOCP
13121 xxx_prompt=y
13122 set try
13123 if eval $compile && ./try > /dev/null; then
5440bc8e 13124 dflt=`$run ./try`
4e0554ec
JH
13125 case "$dflt" in
13126 [1-4][1-4][1-4][1-4]|12345678|87654321)
13127 echo "(The test program ran ok.)"
13128 echo "byteorder=$dflt"
13129 xxx_prompt=n
13130 ;;
13131 ????|????????) echo "(The test program ran ok.)" ;;
13132 *) echo "(The test program didn't run right for some reason.)" ;;
13133 esac
13134 else
13135 dflt='4321'
13136 cat <<'EOM'
13137(I can't seem to compile the test program. Guessing big-endian...)
13138EOM
13139 fi
13140 case "$xxx_prompt" in
13141 y)
13142 rp="What is the order of bytes in a long?"
13143 . ./myread
13144 byteorder="$ans"
13145 ;;
13146 *) byteorder=$dflt
13147 ;;
13148 esac
13149 ;;
13150 esac
13151 $rm -f try.c try
13152 ;;
13153esac
13154
13155
13156$cat <<EOM
13157
13158Checking to see whether you can access character data unalignedly...
13159EOM
13160$cat >try.c <<EOCP
13161#include <stdio.h>
13162#define U32 $u32type
13163#define BYTEORDER $byteorder
13164int main() {
13165#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13166 U8 buf[] = "\0\0\0\1\0\0\0\0";
13167 U32 *up;
13168 int i;
13169
13170 if (sizeof(U32) != 4) {
13171 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13172 exit(1);
13173 }
13174
13175 fflush(stdout);
13176
13177 for (i = 0; i < 4; i++) {
13178 up = (U32*)(buf + i);
13179 if (! ((*up == 1 << (8*i)) || /* big-endian */
13180 (*up == 1 << (8*(3-i))) /* little-endian */
13181 )
13182 )
13183 {
13184 printf("read failed (%x)\n", *up);
13185 exit(2);
13186 }
13187 }
13188
13189 /* write test */
13190 for (i = 0; i < 4; i++) {
13191 up = (U32*)(buf + i);
13192 *up = 0xBeef;
13193 if (*up != 0xBeef) {
13194 printf("write failed (%x)\n", *up);
13195 exit(3);
13196 }
13197 }
13198
13199 exit(0);
13200#else
13201 printf("1\n");
13202 exit(1);
13203#endif
13204 return 0;
13205}
13206EOCP
13207set try
13208if eval $compile_ok; then
5440bc8e
JH
13209 echo "(Testing for character data alignment may dump core.)" >&4
13210 $run ./try 2>&1 >/dev/null
4e0554ec
JH
13211 case "$?" in
13212 0) cat >&4 <<EOM
13213You can access character data pretty unalignedly.
13214EOM
13215 d_u32align="$undef"
13216 ;;
13217 *) cat >&4 <<EOM
13218It seems that you must access character data in an aligned manner.
13219EOM
13220 d_u32align="$define"
13221 ;;
13222 esac
13223 $rm -f core core.try.* try.core
13224else
13225 rp='Can you access character data at unaligned addresses?'
13226 dflt='n'
13227 . ./myread
13228 case "$ans" in
13229 [yY]*) d_u32align="$undef" ;;
13230 *) d_u32align="$define" ;;
13231 esac
13232fi
13233
13234: see if ualarm exists
13235set ualarm d_ualarm
13236eval $inlibc
13237
b4eb6b3d
JH
13238: see if umask exists
13239set umask d_umask
13240eval $inlibc
13241
4e0554ec
JH
13242: see if usleep exists
13243set usleep d_usleep
13244eval $inlibc
13245
2ef53570
JH
13246: see if prototype for usleep is available
13247echo " "
13248set d_usleepproto usleep $i_unistd unistd.h
13249eval $hasproto
13250
b4eb6b3d
JH
13251: see if ustat exists
13252set ustat d_ustat
13253eval $inlibc
13254
13255: backward compatibility for d_hvfork
13256if test X$d_hvfork != X; then
13257 d_vfork="$d_hvfork"
13258 d_hvfork=''
13259fi
13260: see if there is a vfork
13261val=''
13262set vfork val
13263eval $inlibc
13264
13265: Ok, but do we want to use it. vfork is reportedly unreliable in
13266: perl on Solaris 2.x, and probably elsewhere.
13267case "$val" in
13268$define)
13269 echo " "
13270 case "$usevfork" in
13271 false) dflt='n';;
13272 *) dflt='y';;
13273 esac
13274 cat <<'EOM'
13275
13276Perl can only use a vfork() that doesn't suffer from strict
13277restrictions on calling functions or modifying global data in
13278the child. For example, glibc-2.1 contains such a vfork()
13279that is unsuitable. If your system provides a proper fork()
13280call, chances are that you do NOT want perl to use vfork().
13281
13282EOM
13283 rp="Do you still want to use vfork()?"
13284 . ./myread
13285 case "$ans" in
13286 y|Y) ;;
13287 *)
13288 echo "Ok, we won't use vfork()."
13289 val="$undef"
13290 ;;
13291 esac
13292 ;;
13293esac
13294set d_vfork
13295eval $setvar
13296case "$d_vfork" in
13297$define) usevfork='true';;
13298*) usevfork='false';;
13299esac
13300
13301: see if this is an sysdir system
13302set sys/dir.h i_sysdir
13303eval $inhdr
13304
13305: see if this is an sysndir system
13306set sys/ndir.h i_sysndir
13307eval $inhdr
13308
13309: see if closedir exists
13310set closedir d_closedir
13311eval $inlibc
13312
13313case "$d_closedir" in
13314"$define")
13315 echo " "
13316 echo "Checking whether closedir() returns a status..." >&4
5440bc8e 13317 cat > try.c <<EOM
b4eb6b3d
JH
13318#$i_dirent I_DIRENT /**/
13319#$i_sysdir I_SYS_DIR /**/
13320#$i_sysndir I_SYS_NDIR /**/
13321#$i_systypes I_SYS_TYPES /**/
13322
13323#if defined(I_SYS_TYPES)
13324#include <sys/types.h>
13325#endif
13326#if defined(I_DIRENT)
13327#include <dirent.h>
13328#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13329#include <sys/dir.h>
13330#endif
13331#else
13332#ifdef I_SYS_NDIR
13333#include <sys/ndir.h>
13334#else
13335#ifdef I_SYS_DIR
13336#ifdef hp9000s500
13337#include <ndir.h> /* may be wrong in the future */
13338#else
13339#include <sys/dir.h>
13340#endif
13341#endif
13342#endif
13343#endif
13344int main() { return closedir(opendir(".")); }
13345EOM
5440bc8e 13346 set try
b4eb6b3d 13347 if eval $compile_ok; then
5440bc8e 13348 if $run ./try > /dev/null 2>&1 ; then
b4eb6b3d
JH
13349 echo "Yes, it does."
13350 val="$undef"
13351 else
13352 echo "No, it doesn't."
13353 val="$define"
13354 fi
13355 else
13356 echo "(I can't seem to compile the test program--assuming it doesn't)"
13357 val="$define"
13358 fi
13359 ;;
13360*)
13361 val="$undef";
13362 ;;
13363esac
13364set d_void_closedir
13365eval $setvar
5440bc8e 13366$rm -f try try.*
b4eb6b3d
JH
13367: see if there is a wait4
13368set wait4 d_wait4
13369eval $inlibc
13370
13371: see if waitpid exists
13372set waitpid d_waitpid
13373eval $inlibc
13374
13375: see if wcstombs exists
13376set wcstombs d_wcstombs
13377eval $inlibc
13378
13379: see if wctomb exists
13380set wctomb d_wctomb
13381eval $inlibc
13382
4e0554ec
JH
13383: see if writev exists
13384set writev d_writev
13385eval $inlibc
13386
b4eb6b3d
JH
13387: preserve RCS keywords in files with variable substitution, grrr
13388Date='$Date'
13389Id='$Id'
13390Log='$Log'
13391RCSfile='$RCSfile'
13392Revision='$Revision'
13393
b4eb6b3d
JH
13394: check for alignment requirements
13395echo " "
5440bc8e 13396case "$usecrosscompile$multiarch" in
b4eb6b3d
JH
13397*$define*)
13398 $cat <<EOM
13399You seem to be either cross-compiling or doing a multiarchitecture build,
13400skipping the memory alignment check.
13401
13402EOM
13403 case "$alignbytes" in
13404 '') alignbytes=8 ;;
13405 esac
13406 ;;
13407*)
13408 case "$alignbytes" in
13409 '') echo "Checking alignment constraints..." >&4
13410 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13411 $cat >try.c <<'EOCP'
13412typedef long double NV;
13413EOCP
13414 else
13415 $cat >try.c <<'EOCP'
13416typedef double NV;
13417EOCP
13418 fi
13419 $cat >>try.c <<'EOCP'
13420#include <stdio.h>
13421struct foobar {
13422 char foo;
13423 NV bar;
13424} try_algn;
13425int main()
13426{
13427 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13428 return(0);
13429}
13430EOCP
13431 set try
13432 if eval $compile_ok; then
5440bc8e 13433 dflt=`$run ./try`
b4eb6b3d
JH
13434 else
13435 dflt='8'
13436 echo "(I can't seem to compile the test program...)"
13437 fi
13438 ;;
13439 *) dflt="$alignbytes"
13440 ;;
13441 esac
13442 rp="Doubles must be aligned on a how-many-byte boundary?"
13443 . ./myread
13444 alignbytes="$ans"
13445 $rm -f try.c try
13446 ;;
13447esac
13448
13449
13450: set the base revision
13451baserev=5.0
13452
b4eb6b3d
JH
13453: how do we catenate cpp tokens here?
13454echo " "
13455echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13456$cat >cpp_stuff.c <<'EOCP'
13457#define RCAT(a,b)a/**/b
13458#define ACAT(a,b)a ## b
13459RCAT(Rei,ser)
13460ACAT(Cir,cus)
13461EOCP
13462$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13463if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13464 echo "Oh! Smells like ANSI's been here." >&4
13465 echo "We can catify or stringify, separately or together!"
13466 cpp_stuff=42
13467elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13468 echo "Ah, yes! The good old days!" >&4
13469 echo "However, in the good old days we don't know how to stringify and"
13470 echo "catify at the same time."
13471 cpp_stuff=1
13472else
13473 $cat >&4 <<EOM
13474Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13475to have to edit the values of CAT[2-5] in config.h...
13476EOM
13477 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13478fi
13479$rm -f cpp_stuff.*
13480
13481: see if this is a db.h system
13482set db.h i_db
13483eval $inhdr
13484
13485case "$i_db" in
13486$define)
13487 : Check db version.
13488 echo " "
13489 echo "Checking Berkeley DB version ..." >&4
13490 $cat >try.c <<EOCP
13491#$d_const HASCONST
13492#ifndef HASCONST
13493#define const
13494#endif
13495#include <sys/types.h>
13496#include <stdio.h>
13497#include <db.h>
640374d0 13498int main(int argc, char *argv[])
b4eb6b3d
JH
13499{
13500#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13501 int Major, Minor, Patch ;
13502 unsigned long Version ;
13503 (void)db_version(&Major, &Minor, &Patch) ;
640374d0
JH
13504 if (argc == 2) {
13505 printf("%d %d %d %d %d %d\n",
13506 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13507 Major, Minor, Patch);
13508 exit(0);
13509 }
13510 printf("You have Berkeley DB Version 2 or greater.\n");
b4eb6b3d
JH
13511
13512 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13513 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13514 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13515 Major, Minor, Patch) ;
13516
13517 /* check that db.h & libdb are compatible */
13518 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
640374d0 13519 printf("db.h and libdb are incompatible.\n") ;
b4eb6b3d
JH
13520 exit(3);
13521 }
13522
640374d0 13523 printf("db.h and libdb are compatible.\n") ;
b4eb6b3d
JH
13524
13525 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13526 + DB_VERSION_PATCH ;
13527
13528 /* needs to be >= 2.3.4 */
13529 if (Version < 2003004) {
13530 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
640374d0 13531 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
b4eb6b3d
JH
13532 exit(2);
13533 }
13534
13535 exit(0);
13536#else
13537#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
640374d0
JH
13538 if (argc == 2) {
13539 printf("1 0 0\n");
13540 exit(0);
13541 }
13542 printf("You have Berkeley DB Version 1.\n");
b4eb6b3d
JH
13543 exit(0); /* DB version < 2: the coast is clear. */
13544#else
13545 exit(1); /* <db.h> not Berkeley DB? */
13546#endif
13547#endif
13548}
13549EOCP
13550 set try
5440bc8e 13551 if eval $compile_ok && $run ./try; then
b4eb6b3d 13552 echo 'Looks OK.' >&4
5440bc8e 13553 set `$run ./try 1`
640374d0
JH
13554 db_version_major=$1
13555 db_version_minor=$2
13556 db_version_patch=$3
b4eb6b3d
JH
13557 else
13558 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13559 i_db=$undef
13560 case " $libs " in
13561 *"-ldb "*)
13562 : Remove db from list of libraries to use
13563 echo "Removing unusable -ldb from library list" >&4
13564 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13565 shift
13566 libs="$*"
13567 echo "libs = $libs" >&4
13568 ;;
13569 esac
13570 fi
13571 $rm -f try.*
13572 ;;
13573esac
13574
13575case "$i_db" in
13576define)
13577 : Check the return type needed for hash
13578 echo " "
13579 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13580 $cat >try.c <<EOCP
13581#$d_const HASCONST
13582#ifndef HASCONST
13583#define const
13584#endif
13585#include <sys/types.h>
13586#include <db.h>
13587
13588#ifndef DB_VERSION_MAJOR
13589u_int32_t hash_cb (ptr, size)
13590const void *ptr;
13591size_t size;
13592{
13593}
13594HASHINFO info;
13595int main()
13596{
13597 info.hash = hash_cb;
13598}
13599#endif
13600EOCP
13601 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13602 if $contains warning try.out >>/dev/null 2>&1 ; then
13603 db_hashtype='int'
13604 else
13605 db_hashtype='u_int32_t'
13606 fi
13607 else
13608 : XXX Maybe we should just give up here.
13609 db_hashtype=u_int32_t
13610 $cat try.out >&4
13611 echo "Help: I can't seem to compile the db test program." >&4
13612 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13613 fi
13614 $rm -f try.*
13615 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13616 ;;
13617*) db_hashtype=u_int32_t
13618 ;;
13619esac
13620case "$i_db" in
13621define)
13622 : Check the return type needed for prefix
13623 echo " "
13624 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13625 cat >try.c <<EOCP
13626#$d_const HASCONST
13627#ifndef HASCONST
13628#define const
13629#endif
13630#include <sys/types.h>
13631#include <db.h>
13632
13633#ifndef DB_VERSION_MAJOR
13634size_t prefix_cb (key1, key2)
13635const DBT *key1;
13636const DBT *key2;
13637{
13638}
13639BTREEINFO info;
13640int main()
13641{
13642 info.prefix = prefix_cb;
13643}
13644#endif
13645EOCP
13646 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13647 if $contains warning try.out >>/dev/null 2>&1 ; then
13648 db_prefixtype='int'
13649 else
13650 db_prefixtype='size_t'
13651 fi
13652 else
13653 db_prefixtype='size_t'
13654 : XXX Maybe we should just give up here.
13655 $cat try.out >&4
13656 echo "Help: I can't seem to compile the db test program." >&4
13657 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13658 fi
13659 $rm -f try.*
13660 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13661 ;;
13662*) db_prefixtype='size_t'
13663 ;;
13664esac
13665
b4eb6b3d
JH
13666
13667: How can we generate normalized random numbers ?
13668echo " "
13669echo "Looking for a random number function..." >&4
13670case "$randfunc" in
13671'')
13672 if set drand48 val -f; eval $csym; $val; then
13673 dflt="drand48"
13674 echo "Good, found drand48()." >&4
13675 elif set random val -f; eval $csym; $val; then
13676 dflt="random"
13677 echo "OK, found random()." >&4
13678 else
13679 dflt="rand"
13680 echo "Yick, looks like I have to use rand()." >&4
13681 fi
13682 echo " "
13683 ;;
13684*)
13685 dflt="$randfunc"
13686 ;;
13687esac
13688cont=true
13689
13690case "$ccflags" in
13691*-Dmy_rand=*|*-Dmy_srand=*)
13692 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13693 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13694 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13695 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13696 ;;
13697esac
13698
13699while $test "$cont"; do
13700 rp="Use which function to generate random numbers?"
13701 . ./myread
13702 if $test "$ans" = "$dflt"; then
13703 : null
13704 else
13705 randbits=''
13706 fi
13707 randfunc="$ans"
13708 if set $ans val -f; eval $csym; $val; then
13709 cont=''
13710 else
13711 dflt=y
13712 rp="I cannot find function $ans. Use that name anyway?"
13713 . ./myread
13714 dflt=rand
13715 case "$ans" in
13716 [yY]*) cont='';;
13717 esac
13718 fi
13719 case "$cont" in
13720 '')
13721 case "$randfunc" in
13722 drand48)
13723 drand01="drand48()"
13724 seedfunc="srand48"
13725 randbits=48
13726 randseedtype=long
13727 ;;
13728 rand|random)
13729 case "$randbits" in
13730 '')
13731echo "Checking to see how many bits your $randfunc() function produces..." >&4
13732 $cat >try.c <<EOCP
13733#$i_unistd I_UNISTD
13734#$i_stdlib I_STDLIB
13735#include <stdio.h>
13736#ifdef I_UNISTD
13737# include <unistd.h>
13738#endif
13739#ifdef I_STDLIB
13740# include <stdlib.h>
13741#endif
13742int main()
13743{
13744 register int i;
13745 register unsigned long tmp;
13746 register unsigned long max = 0L;
13747
13748 for (i = 1000; i; i--) {
13749 tmp = (unsigned long) $randfunc();
13750 if (tmp > max) max = tmp;
13751 }
13752 for (i = 0; max; i++)
13753 max /= 2;
13754 printf("%d\n",i);
13755}
13756EOCP
13757 set try
13758 if eval $compile_ok; then
13759 dflt=`try`
13760 else
13761 dflt='?'
13762 echo "(I can't seem to compile the test program...)"
13763 fi
13764 ;;
13765 *)
13766 dflt="$randbits"
13767 ;;
13768 esac
13769 rp="How many bits does your $randfunc() function produce?"
13770 . ./myread
13771 randbits="$ans"
13772 $rm -f try.c try
13773 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13774 seedfunc="s$randfunc"
13775 randseedtype=unsigned
13776 ;;
13777 *)
13778 dflt="31"
13779 rp="How many bits does your $randfunc() function produce?"
13780 . ./myread
13781 randbits="$ans"
13782 seedfunc="s$randfunc"
13783 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13784 if set $seedfunc val -f; eval $csym; $val; then
13785 echo "(Using $seedfunc() to seed random generator)"
13786 else
13787 echo "(Warning: no $seedfunc() to seed random generator)"
13788 seedfunc=rand
13789 fi
13790 randseedtype=unsigned
13791 ;;
13792 esac
13793 ;;
13794 esac
13795done
13796
13797echo " "
13798echo "Determining whether or not we are on an EBCDIC system..." >&4
5440bc8e 13799$cat >try.c <<'EOM'
b4eb6b3d
JH
13800int main()
13801{
13802 if ('M'==0xd4) return 0;
13803 return 1;
13804}
13805EOM
13806
13807val=$undef
5440bc8e 13808set try
b4eb6b3d 13809if eval $compile_ok; then
5440bc8e 13810 if $run ./try; then
b4eb6b3d
JH
13811 echo "You seem to speak EBCDIC." >&4
13812 val="$define"
13813 else
5440bc8e 13814 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
b4eb6b3d
JH
13815 fi
13816else
13817 echo "I'm unable to compile the test program." >&4
13818 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13819fi
5440bc8e 13820$rm -f try try.*
b4eb6b3d
JH
13821set ebcdic
13822eval $setvar
13823
13824echo " "
13825$cat >&4 <<EOM
13826Checking how to flush all pending stdio output...
13827EOM
13828# I only know how to find the first 32 possibly open files on SunOS.
13829# See also hints/sunos_4_1.sh and util.c --AD
13830case "$osname" in
13831sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13832esac
13833$cat >>try.c <<EOCP
13834#include <stdio.h>
13835#$i_unistd I_UNISTD
13836#ifdef I_UNISTD
13837# include <unistd.h>
13838#endif
13839#$d_sysconf HAS_SYSCONF
13840#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13841#ifdef HAS_STDIO_STREAM_ARRAY
13842# define STDIO_STREAM_ARRAY $stdio_stream_array
13843#endif
13844int main() {
5440bc8e
JH
13845 FILE* p;
13846 unlink("try.out");
13847 p = fopen("try.out", "w");
b4eb6b3d
JH
13848#ifdef TRY_FPUTC
13849 fputc('x', p);
13850#else
13851# ifdef TRY_FPRINTF
13852 fprintf(p, "x");
13853# endif
13854#endif
13855#ifdef TRY_FFLUSH_NULL
13856 fflush(NULL);
13857#endif
13858#ifdef TRY_FFLUSH_ALL
13859 {
13860 long open_max = -1;
13861# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13862 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13863# else
13864# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13865 open_max = sysconf(_SC_OPEN_MAX);
13866# else
13867# ifdef FOPEN_MAX
13868 open_max = FOPEN_MAX;
13869# else
13870# ifdef OPEN_MAX
13871 open_max = OPEN_MAX;
13872# else
13873# ifdef _NFILE
13874 open_max = _NFILE;
13875# endif
13876# endif
13877# endif
13878# endif
13879# endif
13880# ifdef HAS_STDIO_STREAM_ARRAY
13881 if (open_max > 0) {
13882 long i;
13883 for (i = 0; i < open_max; i++)
13884 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13885 STDIO_STREAM_ARRAY[i]._file < open_max &&
13886 STDIO_STREAM_ARRAY[i]._flag)
13887 fflush(&STDIO_STREAM_ARRAY[i]);
13888 }
13889 }
13890# endif
13891#endif
13892 _exit(42);
13893}
13894EOCP
13895: first we have to find out how _not_ to flush
5440bc8e 13896$to try.c
b4eb6b3d
JH
13897if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13898 output=''
13899 set try -DTRY_FPUTC
13900 if eval $compile; then
fbe73d74 13901 $run ./try 2>/dev/null
28f5ac64 13902 code="$?"
5440bc8e 13903 $from try.out
28f5ac64 13904 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13905 output=-DTRY_FPUTC
13906 fi
13907 fi
13908 case "$output" in
13909 '')
13910 set try -DTRY_FPRINTF
b4eb6b3d 13911 if eval $compile; then
fbe73d74 13912 $run ./try 2>/dev/null
28f5ac64 13913 code="$?"
5440bc8e 13914 $from try.out
28f5ac64 13915 if $test ! -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
13916 output=-DTRY_FPRINTF
13917 fi
13918 fi
13919 ;;
13920 esac
13921fi
13922: check for fflush NULL behaviour
13923case "$fflushNULL" in
13924'') set try -DTRY_FFLUSH_NULL $output
13925 if eval $compile; then
5440bc8e 13926 $run ./try 2>/dev/null
b4eb6b3d 13927 code="$?"
5440bc8e 13928 $from try.out
b4eb6b3d
JH
13929 if $test -s try.out -a "X$code" = X42; then
13930 fflushNULL="`$cat try.out`"
13931 else
13932 if $test "X$code" != X42; then
13933 $cat >&4 <<EOM
13934(If this test failed, don't worry, we'll try another method shortly.)
13935EOM
13936 fi
13937 fi
13938 fi
13939 $rm -f core try.core core.try.*
13940 case "$fflushNULL" in
13941 x) $cat >&4 <<EOM
13942Your fflush(NULL) works okay for output streams.
13943Let's see if it clobbers input pipes...
13944EOM
13945# As of mid-March 2000 all versions of Solaris appear to have a stdio
13946# bug that improperly flushes the input end of pipes. So we avoid the
13947# autoflush on fork/system/exec support for now. :-(
13948$cat >tryp.c <<EOCP
13949#include <stdio.h>
13950int
13951main(int argc, char **argv)
13952{
13953 char buf[1024];
13954 int i;
13955 char *bp = buf;
13956 while (1) {
13957 while ((i = getc(stdin)) != -1
13958 && (*bp++ = i) != '\n'
13959 && bp < &buf[1024])
13960 /* DO NOTHING */ ;
13961 *bp = '\0';
13962 fprintf(stdout, "%s", buf);
13963 fflush(NULL);
13964 if (i == -1)
13965 return 0;
13966 bp = buf;
13967 }
13968}
13969EOCP
13970 fflushNULL="$define"
13971 set tryp
13972 if eval $compile; then
13973 $rm -f tryp.out
5440bc8e 13974 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
13975 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13976 $cat >&4 <<EOM
13977fflush(NULL) seems to behave okay with input streams.
13978EOM
13979 fflushNULL="$define"
13980 else
13981 $cat >&4 <<EOM
13982Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13983EOM
13984 fflushNULL="$undef"
13985 fi
13986 fi
13987 $rm -f core tryp.c tryp.core core.tryp.*
13988 ;;
13989 '') $cat >&4 <<EOM
13990Your fflush(NULL) isn't working (contrary to ANSI C).
13991EOM
13992 fflushNULL="$undef"
13993 ;;
13994 *) $cat >&4 <<EOM
13995Cannot figure out whether your fflush(NULL) works or not.
13996I'm assuming it doesn't (contrary to ANSI C).
13997EOM
13998 fflushNULL="$undef"
13999 ;;
14000 esac
14001 ;;
14002$define|true|[yY]*)
14003 fflushNULL="$define"
14004 ;;
14005*)
14006 fflushNULL="$undef"
14007 ;;
14008esac
14009: check explicit looping only if NULL did not work, and if the pipe
14010: bug does not show up on an explicit flush too
14011case "$fflushNULL" in
14012"$undef")
14013 $cat >tryp.c <<EOCP
14014#include <stdio.h>
14015int
14016main(int argc, char **argv)
14017{
14018 char buf[1024];
14019 int i;
14020 char *bp = buf;
14021 while (1) {
14022 while ((i = getc(stdin)) != -1
14023 && (*bp++ = i) != '\n'
14024 && bp < &buf[1024])
14025 /* DO NOTHING */ ;
14026 *bp = '\0';
14027 fprintf(stdout, "%s", buf);
14028 fflush(stdin);
14029 if (i == -1)
14030 return 0;
14031 bp = buf;
14032 }
14033}
14034EOCP
14035 set tryp
14036 if eval $compile; then
14037 $rm -f tryp.out
5440bc8e 14038 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
b4eb6b3d
JH
14039 if cmp tryp.c tryp.out >/dev/null 2>&1; then
14040 $cat >&4 <<EOM
14041Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14042EOM
14043 : now check for fflushall behaviour
14044 case "$fflushall" in
14045 '') set try -DTRY_FFLUSH_ALL $output
14046 if eval $compile; then
14047 $cat >&4 <<EOM
14048(Now testing the other method--but note that this also may fail.)
14049EOM
5440bc8e 14050 $run ./try 2>/dev/null
28f5ac64 14051 code=$?
fbe73d74 14052 $from try.out
28f5ac64 14053 if $test -s try.out -a "X$code" = X42; then
b4eb6b3d
JH
14054 fflushall="`$cat try.out`"
14055 fi
14056 fi
14057 $rm -f core try.core core.try.*
14058 case "$fflushall" in
14059 x) $cat >&4 <<EOM
14060Whew. Flushing explicitly all the stdio streams works.
14061EOM
14062 fflushall="$define"
14063 ;;
14064 '') $cat >&4 <<EOM
14065Sigh. Flushing explicitly all the stdio streams doesn't work.
14066EOM
14067 fflushall="$undef"
14068 ;;
14069 *) $cat >&4 <<EOM
14070Cannot figure out whether flushing stdio streams explicitly works or not.
14071I'm assuming it doesn't.
14072EOM
14073 fflushall="$undef"
14074 ;;
14075 esac
14076 ;;
14077 "$define"|true|[yY]*)
14078 fflushall="$define"
14079 ;;
14080 *)
14081 fflushall="$undef"
14082 ;;
14083 esac
14084 else
14085 $cat >&4 <<EOM
14086All is futile. Even fflush(stdin) clobbers input pipes!
14087EOM
14088 fflushall="$undef"
14089 fi
14090 else
14091 fflushall="$undef"
14092 fi
14093 $rm -f core tryp.c tryp.core core.tryp.*
14094 ;;
14095*) fflushall="$undef"
14096 ;;
14097esac
14098
14099case "$fflushNULL$fflushall" in
14100undefundef)
14101 $cat <<EOM
14102OK, I give up. I cannot figure out how to flush pending stdio output.
14103We won't be flushing handles at all before fork/exec/popen.
14104EOM
14105 ;;
14106esac
14107$rm -f try.* try$exe_ext
14108
14109: Store the full pathname to the ar program for use in the C program
14110: Respect a hint or command line value for full_ar.
14111case "$full_ar" in
14112'') full_ar=$ar ;;
14113esac
14114
14115: Store the full pathname to the sed program for use in the C program
14116full_sed=$sed
14117
14118: see what type gids are declared as in the kernel
14119echo " "
14120echo "Looking for the type for group ids returned by getgid()."
14121set gid_t gidtype xxx stdio.h sys/types.h
14122eval $typedef
14123case "$gidtype" in
14124xxx)
14125 xxx=`./findhdr sys/user.h`
14126 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14127 case $1 in
14128 unsigned) dflt="$1 $2" ;;
14129 *) dflt="$1" ;;
14130 esac
14131 ;;
14132*) dflt="$gidtype";;
14133esac
14134case "$gidtype" in
14135gid_t) echo "gid_t found." ;;
14136*) rp="What is the type for group ids returned by getgid()?"
14137 . ./myread
14138 gidtype="$ans"
14139 ;;
14140esac
14141
14142echo " "
14143case "$gidtype" in
14144*_t) zzz="$gidtype" ;;
14145*) zzz="gid" ;;
14146esac
14147echo "Checking the size of $zzz..." >&4
14148cat > try.c <<EOCP
14149#include <sys/types.h>
14150#include <stdio.h>
14151int main() {
14152 printf("%d\n", (int)sizeof($gidtype));
14153 exit(0);
14154}
14155EOCP
14156set try
14157if eval $compile_ok; then
5440bc8e 14158 yyy=`$run ./try`
b4eb6b3d
JH
14159 case "$yyy" in
14160 '') gidsize=4
14161 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14162 ;;
14163 *) gidsize=$yyy
14164 echo "Your $zzz is $gidsize bytes long."
14165 ;;
14166 esac
14167else
14168 gidsize=4
14169 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14170fi
14171
14172
14173echo " "
14174case "$gidtype" in
14175*_t) zzz="$gidtype" ;;
14176*) zzz="gid" ;;
14177esac
14178echo "Checking the sign of $zzz..." >&4
14179cat > try.c <<EOCP
14180#include <sys/types.h>
14181#include <stdio.h>
14182int main() {
14183 $gidtype foo = -1;
14184 if (foo < 0)
14185 printf("-1\n");
14186 else
14187 printf("1\n");
14188}
14189EOCP
14190set try
14191if eval $compile; then
5440bc8e 14192 yyy=`$run ./try`
b4eb6b3d
JH
14193 case "$yyy" in
14194 '') gidsign=1
14195 echo "(I can't execute the test program--guessing unsigned.)" >&4
14196 ;;
14197 *) gidsign=$yyy
14198 case "$gidsign" in
14199 1) echo "Your $zzz is unsigned." ;;
14200 -1) echo "Your $zzz is signed." ;;
14201 esac
14202 ;;
14203 esac
14204else
14205 gidsign=1
14206 echo "(I can't compile the test program--guessing unsigned.)" >&4
14207fi
14208
14209
14210echo " "
14211
14212if $test X"$quadtype" != X; then
14213
14214echo "Checking how to print 64-bit integers..." >&4
14215
14216if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14217 $cat >try.c <<'EOCP'
14218#include <sys/types.h>
14219#include <stdio.h>
14220int main() {
14221 int q = 12345678901;
14222 printf("%ld\n", q);
14223}
14224EOCP
14225 set try
14226 if eval $compile; then
5440bc8e 14227 yyy=`$run ./try`
b4eb6b3d
JH
14228 case "$yyy" in
14229 12345678901)
14230 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14231 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14232 echo "We will use %d."
14233 ;;
14234 esac
14235 fi
14236fi
14237
14238if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14239 $cat >try.c <<'EOCP'
14240#include <sys/types.h>
14241#include <stdio.h>
14242int main() {
14243 long q = 12345678901;
14244 printf("%ld\n", q);
14245}
14246EOCP
14247 set try
14248 if eval $compile; then
5440bc8e 14249 yyy=`$run ./try`
b4eb6b3d
JH
14250 case "$yyy" in
14251 12345678901)
14252 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14253 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14254 echo "We will use %ld."
14255 ;;
14256 esac
14257 fi
14258fi
14259
14260if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14261 $cat >try.c <<'EOCP'
14262#include <sys/types.h>
14263#include <inttypes.h>
14264#include <stdio.h>
14265int main() {
14266 int64_t q = 12345678901;
14267 printf("%" PRId64 "\n", q);
14268}
14269EOCP
14270 set try
14271 if eval $compile; then
5440bc8e 14272 yyy=`$run ./try`
b4eb6b3d
JH
14273 case "$yyy" in
14274 12345678901)
14275 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14276 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14277 echo "We will use the C9X style."
14278 ;;
14279 esac
14280 fi
14281fi
14282
2ef53570
JH
14283if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14284 $cat >try.c <<EOCP
b4eb6b3d
JH
14285#include <sys/types.h>
14286#include <stdio.h>
14287int main() {
2ef53570
JH
14288 $quadtype q = 12345678901;
14289 printf("%Ld\n", q);
b4eb6b3d
JH
14290}
14291EOCP
14292 set try
14293 if eval $compile; then
5440bc8e 14294 yyy=`$run ./try`
b4eb6b3d
JH
14295 case "$yyy" in
14296 12345678901)
2ef53570
JH
14297 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14298 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14299 echo "We will use %Ld."
b4eb6b3d
JH
14300 ;;
14301 esac
14302 fi
14303fi
14304
2ef53570
JH
14305if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14306 $cat >try.c <<'EOCP'
b4eb6b3d
JH
14307#include <sys/types.h>
14308#include <stdio.h>
14309int main() {
2ef53570
JH
14310 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14311 printf("%lld\n", q);
b4eb6b3d
JH
14312}
14313EOCP
14314 set try
14315 if eval $compile; then
5440bc8e 14316 yyy=`$run ./try`
b4eb6b3d
JH
14317 case "$yyy" in
14318 12345678901)
2ef53570
JH
14319 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14320 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14321 echo "We will use the %lld style."
b4eb6b3d
JH
14322 ;;
14323 esac
14324 fi
14325fi
14326
14327if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14328 $cat >try.c <<EOCP
14329#include <sys/types.h>
14330#include <stdio.h>
14331int main() {
14332 $quadtype q = 12345678901;
14333 printf("%qd\n", q);
14334}
14335EOCP
14336 set try
14337 if eval $compile; then
5440bc8e 14338 yyy=`$run ./try`
b4eb6b3d
JH
14339 case "$yyy" in
14340 12345678901)
14341 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14342 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14343 echo "We will use %qd."
14344 ;;
14345 esac
14346 fi
14347fi
14348
14349if $test X"$sPRId64" = X; then
14350 echo "Cannot figure out how to print 64-bit integers." >&4
14351fi
14352
14353$rm -f try try.*
14354
14355fi
14356
14357case "$sPRId64" in
14358'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14359 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14360 ;;
14361*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14362 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14363 ;;
14364esac
14365
14366
14367echo " "
14368$echo "Checking the format strings to be used for Perl's internal types..." >&4
14369
14370if $test X"$ivsize" = X8; then
14371 ivdformat="$sPRId64"
14372 uvuformat="$sPRIu64"
14373 uvoformat="$sPRIo64"
14374 uvxformat="$sPRIx64"
14375 uvXUformat="$sPRIXU64"
14376else
14377 if $test X"$ivsize" = X"$longsize"; then
14378 ivdformat='"ld"'
14379 uvuformat='"lu"'
14380 uvoformat='"lo"'
14381 uvxformat='"lx"'
14382 uvXUformat='"lX"'
14383 else
14384 if $test X"$ivsize" = X"$intsize"; then
14385 ivdformat='"d"'
14386 uvuformat='"u"'
14387 uvoformat='"o"'
14388 uvxformat='"x"'
14389 uvXUformat='"X"'
14390 else
14391 : far out
14392 if $test X"$ivsize" = X"$shortsize"; then
14393 ivdformat='"hd"'
14394 uvuformat='"hu"'
14395 uvoformat='"ho"'
14396 uvxformat='"hx"'
14397 uvXUformat='"hX"'
14398 fi
14399 fi
14400 fi
14401fi
14402
14403if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14404 nveformat="$sPRIeldbl"
14405 nvfformat="$sPRIfldbl"
14406 nvgformat="$sPRIgldbl"
14407 nvEUformat="$sPRIEUldbl"
14408 nvFUformat="$sPRIFUldbl"
14409 nvGUformat="$sPRIGUldbl"
14410else
14411 nveformat='"e"'
14412 nvfformat='"f"'
14413 nvgformat='"g"'
14414 nvEUformat='"E"'
14415 nvFUformat='"F"'
14416 nvGUformat='"G"'
14417fi
14418
14419case "$ivdformat" in
14420'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14421 exit 1
14422 ;;
14423esac
14424
14425
14426echo " "
14427$echo "Checking the format string to be used for gids..." >&4
14428
14429case "$gidsign" in
14430-1) if $test X"$gidsize" = X"$ivsize"; then
14431 gidformat="$ivdformat"
14432 else
14433 if $test X"$gidsize" = X"$longsize"; then
14434 gidformat='"ld"'
14435 else
14436 if $test X"$gidsize" = X"$intsize"; then
14437 gidformat='"d"'
14438 else
14439 if $test X"$gidsize" = X"$shortsize"; then
14440 gidformat='"hd"'
14441 fi
14442 fi
14443 fi
14444 fi
14445 ;;
14446*) if $test X"$gidsize" = X"$uvsize"; then
14447 gidformat="$uvuformat"
14448 else
14449 if $test X"$gidsize" = X"$longsize"; then
14450 gidformat='"lu"'
14451 else
14452 if $test X"$gidsize" = X"$intsize"; then
14453 gidformat='"u"'
14454 else
14455 if $test X"$gidsize" = X"$shortsize"; then
14456 gidformat='"hu"'
14457 fi
14458 fi
14459 fi
14460 fi
14461 ;;
14462esac
14463
14464: see if getgroups exists
14465set getgroups d_getgrps
14466eval $inlibc
14467
14468: see if setgroups exists
14469set setgroups d_setgrps
14470eval $inlibc
14471
14472
14473: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14474echo " "
14475case "$d_getgrps$d_setgrps" in
14476*define*)
14477 case "$groupstype" in
14478 '') dflt="$gidtype" ;;
14479 *) dflt="$groupstype" ;;
14480 esac
14481 $cat <<EOM
14482What type of pointer is the second argument to getgroups() and setgroups()?
14483Usually this is the same as group ids, $gidtype, but not always.
14484
14485EOM
14486 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14487 . ./myread
14488 groupstype="$ans"
14489 ;;
14490*) groupstype="$gidtype";;
14491esac
14492
14493echo " "
14494echo "Checking if your $make program sets \$(MAKE)..." >&4
14495case "$make_set_make" in
14496'')
14497 $sed 's/^X //' > testmake.mak << 'EOF'
14498Xall:
14499X @echo 'maketemp="$(MAKE)"'
14500EOF
14501 case "`$make -f testmake.mak 2>/dev/null`" in
14502 *maketemp=*) make_set_make='#' ;;
14503 *) make_set_make="MAKE=$make" ;;
14504 esac
14505 $rm -f testmake.mak
14506 ;;
14507esac
14508case "$make_set_make" in
14509'#') echo "Yup, it does.";;
14510*) echo "Nope, it doesn't.";;
14511esac
14512
14513: see what type is used for mode_t
14514rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14515set mode_t modetype int stdio.h sys/types.h
14516eval $typedef_ask
14517
2cc61e15
DD
14518: see if stdarg is available
14519echo " "
14520if $test `./findhdr stdarg.h`; then
14521 echo "<stdarg.h> found." >&4
14522 valstd="$define"
14523else
14524 echo "<stdarg.h> NOT found." >&4
14525 valstd="$undef"
14526fi
14527
14528: see if varags is available
14529echo " "
14530if $test `./findhdr varargs.h`; then
14531 echo "<varargs.h> found." >&4
14532else
14533 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14534fi
14535
14536: set up the varargs testing programs
14537$cat > varargs.c <<EOP
14538#ifdef I_STDARG
14539#include <stdarg.h>
14540#endif
14541#ifdef I_VARARGS
14542#include <varargs.h>
14543#endif
14544
14545#ifdef I_STDARG
14546int f(char *p, ...)
14547#else
14548int f(va_alist)
14549va_dcl
14550#endif
14551{
14552 va_list ap;
14553#ifndef I_STDARG
14554 char *p;
14555#endif
14556#ifdef I_STDARG
14557 va_start(ap,p);
14558#else
14559 va_start(ap);
14560 p = va_arg(ap, char *);
14561#endif
14562 va_end(ap);
14563}
14564EOP
14565$cat > varargs <<EOP
14566$startsh
14567if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14568 echo "true"
14569else
14570 echo "false"
14571fi
14572$rm -f varargs$_o
14573EOP
14574chmod +x varargs
14575
14576: now check which varargs header should be included
14577echo " "
14578i_varhdr=''
14579case "$valstd" in
14580"$define")
14581 if `./varargs I_STDARG`; then
14582 val='stdarg.h'
14583 elif `./varargs I_VARARGS`; then
14584 val='varargs.h'
14585 fi
14586 ;;
14587*)
14588 if `./varargs I_VARARGS`; then
14589 val='varargs.h'
14590 fi
14591 ;;
14592esac
14593case "$val" in
14594'')
14595echo "I could not find the definition for va_dcl... You have problems..." >&4
14596 val="$undef"; set i_stdarg; eval $setvar
14597 val="$undef"; set i_varargs; eval $setvar
14598 ;;
14599*)
14600 set i_varhdr
14601 eval $setvar
14602 case "$i_varhdr" in
14603 stdarg.h)
14604 val="$define"; set i_stdarg; eval $setvar
14605 val="$undef"; set i_varargs; eval $setvar
14606 ;;
14607 varargs.h)
14608 val="$undef"; set i_stdarg; eval $setvar
14609 val="$define"; set i_varargs; eval $setvar
14610 ;;
14611 esac
14612 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14613esac
14614$rm -f varargs*
14615
14616: see if we need va_copy
14617echo " "
14618case "$i_stdarg" in
14619"$define")
14620 $cat >try.c <<EOCP
14621#include <stdarg.h>
14622#include <stdio.h>
85c8a686
DD
14623#$i_stdlib I_STDLIB
14624#ifdef I_STDLIB
14625#include <stdlib.h>
14626#endif
14627#include <signal.h>
2cc61e15
DD
14628
14629int
14630ivfprintf(FILE *f, const char *fmt, va_list *valp)
14631{
14632 return vfprintf(f, fmt, *valp);
14633}
14634
14635int
14636myvfprintf(FILE *f, const char *fmt, va_list val)
14637{
14638 return ivfprintf(f, fmt, &val);
14639}
14640
14641int
14642myprintf(char *fmt, ...)
14643{
14644 va_list val;
14645 va_start(val, fmt);
14646 return myvfprintf(stdout, fmt, val);
14647}
14648
14649int
14650main(int ac, char **av)
14651{
85c8a686
DD
14652 signal(SIGSEGV, exit);
14653
2cc61e15
DD
14654 myprintf("%s%cs all right, then\n", "that", '\'');
14655 exit(0);
14656}
14657EOCP
14658 set try
5440bc8e
JH
14659 if eval $compile && $run ./try 2>&1 >/dev/null; then
14660 case "`$run ./try`" in
2cc61e15
DD
14661 "that's all right, then")
14662 okay=yes
14663 ;;
14664 esac
14665 fi
14666 case "$okay" in
14667 yes) echo "It seems that you don't need va_copy()." >&4
14668 need_va_copy="$undef"
14669 ;;
14670 *) echo "It seems that va_copy() or similar will be needed." >&4
14671 need_va_copy="$define"
14672 ;;
14673 esac
14674 $rm -f try.* core core.* *.core *.core.*
14675 ;;
14676*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14677 ;;
14678esac
14679
b4eb6b3d
JH
14680: define a fucntion to check prototypes
14681$cat > protochk <<EOSH
14682$startsh
14683cc="$cc"
14684optimize="$optimize"
14685ccflags="$ccflags"
14686prototype="$prototype"
14687define="$define"
14688rm=$rm
14689EOSH
14690
14691$cat >> protochk <<'EOSH'
14692
14693$rm -f try.c
14694foo="$1"
14695shift
14696while test $# -ge 2; do
14697 case "$1" in
14698 $define) echo "#include <$2>" >> try.c ;;
14699 literal) echo "$2" >> try.c ;;
14700 esac
14701 shift 2
14702done
14703test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14704cat >> try.c <<'EOCP'
14705#ifdef CAN_PROTOTYPE
14706#define _(args) args
14707#else
14708#define _(args) ()
14709#endif
14710EOCP
14711echo "$foo" >> try.c
14712echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14713$cc $optimize $ccflags -c try.c > /dev/null 2>&1
14714status=$?
14715$rm -f try.[co]
14716exit $status
14717EOSH
14718chmod +x protochk
14719$eunicefix protochk
14720
14721: see what type is used for size_t
14722rp="What is the type used for the length parameter for string functions?"
14723set size_t sizetype 'unsigned int' stdio.h sys/types.h
14724eval $typedef_ask
14725
14726: check for type of arguments to gethostbyaddr.
14727if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14728 case "$d_gethbyaddr" in
14729 $define)
14730 $cat <<EOM
14731
14732Checking to see what type of arguments are accepted by gethostbyaddr().
14733EOM
14734 hdrs="$define sys/types.h
14735 $d_socket sys/socket.h
14736 $i_niin netinet/in.h
14737 $i_netdb netdb.h
14738 $i_unistd unistd.h"
14739 : The first arg can 'char *' or 'void *'
14740 : The second arg is some of integral type
14741 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14742 for yyy in size_t long int; do
14743 case "$netdb_host_type" in
14744 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14745 if ./protochk "$try" $hdrs; then
14746 echo "Your system accepts $xxx for the first arg."
14747 echo "...and $yyy for the second arg."
14748 netdb_host_type="$xxx"
14749 netdb_hlen_type="$yyy"
14750 fi
14751 ;;
14752 esac
14753 done
14754 done
14755 : In case none of those worked, prompt the user.
14756 case "$netdb_host_type" in
14757 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14758 dflt='char *'
14759 . ./myread
14760 netdb_host_type=$ans
14761 rp='What is the type for the 2nd argument to gethostbyaddr?'
14762 dflt="$sizetype"
14763 . ./myread
14764 netdb_hlen_type=$ans
14765 ;;
14766 esac
14767 ;;
14768 *) : no gethostbyaddr, so pick harmless defaults
14769 netdb_host_type='char *'
14770 netdb_hlen_type="$sizetype"
14771 ;;
14772 esac
14773 # Remove the "const" if needed. -- but then we'll have a
14774 # prototype clash!
14775 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14776fi
14777
14778: check for type of argument to gethostbyname.
14779if test "X$netdb_name_type" = X ; then
14780 case "$d_gethbyname" in
14781 $define)
14782 $cat <<EOM
14783
14784Checking to see what type of argument is accepted by gethostbyname().
14785EOM
14786 hdrs="$define sys/types.h
14787 $d_socket sys/socket.h
14788 $i_niin netinet/in.h
14789 $i_netdb netdb.h
14790 $i_unistd unistd.h"
14791 for xxx in "const char *" "char *"; do
14792 case "$netdb_name_type" in
14793 '') try="extern struct hostent *gethostbyname($xxx);"
14794 if ./protochk "$try" $hdrs; then
14795 echo "Your system accepts $xxx."
14796 netdb_name_type="$xxx"
14797 fi
14798 ;;
14799 esac
14800 done
14801 : In case none of those worked, prompt the user.
14802 case "$netdb_name_type" in
14803 '') rp='What is the type for the 1st argument to gethostbyname?'
14804 dflt='char *'
14805 . ./myread
14806 netdb_name_type=$ans
14807 ;;
14808 esac
14809 ;;
14810 *) : no gethostbyname, so pick harmless default
14811 netdb_name_type='char *'
14812 ;;
14813 esac
14814fi
14815
14816: check for type of 1st argument to getnetbyaddr.
14817if test "X$netdb_net_type" = X ; then
14818 case "$d_getnbyaddr" in
14819 $define)
14820 $cat <<EOM
14821
14822Checking to see what type of 1st argument is accepted by getnetbyaddr().
14823EOM
14824 hdrs="$define sys/types.h
14825 $d_socket sys/socket.h
14826 $i_niin netinet/in.h
14827 $i_netdb netdb.h
14828 $i_unistd unistd.h"
14829 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14830 case "$netdb_net_type" in
14831 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14832 if ./protochk "$try" $hdrs; then
14833 echo "Your system accepts $xxx."
14834 netdb_net_type="$xxx"
14835 fi
14836 ;;
14837 esac
14838 done
14839 : In case none of those worked, prompt the user.
14840 case "$netdb_net_type" in
14841 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14842 dflt='long'
14843 . ./myread
14844 netdb_net_type=$ans
14845 ;;
14846 esac
14847 ;;
14848 *) : no getnetbyaddr, so pick harmless default
14849 netdb_net_type='long'
14850 ;;
14851 esac
14852fi
14853: locate the preferred pager for this system
14854case "$pager" in
14855'')
14856 dflt=''
14857 case "$pg" in
14858 /*) dflt=$pg;;
14859 [a-zA-Z]:/*) dflt=$pg;;
14860 esac
14861 case "$more" in
14862 /*) dflt=$more;;
14863 [a-zA-Z]:/*) dflt=$more;;
14864 esac
14865 case "$less" in
14866 /*) dflt=$less;;
14867 [a-zA-Z]:/*) dflt=$less;;
14868 esac
14869 case "$dflt" in
14870 '') dflt=/usr/ucb/more;;
14871 esac
14872 ;;
14873*) dflt="$pager";;
14874esac
14875echo " "
14876fn=f/
14877rp='What pager is used on your system?'
14878. ./getfile
14879pager="$ans"
14880
14881: see what type pids are declared as in the kernel
14882rp="What is the type of process ids on this system?"
14883set pid_t pidtype int stdio.h sys/types.h
14884eval $typedef_ask
14885
14886: Find earliest binary compatible site_perl subdirectory perl can use.
14887case "$bincompat5005" in
14888"$define") xs_apiversion='5.005' ;;
14889*) xs_apiversion=$version ;; # The current site_perl version.
14890esac
14891: Find earliest pure perl site_perl subdirectory perl can use.
14892: The versioned directories started at 5.005.
14893pm_apiversion='5.005'
14894
b4eb6b3d
JH
14895: see if ar generates random libraries by itself
14896echo " "
14897echo "Checking how to generate random libraries on your machine..." >&4
14898echo 'int bar1() { return bar2(); }' > bar1.c
14899echo 'int bar2() { return 2; }' > bar2.c
14900$cat > foo.c <<'EOP'
14901int main() { printf("%d\n", bar1()); exit(0); }
14902EOP
14903$cc $ccflags -c bar1.c >/dev/null 2>&1
14904$cc $ccflags -c bar2.c >/dev/null 2>&1
14905$cc $ccflags -c foo.c >/dev/null 2>&1
14906$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 14907if $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 "$ar appears to generate random libraries itself."
14910 orderlib=false
14911 ranlib=":"
14912elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 14913 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
5440bc8e 14914 $run ./foobar >/dev/null 2>&1; then
b4eb6b3d
JH
14915 echo "a table of contents needs to be added with '$ar ts'."
14916 orderlib=false
14917 ranlib="$ar ts"
14918else
14919 case "$ranlib" in
14920 :) ranlib='';;
14921 '')
14922 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14923 $test -f $ranlib || ranlib=''
14924 ;;
14925 esac
14926 if $test -n "$ranlib"; then
14927 echo "your system has '$ranlib'; we'll use that."
14928 orderlib=false
14929 else
14930 echo "your system doesn't seem to support random libraries"
14931 echo "so we'll use lorder and tsort to order the libraries."
14932 orderlib=true
14933 ranlib=":"
14934 fi
14935fi
14936$rm -f foo* bar*
14937
14938: check for type of arguments to select.
14939case "$selecttype" in
14940'') case "$d_select" in
14941 $define)
14942 echo " "
14943 $cat <<EOM
14944Checking to see what type of arguments are accepted by select().
14945EOM
14946 hdrs="$define sys/types.h
14947 $i_systime sys/time.h
14948 $i_sysselct sys/select.h
14949 $d_socket sys/socket.h"
14950 : The first arg can be int, unsigned, or size_t
14951 : The last arg may or may not be 'const'
14952 val=''
14953 : void pointer has been seen but using that
14954 : breaks the selectminbits test
14955 for xxx in 'fd_set *' 'int *'; do
14956 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14957 for tmo in 'struct timeval *' 'const struct timeval *'; do
14958 case "$val" in
14959 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14960 if ./protochk "$try" $hdrs; then
14961 echo "Your system accepts $xxx."
14962 val="$xxx"
14963 fi
14964 ;;
14965 esac
14966 done
14967 done
14968 done
14969 case "$val" in
14970 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14971 case "$d_fd_set" in
14972 $define) dflt="fd_set *" ;;
14973 *) dflt="int *" ;;
14974 esac
14975 . ./myread
14976 val=$ans
14977 ;;
14978 esac
14979 selecttype="$val"
14980 ;;
14981 *) : no select, so pick a harmless default
14982 selecttype='int *'
14983 ;;
14984 esac
14985 ;;
14986esac
14987
14988: check for the select 'width'
14989case "$selectminbits" in
14990'') case "$d_select" in
14991 $define)
14992 $cat <<EOM
14993
14994Checking to see on how many bits at a time your select() operates...
14995EOM
14996 $cat >try.c <<EOCP
14997#include <sys/types.h>
14998#$i_time I_TIME
14999#$i_systime I_SYS_TIME
15000#$i_systimek I_SYS_TIME_KERNEL
15001#ifdef I_TIME
15002# include <time.h>
15003#endif
15004#ifdef I_SYS_TIME
15005# ifdef I_SYS_TIME_KERNEL
15006# define KERNEL
15007# endif
15008# include <sys/time.h>
15009# ifdef I_SYS_TIME_KERNEL
15010# undef KERNEL
15011# endif
15012#endif
15013#$i_sysselct I_SYS_SELECT
15014#ifdef I_SYS_SELECT
15015#include <sys/select.h>
15016#endif
15017#$d_socket HAS_SOCKET
15018#ifdef HAS_SOCKET
15019# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15020#endif
15021#include <stdio.h>
15022$selecttype b;
15023#define S sizeof(*(b))
15024#define MINBITS 64
15025#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15026#define NBITS (NBYTES * 8)
15027int main() {
15028 char s[NBYTES];
15029 struct timeval t;
15030 int i;
15031 FILE* fp;
15032 int fd;
15033
15034 fclose(stdin);
15035 fp = fopen("try.c", "r");
15036 if (fp == 0)
15037 exit(1);
15038 fd = fileno(fp);
15039 if (fd < 0)
15040 exit(2);
15041 b = ($selecttype)s;
15042 for (i = 0; i < NBITS; i++)
15043 FD_SET(i, b);
15044 t.tv_sec = 0;
15045 t.tv_usec = 0;
15046 select(fd + 1, b, 0, 0, &t);
15047 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15048 printf("%d\n", i + 1);
15049 return 0;
15050}
15051EOCP
15052 set try
15053 if eval $compile_ok; then
5440bc8e 15054 selectminbits=`$run ./try`
b4eb6b3d
JH
15055 case "$selectminbits" in
15056 '') cat >&4 <<EOM
15057Cannot figure out on how many bits at a time your select() operates.
15058I'll play safe and guess it is 32 bits.
15059EOM
15060 selectminbits=32
15061 bits="32 bits"
15062 ;;
15063 1) bits="1 bit" ;;
15064 *) bits="$selectminbits bits" ;;
15065 esac
15066 echo "Your select() operates on $bits at a time." >&4
15067 else
15068 rp='What is the minimum number of bits your select() operates on?'
15069 case "$byteorder" in
15070 1234|12345678) dflt=32 ;;
15071 *) dflt=1 ;;
15072 esac
15073 . ./myread
15074 val=$ans
15075 selectminbits="$val"
15076 fi
15077 $rm -f try.* try
15078 ;;
15079 *) : no select, so pick a harmless default
15080 selectminbits='32'
15081 ;;
15082 esac
15083 ;;
15084esac
15085
15086: Trace out the files included by signal.h, then look for SIGxxx names.
15087: Remove SIGARRAYSIZE used by HPUX.
15088: Remove SIGSTKSIZE used by Linux.
15089: Remove SIGSTKSZ used by Posix.
15090: Remove SIGTYP void lines used by OS2.
15091: Some cpps, like os390, dont give the file name anywhere
15092if [ "X$fieldn" = X ]; then
15093 : Just make some guesses. We check them later.
15094 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15095else
15096 xxx=`echo '#include <signal.h>' |
15097 $cppstdin $cppminus $cppflags 2>/dev/null |
15098 $grep '^[ ]*#.*include' |
a938a3bb 15099 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
b4eb6b3d
JH
15100fi
15101: Check this list of files to be sure we have parsed the cpp output ok.
15102: This will also avoid potentially non-existent files, such
15103: as ../foo/bar.h
15104xxxfiles=''
15105for xx in $xxx /dev/null ; do
15106 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15107done
15108: If we have found no files, at least try signal.h
15109case "$xxxfiles" in
15110'') xxxfiles=`./findhdr signal.h` ;;
15111esac
15112xxx=`awk '
15113$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15114 print substr($2, 4, 20)
15115}
15116$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15117 print substr($3, 4, 20)
15118}' $xxxfiles`
15119: Append some common names just in case the awk scan failed.
15120xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15121xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15122xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15123xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15124xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15125
15126: generate a few handy files for later
15127$cat > signal.c <<'EOCP'
15128#include <sys/types.h>
15129#include <signal.h>
15130#include <stdio.h>
15131int main() {
15132
15133/* Strange style to avoid deeply-nested #if/#else/#endif */
15134#ifndef NSIG
15135# ifdef _NSIG
15136# define NSIG (_NSIG)
15137# endif
15138#endif
15139
15140#ifndef NSIG
15141# ifdef SIGMAX
15142# define NSIG (SIGMAX+1)
15143# endif
15144#endif
15145
15146#ifndef NSIG
15147# ifdef SIG_MAX
15148# define NSIG (SIG_MAX+1)
15149# endif
15150#endif
15151
15152#ifndef NSIG
15153# ifdef MAXSIG
15154# define NSIG (MAXSIG+1)
15155# endif
15156#endif
15157
15158#ifndef NSIG
15159# ifdef MAX_SIG
15160# define NSIG (MAX_SIG+1)
15161# endif
15162#endif
15163
15164#ifndef NSIG
15165# ifdef SIGARRAYSIZE
15166# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15167# endif
15168#endif
15169
15170#ifndef NSIG
15171# ifdef _sys_nsig
15172# define NSIG (_sys_nsig) /* Solaris 2.5 */
15173# endif
15174#endif
15175
15176/* Default to some arbitrary number that's big enough to get most
15177 of the common signals.
15178*/
15179#ifndef NSIG
15180# define NSIG 50
15181#endif
15182
15183printf("NSIG %d\n", NSIG);
15184
15185#ifndef JUST_NSIG
15186
15187EOCP
15188
15189echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15190{
15191 printf "#ifdef SIG"; printf $1; printf "\n"
15192 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15193 printf $1; printf ");\n"
15194 printf "#endif\n"
15195}
15196END {
15197 printf "#endif /* JUST_NSIG */\n";
15198 printf "exit(0);\n}\n";
15199}
15200' >>signal.c
15201$cat >signal.awk <<'EOP'
15202BEGIN { ndups = 0 }
15203$1 ~ /^NSIG$/ { nsig = $2 }
15204($1 !~ /^NSIG$/) && (NF == 2) {
15205 if ($2 > maxsig) { maxsig = $2 }
15206 if (sig_name[$2]) {
15207 dup_name[ndups] = $1
15208 dup_num[ndups] = $2
15209 ndups++
15210 }
15211 else {
15212 sig_name[$2] = $1
15213 sig_num[$2] = $2
15214 }
15215}
15216END {
15217 if (nsig == 0) {
15218 nsig = maxsig + 1
15219 }
15220 printf("NSIG %d\n", nsig);
15221 for (n = 1; n < nsig; n++) {
15222 if (sig_name[n]) {
15223 printf("%s %d\n", sig_name[n], sig_num[n])
15224 }
15225 else {
15226 printf("NUM%d %d\n", n, n)
15227 }
15228 }
15229 for (n = 0; n < ndups; n++) {
15230 printf("%s %d\n", dup_name[n], dup_num[n])
15231 }
15232}
15233EOP
15234$cat >signal_cmd <<EOS
15235$startsh
15236if $test -s signal.lst; then
15237 echo "Using your existing signal.lst file"
15238 exit 0
15239fi
15240xxx="$xxx"
15241EOS
15242$cat >>signal_cmd <<'EOS'
15243
15244set signal
15245if eval $compile_ok; then
5440bc8e 15246 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
b4eb6b3d
JH
15247else
15248 echo "(I can't seem be able to compile the whole test program)" >&4
15249 echo "(I'll try it in little pieces.)" >&4
15250 set signal -DJUST_NSIG
15251 if eval $compile_ok; then
5440bc8e 15252 $run ./signal$_exe > signal.nsg
b4eb6b3d
JH
15253 $cat signal.nsg
15254 else
15255 echo "I can't seem to figure out how many signals you have." >&4
15256 echo "Guessing 50." >&4
15257 echo 'NSIG 50' > signal.nsg
15258 fi
15259 : Now look at all the signal names, one at a time.
15260 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15261 $cat > signal.c <<EOCP
15262#include <sys/types.h>
15263#include <signal.h>
15264#include <stdio.h>
15265int main() {
15266printf("$xx %d\n", SIG${xx});
15267return 0;
15268}
15269EOCP
15270 set signal
15271 if eval $compile; then
15272 echo "SIG${xx} found."
5440bc8e 15273 $run ./signal$_exe >> signal.ls1
b4eb6b3d
JH
15274 else
15275 echo "SIG${xx} NOT found."
15276 fi
15277 done
15278 if $test -s signal.ls1; then
15279 $cat signal.nsg signal.ls1 |
15280 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15281 fi
15282
15283fi
15284if $test -s signal.lst; then
15285 :
15286else
15287 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15288 echo 'kill -l' >signal
15289 set X `csh -f <signal`
15290 $rm -f signal
15291 shift
15292 case $# in
15293 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15294 esac
15295 echo $@ | $tr ' ' $trnl | \
15296 $awk '{ printf "%s %d\n", $1, ++s; }
15297 END { printf "NSIG %d\n", ++s }' >signal.lst
15298fi
15299$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15300EOS
15301chmod a+x signal_cmd
15302$eunicefix signal_cmd
15303
15304: generate list of signal names
15305echo " "
15306case "$sig_name_init" in
15307'') doinit=yes ;;
15308*) case "$sig_num_init" in
15309 ''|*,*) doinit=yes ;;
15310 esac ;;
15311esac
15312case "$doinit" in
15313yes)
15314 echo "Generating a list of signal names and numbers..." >&4
15315 . ./signal_cmd
15316 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15317 sig_name=`$awk 'BEGIN { printf "ZERO " }
15318 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15319 sig_num=`$awk 'BEGIN { printf "0 " }
15320 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15321 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15322 !/^NSIG/ { printf "\"%s\", ", $1 }
15323 END { printf "0\n" }' signal.lst`
15324 sig_num_init=`$awk 'BEGIN { printf "0, " }
15325 !/^NSIG/ { printf "%d, ", $2}
15326 END { printf "0\n"}' signal.lst`
15327 ;;
15328esac
15329echo "The following $sig_count signals are available:"
15330echo " "
15331echo $sig_name | $awk \
15332'BEGIN { linelen = 0 }
15333{
15334 for (i = 1; i <= NF; i++) {
15335 name = "SIG" $i " "
15336 linelen = linelen + length(name)
15337 if (linelen > 70) {
15338 printf "\n"
15339 linelen = length(name)
15340 }
15341 printf "%s", name
15342 }
15343 printf "\n"
15344}'
76d3c696 15345sig_size=`echo $sig_name | awk '{print NF}'`
b4eb6b3d
JH
15346$rm -f signal signal.c signal.awk signal.lst signal_cmd
15347
15348echo " "
15349case "$sizetype" in
15350*_t) zzz="$sizetype" ;;
15351*) zzz="filesize" ;;
15352esac
15353echo "Checking the size of $zzz..." >&4
15354cat > try.c <<EOCP
15355#include <sys/types.h>
15356#include <stdio.h>
15357int main() {
15358 printf("%d\n", (int)sizeof($sizetype));
15359 exit(0);
15360}
15361EOCP
15362set try
15363if eval $compile_ok; then
5440bc8e 15364 yyy=`$run ./try`
b4eb6b3d
JH
15365 case "$yyy" in
15366 '') sizesize=4
15367 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15368 ;;
15369 *) sizesize=$yyy
15370 echo "Your $zzz size is $sizesize bytes."
15371 ;;
15372 esac
15373else
15374 sizesize=4
15375 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15376fi
15377
15378
15379: check for socklen_t
15380echo " "
15381echo "Checking to see if you have socklen_t..." >&4
15382$cat >try.c <<EOCP
15383#include <sys/types.h>
15384#$d_socket HAS_SOCKET
15385#ifdef HAS_SOCKET
15386#include <sys/socket.h>
15387#endif
15388int main() { socklen_t x = 16; }
15389EOCP
15390set try
15391if eval $compile; then
15392 val="$define"
15393 echo "You have socklen_t."
15394else
15395 val="$undef"
15396 echo "You do not have socklen_t."
15397 case "$sizetype" in
15398 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15399 esac
15400fi
15401$rm -f try try.*
15402set d_socklen_t
15403eval $setvar
15404
a7710f8d
JH
15405: see if this is a socks.h system
15406set socks.h i_socks
15407eval $inhdr
15408
b4eb6b3d
JH
15409: check for type of the size argument to socket calls
15410case "$d_socket" in
15411"$define")
15412 $cat <<EOM
15413
15414Checking to see what type is the last argument of accept().
15415EOM
b4eb6b3d
JH
15416 yyy=''
15417 case "$d_socklen_t" in
15418 "$define") yyy="$yyy socklen_t"
15419 esac
15420 yyy="$yyy $sizetype int long unsigned"
15421 for xxx in $yyy; do
15422 case "$socksizetype" in
15423 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
a7710f8d
JH
15424 case "$usesocks" in
15425 "$define")
15426 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15427 echo "Your system accepts '$xxx *' for the last argument of accept()."
15428 socksizetype="$xxx"
15429 fi
15430 ;;
15431 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15432 echo "Your system accepts '$xxx *' for the last argument of accept()."
15433 socksizetype="$xxx"
15434 fi
15435 ;;
15436 esac
b4eb6b3d
JH
15437 ;;
15438 esac
15439 done
15440: In case none of those worked, prompt the user.
15441 case "$socksizetype" in
15442 '') rp='What is the type for socket address structure sizes?'
15443 dflt='int'
15444 . ./myread
15445 socksizetype=$ans
15446 ;;
15447 esac
15448 ;;
15449*) : no sockets, so pick relatively harmless default
15450 socksizetype='int'
15451 ;;
15452esac
15453
15454: see what type is used for signed size_t
15455set ssize_t ssizetype int stdio.h sys/types.h
15456eval $typedef
15457dflt="$ssizetype"
5440bc8e 15458$cat > try.c <<EOM
b4eb6b3d
JH
15459#include <stdio.h>
15460#include <sys/types.h>
15461#define Size_t $sizetype
15462#define SSize_t $dflt
15463int main()
15464{
15465 if (sizeof(Size_t) == sizeof(SSize_t))
15466 printf("$dflt\n");
15467 else if (sizeof(Size_t) == sizeof(int))
15468 printf("int\n");
15469 else
15470 printf("long\n");
15471 exit(0);
15472}
15473EOM
15474echo " "
5440bc8e
JH
15475set try
15476if eval $compile_ok && $run ./try > /dev/null; then
15477 ssizetype=`$run ./try`
b4eb6b3d
JH
15478 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15479else
15480 $cat >&4 <<EOM
15481Help! I can't compile and run the ssize_t test program: please enlighten me!
15482(This is probably a misconfiguration in your system or libraries, and
15483you really ought to fix it. Still, I'll try anyway.)
15484
15485I need a type that is the same size as $sizetype, but is guaranteed to
15486be signed. Common values are ssize_t, int and long.
15487
15488EOM
15489 rp="What signed type is the same size as $sizetype?"
15490 . ./myread
15491 ssizetype="$ans"
15492fi
5440bc8e 15493$rm -f try try.*
b4eb6b3d
JH
15494
15495: see what type of char stdio uses.
15496echo " "
aa517f50
JH
15497echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15498if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
b4eb6b3d
JH
15499 echo "Your stdio uses unsigned chars." >&4
15500 stdchar="unsigned char"
15501else
aa517f50
JH
15502 echo "Your stdio uses signed chars." >&4
15503 stdchar="char"
b4eb6b3d 15504fi
aa517f50
JH
15505$rm -f stdioh
15506
15507
b4eb6b3d
JH
15508
15509: see if time exists
15510echo " "
15511if test "X$d_time" = X -o X"$timetype" = X; then
15512 if set time val -f d_time; eval $csym; $val; then
15513 echo 'time() found.' >&4
15514 val="$define"
15515 rp="What is the type returned by time() on this system?"
15516 set time_t timetype long stdio.h sys/types.h
15517 eval $typedef_ask
15518 else
15519 echo 'time() not found, hope that will do.' >&4
15520 val="$undef"
15521 timetype='int';
15522 fi
15523 set d_time
15524 eval $setvar
15525fi
15526
15527: see what type uids are declared as in the kernel
15528echo " "
15529echo "Looking for the type for user ids returned by getuid()."
15530set uid_t uidtype xxx stdio.h sys/types.h
15531eval $typedef
15532case "$uidtype" in
15533xxx)
15534 xxx=`./findhdr sys/user.h`
15535 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15536 case $1 in
15537 unsigned) dflt="$1 $2" ;;
15538 *) dflt="$1" ;;
15539 esac
15540 ;;
15541*) dflt="$uidtype";;
15542esac
15543case "$uidtype" in
15544uid_t) echo "uid_t found." ;;
15545*) rp="What is the type for user ids returned by getuid()?"
15546 . ./myread
15547 uidtype="$ans"
15548 ;;
15549esac
15550
15551echo " "
15552case "$uidtype" in
15553*_t) zzz="$uidtype" ;;
15554*) zzz="uid" ;;
15555esac
15556echo "Checking the size of $zzz..." >&4
15557cat > try.c <<EOCP
15558#include <sys/types.h>
15559#include <stdio.h>
15560int main() {
15561 printf("%d\n", (int)sizeof($uidtype));
15562 exit(0);
15563}
15564EOCP
15565set try
15566if eval $compile_ok; then
5440bc8e 15567 yyy=`$run ./try`
b4eb6b3d
JH
15568 case "$yyy" in
15569 '') uidsize=4
15570 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15571 ;;
15572 *) uidsize=$yyy
15573 echo "Your $zzz is $uidsize bytes long."
15574 ;;
15575 esac
15576else
15577 uidsize=4
15578 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15579fi
15580
15581echo " "
15582case "$uidtype" in
15583*_t) zzz="$uidtype" ;;
15584*) zzz="uid" ;;
15585esac
15586echo "Checking the sign of $zzz..." >&4
15587cat > try.c <<EOCP
15588#include <sys/types.h>
15589#include <stdio.h>
15590int main() {
15591 $uidtype foo = -1;
15592 if (foo < 0)
15593 printf("-1\n");
15594 else
15595 printf("1\n");
15596}
15597EOCP
15598set try
15599if eval $compile; then
5440bc8e 15600 yyy=`$run ./try`
b4eb6b3d
JH
15601 case "$yyy" in
15602 '') uidsign=1
15603 echo "(I can't execute the test program--guessing unsigned.)" >&4
15604 ;;
15605 *) uidsign=$yyy
15606 case "$uidsign" in
15607 1) echo "Your $zzz is unsigned." ;;
15608 -1) echo "Your $zzz is signed." ;;
15609 esac
15610 ;;
15611 esac
15612else
15613 uidsign=1
15614 echo "(I can't compile the test program--guessing unsigned.)" >&4
15615fi
15616
15617
15618
15619echo " "
15620$echo "Checking the format string to be used for uids..." >&4
15621
15622case "$uidsign" in
15623-1) if $test X"$uidsize" = X"$ivsize"; then
15624 uidformat="$ivdformat"
15625 else
15626 if $test X"$uidsize" = X"$longsize"; then
15627 uidformat='"ld"'
15628 else
15629 if $test X"$uidsize" = X"$intsize"; then
15630 uidformat='"d"'
15631 else
15632 if $test X"$uidsize" = X"$shortsize"; then
15633 uidformat='"hd"'
15634 fi
15635 fi
15636 fi
15637 fi
15638 ;;
15639*) if $test X"$uidsize" = X"$uvsize"; then
15640 uidformat="$uvuformat"
15641 else
15642 if $test X"$uidsize" = X"$longsize"; then
15643 uidformat='"lu"'
15644 else
15645 if $test X"$uidsize" = X"$intsize"; then
15646 uidformat='"u"'
15647 else
15648 if $test X"$uidsize" = X"$shortsize"; then
15649 uidformat='"hu"'
15650 fi
15651 fi
15652 fi
15653 fi
15654 ;;
15655esac
15656
3659ebf1
JH
15657: determine compiler compiler
15658case "$yacc" in
15659'')
15660 dflt=yacc;;
15661*)
15662 dflt="$yacc";;
15663esac
15664echo " "
15665comp='yacc'
15666if $test -f "$byacc"; then
15667 dflt="$byacc"
15668 comp="byacc or $comp"
15669fi
15670if $test -f "$bison"; then
15671 comp="$comp or bison -y"
15672fi
15673rp="Which compiler compiler ($comp) shall I use?"
15674. ./myread
15675yacc="$ans"
15676case "$yacc" in
15677*bis*)
15678 case "$yacc" in
15679 *-y*) ;;
15680 *)
15681 yacc="$yacc -y"
15682 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15683 ;;
15684 esac
15685 ;;
15686esac
15687
b4eb6b3d
JH
15688: see if fcntl.h is there
15689val=''
15690set fcntl.h val
15691eval $inhdr
15692
15693: see if we can include fcntl.h
15694case "$val" in
15695"$define")
15696 echo " "
15697 if $h_fcntl; then
15698 val="$define"
15699 echo "We'll be including <fcntl.h>." >&4
15700 else
15701 val="$undef"
15702 if $h_sysfile; then
15703 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15704 else
15705 echo "We won't be including <fcntl.h>." >&4
15706 fi
15707 fi
15708 ;;
15709*)
15710 h_fcntl=false
15711 val="$undef"
15712 ;;
15713esac
15714set i_fcntl
15715eval $setvar
15716
15717: see if this is a iconv.h system
15718set iconv.h i_iconv
15719eval $inhdr
15720
15721: see if this is a ieeefp.h system
15722set ieeefp.h i_ieeefp
15723eval $inhdr
15724
15725: see if this is a libutil.h system
15726set libutil.h i_libutil
15727eval $inhdr
15728
15729: see if locale.h is available
15730set locale.h i_locale
15731eval $inhdr
15732
15733: see if mach cthreads are available
15734if test "X$usethreads" = "X$define"; then
15735 set mach/cthreads.h i_machcthr
15736 eval $inhdr
15737else
15738 i_machcthr="$undef"
15739fi
15740
15741
15742
15743: see if this is a math.h system
15744set math.h i_math
15745eval $inhdr
15746
15747: see if this is a mntent.h system
15748set mntent.h i_mntent
15749eval $inhdr
15750
15751: see if ndbm.h is available
15752set ndbm.h t_ndbm
15753eval $inhdr
15754case "$t_ndbm" in
15755$define)
15756 : see if dbm_open exists
15757 set dbm_open d_dbm_open
15758 eval $inlibc
15759 case "$d_dbm_open" in
15760 $undef)
15761 t_ndbm="$undef"
15762 echo "We won't be including <ndbm.h>"
15763 ;;
15764 esac
15765 ;;
15766esac
15767val="$t_ndbm"
15768set i_ndbm
15769eval $setvar
15770
15771: see if net/errno.h is available
15772val=''
15773set net/errno.h val
15774eval $inhdr
15775
15776: Unfortunately, it causes problems on some systems. Arrgh.
15777case "$val" in
15778$define)
15779 cat > try.c <<'EOM'
15780#include <stdio.h>
15781#include <errno.h>
15782#include <net/errno.h>
15783int func()
15784{
15785 return ENOTSOCK;
15786}
15787EOM
15788 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15789 echo "We'll be including <net/errno.h>." >&4
15790 else
15791 echo "We won't be including <net/errno.h>." >&4
15792 val="$undef"
15793 fi
15794 $rm -f try.* try
15795 ;;
15796esac
15797set i_neterrno
15798eval $setvar
15799
15800: see if netinet/tcp.h is available
15801set netinet/tcp.h i_netinettcp
15802eval $inhdr
15803
15804: see if this is a poll.h system
15805set poll.h i_poll
15806eval $inhdr
15807
15808: see if this is a prot.h system
15809set prot.h i_prot
15810eval $inhdr
15811
15812echo " "
15813$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15814$cat <<'EOSH' > Cppsym.know
15815a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15816AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
d46c9a2d
JH
15817alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15818ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15819BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
b4eb6b3d
JH
15820BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15821bull c cadmus clipper CMU COFF COMPILER_VERSION
15822concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15823CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15824Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15825FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15826GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15827H3050R H3050RX hbullx20 hcx host_mips
15828hp200 hp300 hp700 HP700 hp800 hp9000
15829hp9000s200 hp9000s300 hp9000s400 hp9000s500
15830hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15831i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
d46c9a2d 15832IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
b4eb6b3d
JH
15833INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15834LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15835LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15836Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15837LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15838M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15839M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15840M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15841MATH_HAS_NO_SIDE_EFFECTS
15842mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15843mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15844mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15845MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15846mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15847NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 15848news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
15849ns32016 ns32332 ns32k nsc32000
15850OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15851pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15852pc532 pdp11 PGC PIC plexus PORTAR posix
15853POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15854POSIX_C_SOURCE POSIX_SOURCE POWER
15855PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
d46c9a2d 15856riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
b4eb6b3d
JH
15857SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15858sony sony_news sonyrisc sparc sparclite spectrum
15859stardent stdc STDC_EXT stratos sun sun3 sun386
15860Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15861SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15862SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15863sysV68 sysV88 Tek4132 Tek4300 titan
d46c9a2d 15864TM3200 TM5400 TM5600
b4eb6b3d
JH
15865tower tower32 tower32_200 tower32_600 tower32_700
15866tower32_800 tower32_850 tss
15867u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15868ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15869unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15870Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15871XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15872XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15873z8000
15874EOSH
15875# Maybe put other stuff here too.
15876cat <<EOSH >>Cppsym.know
15877$osname
15878EOSH
15879./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15880./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15881$cat Cppsym.know > Cppsym.c
381aa1ff 15882$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
15883$rm -f Cppsym.a Cppsym.b Cppsym.c
15884cat <<EOSH > Cppsym
15885$startsh
15886if $test \$# -gt 0; then
15887 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15888 if $test -s Cppsym.got; then
15889 $rm -f Cppsym.got
15890 exit 0
15891 fi
15892 $rm -f Cppsym.got
15893 exit 1
15894else
15895 $tr " " "$trnl" | ./Cppsym.try
15896 exit 0
15897fi
15898EOSH
15899chmod +x Cppsym
15900$eunicefix Cppsym
15901cat <<EOSH > Cppsym.try
15902$startsh
15903cat <<'EOCP' > try.c
15904#include <stdio.h>
15905int main() {
15906EOCP
15907$awk \\
15908EOSH
15909cat <<'EOSH' >> Cppsym.try
15910'length($1) > 0 {
2ef53570
JH
15911 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
15912 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
15913 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
15914 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 15915}' >> try.c
2ef53570 15916echo 'return 0;}' >> try.c
b4eb6b3d
JH
15917EOSH
15918cat <<EOSH >> Cppsym.try
15919ccflags="$ccflags"
15920case "$osname-$gccversion" in
15921irix-) ccflags="\$ccflags -woff 1178" ;;
15922os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15923esac
5440bc8e 15924$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
b4eb6b3d
JH
15925EOSH
15926chmod +x Cppsym.try
15927$eunicefix Cppsym.try
15928./Cppsym < Cppsym.know > Cppsym.true
15929: now check the C compiler for additional symbols
15930postprocess_cc_v=''
15931case "$osname" in
15932aix) postprocess_cc_v="|$tr , ' '" ;;
15933esac
15934$cat >ccsym <<EOS
15935$startsh
15936$cat >tmp.c <<EOF
15937extern int foo;
15938EOF
15939for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15940do
15941 case "\$i" in
15942 -D*) echo "\$i" | $sed 's/^-D//';;
15943 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15944 esac
15945done
15946$rm -f try.c
15947EOS
15948postprocess_cc_v=''
15949chmod +x ccsym
15950$eunicefix ccsym
15951./ccsym > ccsym1.raw
15952if $test -s ccsym1.raw; then
15953 $sort ccsym1.raw | $uniq >ccsym.raw
15954else
15955 mv ccsym1.raw ccsym.raw
15956fi
15957
15958$awk '/\=/ { print $0; next }
15959 { print $0"=1" }' ccsym.raw >ccsym.list
15960$awk '/\=/ { print $0; next }
15961 { print $0"=1" }' Cppsym.true >ccsym.true
15962$comm -13 ccsym.true ccsym.list >ccsym.own
15963$comm -12 ccsym.true ccsym.list >ccsym.com
15964$comm -23 ccsym.true ccsym.list >ccsym.cpp
15965also=''
15966if $test -z ccsym.raw; then
15967 echo "Your C compiler doesn't seem to define any symbols!" >&4
15968 echo " "
15969 echo "However, your C preprocessor defines the following symbols:"
15970 $cat Cppsym.true
15971 ccsymbols=''
15972 cppsymbols=`$cat Cppsym.true`
15973 cppsymbols=`echo $cppsymbols`
15974 cppccsymbols="$cppsymbols"
15975else
15976 if $test -s ccsym.com; then
15977 echo "Your C compiler and pre-processor define these symbols:"
15978 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15979 also='also '
15980 symbols='ones'
15981 cppccsymbols=`$cat ccsym.com`
15982 cppccsymbols=`echo $cppccsymbols`
15983 $test "$silent" || sleep 1
15984 fi
15985 if $test -s ccsym.cpp; then
15986 $test "$also" && echo " "
15987 echo "Your C pre-processor ${also}defines the following symbols:"
15988 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15989 also='further '
15990 cppsymbols=`$cat ccsym.cpp`
15991 cppsymbols=`echo $cppsymbols`
15992 $test "$silent" || sleep 1
15993 fi
15994 if $test -s ccsym.own; then
15995 $test "$also" && echo " "
15996 echo "Your C compiler ${also}defines the following cpp symbols:"
15997 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15998 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15999 ccsymbols=`$cat ccsym.own`
16000 ccsymbols=`echo $ccsymbols`
16001 $test "$silent" || sleep 1
16002 fi
16003fi
b4eb6b3d
JH
16004
16005: see if this is a termio system
16006val="$undef"
16007val2="$undef"
16008val3="$undef"
16009if $test `./findhdr termios.h`; then
16010 set tcsetattr i_termios
16011 eval $inlibc
16012 val3="$i_termios"
16013fi
16014echo " "
16015case "$val3" in
16016"$define") echo "You have POSIX termios.h... good!" >&4;;
16017*) if ./Cppsym pyr; then
16018 case "`/bin/universe`" in
16019 ucb) if $test `./findhdr sgtty.h`; then
16020 val2="$define"
16021 echo "<sgtty.h> found." >&4
16022 else
16023 echo "System is pyramid with BSD universe."
16024 echo "<sgtty.h> not found--you could have problems." >&4
16025 fi;;
16026 *) if $test `./findhdr termio.h`; then
16027 val="$define"
16028 echo "<termio.h> found." >&4
16029 else
16030 echo "System is pyramid with USG universe."
16031 echo "<termio.h> not found--you could have problems." >&4
16032 fi;;
16033 esac
16034 elif ./usg; then
16035 if $test `./findhdr termio.h`; then
16036 echo "<termio.h> found." >&4
16037 val="$define"
16038 elif $test `./findhdr sgtty.h`; then
16039 echo "<sgtty.h> found." >&4
16040 val2="$define"
16041 else
16042echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16043 fi
16044 else
16045 if $test `./findhdr sgtty.h`; then
16046 echo "<sgtty.h> found." >&4
16047 val2="$define"
16048 elif $test `./findhdr termio.h`; then
16049 echo "<termio.h> found." >&4
16050 val="$define"
16051 else
16052echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16053 fi
16054 fi;;
16055esac
16056set i_termio; eval $setvar
16057val=$val2; set i_sgtty; eval $setvar
16058val=$val3; set i_termios; eval $setvar
16059
16060: see if this is a shadow.h system
16061set shadow.h i_shadow
16062eval $inhdr
16063
b4eb6b3d
JH
16064: see if stddef is available
16065set stddef.h i_stddef
16066eval $inhdr
923fc586 16067
b4eb6b3d
JH
16068: see if this is a sunmath.h system
16069set sunmath.h i_sunmath
16070eval $inhdr
5f80c64f 16071
b4eb6b3d
JH
16072: see if sys/access.h is available
16073set sys/access.h i_sysaccess
16074eval $inhdr
16075
16076: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16077set sys/filio.h i_sysfilio
16078eval $inhdr
16079echo " "
16080if $test `./findhdr sys/ioctl.h`; then
16081 val="$define"
16082 echo '<sys/ioctl.h> found.' >&4
16083else
16084 val="$undef"
16085 if $test $i_sysfilio = "$define"; then
16086 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 16087 else
b4eb6b3d
JH
16088 $test $i_sgtty = "$define" && xxx="sgtty.h"
16089 $test $i_termio = "$define" && xxx="termio.h"
16090 $test $i_termios = "$define" && xxx="termios.h"
16091echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16092 fi
16093fi
16094set i_sysioctl
16095eval $setvar
16096
49a78c82
JH
16097: see if socket ioctl defs are in sys/sockio.h
16098echo " "
16099xxx=`./findhdr sys/sockio.h`
16100if $test "$xxx"; then
16101 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16102 val="$define"
16103 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16104 else
16105 val="$undef"
16106 echo "No socket ioctls found in <sys/sockio.h>." >&4
16107 fi
16108else
16109 val="$undef"
16110 $cat <<EOM
16111<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16112EOM
16113fi
16114set i_syssockio
16115eval $setvar
16116
b4eb6b3d
JH
16117
16118: see if this is a syslog.h system
16119set syslog.h i_syslog
16120eval $inhdr
16121
16122
16123: see if this is a sys/mode.h system
16124set sys/mode.h i_sysmode
16125eval $inhdr
16126
16127: see if sys/resource.h has to be included
16128set sys/resource.h i_sysresrc
16129eval $inhdr
16130
16131: see if sys/security.h is available
16132set sys/security.h i_syssecrt
16133eval $inhdr
16134
16135: see if this is a sys/statvfs.h system
16136set sys/statvfs.h i_sysstatvfs
16137eval $inhdr
16138
b4eb6b3d
JH
16139: see if this is a sys/un.h system
16140set sys/un.h i_sysun
16141eval $inhdr
16142
16143
16144: see if this is a sys/utsname.h system
16145set sys/utsname.h i_sysutsname
16146eval $inhdr
16147
16148: see if this is a syswait system
16149set sys/wait.h i_syswait
16150eval $inhdr
16151
16152: see if this is a ustat.h system
16153set ustat.h i_ustat
16154eval $inhdr
16155
16156: see if this is an utime system
16157set utime.h i_utime
16158eval $inhdr
16159
16160: see if this is a values.h system
16161set values.h i_values
16162eval $inhdr
16163
16164: see if this is a vfork system
16165case "$d_vfork" in
16166"$define")
16167 set vfork.h i_vfork
16168 eval $inhdr
16169 ;;
16170*)
16171 i_vfork="$undef"
16172 ;;
16173esac
16174
16175: see if gdbm.h is available
16176set gdbm.h t_gdbm
16177eval $inhdr
16178case "$t_gdbm" in
16179$define)
16180 : see if gdbm_open exists
16181 set gdbm_open d_gdbm_open
16182 eval $inlibc
16183 case "$d_gdbm_open" in
16184 $undef)
16185 t_gdbm="$undef"
16186 echo "We won't be including <gdbm.h>"
5f80c64f 16187 ;;
b4eb6b3d
JH
16188 esac
16189 ;;
16190esac
16191val="$t_gdbm"
16192set i_gdbm
16193eval $setvar
16194
16195echo " "
16196echo "Looking for extensions..." >&4
16197: If we are using the old config.sh, known_extensions may contain
16198: old or inaccurate or duplicate values.
16199known_extensions=''
16200nonxs_extensions=''
16201: We do not use find because it might not be available.
16202: We do not just use MANIFEST because the user may have dropped
16203: some additional extensions into the source tree and expect them
16204: to be built.
16205
16206: Function to recursively find available extensions, ignoring DynaLoader
16207: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16208find_extensions='
16209 for xxx in *; do
16210 case "$xxx" in
16211 DynaLoader|dynaload) ;;
16212 *)
16213 if $test -f $xxx/$xxx.xs; then
16214 known_extensions="$known_extensions $1$xxx";
16215 elif $test -f $xxx/Makefile.PL; then
16216 nonxs_extensions="$nonxs_extensions $1$xxx";
16217 else
16218 if $test -d $xxx -a $# -lt 10; then
16219 set $1$xxx/ $*;
16220 cd $xxx;
16221 eval $find_extensions;
16222 cd ..;
16223 shift;
16224 fi;
16225 fi
16226 ;;
16227 esac;
16228 done'
16229tdir=`pwd`
16230cd $rsrc/ext
16231set X
16232shift
16233eval $find_extensions
16234set X $nonxs_extensions
16235shift
16236nonxs_extensions="$*"
16237set X $known_extensions
16238shift
16239known_extensions="$*"
16240cd $tdir
16241
16242: Now see which are supported on this system.
16243avail_ext=''
16244for xxx in $known_extensions ; do
16245 case "$xxx" in
16246 DB_File|db_file)
16247 case "$i_db" in
16248 $define) avail_ext="$avail_ext $xxx" ;;
16249 esac
16250 ;;
16251 GDBM_File|gdbm_fil)
16252 case "$i_gdbm" in
16253 $define) avail_ext="$avail_ext $xxx" ;;
16254 esac
16255 ;;
16256 NDBM_File|ndbm_fil)
16257 case "$i_ndbm" in
16258 $define)
16259 case "$osname-$use64bitint" in
252f4fb1 16260 cygwin-*|hpux-define)
b4eb6b3d
JH
16261 case "$libs" in
16262 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16263 esac
16264 ;;
16265 *) avail_ext="$avail_ext $xxx" ;;
16266 esac
16267 ;;
16268 esac
16269 ;;
16270 ODBM_File|odbm_fil)
16271 case "${i_dbm}${i_rpcsvcdbm}" in
16272 *"${define}"*)
16273 case "$osname-$use64bitint" in
252f4fb1 16274 cygwin-*|hpux-define)
b4eb6b3d
JH
16275 case "$libs" in
16276 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16277 esac
16278 ;;
16279 *) avail_ext="$avail_ext $xxx" ;;
16280 esac
16281 ;;
16282 esac
16283 ;;
16284 POSIX|posix)
16285 case "$useposix" in
16286 true|define|y) avail_ext="$avail_ext $xxx" ;;
16287 esac
16288 ;;
16289 Opcode|opcode)
16290 case "$useopcode" in
16291 true|define|y) avail_ext="$avail_ext $xxx" ;;
16292 esac
16293 ;;
16294 Socket|socket)
16295 case "$d_socket" in
16296 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16297 esac
16298 ;;
16299 Sys/Syslog|sys/syslog)
16300 : XXX syslog requires socket
16301 case "$d_socket" in
16302 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16303 esac
16304 ;;
16305 Thread|thread)
b00ec89b
AB
16306 case "$usethreads" in
16307 true|$define|y)
16308 case "$useithreads" in
16309 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16310 esac
b4eb6b3d
JH
16311 esac
16312 ;;
16313 IPC/SysV|ipc/sysv)
16314 : XXX Do we need a useipcsysv variable here
16315 case "${d_msg}${d_sem}${d_shm}" in
16316 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16317 esac
16318 ;;
16319 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
16320 ;;
16321 esac
b4eb6b3d 16322done
5f80c64f 16323
b4eb6b3d
JH
16324set X $avail_ext
16325shift
16326avail_ext="$*"
5f80c64f 16327
b4eb6b3d
JH
16328: Now see which nonxs extensions are supported on this system.
16329: For now assume all are.
16330nonxs_ext=''
16331for xxx in $nonxs_extensions ; do
16332 case "$xxx" in
16333 *) nonxs_ext="$nonxs_ext $xxx"
16334 ;;
16335 esac
16336done
5f80c64f 16337
b4eb6b3d
JH
16338set X $nonxs_ext
16339shift
16340nonxs_ext="$*"
16341
16342case $usedl in
16343$define)
16344 $cat <<EOM
16345A number of extensions are supplied with $package. You may choose to
16346compile these extensions for dynamic loading (the default), compile
16347them into the $package executable (static loading), or not include
16348them at all. Answer "none" to include no extensions.
16349Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
16350
16351EOM
b4eb6b3d
JH
16352 case "$dynamic_ext" in
16353 '') dflt="$avail_ext" ;;
16354 *) dflt="$dynamic_ext"
16355 # Perhaps we are reusing an old out-of-date config.sh.
16356 case "$hint" in
16357 previous)
16358 if test X"$dynamic_ext" != X"$avail_ext"; then
16359 $cat <<EOM
16360NOTICE: Your previous config.sh list may be incorrect.
16361The extensions now available to you are
16362 ${avail_ext}
16363but the default list from your previous config.sh is
16364 ${dynamic_ext}
9c839522 16365
b4eb6b3d
JH
16366EOM
16367 fi
9c839522
PM
16368 ;;
16369 esac
b4eb6b3d
JH
16370 ;;
16371 esac
5f80c64f 16372 case "$dflt" in
b4eb6b3d
JH
16373 '') dflt=none;;
16374 esac
16375 rp="What extensions do you wish to load dynamically?"
16376 . ./myread
16377 case "$ans" in
16378 none) dynamic_ext=' ' ;;
16379 *) dynamic_ext="$ans" ;;
5f80c64f 16380 esac
5f80c64f 16381
b4eb6b3d
JH
16382 case "$static_ext" in
16383 '')
16384 : Exclude those already listed in dynamic linking
16385 dflt=''
16386 for xxx in $avail_ext; do
16387 case " $dynamic_ext " in
16388 *" $xxx "*) ;;
16389 *) dflt="$dflt $xxx" ;;
16390 esac
16391 done
16392 set X $dflt
16393 shift
16394 dflt="$*"
16395 ;;
16396 *) dflt="$static_ext"
16397 ;;
16398 esac
9c839522 16399
b4eb6b3d
JH
16400 case "$dflt" in
16401 '') dflt=none;;
16402 esac
16403 rp="What extensions do you wish to load statically?"
16404 . ./myread
16405 case "$ans" in
16406 none) static_ext=' ' ;;
16407 *) static_ext="$ans" ;;
16408 esac
16409 ;;
16410*)
16411 $cat <<EOM
16412A number of extensions are supplied with $package. Answer "none"
16413to include no extensions.
16414Note that DynaLoader is always built and need not be mentioned here.
9c839522 16415
b4eb6b3d
JH
16416EOM
16417 case "$static_ext" in
16418 '') dflt="$avail_ext" ;;
16419 *) dflt="$static_ext"
16420 # Perhaps we are reusing an old out-of-date config.sh.
16421 case "$hint" in
16422 previous)
16423 if test X"$static_ext" != X"$avail_ext"; then
16424 $cat <<EOM
16425NOTICE: Your previous config.sh list may be incorrect.
16426The extensions now available to you are
16427 ${avail_ext}
16428but the default list from your previous config.sh is
16429 ${static_ext}
5f80c64f
JH
16430
16431EOM
b4eb6b3d
JH
16432 fi
16433 ;;
16434 esac
16435 ;;
16436 esac
16437 : Exclude those that are not xs extensions
16438 case "$dflt" in
16439 '') dflt=none;;
16440 esac
16441 rp="What extensions do you wish to include?"
16442 . ./myread
16443 case "$ans" in
16444 none) static_ext=' ' ;;
16445 *) static_ext="$ans" ;;
16446 esac
16447 ;;
5f80c64f
JH
16448esac
16449
b4eb6b3d
JH
16450set X $dynamic_ext $static_ext $nonxs_ext
16451shift
16452extensions="$*"
16453
9c839522
PM
16454: Remove libraries needed only for extensions
16455: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
16456: The exception is SunOS 4.x, which needs them.
16457case "${osname}X${osvers}" in
16458sunos*X4*)
16459 perllibs="$libs"
16460 ;;
16461*) case "$usedl" in
16462 $define|true|[yY]*)
16463 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16464 shift
16465 perllibs="$*"
16466 ;;
16467 *) perllibs="$libs"
16468 ;;
16469 esac
16470 ;;
9c839522 16471esac
5f80c64f
JH
16472
16473: Remove build directory name from cppstdin so it can be used from
16474: either the present location or the final installed location.
16475echo " "
16476: Get out of the UU directory to get correct path name.
16477cd ..
16478case "$cppstdin" in
16479`pwd`/cppstdin)
16480 echo "Stripping down cppstdin path name"
16481 cppstdin=cppstdin
16482 ;;
16483esac
16484cd UU
16485
16486: end of configuration questions
16487echo " "
16488echo "End of configuration questions."
16489echo " "
16490
16491: back to where it started
16492if test -d ../UU; then
16493 cd ..
16494fi
16495
16496: configuration may be patched via a 'config.over' file
16497if $test -f config.over; then
16498 echo " "
16499 dflt=y
16500 rp='I see a config.over file. Do you wish to load it?'
16501 . UU/myread
16502 case "$ans" in
16503 n*) echo "OK, I'll ignore it.";;
16504 *) . ./config.over
16505 echo "Configuration override changes have been loaded."
16506 ;;
16507 esac
16508fi
16509
16510: in case they want portability, strip down executable paths
16511case "$d_portable" in
16512"$define")
16513 echo " "
16514 echo "Stripping down executable paths..." >&4
16515 for file in $loclist $trylist; do
534ac15a
JH
16516 eval temp=\$$file
16517 eval $file=`basename $temp`
5f80c64f
JH
16518 done
16519 ;;
16520esac
16521
16522: create config.sh file
16523echo " "
16524echo "Creating config.sh..." >&4
16525$spitshell <<EOT >config.sh
16526$startsh
16527#
16528# This file was produced by running the Configure script. It holds all the
16529# definitions figured out by Configure. Should you modify one of these values,
16530# do not forget to propagate your changes by running "Configure -der". You may
16531# instead choose to run each of the .SH files by yourself, or "Configure -S".
16532#
16533
16534# Package name : $package
16535# Source directory : $src
16536# Configuration time: $cf_time
16537# Configured by : $cf_by
16538# Target system : $myuname
16539
16540Author='$Author'
16541Date='$Date'
16542Header='$Header'
16543Id='$Id'
16544Locker='$Locker'
16545Log='$Log'
16546Mcc='$Mcc'
16547RCSfile='$RCSfile'
16548Revision='$Revision'
16549Source='$Source'
16550State='$State'
16551_a='$_a'
16552_exe='$_exe'
16553_o='$_o'
b4eb6b3d 16554afs='$afs'
a6d26a0d 16555afsroot='$afsroot'
b4eb6b3d
JH
16556alignbytes='$alignbytes'
16557ansi2knr='$ansi2knr'
16558aphostname='$aphostname'
16559api_revision='$api_revision'
16560api_subversion='$api_subversion'
16561api_version='$api_version'
16562api_versionstring='$api_versionstring'
5f80c64f 16563ar='$ar'
b4eb6b3d
JH
16564archlib='$archlib'
16565archlibexp='$archlibexp'
16566archname64='$archname64'
16567archname='$archname'
5f80c64f
JH
16568archobjs='$archobjs'
16569awk='$awk'
b4eb6b3d 16570baserev='$baserev'
5f80c64f 16571bash='$bash'
b4eb6b3d
JH
16572bin='$bin'
16573bincompat5005='$bincompat5005'
16574binexp='$binexp'
5f80c64f
JH
16575bison='$bison'
16576byacc='$byacc'
b4eb6b3d 16577byteorder='$byteorder'
5f80c64f 16578c='$c'
b4eb6b3d 16579castflags='$castflags'
5f80c64f
JH
16580cat='$cat'
16581cc='$cc'
16582cccdlflags='$cccdlflags'
16583ccdlflags='$ccdlflags'
16584ccflags='$ccflags'
b4eb6b3d 16585ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 16586ccname='$ccname'
b4eb6b3d 16587ccsymbols='$ccsymbols'
6b356c8e 16588ccversion='$ccversion'
5f80c64f 16589cf_by='$cf_by'
b4eb6b3d 16590cf_email='$cf_email'
5f80c64f 16591cf_time='$cf_time'
b4eb6b3d 16592charsize='$charsize'
5f80c64f
JH
16593chgrp='$chgrp'
16594chmod='$chmod'
16595chown='$chown'
b4eb6b3d 16596clocktype='$clocktype'
5f80c64f
JH
16597comm='$comm'
16598compress='$compress'
16599contains='$contains'
16600cp='$cp'
16601cpio='$cpio'
16602cpp='$cpp'
b4eb6b3d
JH
16603cpp_stuff='$cpp_stuff'
16604cppccsymbols='$cppccsymbols'
5f80c64f
JH
16605cppflags='$cppflags'
16606cpplast='$cpplast'
16607cppminus='$cppminus'
16608cpprun='$cpprun'
16609cppstdin='$cppstdin'
b4eb6b3d 16610cppsymbols='$cppsymbols'
b4eb6b3d 16611cryptlib='$cryptlib'
5f80c64f 16612csh='$csh'
b4eb6b3d
JH
16613d_Gconvert='$d_Gconvert'
16614d_PRIEUldbl='$d_PRIEUldbl'
16615d_PRIFUldbl='$d_PRIFUldbl'
16616d_PRIGUldbl='$d_PRIGUldbl'
16617d_PRIXU64='$d_PRIXU64'
16618d_PRId64='$d_PRId64'
16619d_PRIeldbl='$d_PRIeldbl'
16620d_PRIfldbl='$d_PRIfldbl'
16621d_PRIgldbl='$d_PRIgldbl'
16622d_PRIi64='$d_PRIi64'
16623d_PRIo64='$d_PRIo64'
16624d_PRIu64='$d_PRIu64'
16625d_PRIx64='$d_PRIx64'
16626d_SCNfldbl='$d_SCNfldbl'
74cac757 16627d__fwalk='$d__fwalk'
b4eb6b3d
JH
16628d_access='$d_access'
16629d_accessx='$d_accessx'
16630d_alarm='$d_alarm'
16631d_archlib='$d_archlib'
16632d_atolf='$d_atolf'
16633d_atoll='$d_atoll'
16634d_attribut='$d_attribut'
16635d_bcmp='$d_bcmp'
16636d_bcopy='$d_bcopy'
16637d_bincompat5005='$d_bincompat5005'
5f80c64f 16638d_bsd='$d_bsd'
b4eb6b3d
JH
16639d_bsdgetpgrp='$d_bsdgetpgrp'
16640d_bsdsetpgrp='$d_bsdsetpgrp'
16641d_bzero='$d_bzero'
16642d_casti32='$d_casti32'
16643d_castneg='$d_castneg'
16644d_charvspr='$d_charvspr'
16645d_chown='$d_chown'
16646d_chroot='$d_chroot'
16647d_chsize='$d_chsize'
16648d_closedir='$d_closedir'
4e0554ec 16649d_cmsghdr_s='$d_cmsghdr_s'
b4eb6b3d
JH
16650d_const='$d_const'
16651d_crypt='$d_crypt'
16652d_csh='$d_csh'
16653d_cuserid='$d_cuserid'
16654d_dbl_dig='$d_dbl_dig'
2ef53570 16655d_dbminitproto='$d_dbminitproto'
b4eb6b3d
JH
16656d_difftime='$d_difftime'
16657d_dirnamlen='$d_dirnamlen'
16658d_dlerror='$d_dlerror'
5f80c64f 16659d_dlopen='$d_dlopen'
b4eb6b3d
JH
16660d_dlsymun='$d_dlsymun'
16661d_dosuid='$d_dosuid'
16662d_drand48proto='$d_drand48proto'
16663d_dup2='$d_dup2'
16664d_eaccess='$d_eaccess'
16665d_endgrent='$d_endgrent'
16666d_endhent='$d_endhent'
16667d_endnent='$d_endnent'
16668d_endpent='$d_endpent'
16669d_endpwent='$d_endpwent'
16670d_endsent='$d_endsent'
16671d_eofnblk='$d_eofnblk'
5f80c64f 16672d_eunice='$d_eunice'
b363b713 16673d_fchdir='$d_fchdir'
b4eb6b3d
JH
16674d_fchmod='$d_fchmod'
16675d_fchown='$d_fchown'
16676d_fcntl='$d_fcntl'
9d9004a9 16677d_fcntl_can_lock='$d_fcntl_can_lock'
b4eb6b3d
JH
16678d_fd_macros='$d_fd_macros'
16679d_fd_set='$d_fd_set'
16680d_fds_bits='$d_fds_bits'
16681d_fgetpos='$d_fgetpos'
16682d_flexfnam='$d_flexfnam'
16683d_flock='$d_flock'
2ef53570 16684d_flockproto='$d_flockproto'
b4eb6b3d
JH
16685d_fork='$d_fork'
16686d_fpathconf='$d_fpathconf'
16687d_fpos64_t='$d_fpos64_t'
16688d_frexpl='$d_frexpl'
16689d_fs_data_s='$d_fs_data_s'
16690d_fseeko='$d_fseeko'
16691d_fsetpos='$d_fsetpos'
16692d_fstatfs='$d_fstatfs'
16693d_fstatvfs='$d_fstatvfs'
411ab01c 16694d_fsync='$d_fsync'
b4eb6b3d
JH
16695d_ftello='$d_ftello'
16696d_ftime='$d_ftime'
16697d_getcwd='$d_getcwd'
16698d_getespwnam='$d_getespwnam'
16699d_getfsstat='$d_getfsstat'
16700d_getgrent='$d_getgrent'
16701d_getgrps='$d_getgrps'
16702d_gethbyaddr='$d_gethbyaddr'
16703d_gethbyname='$d_gethbyname'
16704d_gethent='$d_gethent'
16705d_gethname='$d_gethname'
16706d_gethostprotos='$d_gethostprotos'
4e0554ec 16707d_getitimer='$d_getitimer'
b4eb6b3d
JH
16708d_getlogin='$d_getlogin'
16709d_getmnt='$d_getmnt'
16710d_getmntent='$d_getmntent'
16711d_getnbyaddr='$d_getnbyaddr'
16712d_getnbyname='$d_getnbyname'
16713d_getnent='$d_getnent'
16714d_getnetprotos='$d_getnetprotos'
0c0643d0 16715d_getpagsz='$d_getpagsz'
b4eb6b3d
JH
16716d_getpbyname='$d_getpbyname'
16717d_getpbynumber='$d_getpbynumber'
16718d_getpent='$d_getpent'
16719d_getpgid='$d_getpgid'
16720d_getpgrp2='$d_getpgrp2'
16721d_getpgrp='$d_getpgrp'
16722d_getppid='$d_getppid'
16723d_getprior='$d_getprior'
16724d_getprotoprotos='$d_getprotoprotos'
16725d_getprpwnam='$d_getprpwnam'
16726d_getpwent='$d_getpwent'
16727d_getsbyname='$d_getsbyname'
16728d_getsbyport='$d_getsbyport'
16729d_getsent='$d_getsent'
16730d_getservprotos='$d_getservprotos'
16731d_getspnam='$d_getspnam'
16732d_gettimeod='$d_gettimeod'
5f80c64f 16733d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
16734d_grpasswd='$d_grpasswd'
16735d_hasmntopt='$d_hasmntopt'
16736d_htonl='$d_htonl'
16737d_iconv='$d_iconv'
16738d_index='$d_index'
16739d_inetaton='$d_inetaton'
16740d_int64_t='$d_int64_t'
16741d_isascii='$d_isascii'
16742d_isnan='$d_isnan'
16743d_isnanl='$d_isnanl'
16744d_killpg='$d_killpg'
16745d_lchown='$d_lchown'
16746d_ldbl_dig='$d_ldbl_dig'
16747d_link='$d_link'
16748d_locconv='$d_locconv'
16749d_lockf='$d_lockf'
16750d_longdbl='$d_longdbl'
16751d_longlong='$d_longlong'
16752d_lseekproto='$d_lseekproto'
16753d_lstat='$d_lstat'
16754d_madvise='$d_madvise'
16755d_mblen='$d_mblen'
16756d_mbstowcs='$d_mbstowcs'
16757d_mbtowc='$d_mbtowc'
16758d_memchr='$d_memchr'
16759d_memcmp='$d_memcmp'
16760d_memcpy='$d_memcpy'
16761d_memmove='$d_memmove'
16762d_memset='$d_memset'
16763d_mkdir='$d_mkdir'
16764d_mkdtemp='$d_mkdtemp'
16765d_mkfifo='$d_mkfifo'
16766d_mkstemp='$d_mkstemp'
16767d_mkstemps='$d_mkstemps'
16768d_mktime='$d_mktime'
16769d_mmap='$d_mmap'
16770d_modfl='$d_modfl'
e67aeab1 16771d_modfl_pow32_bug='$d_modfl_pow32_bug'
b4eb6b3d
JH
16772d_mprotect='$d_mprotect'
16773d_msg='$d_msg'
16774d_msg_ctrunc='$d_msg_ctrunc'
16775d_msg_dontroute='$d_msg_dontroute'
16776d_msg_oob='$d_msg_oob'
16777d_msg_peek='$d_msg_peek'
16778d_msg_proxy='$d_msg_proxy'
16779d_msgctl='$d_msgctl'
16780d_msgget='$d_msgget'
4e0554ec 16781d_msghdr_s='$d_msghdr_s'
b4eb6b3d
JH
16782d_msgrcv='$d_msgrcv'
16783d_msgsnd='$d_msgsnd'
16784d_msync='$d_msync'
16785d_munmap='$d_munmap'
16786d_mymalloc='$d_mymalloc'
16787d_nice='$d_nice'
2765b840 16788d_nl_langinfo='$d_nl_langinfo'
b4eb6b3d
JH
16789d_nv_preserves_uv='$d_nv_preserves_uv'
16790d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16791d_off64_t='$d_off64_t'
16792d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16793d_oldpthreads='$d_oldpthreads'
16794d_oldsock='$d_oldsock'
16795d_open3='$d_open3'
16796d_pathconf='$d_pathconf'
16797d_pause='$d_pause'
16798d_perl_otherlibdirs='$d_perl_otherlibdirs'
16799d_phostname='$d_phostname'
16800d_pipe='$d_pipe'
16801d_poll='$d_poll'
5f80c64f 16802d_portable='$d_portable'
b4eb6b3d
JH
16803d_pthread_yield='$d_pthread_yield'
16804d_pwage='$d_pwage'
16805d_pwchange='$d_pwchange'
16806d_pwclass='$d_pwclass'
16807d_pwcomment='$d_pwcomment'
16808d_pwexpire='$d_pwexpire'
16809d_pwgecos='$d_pwgecos'
16810d_pwpasswd='$d_pwpasswd'
16811d_pwquota='$d_pwquota'
16812d_qgcvt='$d_qgcvt'
16813d_quad='$d_quad'
16814d_readdir='$d_readdir'
16815d_readlink='$d_readlink'
4e0554ec
JH
16816d_readv='$d_readv'
16817d_recvmsg='$d_recvmsg'
b4eb6b3d
JH
16818d_rename='$d_rename'
16819d_rewinddir='$d_rewinddir'
16820d_rmdir='$d_rmdir'
16821d_safebcpy='$d_safebcpy'
16822d_safemcpy='$d_safemcpy'
16823d_sanemcmp='$d_sanemcmp'
ef9f17be 16824d_sbrkproto='$d_sbrkproto'
b4eb6b3d
JH
16825d_sched_yield='$d_sched_yield'
16826d_scm_rights='$d_scm_rights'
16827d_seekdir='$d_seekdir'
16828d_select='$d_select'
16829d_sem='$d_sem'
16830d_semctl='$d_semctl'
16831d_semctl_semid_ds='$d_semctl_semid_ds'
16832d_semctl_semun='$d_semctl_semun'
16833d_semget='$d_semget'
16834d_semop='$d_semop'
4e0554ec 16835d_sendmsg='$d_sendmsg'
b4eb6b3d
JH
16836d_setegid='$d_setegid'
16837d_seteuid='$d_seteuid'
16838d_setgrent='$d_setgrent'
16839d_setgrps='$d_setgrps'
16840d_sethent='$d_sethent'
4e0554ec 16841d_setitimer='$d_setitimer'
b4eb6b3d
JH
16842d_setlinebuf='$d_setlinebuf'
16843d_setlocale='$d_setlocale'
16844d_setnent='$d_setnent'
16845d_setpent='$d_setpent'
16846d_setpgid='$d_setpgid'
16847d_setpgrp2='$d_setpgrp2'
16848d_setpgrp='$d_setpgrp'
16849d_setprior='$d_setprior'
16850d_setproctitle='$d_setproctitle'
16851d_setpwent='$d_setpwent'
16852d_setregid='$d_setregid'
16853d_setresgid='$d_setresgid'
16854d_setresuid='$d_setresuid'
16855d_setreuid='$d_setreuid'
16856d_setrgid='$d_setrgid'
16857d_setruid='$d_setruid'
16858d_setsent='$d_setsent'
16859d_setsid='$d_setsid'
16860d_setvbuf='$d_setvbuf'
16861d_sfio='$d_sfio'
16862d_shm='$d_shm'
16863d_shmat='$d_shmat'
16864d_shmatprototype='$d_shmatprototype'
16865d_shmctl='$d_shmctl'
16866d_shmdt='$d_shmdt'
16867d_shmget='$d_shmget'
16868d_sigaction='$d_sigaction'
983dbef6 16869d_sigprocmask='$d_sigprocmask'
b4eb6b3d 16870d_sigsetjmp='$d_sigsetjmp'
49a78c82 16871d_sockatmark='$d_sockatmark'
2ef53570 16872d_sockatmarkproto='$d_sockatmarkproto'
b4eb6b3d
JH
16873d_socket='$d_socket'
16874d_socklen_t='$d_socklen_t'
16875d_sockpair='$d_sockpair'
16876d_socks5_init='$d_socks5_init'
16877d_sqrtl='$d_sqrtl'
eef837ea 16878d_sresgproto='$d_sresgproto'
640374d0 16879d_sresuproto='$d_sresuproto'
b4eb6b3d
JH
16880d_statblks='$d_statblks'
16881d_statfs_f_flags='$d_statfs_f_flags'
16882d_statfs_s='$d_statfs_s'
16883d_statvfs='$d_statvfs'
16884d_stdio_cnt_lval='$d_stdio_cnt_lval'
16885d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
16886d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16887d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
16888d_stdio_stream_array='$d_stdio_stream_array'
16889d_stdiobase='$d_stdiobase'
16890d_stdstdio='$d_stdstdio'
16891d_strchr='$d_strchr'
16892d_strcoll='$d_strcoll'
16893d_strctcpy='$d_strctcpy'
16894d_strerrm='$d_strerrm'
16895d_strerror='$d_strerror'
b3c85772 16896d_strftime='$d_strftime'
b4eb6b3d
JH
16897d_strtod='$d_strtod'
16898d_strtol='$d_strtol'
16899d_strtold='$d_strtold'
16900d_strtoll='$d_strtoll'
28e5dec8 16901d_strtoq='$d_strtoq'
b4eb6b3d
JH
16902d_strtoul='$d_strtoul'
16903d_strtoull='$d_strtoull'
16904d_strtouq='$d_strtouq'
16905d_strxfrm='$d_strxfrm'
16906d_suidsafe='$d_suidsafe'
16907d_symlink='$d_symlink'
16908d_syscall='$d_syscall'
2ef53570 16909d_syscallproto='$d_syscallproto'
b4eb6b3d
JH
16910d_sysconf='$d_sysconf'
16911d_sysernlst='$d_sysernlst'
16912d_syserrlst='$d_syserrlst'
16913d_system='$d_system'
16914d_tcgetpgrp='$d_tcgetpgrp'
16915d_tcsetpgrp='$d_tcsetpgrp'
16916d_telldir='$d_telldir'
16917d_telldirproto='$d_telldirproto'
16918d_time='$d_time'
16919d_times='$d_times'
16920d_truncate='$d_truncate'
16921d_tzname='$d_tzname'
4e0554ec
JH
16922d_u32align='$d_u32align'
16923d_ualarm='$d_ualarm'
b4eb6b3d
JH
16924d_umask='$d_umask'
16925d_uname='$d_uname'
16926d_union_semun='$d_union_semun'
4e0554ec 16927d_usleep='$d_usleep'
2ef53570 16928d_usleepproto='$d_usleepproto'
b4eb6b3d
JH
16929d_ustat='$d_ustat'
16930d_vendorarch='$d_vendorarch'
16931d_vendorbin='$d_vendorbin'
16932d_vendorlib='$d_vendorlib'
16933d_vfork='$d_vfork'
16934d_void_closedir='$d_void_closedir'
16935d_voidsig='$d_voidsig'
16936d_voidtty='$d_voidtty'
16937d_volatile='$d_volatile'
16938d_vprintf='$d_vprintf'
16939d_wait4='$d_wait4'
16940d_waitpid='$d_waitpid'
16941d_wcstombs='$d_wcstombs'
16942d_wctomb='$d_wctomb'
4e0554ec 16943d_writev='$d_writev'
5f80c64f
JH
16944d_xenix='$d_xenix'
16945date='$date'
b4eb6b3d
JH
16946db_hashtype='$db_hashtype'
16947db_prefixtype='$db_prefixtype'
640374d0
JH
16948db_version_major='$db_version_major'
16949db_version_minor='$db_version_minor'
16950db_version_patch='$db_version_patch'
b4eb6b3d
JH
16951defvoidused='$defvoidused'
16952direntrytype='$direntrytype'
16953dlext='$dlext'
5f80c64f 16954dlsrc='$dlsrc'
b4eb6b3d
JH
16955doublesize='$doublesize'
16956drand01='$drand01'
16957dynamic_ext='$dynamic_ext'
16958eagain='$eagain'
16959ebcdic='$ebcdic'
5f80c64f
JH
16960echo='$echo'
16961egrep='$egrep'
16962emacs='$emacs'
16963eunicefix='$eunicefix'
16964exe_ext='$exe_ext'
16965expr='$expr'
b4eb6b3d
JH
16966extensions='$extensions'
16967fflushNULL='$fflushNULL'
16968fflushall='$fflushall'
5f80c64f
JH
16969find='$find'
16970firstmakefile='$firstmakefile'
16971flex='$flex'
b4eb6b3d
JH
16972fpossize='$fpossize'
16973fpostype='$fpostype'
16974freetype='$freetype'
5440bc8e 16975from='$from'
b4eb6b3d
JH
16976full_ar='$full_ar'
16977full_csh='$full_csh'
16978full_sed='$full_sed'
5b463ca7 16979gccosandvers='$gccosandvers'
5f80c64f 16980gccversion='$gccversion'
b4eb6b3d
JH
16981gidformat='$gidformat'
16982gidsign='$gidsign'
16983gidsize='$gidsize'
16984gidtype='$gidtype'
5f80c64f
JH
16985glibpth='$glibpth'
16986grep='$grep'
b4eb6b3d
JH
16987groupcat='$groupcat'
16988groupstype='$groupstype'
5f80c64f 16989gzip='$gzip'
b4eb6b3d
JH
16990h_fcntl='$h_fcntl'
16991h_sysfile='$h_sysfile'
5f80c64f 16992hint='$hint'
b4eb6b3d
JH
16993hostcat='$hostcat'
16994i16size='$i16size'
16995i16type='$i16type'
16996i32size='$i32size'
16997i32type='$i32type'
16998i64size='$i64size'
16999i64type='$i64type'
17000i8size='$i8size'
17001i8type='$i8type'
17002i_arpainet='$i_arpainet'
17003i_bsdioctl='$i_bsdioctl'
17004i_db='$i_db'
17005i_dbm='$i_dbm'
17006i_dirent='$i_dirent'
5f80c64f 17007i_dld='$i_dld'
b4eb6b3d
JH
17008i_dlfcn='$i_dlfcn'
17009i_fcntl='$i_fcntl'
17010i_float='$i_float'
17011i_gdbm='$i_gdbm'
17012i_grp='$i_grp'
17013i_iconv='$i_iconv'
17014i_ieeefp='$i_ieeefp'
17015i_inttypes='$i_inttypes'
2765b840 17016i_langinfo='$i_langinfo'
b4eb6b3d
JH
17017i_libutil='$i_libutil'
17018i_limits='$i_limits'
17019i_locale='$i_locale'
17020i_machcthr='$i_machcthr'
17021i_malloc='$i_malloc'
17022i_math='$i_math'
17023i_memory='$i_memory'
17024i_mntent='$i_mntent'
17025i_ndbm='$i_ndbm'
17026i_netdb='$i_netdb'
17027i_neterrno='$i_neterrno'
17028i_netinettcp='$i_netinettcp'
17029i_niin='$i_niin'
17030i_poll='$i_poll'
17031i_prot='$i_prot'
17032i_pthread='$i_pthread'
17033i_pwd='$i_pwd'
17034i_rpcsvcdbm='$i_rpcsvcdbm'
17035i_sfio='$i_sfio'
17036i_sgtty='$i_sgtty'
17037i_shadow='$i_shadow'
17038i_socks='$i_socks'
17039i_stdarg='$i_stdarg'
17040i_stddef='$i_stddef'
17041i_stdlib='$i_stdlib'
17042i_string='$i_string'
17043i_sunmath='$i_sunmath'
17044i_sysaccess='$i_sysaccess'
17045i_sysdir='$i_sysdir'
17046i_sysfile='$i_sysfile'
17047i_sysfilio='$i_sysfilio'
17048i_sysin='$i_sysin'
17049i_sysioctl='$i_sysioctl'
17050i_syslog='$i_syslog'
17051i_sysmman='$i_sysmman'
17052i_sysmode='$i_sysmode'
17053i_sysmount='$i_sysmount'
17054i_sysndir='$i_sysndir'
17055i_sysparam='$i_sysparam'
17056i_sysresrc='$i_sysresrc'
17057i_syssecrt='$i_syssecrt'
17058i_sysselct='$i_sysselct'
17059i_syssockio='$i_syssockio'
17060i_sysstat='$i_sysstat'
17061i_sysstatfs='$i_sysstatfs'
17062i_sysstatvfs='$i_sysstatvfs'
17063i_systime='$i_systime'
17064i_systimek='$i_systimek'
17065i_systimes='$i_systimes'
17066i_systypes='$i_systypes'
17067i_sysuio='$i_sysuio'
17068i_sysun='$i_sysun'
17069i_sysutsname='$i_sysutsname'
17070i_sysvfs='$i_sysvfs'
17071i_syswait='$i_syswait'
17072i_termio='$i_termio'
17073i_termios='$i_termios'
17074i_time='$i_time'
17075i_unistd='$i_unistd'
17076i_ustat='$i_ustat'
17077i_utime='$i_utime'
17078i_values='$i_values'
17079i_varargs='$i_varargs'
17080i_varhdr='$i_varhdr'
17081i_vfork='$i_vfork'
5f80c64f 17082ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
17083inc_version_list='$inc_version_list'
17084inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
17085incpath='$incpath'
17086inews='$inews'
b4eb6b3d
JH
17087installarchlib='$installarchlib'
17088installbin='$installbin'
17089installman1dir='$installman1dir'
17090installman3dir='$installman3dir'
17091installprefix='$installprefix'
17092installprefixexp='$installprefixexp'
17093installprivlib='$installprivlib'
17094installscript='$installscript'
17095installsitearch='$installsitearch'
17096installsitebin='$installsitebin'
17097installsitelib='$installsitelib'
17098installstyle='$installstyle'
17099installusrbinperl='$installusrbinperl'
17100installvendorarch='$installvendorarch'
17101installvendorbin='$installvendorbin'
17102installvendorlib='$installvendorlib'
17103intsize='$intsize'
4b661809 17104issymlink='$issymlink'
b4eb6b3d
JH
17105ivdformat='$ivdformat'
17106ivsize='$ivsize'
17107ivtype='$ivtype'
17108known_extensions='$known_extensions'
5f80c64f 17109ksh='$ksh'
5f80c64f
JH
17110ld='$ld'
17111lddlflags='$lddlflags'
17112ldflags='$ldflags'
b4eb6b3d
JH
17113ldflags_uselargefiles='$ldflags_uselargefiles'
17114ldlibpthname='$ldlibpthname'
5f80c64f
JH
17115less='$less'
17116lib_ext='$lib_ext'
17117libc='$libc'
b4eb6b3d 17118libperl='$libperl'
5f80c64f
JH
17119libpth='$libpth'
17120libs='$libs'
43999f95
JH
17121libsdirs='$libsdirs'
17122libsfiles='$libsfiles'
17123libsfound='$libsfound'
13b3f787 17124libspath='$libspath'
5f80c64f 17125libswanted='$libswanted'
b4eb6b3d 17126libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
17127line='$line'
17128lint='$lint'
17129lkflags='$lkflags'
17130ln='$ln'
17131lns='$lns'
17132locincpth='$locincpth'
17133loclibpth='$loclibpth'
b4eb6b3d
JH
17134longdblsize='$longdblsize'
17135longlongsize='$longlongsize'
17136longsize='$longsize'
5f80c64f
JH
17137lp='$lp'
17138lpr='$lpr'
17139ls='$ls'
b4eb6b3d
JH
17140lseeksize='$lseeksize'
17141lseektype='$lseektype'
5f80c64f
JH
17142mail='$mail'
17143mailx='$mailx'
17144make='$make'
17145make_set_make='$make_set_make'
b4eb6b3d
JH
17146mallocobj='$mallocobj'
17147mallocsrc='$mallocsrc'
17148malloctype='$malloctype'
17149man1dir='$man1dir'
17150man1direxp='$man1direxp'
17151man1ext='$man1ext'
17152man3dir='$man3dir'
17153man3direxp='$man3direxp'
17154man3ext='$man3ext'
5f80c64f
JH
17155mips_type='$mips_type'
17156mkdir='$mkdir'
b4eb6b3d
JH
17157mmaptype='$mmaptype'
17158modetype='$modetype'
5f80c64f 17159more='$more'
b4eb6b3d 17160multiarch='$multiarch'
5f80c64f 17161mv='$mv'
b4eb6b3d
JH
17162myarchname='$myarchname'
17163mydomain='$mydomain'
17164myhostname='$myhostname'
5f80c64f
JH
17165myuname='$myuname'
17166n='$n'
2cc61e15 17167need_va_copy='$need_va_copy'
b4eb6b3d
JH
17168netdb_hlen_type='$netdb_hlen_type'
17169netdb_host_type='$netdb_host_type'
17170netdb_name_type='$netdb_name_type'
17171netdb_net_type='$netdb_net_type'
5f80c64f
JH
17172nm='$nm'
17173nm_opt='$nm_opt'
17174nm_so_opt='$nm_so_opt'
b4eb6b3d 17175nonxs_ext='$nonxs_ext'
5f80c64f 17176nroff='$nroff'
b4eb6b3d
JH
17177nvEUformat='$nvEUformat'
17178nvFUformat='$nvFUformat'
17179nvGUformat='$nvGUformat'
17180nveformat='$nveformat'
17181nvfformat='$nvfformat'
17182nvgformat='$nvgformat'
17183nvsize='$nvsize'
17184nvtype='$nvtype'
17185o_nonblock='$o_nonblock'
5f80c64f 17186obj_ext='$obj_ext'
b4eb6b3d 17187old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 17188optimize='$optimize'
b4eb6b3d 17189orderlib='$orderlib'
5f80c64f
JH
17190osname='$osname'
17191osvers='$osvers'
b4eb6b3d 17192otherlibdirs='$otherlibdirs'
5f80c64f 17193package='$package'
b4eb6b3d
JH
17194pager='$pager'
17195passcat='$passcat'
17196patchlevel='$patchlevel'
5f80c64f 17197path_sep='$path_sep'
b4eb6b3d 17198perl5='$perl5'
5f80c64f 17199perl='$perl'
151e6568 17200perl_patchlevel='$perl_patchlevel'
b4eb6b3d 17201perladmin='$perladmin'
9c839522 17202perllibs='$perllibs'
b4eb6b3d 17203perlpath='$perlpath'
5f80c64f 17204pg='$pg'
b4eb6b3d
JH
17205phostname='$phostname'
17206pidtype='$pidtype'
5f80c64f 17207plibpth='$plibpth'
b4eb6b3d 17208pm_apiversion='$pm_apiversion'
5f80c64f
JH
17209pmake='$pmake'
17210pr='$pr'
b4eb6b3d
JH
17211prefix='$prefix'
17212prefixexp='$prefixexp'
17213privlib='$privlib'
17214privlibexp='$privlibexp'
17215prototype='$prototype'
17216ptrsize='$ptrsize'
17217quadkind='$quadkind'
17218quadtype='$quadtype'
17219randbits='$randbits'
17220randfunc='$randfunc'
17221randseedtype='$randseedtype'
17222ranlib='$ranlib'
17223rd_nodata='$rd_nodata'
17224revision='$revision'
5f80c64f
JH
17225rm='$rm'
17226rmail='$rmail'
5440bc8e 17227run='$run'
5f80c64f 17228runnm='$runnm'
b4eb6b3d
JH
17229sPRIEUldbl='$sPRIEUldbl'
17230sPRIFUldbl='$sPRIFUldbl'
17231sPRIGUldbl='$sPRIGUldbl'
17232sPRIXU64='$sPRIXU64'
17233sPRId64='$sPRId64'
17234sPRIeldbl='$sPRIeldbl'
17235sPRIfldbl='$sPRIfldbl'
17236sPRIgldbl='$sPRIgldbl'
17237sPRIi64='$sPRIi64'
17238sPRIo64='$sPRIo64'
17239sPRIu64='$sPRIu64'
17240sPRIx64='$sPRIx64'
17241sSCNfldbl='$sSCNfldbl'
17242sched_yield='$sched_yield'
17243scriptdir='$scriptdir'
17244scriptdirexp='$scriptdirexp'
5f80c64f 17245sed='$sed'
b4eb6b3d
JH
17246seedfunc='$seedfunc'
17247selectminbits='$selectminbits'
17248selecttype='$selecttype'
5f80c64f
JH
17249sendmail='$sendmail'
17250sh='$sh'
17251shar='$shar'
17252sharpbang='$sharpbang'
b4eb6b3d
JH
17253shmattype='$shmattype'
17254shortsize='$shortsize'
17255shrpenv='$shrpenv'
5f80c64f 17256shsharp='$shsharp'
b4eb6b3d
JH
17257sig_count='$sig_count'
17258sig_name='$sig_name'
17259sig_name_init='$sig_name_init'
17260sig_num='$sig_num'
17261sig_num_init='$sig_num_init'
76d3c696 17262sig_size='$sig_size'
b4eb6b3d
JH
17263signal_t='$signal_t'
17264sitearch='$sitearch'
17265sitearchexp='$sitearchexp'
17266sitebin='$sitebin'
17267sitebinexp='$sitebinexp'
17268sitelib='$sitelib'
17269sitelib_stem='$sitelib_stem'
17270sitelibexp='$sitelibexp'
17271siteprefix='$siteprefix'
17272siteprefixexp='$siteprefixexp'
17273sizesize='$sizesize'
17274sizetype='$sizetype'
5f80c64f
JH
17275sleep='$sleep'
17276smail='$smail'
5f80c64f 17277so='$so'
b4eb6b3d
JH
17278sockethdr='$sockethdr'
17279socketlib='$socketlib'
17280socksizetype='$socksizetype'
5f80c64f
JH
17281sort='$sort'
17282spackage='$spackage'
17283spitshell='$spitshell'
5f80c64f 17284src='$src'
b4eb6b3d
JH
17285ssizetype='$ssizetype'
17286startperl='$startperl'
5f80c64f 17287startsh='$startsh'
b4eb6b3d
JH
17288static_ext='$static_ext'
17289stdchar='$stdchar'
17290stdio_base='$stdio_base'
17291stdio_bufsiz='$stdio_bufsiz'
17292stdio_cnt='$stdio_cnt'
17293stdio_filbuf='$stdio_filbuf'
17294stdio_ptr='$stdio_ptr'
17295stdio_stream_array='$stdio_stream_array'
17296strings='$strings'
5f80c64f 17297submit='$submit'
b4eb6b3d
JH
17298subversion='$subversion'
17299sysman='$sysman'
5f80c64f
JH
17300tail='$tail'
17301tar='$tar'
5440bc8e 17302targetarch='$targetarch'
5f80c64f
JH
17303tbl='$tbl'
17304tee='$tee'
17305test='$test'
b4eb6b3d
JH
17306timeincl='$timeincl'
17307timetype='$timetype'
5440bc8e 17308to='$to'
5f80c64f
JH
17309touch='$touch'
17310tr='$tr'
17311trnl='$trnl'
17312troff='$troff'
b4eb6b3d
JH
17313u16size='$u16size'
17314u16type='$u16type'
17315u32size='$u32size'
17316u32type='$u32type'
17317u64size='$u64size'
17318u64type='$u64type'
17319u8size='$u8size'
17320u8type='$u8type'
17321uidformat='$uidformat'
17322uidsign='$uidsign'
17323uidsize='$uidsize'
17324uidtype='$uidtype'
5f80c64f
JH
17325uname='$uname'
17326uniq='$uniq'
b4eb6b3d
JH
17327uquadtype='$uquadtype'
17328use5005threads='$use5005threads'
17329use64bitall='$use64bitall'
17330use64bitint='$use64bitint'
5440bc8e 17331usecrosscompile='$usecrosscompile'
5f80c64f 17332usedl='$usedl'
b4eb6b3d
JH
17333useithreads='$useithreads'
17334uselargefiles='$uselargefiles'
17335uselongdouble='$uselongdouble'
17336usemorebits='$usemorebits'
17337usemultiplicity='$usemultiplicity'
17338usemymalloc='$usemymalloc'
5f80c64f 17339usenm='$usenm'
b4eb6b3d
JH
17340useopcode='$useopcode'
17341useperlio='$useperlio'
17342useposix='$useposix'
9514c62b 17343usereentrant='$usereentrant'
b4eb6b3d
JH
17344usesfio='$usesfio'
17345useshrplib='$useshrplib'
29209bc5 17346usesocks='$usesocks'
b4eb6b3d
JH
17347usethreads='$usethreads'
17348usevendorprefix='$usevendorprefix'
17349usevfork='$usevfork'
5f80c64f
JH
17350usrinc='$usrinc'
17351uuname='$uuname'
b4eb6b3d
JH
17352uvXUformat='$uvXUformat'
17353uvoformat='$uvoformat'
17354uvsize='$uvsize'
17355uvtype='$uvtype'
17356uvuformat='$uvuformat'
17357uvxformat='$uvxformat'
17358vendorarch='$vendorarch'
17359vendorarchexp='$vendorarchexp'
17360vendorbin='$vendorbin'
17361vendorbinexp='$vendorbinexp'
17362vendorlib='$vendorlib'
17363vendorlib_stem='$vendorlib_stem'
17364vendorlibexp='$vendorlibexp'
17365vendorprefix='$vendorprefix'
17366vendorprefixexp='$vendorprefixexp'
17367version='$version'
d56c5707 17368versiononly='$versiononly'
5f80c64f 17369vi='$vi'
b4eb6b3d 17370voidflags='$voidflags'
5f80c64f 17371xlibpth='$xlibpth'
b4eb6b3d 17372xs_apiversion='$xs_apiversion'
3659ebf1
JH
17373yacc='$yacc'
17374yaccflags='$yaccflags'
5f80c64f
JH
17375zcat='$zcat'
17376zip='$zip'
17377EOT
17378
17379: Add in command line options if available
17380$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17381
17382: add special variables
17383$test -f $src/patchlevel.h && \
d00b958f 17384awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
151e6568 17385echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
a02608de 17386echo "PERL_CONFIG_SH=true" >>config.sh
5f80c64f
JH
17387
17388: propagate old symbols
17389if $test -f UU/config.sh; then
381aa1ff 17390 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 17391 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
aef7654c 17392 $sort | $uniq -u >UU/oldsyms
5f80c64f
JH
17393 set X `cat UU/oldsyms`
17394 shift
17395 case $# in
17396 0) ;;
17397 *)
17398 cat <<EOM
17399Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17400EOM
17401 echo "# Variables propagated from previous config.sh file." >>config.sh
17402 for sym in `cat UU/oldsyms`; do
17403 echo " Propagating $hint variable "'$'"$sym..."
17404 eval 'tmp="$'"${sym}"'"'
17405 echo "$tmp" | \
17406 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17407 done
17408 ;;
17409 esac
17410fi
17411
17412: Finish up by extracting the .SH files
17413case "$alldone" in
17414exit)
17415 $rm -rf UU
24ccb310 17416 echo "Extraction done."
5f80c64f
JH
17417 exit 0
17418 ;;
17419cont)
17420 ;;
17421'')
17422 dflt=''
17423 nostick=true
17424 $cat <<EOM
17425
17426If you'd like to make any changes to the config.sh file before I begin
17427to configure things, do it as a shell escape now (e.g. !vi config.sh).
17428
17429EOM
17430 rp="Press return or use a shell escape to edit config.sh:"
17431 . UU/myread
17432 nostick=''
17433 case "$ans" in
17434 '') ;;
17435 *) : in case they cannot read
17436 sh 1>&4 -c "$ans";;
17437 esac
17438 ;;
17439esac
17440
17441: if this fails, just run all the .SH files by hand
17442. ./config.sh
17443
17444echo " "
17445exec 1>&4
a43e8593 17446pwd=`pwd`
5f80c64f 17447. ./UU/extract
a43e8593 17448cd $pwd
5f80c64f
JH
17449
17450if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17451 dflt=y
17452 case "$silent" in
17453 true) ;;
17454 *)
17455 $cat <<EOM
17456
17457Now you need to generate make dependencies by running "$make depend".
17458You might prefer to run it in background: "$make depend > makedepend.out &"
17459It can take a while, so you might not want to run it right now.
17460
17461EOM
17462 ;;
17463 esac
17464 rp="Run $make depend now?"
17465 . UU/myread
17466 case "$ans" in
17467 y*)
3d5d58b1 17468 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
17469 ;;
17470 *)
17471 echo "You must run '$make depend' then '$make'."
17472 ;;
17473 esac
17474elif test -f [Mm]akefile; then
17475 echo " "
17476 echo "Now you must run a $make."
17477else
24ccb310 17478 echo "Configure done."
5f80c64f
JH
17479fi
17480
17481if $test -f Policy.sh; then
17482 $cat <<EOM
17483
17484If you compile $package on a different machine or from a different object
17485directory, copy the Policy.sh file from this object directory to the
17486new one before you run Configure -- this will help you with most of
17487the policy defaults.
17488
17489EOM
17490fi
17491if $test -f config.msg; then
17492 echo "Hmm. I also noted the following information while running:"
17493 echo " "
17494 $cat config.msg >&4
17495 $rm -f config.msg
17496fi
17497$rm -f kit*isdone ark*isdone
17498$rm -rf UU
17499
17500: End of Configure
17501