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