This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Retract #7459, the script needs more work.
[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#
381aa1ff 23# Generated on Fri Oct 27 18:18:06 EET DST 2000 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62
AD
25
26cat >/tmp/c1$$ <<EOF
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
37cat >/tmp/c2$$ <<EOF
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
43true || cat /tmp/c1$$ /tmp/c2$$
44true || exec sh $0 $argv:q
45
46(exit $?0) || cat /tmp/c2$$
47(exit $?0) || exec sh $0 $argv:q
48rm -f /tmp/c1$$ /tmp/c2$$
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=''
9c839522 168perllibs=''
b4eb6b3d
JH
169dynamic_ext=''
170extensions=''
171known_extensions=''
172nonxs_ext=''
173static_ext=''
174useopcode=''
175useposix=''
ecfc5424 176d_bsd=''
40a7a20a 177d_eunice=''
2304df62
AD
178d_xenix=''
179eunicefix=''
180Mcc=''
dfe9444c 181ar=''
2304df62
AD
182awk=''
183bash=''
184bison=''
185byacc=''
186cat=''
187chgrp=''
188chmod=''
189chown=''
ecfc5424 190comm=''
2304df62
AD
191compress=''
192cp=''
193cpio=''
194cpp=''
195csh=''
196date=''
197echo=''
198egrep=''
199emacs=''
200expr=''
201find=''
202flex=''
2304df62 203grep=''
8ff267be 204gzip=''
2304df62
AD
205inews=''
206ksh=''
207less=''
208line=''
209lint=''
210ln=''
211lp=''
212lpr=''
213ls=''
214mail=''
215mailx=''
dfe9444c 216make=''
2304df62
AD
217mkdir=''
218more=''
219mv=''
693762b4 220nm=''
2304df62
AD
221nroff=''
222perl=''
223pg=''
224pmake=''
225pr=''
226rm=''
227rmail=''
228sed=''
229sendmail=''
2304df62
AD
230shar=''
231sleep=''
232smail=''
233sort=''
234submit=''
235tail=''
236tar=''
237tbl=''
693762b4 238tee=''
2304df62
AD
239test=''
240touch=''
241tr=''
242troff=''
243uname=''
244uniq=''
245uuname=''
246vi=''
247zcat=''
8ff267be 248zip=''
b4eb6b3d
JH
249full_ar=''
250full_sed=''
a0d0e21e 251libswanted=''
2304df62
AD
252hint=''
253myuname=''
85e6fe83
LW
254osname=''
255osvers=''
2304df62
AD
256Author=''
257Date=''
258Header=''
259Id=''
260Locker=''
261Log=''
262RCSfile=''
263Revision=''
264Source=''
265State=''
dfe9444c
AD
266_a=''
267_exe=''
268_o=''
4633a7c4
LW
269archobjs=''
270exe_ext=''
271firstmakefile=''
272lib_ext=''
273obj_ext=''
274path_sep=''
b4eb6b3d
JH
275afs=''
276alignbytes=''
277ansi2knr=''
278archlib=''
279archlibexp=''
280d_archlib=''
281installarchlib=''
282archname=''
283myarchname=''
284d_atolf=''
285d_atoll=''
286baserev=''
287bin=''
288binexp=''
289installbin=''
290bincompat5005=''
291d_bincompat5005=''
292byteorder=''
2304df62 293cc=''
2304df62
AD
294ccflags=''
295cppflags=''
296ldflags=''
297lkflags=''
8e07c86e 298locincpth=''
2304df62 299optimize=''
b4eb6b3d 300cf_email=''
2304df62
AD
301cf_by=''
302cf_time=''
b4eb6b3d 303charsize=''
2304df62 304contains=''
b4eb6b3d 305cpp_stuff=''
2304df62
AD
306cpplast=''
307cppminus=''
308cpprun=''
309cppstdin=''
b4eb6b3d
JH
310crosscompile=''
311d_access=''
312d_accessx=''
313d_alarm=''
314d_attribut=''
315d_bcmp=''
316d_bcopy=''
317d_bzero=''
318d_casti32=''
319castflags=''
320d_castneg=''
321d_chown=''
322d_chroot=''
323d_chsize=''
324d_closedir=''
325d_void_closedir=''
326d_const=''
327cryptlib=''
328d_crypt=''
329d_csh=''
330full_csh=''
331d_cuserid=''
332d_dbl_dig=''
333d_difftime=''
334d_dlerror=''
a0d0e21e 335d_dlopen=''
b4eb6b3d
JH
336d_dlsymun=''
337d_dosuid=''
338d_suidsafe=''
339d_drand48proto=''
340d_dup2=''
341d_eaccess=''
342d_endgrent=''
343d_endhent=''
344d_endnent=''
345d_endpent=''
346d_endpwent=''
347d_endsent=''
348d_fchmod=''
349d_fchown=''
350d_fcntl=''
351d_fd_macros=''
352d_fd_set=''
353d_fds_bits=''
354d_fgetpos=''
355d_flexfnam=''
356d_flock=''
357d_fork=''
358d_fpos64_t=''
359d_frexpl=''
360d_fs_data_s=''
361d_fseeko=''
362d_fsetpos=''
363d_fstatfs=''
364d_ftello=''
365d_ftime=''
366d_gettimeod=''
367d_Gconvert=''
368d_getcwd=''
369d_getespwnam=''
370d_getfsstat=''
371d_getgrent=''
372d_getgrps=''
373d_gethbyaddr=''
374d_gethbyname=''
375d_gethent=''
376aphostname=''
377d_gethname=''
378d_phostname=''
379d_uname=''
380d_gethostprotos=''
381d_getlogin=''
382d_getmnt=''
383d_getmntent=''
384d_getnbyaddr=''
385d_getnbyname=''
386d_getnent=''
387d_getnetprotos=''
388d_getpent=''
389d_getpgid=''
390d_getpgrp2=''
391d_bsdgetpgrp=''
392d_getpgrp=''
393d_getppid=''
394d_getprior=''
395d_getpbyname=''
396d_getpbynumber=''
397d_getprotoprotos=''
398d_getprpwnam=''
399d_getpwent=''
400d_getsent=''
401d_getservprotos=''
402d_getspnam=''
403d_getsbyname=''
404d_getsbyport=''
a4f3eea9 405d_gnulibc=''
b4eb6b3d
JH
406d_hasmntopt=''
407d_htonl=''
408d_iconv=''
409d_inetaton=''
410d_int64_t=''
411d_isascii=''
412d_isnan=''
413d_isnanl=''
414d_killpg=''
415d_lchown=''
416d_ldbl_dig=''
417d_link=''
418d_locconv=''
419d_lockf=''
420d_longdbl=''
421longdblsize=''
422d_longlong=''
423longlongsize=''
424d_lseekproto=''
425d_lstat=''
426d_madvise=''
427d_mblen=''
428d_mbstowcs=''
429d_mbtowc=''
430d_memchr=''
431d_memcmp=''
432d_memcpy=''
433d_memmove=''
434d_memset=''
435d_mkdir=''
436d_mkdtemp=''
437d_mkfifo=''
438d_mkstemp=''
439d_mkstemps=''
440d_mktime=''
441d_mmap=''
442mmaptype=''
443d_modfl=''
444d_mprotect=''
445d_msg=''
446d_msgctl=''
447d_msgget=''
448d_msgrcv=''
449d_msgsnd=''
450d_msync=''
451d_munmap=''
452d_nice=''
453d_off64_t=''
454d_open3=''
455d_fpathconf=''
456d_pathconf=''
457d_pause=''
458d_pipe=''
459d_poll=''
2304df62 460d_portable=''
b4eb6b3d
JH
461d_old_pthread_create_joinable=''
462old_pthread_create_joinable=''
463d_pthread_yield=''
464d_sched_yield=''
465sched_yield=''
466d_qgcvt=''
467d_readdir=''
468d_rewinddir=''
469d_seekdir=''
470d_telldir=''
471d_readlink=''
472d_rename=''
473d_rmdir=''
474d_safebcpy=''
475d_safemcpy=''
476d_sanemcmp=''
477d_select=''
478d_sem=''
479d_semctl=''
480d_semget=''
481d_semop=''
482d_setegid=''
483d_seteuid=''
484d_setgrent=''
485d_setgrps=''
486d_sethent=''
487d_setlinebuf=''
488d_setlocale=''
489d_setnent=''
490d_setpent=''
491d_setpgid=''
492d_setpgrp2=''
493d_bsdsetpgrp=''
494d_setpgrp=''
495d_setprior=''
496d_setproctitle=''
497d_setpwent=''
498d_setregid=''
499d_setresgid=''
500d_setresuid=''
501d_setreuid=''
502d_setrgid=''
503d_setruid=''
504d_setsent=''
505d_setsid=''
506d_setvbuf=''
507d_sfio=''
508usesfio=''
509d_shm=''
510d_shmat=''
511d_shmatprototype=''
512shmattype=''
513d_shmctl=''
514d_shmdt=''
515d_shmget=''
516d_sigaction=''
517d_sigsetjmp=''
518d_msg_ctrunc=''
519d_msg_dontroute=''
520d_msg_oob=''
521d_msg_peek=''
522d_msg_proxy=''
523d_oldsock=''
524d_scm_rights=''
525d_socket=''
526d_sockpair=''
527sockethdr=''
528socketlib=''
529d_socklen_t=''
530d_socks5_init=''
531d_sqrtl=''
532d_statblks=''
533d_statfs_f_flags=''
534d_statfs_s=''
535d_fstatvfs=''
536d_statvfs=''
537d_stdio_cnt_lval=''
538d_stdio_ptr_lval=''
a7ffa9b9
NC
539d_stdio_ptr_lval_nochange_cnt=''
540d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
541d_stdiobase=''
542d_stdstdio=''
543stdio_base=''
544stdio_bufsiz=''
545stdio_cnt=''
546stdio_filbuf=''
547stdio_ptr=''
548d_index=''
549d_strchr=''
550d_strcoll=''
551d_strctcpy=''
552d_strerrm=''
553d_strerror=''
554d_sysernlst=''
555d_syserrlst=''
556d_strtod=''
557d_strtol=''
558d_strtold=''
559d_strtoll=''
560d_strtoul=''
561d_strtoull=''
562d_strtouq=''
563d_strxfrm=''
564d_symlink=''
565d_syscall=''
566d_sysconf=''
567d_system=''
568d_tcgetpgrp=''
569d_tcsetpgrp=''
570d_telldirproto=''
571d_time=''
572timetype=''
573clocktype=''
574d_times=''
575d_truncate=''
576d_tzname=''
577d_umask=''
578d_semctl_semid_ds=''
579d_semctl_semun=''
580d_union_semun=''
581d_ustat=''
582d_vfork=''
583usevfork=''
584d_voidsig=''
585signal_t=''
586d_volatile=''
587d_charvspr=''
588d_vprintf=''
589d_wait4=''
590d_waitpid=''
591d_wcstombs=''
592d_wctomb=''
593dlext=''
85e6fe83
LW
594cccdlflags=''
595ccdlflags=''
2304df62 596dlsrc=''
232e078e 597ld=''
85e6fe83 598lddlflags=''
2304df62 599usedl=''
b4eb6b3d
JH
600doublesize=''
601ebcdic=''
602fflushNULL=''
603fflushall=''
604fpossize=''
605fpostype=''
5b463ca7 606gccosandvers=''
8a27cf78 607gccversion=''
b4eb6b3d
JH
608gidformat=''
609gidsign=''
610gidsize=''
611gidtype=''
612groupstype=''
613h_fcntl=''
614h_sysfile=''
615i_arpainet=''
616db_hashtype=''
617db_prefixtype=''
618i_db=''
619i_dbm=''
620i_rpcsvcdbm=''
621d_dirnamlen=''
622direntrytype=''
623i_dirent=''
a0d0e21e 624i_dld=''
b4eb6b3d
JH
625i_dlfcn=''
626i_fcntl=''
627i_float=''
628i_gdbm=''
629d_grpasswd=''
630i_grp=''
631i_iconv=''
632i_ieeefp=''
633i_inttypes=''
634i_libutil=''
635i_limits=''
636i_locale=''
637i_machcthr=''
638i_malloc=''
639i_math=''
640i_memory=''
641i_mntent=''
642i_ndbm=''
643i_netdb=''
644i_neterrno=''
645i_netinettcp=''
646i_niin=''
647i_sysin=''
648i_poll=''
649i_prot=''
650i_pthread=''
651d_pwage=''
652d_pwchange=''
653d_pwclass=''
654d_pwcomment=''
655d_pwexpire=''
656d_pwgecos=''
657d_pwpasswd=''
658d_pwquota=''
659i_pwd=''
660i_sfio=''
661i_shadow=''
662i_socks=''
663i_stddef=''
664i_stdlib=''
665i_string=''
666strings=''
667i_sunmath=''
668i_sysaccess=''
669i_sysdir=''
670i_sysfile=''
671d_voidtty=''
672i_bsdioctl=''
673i_sysfilio=''
674i_sysioctl=''
675i_syssockio=''
676i_syslog=''
677i_sysmman=''
678i_sysmode=''
679i_sysmount=''
680i_sysndir=''
681i_sysparam=''
682i_sysresrc=''
683i_syssecrt=''
684i_sysselct=''
685i_sysstat=''
686i_sysstatfs=''
687i_sysstatvfs=''
688i_systimes=''
689i_systypes=''
690i_sysuio=''
691i_sysun=''
692i_sysutsname=''
693i_sysvfs=''
694i_syswait=''
695i_sgtty=''
696i_termio=''
697i_termios=''
698i_systime=''
699i_systimek=''
700i_time=''
701timeincl=''
702i_unistd=''
703i_ustat=''
704i_utime=''
705i_values=''
706i_stdarg=''
707i_varargs=''
708i_varhdr=''
709i_vfork=''
710inc_version_list=''
711inc_version_list_init=''
712installprefix=''
713installprefixexp=''
714installstyle=''
715installusrbinperl=''
716intsize=''
717longsize=''
718shortsize=''
2304df62 719libc=''
b4eb6b3d
JH
720ldlibpthname=''
721libperl=''
722shrpenv=''
723useshrplib=''
a0d0e21e 724glibpth=''
2304df62 725libpth=''
8e07c86e 726loclibpth=''
2304df62
AD
727plibpth=''
728xlibpth=''
1cfa4ec7 729ignore_versioned_solibs=''
2304df62 730libs=''
43999f95
JH
731libsdirs=''
732libsfiles=''
733libsfound=''
13b3f787 734libspath=''
85e6fe83 735lns=''
b4eb6b3d
JH
736d_PRIEUldbl=''
737d_PRIFUldbl=''
738d_PRIGUldbl=''
739d_PRIeldbl=''
740d_PRIfldbl=''
741d_PRIgldbl=''
742d_SCNfldbl=''
743sPRIEUldbl=''
744sPRIFUldbl=''
745sPRIGUldbl=''
746sPRIeldbl=''
747sPRIfldbl=''
748sPRIgldbl=''
749sSCNfldbl=''
750lseeksize=''
751lseektype=''
8ff267be 752make_set_make=''
b4eb6b3d
JH
753d_mymalloc=''
754freetype=''
755mallocobj=''
756mallocsrc=''
757malloctype=''
758usemymalloc=''
759installman1dir=''
760man1dir=''
761man1direxp=''
762man1ext=''
763installman3dir=''
764man3dir=''
765man3direxp=''
766man3ext=''
767modetype=''
768multiarch=''
769mydomain=''
770myhostname=''
771phostname=''
2304df62
AD
772c=''
773n=''
b4eb6b3d
JH
774d_eofnblk=''
775eagain=''
776o_nonblock=''
777rd_nodata=''
778netdb_hlen_type=''
779netdb_host_type=''
780netdb_name_type=''
781netdb_net_type=''
782groupcat=''
783hostcat=''
784passcat=''
785orderlib=''
786ranlib=''
787d_perl_otherlibdirs=''
788otherlibdirs=''
2304df62
AD
789package=''
790spackage=''
b4eb6b3d
JH
791pager=''
792api_revision=''
793api_subversion=''
794api_version=''
795api_versionstring=''
796patchlevel=''
797revision=''
798subversion=''
799version=''
800perl5=''
801perladmin=''
802perlpath=''
803d_nv_preserves_uv=''
804d_nv_preserves_uv_bits=''
805i16size=''
806i16type=''
807i32size=''
808i32type=''
809i64size=''
810i64type=''
811i8size=''
812i8type=''
813ivsize=''
814ivtype=''
815nvsize=''
816nvtype=''
817u16size=''
818u16type=''
819u32size=''
820u32type=''
821u64size=''
822u64type=''
823u8size=''
824u8type=''
825uvsize=''
826uvtype=''
827ivdformat=''
828nvEUformat=''
829nvFUformat=''
830nvGUformat=''
831nveformat=''
832nvfformat=''
833nvgformat=''
834uvXUformat=''
835uvoformat=''
836uvuformat=''
837uvxformat=''
838pidtype=''
839prefix=''
840prefixexp=''
841installprivlib=''
842privlib=''
843privlibexp=''
844prototype=''
845ptrsize=''
846d_PRIXU64=''
847d_PRId64=''
848d_PRIi64=''
849d_PRIo64=''
850d_PRIu64=''
851d_PRIx64=''
852sPRIXU64=''
853sPRId64=''
854sPRIi64=''
855sPRIo64=''
856sPRIu64=''
857sPRIx64=''
858d_quad=''
859quadkind=''
860quadtype=''
861uquadtype=''
862drand01=''
863randbits=''
864randfunc=''
865randseedtype=''
866seedfunc=''
867installscript=''
868scriptdir=''
869scriptdirexp=''
870selectminbits=''
871selecttype=''
8ff267be 872sh=''
b4eb6b3d
JH
873sig_count=''
874sig_name=''
875sig_name_init=''
876sig_num=''
877sig_num_init=''
878installsitearch=''
879sitearch=''
880sitearchexp=''
881installsitebin=''
882sitebin=''
883sitebinexp=''
884installsitelib=''
885sitelib=''
886sitelib_stem=''
887sitelibexp=''
888siteprefix=''
889siteprefixexp=''
890sizesize=''
891sizetype=''
a0d0e21e 892so=''
b4eb6b3d 893socksizetype=''
2304df62
AD
894sharpbang=''
895shsharp=''
896spitshell=''
dfe9444c 897src=''
b4eb6b3d
JH
898ssizetype=''
899startperl=''
2304df62 900startsh=''
b4eb6b3d
JH
901stdchar=''
902d_stdio_stream_array=''
903stdio_stream_array=''
904sysman=''
5ff3f7a4 905trnl=''
b4eb6b3d
JH
906uidformat=''
907uidsign=''
908uidsize=''
909uidtype=''
910archname64=''
911use64bitall=''
912use64bitint=''
913ccflags_uselargefiles=''
914ldflags_uselargefiles=''
915libswanted_uselargefiles=''
916uselargefiles=''
917uselongdouble=''
918usemorebits=''
919usemultiplicity=''
2304df62 920nm_opt=''
40a7a20a 921nm_so_opt=''
2304df62
AD
922runnm=''
923usenm=''
b4eb6b3d 924useperlio=''
29209bc5 925usesocks=''
b4eb6b3d
JH
926d_oldpthreads=''
927use5005threads=''
928useithreads=''
929usethreads=''
2304df62 930incpath=''
2304df62
AD
931mips_type=''
932usrinc=''
b4eb6b3d
JH
933d_vendorarch=''
934installvendorarch=''
935vendorarch=''
936vendorarchexp=''
937d_vendorbin=''
938installvendorbin=''
939vendorbin=''
940vendorbinexp=''
941d_vendorlib=''
942installvendorlib=''
943vendorlib=''
944vendorlib_stem=''
945vendorlibexp=''
946usevendorprefix=''
947vendorprefix=''
948vendorprefixexp=''
d56c5707 949versiononly=''
b4eb6b3d
JH
950defvoidused=''
951voidflags=''
952pm_apiversion=''
953xs_apiversion=''
2304df62
AD
954CONFIG=''
955
ecfc5424
AD
956define='define'
957undef='undef'
958smallmach='pdp11 i8086 z8000 i80286 iAPX286'
959rmlist=''
960
961: We must find out about Eunice early
962eunicefix=':'
963if test -f /etc/unixtovms; then
964 eunicefix=/etc/unixtovms
965fi
966if test -f /etc/unixtovms.exe; then
967 eunicefix=/etc/unixtovms.exe
968fi
969
b4eb6b3d 970i_whoami=''
6b356c8e
JH
971ccname=''
972ccversion=''
9c839522 973perllibs=''
b4eb6b3d
JH
974: set useposix=false in your hint file to disable the POSIX extension.
975useposix=true
976: set useopcode=false in your hint file to disable the Opcode extension.
977useopcode=true
dfe9444c 978: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 979_exe=''
dfe9444c
AD
980: Extra object files, if any, needed on this platform.
981archobjs=''
b4eb6b3d 982archname=''
ff935051
JH
983: Possible local include directories to search.
984: Set locincpth to "" in a hint file to defeat local include searches.
985locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
986locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
987:
988: no include file wanted by default
989inclwanted=''
990
b4eb6b3d 991groupstype=''
732c9516
JH
992: change the next line if compiling for Xenix/286 on Xenix/386
993xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
994: Possible local library directories to search.
995loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
996loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
997
998: general looking path for locating libraries
5869b1f1 999glibpth="/lib /usr/lib $xlibpth"
732c9516 1000glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1001test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1002test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1003
1004: Private path used by Configure to find libraries. Its value
1005: is prepended to libpth. This variable takes care of special
1006: machines, like the mips. Usually, it should be empty.
1007plibpth=''
1008
1cfa4ec7
GS
1009: default library list
1010libswanted=''
921b2963 1011: some systems want to use only the non-versioned libso:s
1cfa4ec7 1012ignore_versioned_solibs=''
b4eb6b3d
JH
1013archname64=''
1014ccflags_uselargefiles=''
1015ldflags_uselargefiles=''
1016libswanted_uselargefiles=''
1017: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1018: set usesocks on the Configure command line to enable socks.
b4eb6b3d
JH
1019: set usethreads on the Configure command line to enable threads.
1020: full support for void wanted by default
1021defvoidused=15
1022
ecfc5424 1023: List of libraries we want.
693762b4 1024: If anyone needs -lnet, put it in a hint file.
997d70a2 1025libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1026libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1027libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1028libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1029: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1030: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1031glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1032glibpth="/usr/shlib $glibpth"
1033: Do not use vfork unless overridden by a hint file.
1034usevfork=false
1035
8ff267be 1036: Find the basic shell for Bourne shell scripts
1037case "$sh" in
1038'')
8ff267be 1039 case "$SYSTYPE" in
1040 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1041 *) xxx='/bin/sh';;
1042 esac
1043 if test -f "$xxx"; then
1044 sh="$xxx"
1045 else
1046 : Build up a list and do a single loop so we can 'break' out.
1047 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1048 for xxx in sh bash ksh pdksh ash; do
1049 for p in $pth; do
1050 try="$try ${p}/${xxx}"
1051 done
1052 done
1053 for xxx in $try; do
1054 if test -f "$xxx"; then
1055 sh="$xxx";
8ff267be 1056 break
1057 elif test -f "$xxx.exe"; then
1058 sh="$xxx";
8ff267be 1059 break
1060 fi
1061 done
1062 fi
1063 ;;
1064esac
1065
1066case "$sh" in
1067'') cat <<EOM >&2
1068$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1069
8ff267be 1070Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1071Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1072we'll try to straighten this all out.
8ff267be 1073EOM
1074 exit 1
1075 ;;
1076esac
1077
760ac839 1078: see if sh knows # comments
8ff267be 1079if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1080 shsharp=true
1081 spitshell=cat
760ac839
LW
1082 xcat=/bin/cat
1083 test -f $xcat || xcat=/usr/bin/cat
1084 echo "#!$xcat" >try
1085 $eunicefix try
1086 chmod +x try
1087 ./try > today
1088 if test -s today; then
760ac839
LW
1089 sharpbang='#!'
1090 else
1091 echo "#! $xcat" > try
1092 $eunicefix try
1093 chmod +x try
1094 ./try > today
1095 if test -s today; then
760ac839
LW
1096 sharpbang='#! '
1097 else
760ac839
LW
1098 sharpbang=': use '
1099 fi
1100 fi
1101else
dfe9444c 1102 echo " "
8ff267be 1103 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1104 shsharp=false
1105 cd ..
1106 echo "exec grep -v '^[ ]*#'" >spitshell
1107 chmod +x spitshell
1108 $eunicefix spitshell
1109 spitshell=`pwd`/spitshell
1110 cd UU
1111 echo "I presume that if # doesn't work, #! won't work either!"
1112 sharpbang=': use '
1113fi
1114rm -f try today
1115
1116: figure out how to guarantee sh startup
8ff267be 1117case "$startsh" in
1118'') startsh=${sharpbang}${sh} ;;
1119*)
760ac839 1120esac
760ac839
LW
1121cat >try <<EOSS
1122$startsh
1123set abc
1124test "$?abc" != 1
1125EOSS
1126
1127chmod +x try
1128$eunicefix try
1129if ./try; then
8ff267be 1130 : echo "Yup, it does."
760ac839 1131else
dfe9444c
AD
1132 echo "Hmm... '$startsh' does not guarantee sh startup..."
1133 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1134fi
1135rm -f try
1136
aebf16e7
AD
1137
1138: Save command line options in file UU/cmdline.opt for later use in
1139: generating config.sh.
1140cat > cmdline.opt <<EOSH
1141# Configure command line arguments.
1142config_arg0='$0'
1143config_args='$*'
1144config_argc=$#
1145EOSH
1146argn=1
1147for arg in "$@"; do
1148 cat >>cmdline.opt <<EOSH
1149config_arg$argn='$arg'
1150EOSH
1151 argn=`expr $argn + 1`
1152done
1153
2304df62
AD
1154: produce awk script to parse command line options
1155cat >options.awk <<'EOF'
1156BEGIN {
02e93a22 1157 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1158
1159 len = length(optstr);
1160 for (i = 1; i <= len; i++) {
1161 c = substr(optstr, i, 1);
1162 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1163 if (a == ":") {
1164 arg[c] = 1;
1165 i++;
1166 }
1167 opt[c] = 1;
1168 }
1169}
1170{
1171 expect = 0;
1172 str = $0;
1173 if (substr(str, 1, 1) != "-") {
1174 printf("'%s'\n", str);
1175 next;
1176 }
1177 len = length($0);
1178 for (i = 2; i <= len; i++) {
1179 c = substr(str, i, 1);
1180 if (!opt[c]) {
1181 printf("-%s\n", substr(str, i));
1182 next;
1183 }
1184 printf("-%s\n", c);
1185 if (arg[c]) {
1186 if (i < len)
1187 printf("'%s'\n", substr(str, i + 1));
1188 else
1189 expect = 1;
1190 next;
1191 }
1192 }
1193}
1194END {
1195 if (expect)
1196 print "?";
1197}
1198EOF
1199
1200: process the command line options
4633a7c4
LW
1201set X `for arg in "$@"; do echo "X$arg"; done |
1202 sed -e s/X// | awk -f options.awk`
2304df62
AD
1203eval "set $*"
1204shift
1205rm -f options.awk
1206
1207: set up default values
1208fastread=''
1209reuseval=false
1210config_sh=''
1211alldone=''
1212error=''
1213silent=''
1214extractsh=''
ecfc5424 1215override=''
16d20bd9 1216knowitall=''
02e93a22 1217rm -f optdef.sh posthint.sh
28757baa 1218cat >optdef.sh <<EOS
1219$startsh
1220EOS
2304df62 1221
dfe9444c 1222
2304df62
AD
1223: option parsing
1224while test $# -gt 0; do
1225 case "$1" in
1226 -d) shift; fastread=yes;;
1227 -e) shift; alldone=cont;;
1228 -f)
1229 shift
1230 cd ..
1231 if test -r "$1"; then
1232 config_sh="$1"
1233 else
a0d0e21e 1234 echo "$me: cannot read config file $1." >&2
2304df62
AD
1235 error=true
1236 fi
1237 cd UU
1238 shift;;
1239 -h) shift; error=true;;
1240 -r) shift; reuseval=true;;
dfe9444c 1241 -s) shift; silent=true; realsilent=true;;
2304df62 1242 -E) shift; alldone=exit;;
16d20bd9 1243 -K) shift; knowitall=true;;
ecfc5424 1244 -O) shift; override=true;;
dfe9444c 1245 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1246 -D)
1247 shift
1248 case "$1" in
1249 *=)
1250 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1251 echo "$me: ignoring -D $1" >&2
1252 ;;
ecfc5424 1253 *=*) echo "$1" | \
1aef975c
AD
1254 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1255 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1256 esac
1257 shift
1258 ;;
1259 -U)
1260 shift
1261 case "$1" in
1aef975c 1262 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1263 *=*)
1264 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1265 echo "$me: ignoring -U $1" >&2
1266 ;;
1aef975c 1267 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1268 esac
1269 shift
1270 ;;
02e93a22
JH
1271 -A)
1272 shift
1273 xxx=''
1274 yyy="$1"
02e93a22 1275 zzz=''
5f83a3e9 1276 uuu=undef
02e93a22 1277 case "$yyy" in
5f83a3e9
JH
1278 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1279 case "$zzz" in
1280 *:*) zzz='' ;;
1281 *) xxx=append
1282 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1283 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1284 esac
1285 ;;
1286 esac
1287 case "$xxx" in
1288 '') case "$yyy" in
1289 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1290 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1291 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1292 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1293 *) xxx=`echo $yyy|sed 's!:.*!!'`
1294 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1295 esac
1296 ;;
1297 esac
02e93a22
JH
1298 case "$xxx" in
1299 append)
5f83a3e9 1300 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1301 clear)
5f83a3e9 1302 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1303 define)
1304 case "$zzz" in
1305 '') zzz=define ;;
1306 esac
5f83a3e9 1307 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1308 eval)
5f83a3e9 1309 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1310 prepend)
5f83a3e9 1311 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1312 undef)
1313 case "$zzz" in
1314 '') zzz="$uuu" ;;
1315 esac
5f83a3e9
JH
1316 echo "$yyy=$zzz" >> posthint.sh ;;
1317 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1318 esac
bde6b06b 1319 shift
02e93a22 1320 ;;
dfe9444c 1321 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1322 exit 0;;
2304df62 1323 --) break;;
a0d0e21e 1324 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1325 *) break;;
1326 esac
1327done
1328
1329case "$error" in
1330true)
1331 cat >&2 <<EOM
2afac517 1332Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1333 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1334 -d : use defaults for all answers.
1335 -e : go on without questioning past the production of config.sh.
1336 -f : specify an alternate default configuration file.
1337 -h : print this help message and exit (with an error status).
1338 -r : reuse C symbols value if possible (skips costly nm extraction).
1339 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1340 -D : define symbol to have some value:
1341 -D symbol symbol gets the value 'define'
1342 -D symbol=value symbol gets the value 'value'
2304df62 1343 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1344 -K : do not use unless you know what you are doing.
ecfc5424 1345 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1346 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1347 -U : undefine symbol:
1348 -U symbol symbol gets the value 'undef'
1349 -U symbol= symbol gets completely empty
02e93a22 1350 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1351 -A symbol=value append " "value to symbol
02e93a22
JH
1352 -A append:symbol=value append value to symbol
1353 -A define:symbol=value define symbol to have value
02e93a22
JH
1354 -A clear:symbol define symbol to be ''
1355 -A define:symbol define symbol to be 'define'
1356 -A eval:symbol=value define symbol to be eval of value
1357 -A prepend:symbol=value prepend value to symbol
1358 -A undef:symbol define symbol to be 'undef'
1359 -A undef:symbol= define symbol to be ''
2304df62
AD
1360 -V : print version number and exit (with a zero status).
1361EOM
1362 exit 1
1363 ;;
1364esac
1365
dfe9444c
AD
1366: Sanity checks
1367case "$fastread$alldone" in
1368yescont|yesexit) ;;
1369*)
aaeb8e51
GS
1370 case "$extractsh" in
1371 true) ;;
1372 *)
1373 if test ! -t 0; then
1374 echo "Say 'sh Configure', not 'sh <Configure'"
1375 exit 1
1376 fi
1377 ;;
1378 esac
dfe9444c
AD
1379 ;;
1380esac
1381
2304df62
AD
1382exec 4>&1
1383case "$silent" in
1384true) exec 1>/dev/null;;
1385esac
1386
ecfc5424 1387: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1388touch optdef.sh
1389. ./optdef.sh
02e93a22
JH
1390: create the posthint manipulation script and leave the file out there...
1391touch posthint.sh
a0d0e21e 1392
2304df62 1393: set package name
85e6fe83 1394package=perl5
b4eb6b3d
JH
1395first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1396last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1397case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1398ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1399*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1400esac
2304df62 1401
2304df62
AD
1402: Some greps do not return status, grrr.
1403echo "grimblepritz" >grimble
1404if grep blurfldyick grimble >/dev/null 2>&1 ; then
1405 contains=contains
1406elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1407 contains=grep
1408else
1409 contains=contains
1410fi
1411rm -f grimble
1412: the following should work in any shell
1413case "$contains" in
1414contains*)
1415 echo " "
1416 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1417 cat >contains <<'EOSS'
1418grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1419EOSS
1420chmod +x contains
1421esac
1422
dfe9444c
AD
1423: Find the path to the source tree
1424case "$src" in
1425'') case "$0" in
b233458b
JH
1426 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1427 case "$src" in
1428 /*) ;;
1429 *) src=`cd ../$src && pwd` ;;
1430 esac
1431 ;;
dfe9444c
AD
1432 *) src='.';;
1433 esac;;
1434esac
1435case "$src" in
1436'') src=/
1437 rsrc=/
1438 ;;
1439/*) rsrc="$src";;
1440*) rsrc="../$src";;
1441esac
1442if test -f $rsrc/Configure && \
1443 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1444then
1445 : found it, so we are ok.
1446else
1447 rsrc=''
1448 for src in . .. ../.. ../../.. ../../../..; do
1449 if test -f ../$src/Configure && \
1450 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1451 then
1452 rsrc=../$src
1453 break
1454 fi
1455 done
1456fi
1457case "$rsrc" in
1458'')
1459 cat <<EOM >&4
1460
1461Sorry, I can't seem to locate the source dir for $package. Please start
1462Configure with an explicit path -- i.e. /some/path/Configure.
1463
1464EOM
1465 exit 1
1466 ;;
1467../.) rsrc='..';;
1468*)
1469 echo " "
1470 echo "Sources for $package found in \"$src\"." >&4
1471 ;;
1472esac
1473
1474: script used to extract .SH files with variable substitutions
1475cat >extract <<'EOS'
2000072c 1476CONFIGDOTSH=true
dfe9444c
AD
1477echo "Doing variable substitutions on .SH files..."
1478if test -f $src/MANIFEST; then
f7ab18e9 1479 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1480else
1481 echo "(Looking for .SH files under the source directory.)"
1482 set x `(cd $src; find . -name "*.SH" -print)`
1483fi
1484shift
1485case $# in
14860) set x `(cd $src; echo *.SH)`; shift;;
1487esac
1488if test ! -f $src/$1; then
1489 shift
1490fi
1491mkdir_p='
1492name=$1;
1493create="";
1494while test $name; do
1495 if test ! -d "$name"; then
1496 create="$name $create";
1497 name=`echo $name | sed -e "s|^[^/]*$||"`;
1498 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1499 else
1500 name="";
1501 fi;
1502done;
1503for file in $create; do
1504 mkdir $file;
1505done
1506'
1507for file in $*; do
1508 case "$src" in
1509 ".")
1510 case "$file" in
1511 */*)
1512 dir=`expr X$file : 'X\(.*\)/'`
1513 file=`expr X$file : 'X.*/\(.*\)'`
1514 (cd $dir && . ./$file)
1515 ;;
1516 *)
1517 . ./$file
1518 ;;
1519 esac
1520 ;;
1521 *)
1522 case "$file" in
1523 */*)
1524 dir=`expr X$file : 'X\(.*\)/'`
1525 file=`expr X$file : 'X.*/\(.*\)'`
1526 (set x $dir; shift; eval $mkdir_p)
1527 sh <$src/$dir/$file
1528 ;;
1529 *)
1530 sh <$src/$file
1531 ;;
1532 esac
1533 ;;
1534 esac
1535done
1536if test -f $src/config_h.SH; then
1537 if test ! -f config.h; then
1538 : oops, they left it out of MANIFEST, probably, so do it anyway.
1539 . $src/config_h.SH
1540 fi
1541fi
1542EOS
1543
1544: extract files and exit if asked to do so
1545case "$extractsh" in
1546true)
1547 case "$realsilent" in
1548 true) ;;
1549 *) exec 1>&4;;
1550 esac
1551 case "$config_sh" in
1552 '') config_sh='config.sh';;
1553 esac
1554 echo " "
1555 echo "Fetching answers from $config_sh..."
1556 cd ..
1557 . $config_sh
1558 test "$override" && . ./optdef.sh
1559 echo " "
1560 . UU/extract
1561 rm -rf UU
1562 echo "Done."
1563 exit 0
1564 ;;
1565esac
1566
1567: Eunice requires " " instead of "", can you believe it
1568echo " "
1569: Here we go...
1570echo "Beginning of configuration questions for $package."
1571
1572trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1573
2304df62
AD
1574: first determine how to suppress newline on echo command
1575echo " "
1576echo "Checking echo to see how to suppress newlines..."
1577(echo "hi there\c" ; echo " ") >.echotmp
1578if $contains c .echotmp >/dev/null 2>&1 ; then
1579 echo "...using -n."
1580 n='-n'
1581 c=''
1582else
1583 cat <<'EOM'
1584...using \c
1585EOM
1586 n=''
1587 c='\c'
1588fi
1589echo $n "The star should be here-->$c"
1590echo '*'
1591rm -f .echotmp
1592
1593: Now test for existence of everything in MANIFEST
1594echo " "
dfe9444c 1595if test -f $rsrc/MANIFEST; then
2304df62 1596 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1597 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1598 rm -f missing
dfe9444c 1599 tmppwd=`pwd`
2304df62 1600 for filelist in x??; do
dfe9444c 1601 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1602 done
1603 if test -s missing; then
1604 cat missing >&4
1605 cat >&4 <<'EOM'
1606
1607THIS PACKAGE SEEMS TO BE INCOMPLETE.
1608
1609You have the option of continuing the configuration process, despite the
1610distinct possibility that your kit is damaged, by typing 'y'es. If you
1611do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1612and contact the author (perlbug@perl.org).
2304df62
AD
1613
1614EOM
1615 echo $n "Continue? [n] $c" >&4
1616 read ans
1617 case "$ans" in
1618 y*)
1619 echo "Continuing..." >&4
1620 rm -f missing
1621 ;;
1622 *)
1623 echo "ABORTING..." >&4
1624 kill $$
1625 ;;
1626 esac
1627 else
dfe9444c 1628 echo "Looks good..."
2304df62
AD
1629 fi
1630else
1631 echo "There is no MANIFEST file. I hope your kit is complete !"
1632fi
1633rm -f missing x??
1634
5ff3f7a4
GS
1635echo " "
1636: Find the appropriate value for a newline for tr
1637if test -n "$DJGPP"; then
1638 trnl='\012'
1639fi
1640if test X"$trnl" = X; then
1641 case "`echo foo|tr '\n' x 2>/dev/null`" in
1642 foox) trnl='\n' ;;
1643 esac
1644fi
1645if test X"$trnl" = X; then
1646 case "`echo foo|tr '\012' x 2>/dev/null`" in
1647 foox) trnl='\012' ;;
1648 esac
1649fi
1650if test X"$trnl" = X; then
1651 cat <<EOM >&2
1652
1653$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1654
1655EOM
1656 exit 1
1657fi
1658
2304df62
AD
1659: compute the number of columns on the terminal for proper question formatting
1660case "$COLUMNS" in
1661'') COLUMNS='80';;
1662esac
1663
1664: set up the echo used in my read
1665myecho="case \"\$xxxm\" in
1666'') echo $n \"\$rp $c\" >&4;;
1667*) case \"\$rp\" in
1668 '') echo $n \"[\$xxxm] $c\";;
1669 *)
1670 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1671 echo \"\$rp\" >&4
1672 echo $n \"[\$xxxm] $c\" >&4
1673 else
1674 echo $n \"\$rp [\$xxxm] $c\" >&4
1675 fi
1676 ;;
1677 esac;;
1678esac"
1679
1680: now set up to do reads with possible shell escape and default assignment
1681cat <<EOSC >myread
28757baa 1682$startsh
2304df62
AD
1683xxxm=\$dflt
1684$myecho
1685ans='!'
1686case "\$fastread" in
1687yes) case "\$dflt" in
1688 '') ;;
1689 *) ans='';
1690 case "\$silent-\$rp" in
1691 true-) ;;
1692 *) echo " " >&4;;
1693 esac;;
1694 esac;;
1695*) case "\$silent" in
1696 true) case "\$rp" in
1697 '') ans='';;
1698 esac;;
1699 esac;;
1700esac
1701while expr "X\$ans" : "X!" >/dev/null; do
1702 read answ
1703 set x \$xxxm
1704 shift
dfe9444c 1705 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1706 case "\$answ" in
dfe9444c
AD
1707 "!")
1708 sh 1>&4
1709 echo " "
1710 $myecho
1711 ;;
1712 !*)
1713 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1714 shift
1715 sh 1>&4 -c "\$*"
1716 echo " "
1717 $myecho
1718 ;;
2304df62
AD
1719 "\$ans")
1720 case "\$ans" in
ecfc5424
AD
1721 \\&*)
1722 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1723 shift
1724 case "\$1" in
1725 -d)
1726 fastread=yes
40a7a20a 1727 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1728 ;;
1729 -*)
40a7a20a 1730 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1731 ;;
1732 esac
1733 $myecho
1734 ans=!
1735 ;;
2304df62
AD
1736 esac;;
1737 *)
1738 case "\$aok" in
1739 y)
1740 echo "*** Substitution done -- please confirm."
1741 xxxm="\$ans"
c9795ab7 1742 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1743 xxxm="\$ans"
1744 ans=!
1745 ;;
1746 *)
1747 echo "*** Error -- try again."
1748 ans=!
1749 ;;
1750 esac
1751 $myecho
1752 ;;
1753 esac
1754 case "\$ans\$xxxm\$nostick" in
1755 '')
1756 ans=!
1757 $myecho
1758 ;;
1759 esac
1760done
1761case "\$ans" in
1762'') ans="\$xxxm";;
1763esac
1764EOSC
1765
1766: create .config dir to save info across Configure sessions
1767test -d ../.config || mkdir ../.config
1768cat >../.config/README <<EOF
1769This directory created by Configure to save information that should
dfe9444c 1770persist across sessions for $package.
2304df62
AD
1771
1772You may safely delete it if you wish.
1773EOF
1774
9507cadf 1775xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1776case "$usedevel" in
0107c034 1777$define|true|[yY]*) ;;
9507cadf 1778*) case "$xversion" in
0107c034
JH
1779 *[13579])
1780 cat >&4 <<EOH
1781*** WHOA THERE!!! ***
1782
1783 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1784 The version of this $package distribution is $xversion, that is, odd,
1785 (as opposed to even) and that signifies a development release.
3d5d58b1 1786 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1787
1788 Do ***NOT*** install this into production use.
1789 Data corruption and crashes are possible.
1790
1791 It is most seriously suggested that you do not continue any further
1792 unless you want to help in developing and debugging Perl.
1793
1794EOH
1795 rp='Do you really want to continue?'
1796 dflt='n'
1797 . ./myread
1798 case "$ans" in
1799 [yY]) echo >&4 "Okay, continuing." ;;
1800 *) echo >&4 "Okay, bye."
1801 exit 1
1802 ;;
1803 esac
1804 ;;
1805 esac
1806 ;;
1807esac
1808
2304df62
AD
1809: general instructions
1810needman=true
1811firsttime=true
760ac839 1812user=`(logname) 2>/dev/null`
dfe9444c
AD
1813case "$user" in
1814'') user=`whoami 2>&1`;;
760ac839 1815esac
2304df62
AD
1816if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1817 firsttime=false
1818 echo " "
1819 rp='Would you like to see the instructions?'
1820 dflt=n
1821 . ./myread
1822 case "$ans" in
1823 [yY]*) ;;
1824 *) needman=false;;
1825 esac
1826fi
1827if $needman; then
1828 cat <<EOH
4e2a5f63 1829
2304df62 1830This installation shell script will examine your system and ask you questions
a0d0e21e 1831to determine how the perl5 package should be installed. If you get
2304df62
AD
1832stuck on a question, you may use a ! shell escape to start a subshell or
1833execute a command. Many of the questions will have default answers in square
1834brackets; typing carriage return will give you the default.
1835
1836On some of the questions which ask for file or directory names you are allowed
1837to use the ~name construct to specify the login directory belonging to "name",
1838even if you don't have a shell which knows about that. Questions where this is
1839allowed will be marked "(~name ok)".
1840
1841EOH
1842 rp=''
1843 dflt='Type carriage return to continue'
1844 . ./myread
1845 cat <<'EOH'
1846
1847The prompter used in this script allows you to use shell variables and
1848backticks in your answers. You may use $1, $2, etc... to refer to the words
1849in the default answer, as if the default line was a set of arguments given to a
1850script shell. This means you may also use $* to repeat the whole default line,
1851so you do not have to re-type everything to add something to the default.
1852
1853Everytime there is a substitution, you will have to confirm. If there is an
1854error (e.g. an unmatched backtick), the default answer will remain unchanged
1855and you will be prompted again.
1856
1857If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1858the questions and use the computed defaults (or the previous answers if there
1859was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1860You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1861on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1862
1863EOH
1864 . ./myread
1865 cat <<EOH
1866
1867Much effort has been expended to ensure that this shell script will run on any
1868Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1869Configure and run it again. If you can't run Configure for some reason,
1870you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1871have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1872
1873This installation script affects things in two ways:
1874
18751) it may do direct variable substitutions on some of the files included
1876 in this kit.
18772) it builds a config.h file for inclusion in C programs. You may edit
1878 any of these files as the need arises after running this script.
1879
1880If you make a mistake on a question, there is no easy way to back up to it
1881currently. The easiest thing to do is to edit config.sh and rerun all the SH
1882files. Configure will offer to let you do this before it runs the SH files.
1883
1884EOH
1885 dflt='Type carriage return to continue'
1886 . ./myread
1887 case "$firsttime" in
1888 true) echo $user >>../.config/instruct;;
1889 esac
1890fi
1891
2304df62
AD
1892: find out where common programs are
1893echo " "
1894echo "Locating common programs..." >&4
1895cat <<EOSC >loc
1896$startsh
1897case \$# in
18980) exit 1;;
1899esac
1900thing=\$1
1901shift
1902dflt=\$1
1903shift
1904for dir in \$*; do
1905 case "\$thing" in
1906 .)
1907 if test -d \$dir/\$thing; then
1908 echo \$dir
1909 exit 0
1910 fi
1911 ;;
1912 *)
a0d0e21e 1913 for thisthing in \$dir/\$thing; do
ecfc5424 1914 : just loop through to pick last item
a0d0e21e 1915 done
25f94b33 1916 if test -f \$thisthing; then
a0d0e21e 1917 echo \$thisthing
2304df62
AD
1918 exit 0
1919 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1920 if test -n "$DJGPP"; then
1921 echo \$dir/\$thing.exe
1922 else
1923 : on Eunice apparently
1924 echo \$dir/\$thing
1925 fi
2304df62
AD
1926 exit 0
1927 fi
1928 ;;
1929 esac
1930done
1931echo \$dflt
1932exit 1
1933EOSC
1934chmod +x loc
1935$eunicefix loc
1936loclist="
1937awk
1938cat
b4eb6b3d
JH
1939comm
1940cp
2304df62
AD
1941echo
1942expr
1943grep
a0d0e21e 1944ls
dfe9444c 1945make
b4eb6b3d 1946mkdir
2304df62
AD
1947rm
1948sed
b4eb6b3d 1949sort
85e6fe83 1950touch
2304df62 1951tr
b4eb6b3d 1952uniq
2304df62
AD
1953"
1954trylist="
1955Mcc
dfe9444c 1956ar
b4eb6b3d 1957byacc
2304df62 1958cpp
b4eb6b3d 1959csh
2304df62
AD
1960date
1961egrep
8ff267be 1962gzip
b4eb6b3d 1963less
8ff267be 1964ln
b4eb6b3d 1965more
693762b4 1966nm
b4eb6b3d
JH
1967nroff
1968pg
2304df62
AD
1969test
1970uname
8ff267be 1971zip
2304df62 1972"
8e07c86e 1973pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1974pth="$pth /lib /usr/lib"
1975for file in $loclist; do
dfe9444c
AD
1976 eval xxx=\$$file
1977 case "$xxx" in
1978 /*|?:[\\/]*)
1979 if test -f "$xxx"; then
1980 : ok
1981 else
1982 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1983 xxx=`./loc $file $file $pth`
1984 fi
1985 ;;
1986 '') xxx=`./loc $file $file $pth`;;
1987 *) xxx=`./loc $xxx $xxx $pth`;;
1988 esac
2304df62
AD
1989 eval $file=$xxx
1990 eval _$file=$xxx
1991 case "$xxx" in
1992 /*)
1993 echo $file is in $xxx.
1994 ;;
8e07c86e
AD
1995 ?:[\\/]*)
1996 echo $file is in $xxx.
1997 ;;
2304df62 1998 *)
25f94b33
AD
1999 echo "I don't know where '$file' is, and my life depends on it." >&4
2000 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2001 exit 1
2304df62
AD
2002 ;;
2003 esac
2004done
2005echo " "
2006echo "Don't worry if any of the following aren't found..."
2007say=offhand
2008for file in $trylist; do
dfe9444c
AD
2009 eval xxx=\$$file
2010 case "$xxx" in
2011 /*|?:[\\/]*)
2012 if test -f "$xxx"; then
2013 : ok
2014 else
2015 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2016 xxx=`./loc $file $file $pth`
2017 fi
2018 ;;
2019 '') xxx=`./loc $file $file $pth`;;
2020 *) xxx=`./loc $xxx $xxx $pth`;;
2021 esac
2304df62
AD
2022 eval $file=$xxx
2023 eval _$file=$xxx
2024 case "$xxx" in
2025 /*)
2026 echo $file is in $xxx.
2027 ;;
8e07c86e
AD
2028 ?:[\\/]*)
2029 echo $file is in $xxx.
2030 ;;
2304df62
AD
2031 *)
2032 echo "I don't see $file out there, $say."
2033 say=either
2034 ;;
2035 esac
2036done
2037case "$egrep" in
2038egrep)
2039 echo "Substituting grep for egrep."
2040 egrep=$grep
2041 ;;
2042esac
8ff267be 2043case "$ln" in
2044ln)
2045 echo "Substituting cp for ln."
2046 ln=$cp
2047 ;;
2048esac
2304df62
AD
2049case "$test" in
2050test)
2051 echo "Hopefully test is built into your sh."
2052 ;;
2053*)
ecfc5424 2054 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
2055 echo "Using the test built into your sh."
2056 test=test
2057 _test=test
2058 fi
2059 ;;
2060esac
2061case "$echo" in
2062echo)
2063 echo "Hopefully echo is built into your sh."
2064 ;;
2065'') ;;
2066*)
2067 echo " "
2068echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2069 $echo $n "hi there$c" >foo1
2070 echo $n "hi there$c" >foo2
2071 if cmp foo1 foo2 >/dev/null 2>&1; then
2072 echo "They are compatible. In fact, they may be identical."
2073 else
2074 case "$n" in
2075 '-n') n='' c='\c';;
2076 *) n='-n' c='';;
2077 esac
2078 cat <<FOO
2079They are not compatible! You are probably running ksh on a non-USG system.
2080I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2081have echo built in and we may have to run some Bourne shell scripts. That
2082means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2083
2084FOO
2085 $echo $n "The star should be here-->$c"
2086 $echo "*"
2087 fi
2088 $rm -f foo1 foo2
2089 ;;
2090esac
2091
2573c5f9
JH
2092cat <<EOS >checkcc
2093$startsh
2094EOS
2095cat <<'EOSC' >>checkcc
2096case "$cc" in
2097'') ;;
2098*) $rm -f try try.*
2099 $cat >try.c <<EOM
2100int main(int argc, char *argv[]) {
2101 return 0;
2102}
2103EOM
7a282f6d 2104 if $cc -o try $ccflags try.c; then
2573c5f9
JH
2105 :
2106 else
2107 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2108 despair=yes
2109 trygcc=yes
2110 case "$cc" in
2111 *gcc*) trygcc=no ;;
2112 esac
2113 case "`$cc -v -c try.c 2>&1`" in
2114 *gcc*) trygcc=no ;;
2115 esac
2116 if $test X"$trygcc" = Xyes; then
2117 if gcc -o try -c try.c; then
2118 echo " "
2119 echo "You seem to have a working gcc, though." >&4
2120 rp="Would you like to use it?"
2121 dflt=y
2122 if $test -f myread; then
2123 . ./myread
2124 else
2125 if $test -f UU/myread; then
2126 . ./UU/myread
2127 else
2128 echo "Cannot find myread, sorry. Aborting." >&2
2129 exit 1
2130 fi
2131 fi
2132 case "$ans" in
e723fc21 2133 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2134 esac
2135 fi
2136 fi
2137 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2138 $cat >&4 <<EOM
2139You need to find a working C compiler.
2140Either (purchase and) install the C compiler supplied by your OS vendor,
2141or for a free C compiler try http://gcc.gnu.org/
2142I cannot continue any further, aborting.
2143EOM
2573c5f9
JH
2144 exit 1
2145 fi
2146 fi
2147 $rm -f try try.*
2148 ;;
2149esac
2150EOSC
2151
a0d0e21e
LW
2152: determine whether symbolic links are supported
2153echo " "
2154$touch blurfl
2155if $ln -s blurfl sym > /dev/null 2>&1 ; then
2156 echo "Symbolic links are supported." >&4
2157 lns="$ln -s"
2158else
2159 echo "Symbolic links are NOT supported." >&4
2160 lns="$ln"
2161fi
2162$rm -f blurfl sym
2163
ecfc5424
AD
2164: see whether [:lower:] and [:upper:] are supported character classes
2165echo " "
ecfc5424
AD
2166case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2167ABYZ)
2168 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2169 up='[:upper:]'
2170 low='[:lower:]'
2171 ;;
28e8609d
JH
2172*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2173 # (0xc9 and 0xd1), therefore that is a nice testing point.
2174 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2175 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2176 ij) up='[A-Z]'
2177 low='[a-z]'
2178 ;;
2179 esac
2180 fi
2181 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2182 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2183 ij) up='A-Z'
2184 low='a-z'
2185 ;;
2186 esac
2187 fi
2188 if test "X$up" = X -o "X$low" = X; then
2189 case "`echo IJ | od -x 2>/dev/null`" in
2190 *C9D1*|*c9d1*)
2191 echo "Hey, this might be EBCDIC." >&4
2192 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2193 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2194 ij) up='[A-IJ-RS-Z]'
2195 low='[a-ij-rs-z]'
2196 ;;
2197 esac
2198 fi
2199 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2200 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2201 ij) up='A-IJ-RS-Z'
2202 low='a-ij-rs-z'
2203 ;;
2204 esac
2205 fi
2206 ;;
2207 esac
2208 fi
2209esac
3eaeeeae 2210case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2211ij)
2212 echo "Using $up and $low to convert case." >&4
2213 ;;
ecfc5424 2214*)
28e8609d
JH
2215 echo "I don't know how to translate letters from upper to lower case." >&4
2216 echo "Your tr is not acting any way I know of." >&4
2217 exit 1
2218 ;;
ecfc5424
AD
2219esac
2220: set up the translation script tr, must be called with ./tr of course
2221cat >tr <<EOSC
2222$startsh
2223case "\$1\$2" in
2224'[A-Z][a-z]') exec $tr '$up' '$low';;
2225'[a-z][A-Z]') exec $tr '$low' '$up';;
2226esac
2227exec $tr "\$@"
2228EOSC
2229chmod +x tr
2230$eunicefix tr
2231
2304df62
AD
2232: Try to determine whether config.sh was made on this system
2233case "$config_sh" in
2234'')
43999f95
JH
2235myuname=`$uname -a 2>/dev/null`
2236$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2237# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2238# because the A-Z/a-z are not consecutive.
a0d0e21e 2239myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2240 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2241newmyuname="$myuname"
2304df62 2242dflt=n
16d20bd9
AD
2243case "$knowitall" in
2244'')
2245 if test -f ../config.sh; then
2246 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2247 eval "`grep myuname= ../config.sh`"
2248 fi
2249 if test "X$myuname" = "X$newmyuname"; then
2250 dflt=y
2251 fi
2304df62 2252 fi
16d20bd9
AD
2253 ;;
2254*) dflt=y;;
2255esac
2304df62
AD
2256
2257: Get old answers from old config file if Configure was run on the
2258: same system, otherwise use the hints.
2259hint=default
2260cd ..
2261if test -f config.sh; then
16d20bd9
AD
2262 echo " "
2263 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2264 . UU/myread
2265 case "$ans" in
2266 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2267 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2268 tmp_n="$n"
2269 tmp_c="$c"
85cad39c 2270 tmp_sh="$sh"
2304df62
AD
2271 . ./config.sh
2272 cp config.sh UU
ecfc5424
AD
2273 n="$tmp_n"
2274 c="$tmp_c"
85cad39c 2275 : Older versions did not always set $sh. Catch re-use of such
2276 : an old config.sh.
2277 case "$sh" in
2278 '') sh="$tmp_sh" ;;
2279 esac
2304df62
AD
2280 hint=previous
2281 ;;
2282 esac
2283fi
2573c5f9 2284. ./UU/checkcc
2304df62
AD
2285if test ! -f config.sh; then
2286 $cat <<EOM
2287
4e2a5f63
AD
2288First time through, eh? I have some defaults handy for some systems
2289that need some extra help getting the Configure answers right:
2304df62
AD
2290
2291EOM
dfe9444c 2292 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2293 dflt=''
2294 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2295 : tests or hints, please send them to perlbug@perl.org
2304df62 2296 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2297 $test -f /irix && osname=irix
85e6fe83
LW
2298 $test -f /xenix && osname=sco_xenix
2299 $test -f /dynix && osname=dynix
2300 $test -f /dnix && osname=dnix
5f05dabc 2301 $test -f /lynx.os && osname=lynxos
2302 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2303 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2304 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2305 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2306 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2307 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2308 $test -d /usr/apollo/bin && osname=apollo
2309 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2310 $test -d /usr/include/minix && osname=minix
e060872b 2311 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2312 osname=machten
4633a7c4 2313 if $test -x /sbin/version; then
dfe9444c 2314 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2315 $sed -e 's/[A-Za-z]$//'`
2316 elif $test -x /usr/etc/version; then
dfe9444c 2317 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2318 $sed -e 's/[A-Za-z]$//'`
2319 else
2320 osvers="$2.$3"
2321 fi
2322 fi
aaacdc8b
GS
2323
2324 $test -f /sys/posix.dll &&
2325 $test -f /usr/bin/what &&
2326 set X `/usr/bin/what /sys/posix.dll` &&
2327 $test "$3" = UWIN &&
2328 osname=uwin &&
2329 osvers="$5"
2330
2304df62
AD
2331 if $test -f $uname; then
2332 set X $myuname
2333 shift
2334
2304df62 2335 case "$5" in
85e6fe83 2336 fps*) osname=fps ;;
2304df62
AD
2337 mips*)
2338 case "$4" in
85e6fe83
LW
2339 umips) osname=umips ;;
2340 *) osname=mips ;;
2304df62 2341 esac;;
85e6fe83
LW
2342 [23]100) osname=mips ;;
2343 next*) osname=next ;;
ecfc5424 2344 i386*)
c6912327
JH
2345 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2346 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2347 osname='sco'
2348 osvers=$tmp
2349 elif $test -f /etc/kconfig; then
ecfc5424 2350 osname=isc
bd628c73 2351 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2352 osvers=4
2353 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2354 osvers=3
2304df62 2355 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2356 osvers=2
ecfc5424
AD
2357 fi
2358 fi
2000072c 2359 tmp=''
ecfc5424 2360 ;;
c4f23d77
AD
2361 pc*)
2362 if test -n "$DJGPP"; then
2363 osname=dos
2364 osvers=djgpp
2365 fi
2366 ;;
2304df62
AD
2367 esac
2368
2369 case "$1" in
a0d0e21e
LW
2370 aix) osname=aix
2371 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2372 case "$tmp" in
1aef975c 2373 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2374 '<3240'|'<>3240') osvers=3.2.0 ;;
2375 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2376 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2377 *) osvers=$tmp;;
a0d0e21e
LW
2378 esac
2379 ;;
aaacdc8b
GS
2380 bsd386) osname=bsd386
2381 osvers=`$uname -r`
2382 ;;
2383 cygwin*) osname=cygwin
2384 osvers="$3"
2385 ;;
23f87696
SZ
2386 *dc.osx) osname=dcosx
2387 osvers="$3"
2388 ;;
a0d0e21e
LW
2389 dnix) osname=dnix
2390 osvers="$3"
2391 ;;
2392 domainos) osname=apollo
2393 osvers="$3"
2394 ;;
2395 dgux) osname=dgux
2396 osvers="$3"
2397 ;;
760ac839 2398 dynixptx*) osname=dynixptx
e58e581d 2399 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2400 ;;
a0d0e21e
LW
2401 freebsd) osname=freebsd
2402 osvers="$3" ;;
2403 genix) osname=genix ;;
2404 hp*) osname=hpux
bfb7748a 2405 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2406 ;;
a78b0d02 2407 irix*) osname=irix
a0d0e21e
LW
2408 case "$3" in
2409 4*) osvers=4 ;;
2410 5*) osvers=5 ;;
ecfc5424 2411 *) osvers="$3" ;;
a0d0e21e
LW
2412 esac
2413 ;;
2414 linux) osname=linux
2415 case "$3" in
a0d0e21e
LW
2416 *) osvers="$3" ;;
2417 esac
2418 ;;
28e8609d
JH
2419 MiNT) osname=mint
2420 ;;
2421 netbsd*) osname=netbsd
ecfc5424
AD
2422 osvers="$3"
2423 ;;
4e81affe
MM
2424 news-os) osvers="$3"
2425 case "$3" in
2426 4*) osname=newsos4 ;;
2427 *) osname=newsos ;;
2428 esac
2429 ;;
aaacdc8b 2430 next*) osname=next ;;
48bcfe03 2431 NonStop-UX) osname=nonstopux ;;
aaacdc8b
GS
2432 POSIX-BC | posix-bc ) osname=posix-bc
2433 osvers="$3"
a0d0e21e 2434 ;;
ae3afa4e
TH
2435 powerux | power_ux | powermax_os | powermaxos | \
2436 powerunix | power_unix) osname=powerux
2437 osvers="$3"
2438 ;;
aaacdc8b
GS
2439 qnx) osname=qnx
2440 osvers="$4"
2441 ;;
a0d0e21e
LW
2442 solaris) osname=solaris
2443 case "$3" in
2444 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2445 *) osvers="$3" ;;
a0d0e21e
LW
2446 esac
2447 ;;
85e6fe83
LW
2448 sunos) osname=sunos
2449 case "$3" in
85e6fe83
LW
2450 5*) osname=solaris
2451 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2452 *) osvers="$3" ;;
2304df62
AD
2453 esac
2454 ;;
a0d0e21e 2455 titanos) osname=titanos
85e6fe83 2456 case "$3" in
a0d0e21e
LW
2457 1*) osvers=1 ;;
2458 2*) osvers=2 ;;
2459 3*) osvers=3 ;;
2460 4*) osvers=4 ;;
ecfc5424 2461 *) osvers="$3" ;;
2304df62
AD
2462 esac
2463 ;;
85e6fe83 2464 ultrix) osname=ultrix
ecfc5424 2465 osvers="$3"
2304df62 2466 ;;
28757baa 2467 osf1|mls+) case "$5" in
fed7345c
AD
2468 alpha)
2469 osname=dec_osf
2aa76180
JH
2470 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2471 case "$osvers" in
2472 [1-9].[0-9]*) ;;
2473 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2474 esac
ecfc5424
AD
2475 ;;
2476 hp*) osname=hp_osf1 ;;
2477 mips) osname=mips_osf1 ;;
85e6fe83
LW
2478 esac
2479 ;;
0337d152
BG
2480 unixware) osname=svr5
2481 osvers="$4"
2482 ;;
2483 uts) osname=uts
a0d0e21e
LW
2484 osvers="$3"
2485 ;;
85e6fe83 2486 $2) case "$osname" in
2304df62 2487 *isc*) ;;
a0d0e21e 2488 *freebsd*) ;;
5f05dabc 2489 svr*)
a0d0e21e
LW
2490 : svr4.x or possibly later
2491 case "svr$3" in
2492 ${osname}*)
2493 osname=svr$3
2494 osvers=$4
2495 ;;
2496 esac
2497 case "$osname" in
2498 svr4.0)
2499 : Check for ESIX
2500 if test -f /stand/boot ; then
2501 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2502 if test -n "$INITPROG" -a -f "$INITPROG"; then
2503 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2504 if test -n "$isesix"; then
a0d0e21e
LW
2505 osname=esix4
2506 fi
2507 fi
2508 fi
2509 ;;
2510 esac
2511 ;;
2304df62 2512 *) if test -f /etc/systemid; then
a0d0e21e
LW
2513 osname=sco
2514 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2515 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2516 osvers=$1.$2.$3
c4f23d77 2517 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2518 osvers=$1.$2
c4f23d77 2519 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2520 osvers=$1
2304df62 2521 fi
a0d0e21e
LW
2522 else
2523 case "$osname" in
2524 '') : Still unknown. Probably a generic Sys V.
2525 osname="sysv"
2526 osvers="$3"
2527 ;;
2528 esac
2304df62
AD
2529 fi
2530 ;;
2531 esac
2532 ;;
a0d0e21e
LW
2533 *) case "$osname" in
2534 '') : Still unknown. Probably a generic BSD.
2535 osname="$1"
2536 osvers="$3"
2537 ;;
2538 esac
2539 ;;
2304df62
AD
2540 esac
2541 else
dfe9444c
AD
2542 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2543 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2544 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2545 osname=news_os
2304df62 2546 fi
dfe9444c 2547 $rm -f UU/kernel.what
8e07c86e
AD
2548 elif test -d c:/.; then
2549 set X $myuname
2550 osname=os2
2551 osvers="$5"
2304df62
AD
2552 fi
2553 fi
85e6fe83 2554
a0d0e21e
LW
2555 : Now look for a hint file osname_osvers, unless one has been
2556 : specified already.
2557 case "$hintfile" in
2558 ''|' ')
1e127011 2559 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2560 : Also try without trailing minor version numbers.
1e127011
DD
2561 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2562 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2563 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2564 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2565 case "$file" in
2566 '') dflt=none ;;
2567 *) case "$osvers" in
2568 '') dflt=$file
2569 ;;
dfe9444c 2570 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2571 dflt=$file
dfe9444c 2572 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2573 dflt=$xfile
dfe9444c 2574 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2575 dflt=$xxfile
dfe9444c 2576 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2577 dflt=$xxxfile
dfe9444c 2578 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2579 dflt=$xxxxfile
dfe9444c 2580 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2581 dflt="${osname}"
2582 else
2583 dflt=none
2584 fi
2585 ;;
2586 esac
85e6fe83
LW
2587 ;;
2588 esac
4e2a5f63
AD
2589 if $test -f Policy.sh ; then
2590 case "$dflt" in
2591 *Policy*) ;;
2592 none) dflt="Policy" ;;
2593 *) dflt="Policy $dflt" ;;
2594 esac
2595 fi
85e6fe83 2596 ;;
a0d0e21e 2597 *)
ecfc5424 2598 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2599 ;;
2304df62 2600 esac
1aef975c 2601
4e2a5f63
AD
2602 if $test -f Policy.sh ; then
2603 $cat <<EOM
2604
2605There's also a Policy hint file available, which should make the
2606site-specific (policy) questions easier to answer.
2607EOM
2608
2609 fi
2610
2304df62
AD
2611 $cat <<EOM
2612
2613You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2614A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2615is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2616
2617EOM
4e2a5f63 2618
2304df62 2619 rp="Which of these apply, if any?"
dfe9444c 2620 . UU/myread
85e6fe83
LW
2621 tans=$ans
2622 for file in $tans; do
4e2a5f63
AD
2623 if $test X$file = XPolicy -a -f Policy.sh; then
2624 . Policy.sh
2625 $cat Policy.sh >> UU/config.sh
2626 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2627 . $src/hints/$file.sh
2628 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2629 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2630 : nothing
2631 else
85e6fe83
LW
2632 : Give one chance to correct a possible typo.
2633 echo "$file.sh does not exist"
2634 dflt=$file
2635 rp="hint to use instead?"
dfe9444c 2636 . UU/myread
85e6fe83 2637 for file in $ans; do
dfe9444c
AD
2638 if $test -f "$src/hints/$file.sh"; then
2639 . $src/hints/$file.sh
2640 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2641 elif $test X$ans = X -o X$ans = Xnone ; then
2642 : nothing
2643 else
2644 echo "$file.sh does not exist -- ignored."
2645 fi
2646 done
2304df62
AD
2647 fi
2648 done
85e6fe83 2649
2304df62 2650 hint=recommended
85e6fe83 2651 : Remember our hint file for later.
dfe9444c 2652 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2653 hintfile="$file"
85e6fe83 2654 else
a0d0e21e 2655 hintfile=''
85e6fe83 2656 fi
2304df62
AD
2657fi
2658cd UU
2659;;
2660*)
2661 echo " "
2662 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2663 tmp_n="$n"
2664 tmp_c="$c"
2304df62
AD
2665 cd ..
2666 cp $config_sh config.sh 2>/dev/null
a78b0d02 2667 chmod +w config.sh
2304df62
AD
2668 . ./config.sh
2669 cd UU
2670 cp ../config.sh .
ecfc5424
AD
2671 n="$tmp_n"
2672 c="$tmp_c"
2304df62
AD
2673 hint=previous
2674 ;;
2675esac
1aef975c
AD
2676test "$override" && . ./optdef.sh
2677myuname="$newmyuname"
2304df62
AD
2678
2679: Restore computed paths
2680for file in $loclist $trylist; do
2681 eval $file="\$_$file"
2682done
2683
85e6fe83 2684cat << EOM
a0d0e21e 2685
85e6fe83 2686Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2687The default value is probably right if the name rings a bell. Otherwise,
2688since spelling matters for me, either accept the default or answer "none"
2689to leave it blank.
a0d0e21e 2690
85e6fe83 2691EOM
85e6fe83 2692case "$osname" in
a0d0e21e 2693 ''|' ')
85e6fe83 2694 case "$hintfile" in
a0d0e21e 2695 ''|' '|none) dflt=none ;;
ecfc5424 2696 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2697 esac
2698 ;;
2699 *) dflt="$osname" ;;
2700esac
2701rp="Operating system name?"
2702. ./myread
2703case "$ans" in
ecfc5424
AD
2704none) osname='' ;;
2705*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2706esac
8ff267be 2707echo " "
2708case "$osvers" in
2709 ''|' ')
2710 case "$hintfile" in
2711 ''|' '|none) dflt=none ;;
2712 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2713 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2714 case "$dflt" in
2715 ''|' ') dflt=none ;;
2716 esac
2717 ;;
2718 esac
2719 ;;
2720 *) dflt="$osvers" ;;
2721esac
2722rp="Operating system version?"
2723. ./myread
2724case "$ans" in
2725none) osvers='' ;;
2726*) osvers="$ans" ;;
2727esac
2728
02e93a22
JH
2729
2730. ./posthint.sh
2731
2304df62 2732: who configured the system
59b83a6f 2733cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2734cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2735case "$cf_by" in
2736"")
8ff267be 2737 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2738 case "$cf_by" in
2739 "") cf_by=unknown ;;
8ff267be 2740 esac ;;
2741esac
2304df62 2742
b4eb6b3d
JH
2743: set up the script used to warn in case of inconsistency
2744cat <<EOS >whoa
2745$startsh
2746EOS
2747cat <<'EOSC' >>whoa
2748dflt=y
2749echo " "
2750echo "*** WHOA THERE!!! ***" >&4
2751echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2752rp=" Keep the $hint value?"
2753. ./myread
2754case "$ans" in
2755y) td=$was; tu=$was;;
2756esac
2757EOSC
2758
2759: function used to set $1 to $val
2760setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2761case "$val$was" in
2762$define$undef) . ./whoa; eval "$var=\$td";;
2763$undef$define) . ./whoa; eval "$var=\$tu";;
2764*) eval "$var=$val";;
2765esac'
2766
2767case "$usethreads" in
2768$define|true|[yY]*) dflt='y';;
2769*) dflt='n';;
2770esac
2771cat <<EOM
2772
2773Perl can be built to take advantage of threads on some systems.
2774To do so, Configure can be run with -Dusethreads.
2775
2776Note that threading is a highly experimental feature, and
2777some known race conditions still remain. If you choose to try
2778it, be very sure to not actually deploy it for production
2779purposes. README.threads has more details, and is required
2780reading if you enable threads.
2781
2782If this doesn't make any sense to you, just accept the default '$dflt'.
2783EOM
2784rp='Build a threading Perl?'
2785. ./myread
2786case "$ans" in
2787y|Y) val="$define" ;;
2788*) val="$undef" ;;
2789esac
2790set usethreads
2791eval $setvar
2792
2793case "$usethreads" in
2794$define)
2795 $cat <<EOM
2796
2797As of 5.5.640, Perl has two different internal threading implementations,
2798the 5.005 version (5005threads) and an interpreter-based version
2799(ithreads) that has one interpreter per thread. Both are very
2800experimental. This arrangement exists to help developers work out
2801which one is better.
2802
2803If you're a casual user, you probably don't want interpreter-threads
2804at this time. There doesn't yet exist a way to create threads from
2805within Perl in this model, i.e., "use Thread;" will NOT work.
2806EOM
2807 : Default to ithreads unless overridden on command line or with
2808 : old config.sh
2809 dflt='y'
2810 case "$use5005threads" in
2811 $define|true|[yY]*) dflt='n';;
2812 esac
2813 case "$useithreads" in
2814 $undef|false|[nN]*) dflt='n';;
2815 esac
2816 rp='Use interpreter-based ithreads?'
2817 . ./myread
2818 case "$ans" in
2819 y|Y) val="$define" ;;
2820 *) val="$undef" ;;
2821 esac
2822 set useithreads
2823 eval $setvar
2824 : Now set use5005threads to the opposite value.
2825 case "$useithreads" in
2826 $define) val="$undef" ;;
2827 *) val="$define" ;;
2828 esac
2829 set use5005threads
2830 eval $setvar
2831 ;;
2832*)
2833 useithreads="$undef"
2834 use5005threads="$undef"
2835 ;;
2836esac
2837
2838case "$d_oldpthreads" in
2839'') : Configure tests would be welcome here. For now, assume undef.
2840 val="$undef" ;;
2841*) val="$d_oldpthreads" ;;
2842esac
2843set d_oldpthreads
2844eval $setvar
2845
2846
2847case "$usethreads" in
2848"$define"|true|[yY]*)
2849: Look for a hint-file generated 'call-back-unit'. If the
2850: user has specified that a threading perl is to be built,
2851: we may need to set or change some other defaults.
2852 if $test -f usethreads.cbu; then
2853 echo "Your platform has some specific hints for threaded builds, using them..."
2854 . ./usethreads.cbu
2855 else
2856 $cat <<EOM
2857(Your platform doesn't have any specific hints for threaded builds.
2858 Assuming POSIX threads, then.)
2859EOM
2860 fi
2861 ;;
2862esac
2863
2864cat <<EOM
2865
2866Perl can be built so that multiple Perl interpreters can coexist
2867within the same Perl executable.
2868EOM
2869
2870case "$useithreads" in
2871$define)
2872 cat <<EOM
2873This multiple interpreter support is required for interpreter-based threads.
2874EOM
2875 val="$define"
2876 ;;
2877*) case "$usemultiplicity" in
2878 $define|true|[yY]*) dflt='y';;
2879 *) dflt='n';;
2880 esac
2881 echo " "
2882 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2883 rp='Build Perl for multiplicity?'
2884 . ./myread
2885 case "$ans" in
2886 y|Y) val="$define" ;;
2887 *) val="$undef" ;;
2888 esac
2889 ;;
2890esac
2891set usemultiplicity
2892eval $setvar
2893
e5e20432
JH
2894: make some quick guesses about what we are up against
2895echo " "
2896$echo $n "Hmm... $c"
2897echo exit 1 >bsd
2898echo exit 1 >usg
2899echo exit 1 >v7
2900echo exit 1 >osf1
2901echo exit 1 >eunice
2902echo exit 1 >xenix
2903echo exit 1 >venix
2904echo exit 1 >os2
2905d_bsd="$undef"
2906$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2907if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2908then
2909 echo "Looks kind of like an OSF/1 system, but we'll see..."
2910 echo exit 0 >osf1
381aa1ff 2911elif test `echo abc | $tr a-z A-Z` = Abc ; then
e5e20432
JH
2912 xxx=`./loc addbib blurfl $pth`
2913 if $test -f $xxx; then
2914 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2915 echo exit 0 >bsd
2916 echo exit 0 >usg
2917 else
2918 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2919 echo "Looks kind of like an extended USG system, but we'll see..."
2920 else
2921 echo "Looks kind of like a USG system, but we'll see..."
2922 fi
2923 echo exit 0 >usg
2924 fi
2925elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2926 echo "Looks kind of like a BSD system, but we'll see..."
2927 d_bsd="$define"
2928 echo exit 0 >bsd
2929else
2930 echo "Looks kind of like a Version 7 system, but we'll see..."
2931 echo exit 0 >v7
2932fi
2933case "$eunicefix" in
2934*unixtovms*)
2935 $cat <<'EOI'
2936There is, however, a strange, musty smell in the air that reminds me of
2937something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2938EOI
2939 echo exit 0 >eunice
2940 d_eunice="$define"
2941: it so happens the Eunice I know will not run shell scripts in Unix format
2942 ;;
2943*)
2944 echo " "
2945 echo "Congratulations. You aren't running Eunice."
2946 d_eunice="$undef"
2947 ;;
2948esac
2949: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
2950: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2951: semicolon as a patch separator
e5e20432
JH
2952case "$p_" in
2953:) ;;
2954*)
2955 $cat <<'EOI'
2956I have the feeling something is not exactly right, however...don't tell me...
2957lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 2958(Or you may be running DOS with DJGPP.)
e5e20432
JH
2959EOI
2960 echo exit 0 >os2
2961 ;;
2962esac
2963if test -f /xenix; then
2964 echo "Actually, this looks more like a XENIX system..."
2965 echo exit 0 >xenix
2966 d_xenix="$define"
2967else
2968 echo " "
2969 echo "It's not Xenix..."
2970 d_xenix="$undef"
2971fi
2972chmod +x xenix
2973$eunicefix xenix
2974if test -f /venix; then
2975 echo "Actually, this looks more like a VENIX system..."
2976 echo exit 0 >venix
2977else
2978 echo " "
2979 if ./xenix; then
2980 : null
2981 else
2982 echo "Nor is it Venix..."
2983 fi
2984fi
2985chmod +x bsd usg v7 osf1 eunice xenix venix os2
2986$eunicefix bsd usg v7 osf1 eunice xenix venix os2
2987$rm -f foo
2988
5869b1f1
JH
2989case "$cc" in
2990'') dflt=cc;;
2991*) dflt="$cc";;
2992esac
2993rp="Use which C compiler?"
2994. ./myread
2995cc="$ans"
e5e20432
JH
2996: Look for a hint-file generated 'call-back-unit'. Now that the
2997: user has specified the compiler, we may need to set or change some
2998: other defaults.
2999if $test -f cc.cbu; then
3000 . ./cc.cbu
3001fi
2573c5f9 3002. ./checkcc
8a27cf78 3003
e5e20432
JH
3004echo " "
3005echo "Checking for GNU cc in disguise and/or its version number..." >&4
3006$cat >gccvers.c <<EOM
3007#include <stdio.h>
3008int main() {
3009#ifdef __GNUC__
3010#ifdef __VERSION__
3011 printf("%s\n", __VERSION__);
3012#else
3013 printf("%s\n", "1");
3014#endif
3015#endif
3016 exit(0);
3017}
3018EOM
7a282f6d 3019if $cc -o gccvers $ldflags gccvers.c; then
e5e20432
JH
3020 gccversion=`./gccvers`
3021 case "$gccversion" in
3022 '') echo "You are not using GNU cc." ;;
fc68435e 3023 *) echo "You are using GNU cc $gccversion."
e723fc21 3024 ccname=gcc
fc68435e 3025 ;;
e5e20432
JH
3026 esac
3027else
3028 echo " "
3029 echo "*** WHOA THERE!!! ***" >&4
3030 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3031 case "$knowitall" in
3032 '')
3033 echo " You'd better start hunting for one and let me know about it." >&4
3034 exit 1
3035 ;;
3036 esac
3037fi
3038$rm -f gccvers*
3039case "$gccversion" in
30401*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3041esac
5b463ca7
KS
3042case "$gccversion" in
3043'') gccosandvers='' ;;
10b4ebb5
JH
3044*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3045 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3046 gccshortvers=''
5b463ca7 3047 case "$gccosandvers" in
02903077
JH
3048 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3049 $osname$osvers) ;; # looking good
5b463ca7
KS
3050 $osname*) cat <<EOM >&4
3051
3052*** WHOA THERE!!! ***
3053
3054 Your gcc has not been compiled for the exact release of
3055 your operating system ($gccosandvers versus $osname$osvers).
3056
3057 In general it is a good idea to keep gcc synchronized with
3058 the operating system because otherwise serious problems
3059 may ensue when trying to compile software, like Perl.
3060
3061 I'm trying to be optimistic here, though, and will continue.
3062 If later during the configuration and build icky compilation
02903077
JH
3063 problems appear (headerfile conflicts being the most common
3064 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3065 your operating system release.
3066
3067EOM
3068 ;;
81575342 3069 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3070 esac
3071 ;;
3072esac
e723fc21
JH
3073case "$ccname" in
3074'') ccname="$cc" ;;
3075esac
e5e20432 3076
8a27cf78
JH
3077: see how we invoke the C preprocessor
3078echo " "
3079echo "Now, how can we feed standard input to your C preprocessor..." >&4
3080cat <<'EOT' >testcpp.c
3081#define ABC abc
3082#define XYZ xyz
3083ABC.XYZ
3084EOT
3085cd ..
3086if test ! -f cppstdin; then
3087 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3088 # AIX cc -E doesn't show the absolute headerfile
3089 # locations but we'll cheat by using the -M flag.
3090 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
3091 else
3092 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3093 fi
3094else
3095 echo "Keeping your $hint cppstdin wrapper."
3096fi
3097chmod 755 cppstdin
3098wrapper=`pwd`/cppstdin
3099ok='false'
3100cd UU
3101
3102if $test "X$cppstdin" != "X" && \
3103 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3104 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3105then
3106 echo "You used to use $cppstdin $cppminus so we'll use that again."
3107 case "$cpprun" in
3108 '') echo "But let's see if we can live without a wrapper..." ;;
3109 *)
3110 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3111 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3112 then
3113 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3114 ok='true'
3115 else
3116 echo "(However, $cpprun $cpplast does not work, let's see...)"
3117 fi
3118 ;;
3119 esac
3120else
3121 case "$cppstdin" in
3122 '') ;;
3123 *)
3124 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3125 ;;
3126 esac
3127fi
3128
3129if $ok; then
3130 : nothing
3131elif echo 'Maybe "'"$cc"' -E" will work...'; \
3132 $cc -E <testcpp.c >testcpp.out 2>&1; \
3133 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3134 echo "Yup, it does."
3135 x_cpp="$cc -E"
3136 x_minus='';
3137elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3138 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3139 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3140 echo "Yup, it does."
3141 x_cpp="$cc -E"
3142 x_minus='-';
3143elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3144 $cc -P <testcpp.c >testcpp.out 2>&1; \
3145 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3146 echo "Yipee, that works!"
3147 x_cpp="$cc -P"
3148 x_minus='';
3149elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3150 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3151 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3152 echo "At long last!"
3153 x_cpp="$cc -P"
3154 x_minus='-';
3155elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3156 $cpp <testcpp.c >testcpp.out 2>&1; \
3157 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3158 echo "It works!"
3159 x_cpp="$cpp"
3160 x_minus='';
3161elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3162 $cpp - <testcpp.c >testcpp.out 2>&1; \
3163 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3164 echo "Hooray, it works! I was beginning to wonder."
3165 x_cpp="$cpp"
3166 x_minus='-';
3167elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3168 $wrapper <testcpp.c >testcpp.out 2>&1; \
3169 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3170 x_cpp="$wrapper"
3171 x_minus=''
3172 echo "Eureka!"
3173else
3174 dflt=''
3175 rp="No dice. I can't find a C preprocessor. Name one:"
3176 . ./myread
3177 x_cpp="$ans"
3178 x_minus=''
3179 $x_cpp <testcpp.c >testcpp.out 2>&1
3180 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3181 echo "OK, that will do." >&4
3182 else
3183echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3184 exit 1
3185 fi
3186fi
3187
3188case "$ok" in
3189false)
3190 cppstdin="$x_cpp"
3191 cppminus="$x_minus"
3192 cpprun="$x_cpp"
3193 cpplast="$x_minus"
3194 set X $x_cpp
3195 shift
3196 case "$1" in
3197 "$cpp")
3198 echo "Perhaps can we force $cc -E using a wrapper..."
3199 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3200 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3201 then
3202 echo "Yup, we can."
3203 cppstdin="$wrapper"
3204 cppminus='';
3205 else
3206 echo "Nope, we'll have to live without it..."
3207 fi
3208 ;;
3209 esac
3210 case "$cpprun" in
3211 "$wrapper")
3212 cpprun=''
3213 cpplast=''
3214 ;;
3215 esac
3216 ;;
3217esac
3218
3219case "$cppstdin" in
3220"$wrapper"|'cppstdin') ;;
3221*) $rm -f $wrapper;;
3222esac
3223$rm -f testcpp.c testcpp.out
3224
bd9b35c9
JH
3225: decide how portable to be. Allow command line overrides.
3226case "$d_portable" in
3227"$undef") ;;
3228*) d_portable="$define" ;;
104d25b7 3229esac
85ab1d1d 3230
bd9b35c9
JH
3231: set up shell script to do ~ expansion
3232cat >filexp <<EOSS
3233$startsh
3234: expand filename
3235case "\$1" in
3236 ~/*|~)
3237 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3238 ;;
3239 ~*)
3240 if $test -f /bin/csh; then
3241 /bin/csh -f -c "glob \$1"
3242 failed=\$?
3243 echo ""
3244 exit \$failed
e5e20432 3245 else
bd9b35c9
JH
3246 name=\`$expr x\$1 : '..\([^/]*\)'\`
3247 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3248 if $test ! -d "\$dir"; then
3249 me=\`basename \$0\`
3250 echo "\$me: can't locate home directory for: \$name" >&2
3251 exit 1
3252 fi
3253 case "\$1" in
3254 */*)
3255 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3256 ;;
3257 *)
3258 echo \$dir
e5e20432
JH
3259 ;;
3260 esac
3261 fi
b691c02f 3262 ;;
4633a7c4 3263*)
bd9b35c9 3264 echo \$1
2304df62
AD
3265 ;;
3266esac
4633a7c4
LW
3267EOSS
3268chmod +x filexp
3269$eunicefix filexp
2304df62
AD
3270
3271: now set up to get a file name
28757baa 3272cat <<EOS >getfile
3273$startsh
3274EOS
3275cat <<'EOSC' >>getfile
2304df62
AD
3276tilde=''
3277fullpath=''
3278already=''
3279skip=''
3280none_ok=''
3281exp_file=''
a0d0e21e 3282nopath_ok=''
2304df62
AD
3283orig_rp="$rp"
3284orig_dflt="$dflt"
b233458b
JH
3285case "$gfpth" in
3286'') gfpth='.' ;;
3287esac
2304df62
AD
3288
3289case "$fn" in
ecfc5424 3290*\(*)
381aa1ff 3291 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
ecfc5424
AD
3292 fn=`echo $fn | sed 's/(.*)//'`
3293 ;;
3294esac
3295
3296case "$fn" in
a0d0e21e
LW
3297*:*)
3298 loc_file=`expr $fn : '.*:\(.*\)'`
3299 fn=`expr $fn : '\(.*\):.*'`
3300 ;;
3301esac
3302
3303case "$fn" in
2304df62
AD
3304*~*) tilde=true;;
3305esac
3306case "$fn" in
3307*/*) fullpath=true;;
3308esac
3309case "$fn" in
3310*+*) skip=true;;
3311esac
3312case "$fn" in
3313*n*) none_ok=true;;
3314esac
3315case "$fn" in
3316*e*) exp_file=true;;
3317esac
a0d0e21e
LW
3318case "$fn" in
3319*p*) nopath_ok=true;;
3320esac
2304df62
AD
3321
3322case "$fn" in
3323*f*) type='File';;
3324*d*) type='Directory';;
a0d0e21e 3325*l*) type='Locate';;
2304df62
AD
3326esac
3327
3328what="$type"
3329case "$what" in
3330Locate) what='File';;
3331esac
3332
3333case "$exp_file" in
3334'')
3335 case "$d_portable" in
3336 "$define") ;;
3337 *) exp_file=true;;
3338 esac
3339 ;;
3340esac
3341
3342cd ..
3343while test "$type"; do
3344 redo=''
3345 rp="$orig_rp"
3346 dflt="$orig_dflt"
3347 case "$tilde" in
3348 true) rp="$rp (~name ok)";;
3349 esac
3350 . UU/myread
ecfc5424
AD
3351 if test -f UU/getfile.ok && \
3352 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3353 then
3354 value="$ans"
3355 ansexp="$ans"
3356 break
3357 fi
2304df62
AD
3358 case "$ans" in
3359 none)
3360 value=''
3361 ansexp=''
3362 case "$none_ok" in
3363 true) type='';;
3364 esac
3365 ;;
3366 *)
3367 case "$tilde" in
3368 '') value="$ans"
3369 ansexp="$ans";;
3370 *)
3371 value=`UU/filexp $ans`
3372 case $? in
3373 0)
3374 if test "$ans" != "$value"; then
ecfc5424 3375 echo "(That expands to $value on this system.)"
2304df62
AD
3376 fi
3377 ;;
3378 *) value="$ans";;
3379 esac
3380 ansexp="$value"
3381 case "$exp_file" in
3382 '') value="$ans";;
3383 esac
3384 ;;
3385 esac
3386 case "$fullpath" in
3387 true)
3388 case "$ansexp" in
3389 /*) value="$ansexp" ;;
23da6c43 3390 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3391 *)
3392 redo=true
3393 case "$already" in
3394 true)
3395 echo "I shall only accept a full path name, as in /bin/ls." >&4
3396 echo "Use a ! shell escape if you wish to check pathnames." >&4
3397 ;;
3398 *)
3399 echo "Please give a full path name, starting with slash." >&4
3400 case "$tilde" in
3401 true)
3402 echo "Note that using ~name is ok provided it expands well." >&4
3403 already=true
3404 ;;
3405 esac
3406 esac
3407 ;;
3408 esac
3409 ;;
3410 esac
3411 case "$redo" in
3412 '')
3413 case "$type" in
3414 File)
b233458b
JH
3415 for fp in $gfpth; do
3416 if test "X$fp" = X.; then
3417 pf="$ansexp"
3418 else
3419 pf="$fp/$ansexp"
3420 fi
3421 if test -f "$pf"; then
3422 type=''
3423 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3424 then
3425 echo "($value is not a plain file, but that's ok.)"
3426 type=''
3427 fi
3428 if test X"$type" = X; then
3429 value="$pf"
3430 break
3431 fi
3432 done
2304df62
AD
3433 ;;
3434 Directory)
b233458b
JH
3435 for fp in $gfpth; do
3436 if test "X$fp" = X.; then
f78bfc9c
JH
3437 dir="$ans"
3438 direxp="$ansexp"
b233458b 3439 else
dd858076 3440 dir="$fp/$ansexp"
f78bfc9c 3441 direxp="$fp/$ansexp"
b233458b 3442 fi
f78bfc9c 3443 if test -d "$direxp"; then
b233458b 3444 type=''
f78bfc9c 3445 value="$dir"
b233458b
JH
3446 break
3447 fi
3448 done
2304df62
AD
3449 ;;
3450 Locate)
40000a8c 3451 if test -d "$ansexp"; then
a0d0e21e
LW
3452 echo "(Looking for $loc_file in directory $value.)"
3453 value="$value/$loc_file"
40000a8c 3454 ansexp="$ansexp/$loc_file"
2304df62 3455 fi
40000a8c 3456 if test -f "$ansexp"; then
2304df62
AD
3457 type=''
3458 fi
a0d0e21e
LW
3459 case "$nopath_ok" in
3460 true) case "$value" in
3461 */*) ;;
3462 *) echo "Assuming $value will be in people's path."
3463 type=''
3464 ;;
3465 esac
3466 ;;
3467 esac
2304df62
AD
3468 ;;
3469 esac
3470
3471 case "$skip" in
3472 true) type='';
3473 esac
3474
3475 case "$type" in
3476 '') ;;
3477 *)
3478 if test "$fastread" = yes; then
3479 dflt=y
3480 else
3481 dflt=n
3482 fi
3483 rp="$what $value doesn't exist. Use that name anyway?"
3484 . UU/myread
3485 dflt=''
3486 case "$ans" in
3487 y*) type='';;
3488 *) echo " ";;
3489 esac
3490 ;;
3491 esac
3492 ;;
3493 esac
3494 ;;
3495 esac
3496done
3497cd UU
3498ans="$value"
3499rp="$orig_rp"
3500dflt="$orig_dflt"
ecfc5424 3501rm -f getfile.ok
b233458b 3502test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3503EOSC
3504
bd9b35c9
JH
3505: What should the include directory be ?
3506echo " "
3507$echo $n "Hmm... $c"
3508dflt='/usr/include'
3509incpath=''
3510mips_type=''
3511if $test -f /bin/mips && /bin/mips; then
3512 echo "Looks like a MIPS system..."
3513 $cat >usr.c <<'EOCP'
3514#ifdef SYSTYPE_BSD43
3515/bsd43
3516#endif
3517EOCP
8a27cf78 3518 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3519 dflt='/bsd43/usr/include'
3520 incpath='/bsd43'
3521 mips_type='BSD 4.3'
3522 else
3523 mips_type='System V'
3524 fi
3525 $rm -f usr.c usr.out
3526 echo "and you're compiling with the $mips_type compiler and libraries."
3527 xxx_prompt=y
3528 echo "exit 0" >mips
3529else
3530 echo "Doesn't look like a MIPS system."
3531 xxx_prompt=n
3532 echo "exit 1" >mips
3533fi
3534chmod +x mips
3535$eunicefix mips
3536case "$usrinc" in
3537'') ;;
3538*) dflt="$usrinc";;
3539esac
3540case "$xxx_prompt" in
3541y) fn=d/
3542 echo " "
3543 rp='Where are the include files you want to use?'
3544 . ./getfile
3545 usrinc="$ans"
8e07c86e 3546 ;;
bd9b35c9 3547*) usrinc="$dflt"
8e07c86e
AD
3548 ;;
3549esac
2304df62 3550
bd9b35c9
JH
3551: Set private lib path
3552case "$plibpth" in
3553'') if ./mips; then
3554 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3555 fi;;
3556esac
3557case "$libpth" in
3558' ') dlist='';;
3559'') dlist="$loclibpth $plibpth $glibpth";;
3560*) dlist="$libpth";;
3561esac
3562
3563: Now check and see which directories actually exist, avoiding duplicates
3564libpth=''
3565for xxx in $dlist
3566do
3567 if $test -d $xxx; then
3568 case " $libpth " in
3569 *" $xxx "*) ;;
3570 *) libpth="$libpth $xxx";;
3571 esac
3572 fi
3573done
3574$cat <<'EOM'
3575
3576Some systems have incompatible or broken versions of libraries. Among
3577the directories listed in the question below, please remove any you
3578know not to be holding relevant libraries, and add any that are needed.
3579Say "none" for none.
8e07c86e
AD
3580
3581EOM
bd9b35c9
JH
3582case "$libpth" in
3583'') dflt='none';;
8e07c86e 3584*)
bd9b35c9
JH
3585 set X $libpth
3586 shift
3587 dflt=${1+"$@"}
8e07c86e 3588 ;;
a0d0e21e 3589esac
bd9b35c9
JH
3590rp="Directories to use for library searches?"
3591. ./myread
3592case "$ans" in
3593none) libpth=' ';;
3594*) libpth="$ans";;
3595esac
a0d0e21e 3596
bd9b35c9
JH
3597: compute shared library extension
3598case "$so" in
3599'')
3600 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3601 dflt='sl'
dd4e71fd 3602 else
bd9b35c9 3603 dflt='so'
dd4e71fd
JH
3604 fi
3605 ;;
bd9b35c9 3606*) dflt="$so";;
dd4e71fd 3607esac
dd4e71fd
JH
3608$cat <<EOM
3609
bd9b35c9 3610On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3611you want to suppress searching of shared libraries for the remainder
bd9b35c9 3612of this configuration.
dd4e71fd
JH
3613
3614EOM
bd9b35c9
JH
3615rp='What is the file extension used for shared libraries?'
3616. ./myread
3617so="$ans"
dd4e71fd 3618
bd9b35c9
JH
3619: Define several unixisms.
3620: Hints files or command line option can be used to override them.
3621: The convoluted testing is in case hints files set either the old
3622: or the new name.
3623case "$_exe" in
3624'') case "$exe_ext" in
3625 '') ;;
3626 *) _exe="$exe_ext" ;;
dd4e71fd 3627 esac
bd9b35c9 3628 ;;
bfb7748a 3629esac
bd9b35c9
JH
3630case "$_a" in
3631'') case "$lib_ext" in
3632 '') _a='.a';;
3633 *) _a="$lib_ext" ;;
dd4e71fd
JH
3634 esac
3635 ;;
dd4e71fd 3636esac
bd9b35c9
JH
3637case "$_o" in
3638'') case "$obj_ext" in
3639 '') _o='.o';;
3640 *) _o="$obj_ext";;
3641 esac
3642 ;;
3643esac
3644case "$p_" in
3645'') case "$path_sep" in
3646 '') p_=':';;
3647 *) p_="$path_sep";;
3648 esac
3649 ;;
3650esac
3651exe_ext=$_exe
3652lib_ext=$_a
3653obj_ext=$_o
3654path_sep=$p_
dd4e71fd 3655
b4eb6b3d
JH
3656: Which makefile gets called first. This is used by make depend.
3657case "$firstmakefile" in
3658'') firstmakefile='makefile';;
4633a7c4 3659esac
4633a7c4 3660
0f0995ae
JH
3661case "$usesocks" in
3662$define|true|[yY]*) dflt='y';;
3663*) dflt='n';;
3664esac
bd9b35c9 3665cat <<EOM
4633a7c4 3666
bd9b35c9
JH
3667Perl can be built to use the SOCKS proxy protocol library. To do so,
3668Configure must be run with -Dusesocks.
4633a7c4 3669
0f0995ae 3670If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3671EOM
bd9b35c9
JH
3672rp='Build Perl for SOCKS?'
3673. ./myread
3674case "$ans" in
3675y|Y) val="$define" ;;
3676*) val="$undef" ;;
3677esac
3678set usesocks
3679eval $setvar
3680
3681: Looking for optional libraries
3682echo " "
3683echo "Checking for optional libraries..." >&4
3684case "$libs" in
3685' '|'') dflt='';;
3686*) dflt="$libs";;
3687esac
3688case "$libswanted" in
3689'') libswanted='c_s';;
3690esac
3691case "$usesocks" in
923fc586 3692"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3693esac
68435ea7
JH
3694libsfound=''
3695libsfiles=''
3696libsdirs=''
13b3f787
JH
3697libspath=''
3698for thisdir in $libpth $xlibpth; do
3699 test -d $thisdir && libspath="$libspath $thisdir"
3700done
bd9b35c9 3701for thislib in $libswanted; do
13b3f787 3702 for thisdir in $libspath; do
f7dd4e7f
JH
3703 xxx=''
3704 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3705 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3706 $test -f "$xxx" && eval $libscheck
3707 $test -f "$xxx" && libstyle=shared
3708 fi
3709 if test ! -f "$xxx"; then
3710 xxx=$thisdir/lib$thislib.$so
3711 $test -f "$xxx" && eval $libscheck
3712 $test -f "$xxx" && libstyle=shared
3713 fi
3714 if test ! -f "$xxx"; then
3715 xxx=$thisdir/lib$thislib$_a
3716 $test -f "$xxx" && eval $libscheck
3717 $test -f "$xxx" && libstyle=static
3718 fi
3719 if test ! -f "$xxx"; then
3720 xxx=$thisdir/$thislib$_a
3721 $test -f "$xxx" && eval $libscheck
3722 $test -f "$xxx" && libstyle=static
3723 fi
3724 if test ! -f "$xxx"; then
3725 xxx=$thisdir/lib${thislib}_s$_a
3726 $test -f "$xxx" && eval $libscheck
3727 $test -f "$xxx" && libstyle=static
09ea5ba9 3728 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3729 fi
3730 if test ! -f "$xxx"; then
3731 xxx=$thisdir/Slib$thislib$_a
3732 $test -f "$xxx" && eval $libscheck
3733 $test -f "$xxx" && libstyle=static
3734 fi
3735 if $test -f "$xxx"; then
43999f95 3736 case "$libstyle" in
f7dd4e7f
JH
3737 shared) echo "Found -l$thislib (shared)." ;;
3738 static) echo "Found -l$thislib." ;;
3739 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3740 esac
bd9b35c9
JH
3741 case " $dflt " in
3742 *"-l$thislib "*);;
f7dd4e7f 3743 *) dflt="$dflt -l$thislib"
43999f95
JH
3744 libsfound="$libsfound $xxx"
3745 yyy=`basename $xxx`
3746 libsfiles="$libsfiles $yyy"
1e127011 3747 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3748 case " $libsdirs " in
3749 *" $yyy "*) ;;
3750 *) libsdirs="$libsdirs $yyy" ;;
3751 esac
3752 ;;
bd9b35c9 3753 esac
f7dd4e7f
JH
3754 break
3755 fi
3756 done
3757 if $test ! -f "$xxx"; then
3758 echo "No -l$thislib."
bd9b35c9
JH
3759 fi
3760done
3761set X $dflt
3762shift
3763dflt="$*"
3764case "$libs" in
3765'') dflt="$dflt";;
3766*) dflt="$libs";;
3767esac
3768case "$dflt" in
3769' '|'') dflt='none';;
3770esac
4633a7c4 3771
bd9b35c9 3772$cat <<EOM
4633a7c4 3773
bd9b35c9
JH
3774In order to compile $package on your machine, a number of libraries
3775are usually needed. Include any other special libraries here as well.
3776Say "none" for none. The default list is almost always right.
8e07c86e 3777EOM
8e07c86e 3778
bd9b35c9
JH
3779echo " "
3780rp="What libraries to use?"
3781. ./myread
3782case "$ans" in
3783none) libs=' ';;
3784*) libs="$ans";;
3785esac
d71b2b6b 3786
bd9b35c9
JH
3787: determine optimization, if desired, or use for debug flag also
3788case "$optimize" in
3789' '|$undef) dflt='none';;
3790'') dflt='-O';;
3791*) dflt="$optimize";;
3792esac
3793$cat <<EOH
d71b2b6b 3794
bd9b35c9
JH
3795By default, $package compiles with the -O flag to use the optimizer.
3796Alternately, you might want to use the symbolic debugger, which uses
3797the -g flag (on traditional Unix systems). Either flag can be
3798specified here. To use neither flag, specify the word "none".
d71b2b6b 3799
bd9b35c9
JH
3800EOH
3801rp="What optimizer/debugger flag should be used?"
3802. ./myread
3803optimize="$ans"
3804case "$optimize" in
3805'none') optimize=" ";;
3806esac
3807
3808dflt=''
3809: We will not override a previous value, but we might want to
3810: augment a hint file
3811case "$hint" in
3812default|recommended)
3813 case "$gccversion" in
3814 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 3815 esac
bd9b35c9
JH
3816 case "$optimize" in
3817 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 3818 esac
bd9b35c9
JH
3819 case "$gccversion" in
3820 2*) if test -d /etc/conf/kconfig.d &&
3821 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3822 then
3823 dflt="$dflt -posix"
3824 fi
f0d04425 3825 ;;
bd9b35c9
JH
3826 esac
3827 case "$gccversion" in
3828 1*) ;;
3829 2.[0-8]*) ;;
3830 ?*) echo " "
3831 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3832 echo 'int main(void) { return 0; }' > gcctest.c
3833 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3834 echo "Yes, it does." 2>&1
3835 case "$ccflags" in
3836 *strict-aliasing*)
3837 echo "Leaving current flags $ccflags alone." 2>&1
3838 ;;
3839 *) dflt="$dflt -fno-strict-aliasing" ;;
3840 esac
3841 else
3842 echo "Nope, it doesn't, but that's ok." 2>&1
3843 fi
f0d04425 3844 ;;
e5e20432
JH
3845 esac
3846 ;;
3847esac
3848
bd9b35c9
JH
3849case "$mips_type" in
3850*BSD*|'') inclwanted="$locincpth $usrinc";;
3851*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3852esac
3853for thisincl in $inclwanted; do
3854 if $test -d $thisincl; then
3855 if $test x$thisincl != x$usrinc; then
3856 case "$dflt" in
422af00a
LC
3857 *" -I$thisincl "*);;
3858 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
3859 esac
3860 fi
3861 fi
3862done
40a7a20a 3863
bd9b35c9
JH
3864inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3865 xxx=true;
3866elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3867 xxx=true;
3868else
3869 xxx=false;
3870fi;
3871if $xxx; then
3872 case "$dflt" in
3873 *$2*);;
3874 *) dflt="$dflt -D$2";;
3875 esac;
3876fi'
40a7a20a 3877
bd9b35c9 3878set signal.h LANGUAGE_C; eval $inctest
40a7a20a 3879
bd9b35c9
JH
3880case "$usesocks" in
3881$define)
3882 ccflags="$ccflags -DSOCKS"
3883 ;;
3884esac
40a7a20a 3885
bd9b35c9
JH
3886case "$hint" in
3887default|recommended) dflt="$ccflags $dflt" ;;
3888*) dflt="$ccflags";;
3889esac
40a7a20a 3890
bd9b35c9
JH
3891case "$dflt" in
3892''|' ') dflt=none;;
3893esac
422af00a 3894
bd9b35c9 3895$cat <<EOH
40a7a20a 3896
bd9b35c9
JH
3897Your C compiler may want other flags. For this question you should include
3898-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3899but you should NOT include libraries or ld flags like -lwhatever. If you
3900want $package to honor its debug switch, you should include -DDEBUGGING here.
3901Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 3902
bd9b35c9 3903To use no flags, specify the word "none".
40a7a20a 3904
bd9b35c9
JH
3905EOH
3906set X $dflt
3907shift
3908dflt=${1+"$@"}
3909rp="Any additional cc flags?"
3910. ./myread
3911case "$ans" in
3912none) ccflags='';;
3913*) ccflags="$ans";;
3914esac
8e07c86e 3915
bd9b35c9
JH
3916: the following weeds options from ccflags that are of no interest to cpp
3917cppflags="$ccflags"
3918case "$gccversion" in
39191*) cppflags="$cppflags -D__GNUC__"
4633a7c4 3920esac
bd9b35c9
JH
3921case "$mips_type" in
3922'');;
3923*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3924esac
3925case "$cppflags" in
3926'');;
3927*)
3928 echo " "
3929 echo "Let me guess what the preprocessor flags are..." >&4
3930 set X $cppflags
3931 shift
3932 cppflags=''
3933 $cat >cpp.c <<'EOM'
3934#define BLURFL foo
8e07c86e 3935
bd9b35c9
JH
3936BLURFL xx LFRULB
3937EOM
3938 previous=''
3939 for flag in $*
3940 do
3941 case "$flag" in
3942 -*) ftry="$flag";;
3943 *) ftry="$previous $flag";;
3944 esac
3945 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3946 >cpp1.out 2>/dev/null && \
3947 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3948 >cpp2.out 2>/dev/null && \
3949 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3950 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3951 then
3952 cppflags="$cppflags $ftry"
3953 previous=''
3954 else
3955 previous="$flag"
3956 fi
3957 done
3958 set X $cppflags
3959 shift
3960 cppflags=${1+"$@"}
3961 case "$cppflags" in
3962 *-*) echo "They appear to be: $cppflags";;
3963 esac
3964 $rm -f cpp.c cpp?.out
2afac517 3965 ;;
3966esac
8e07c86e 3967
bd9b35c9
JH
3968: flags used in final linking phase
3969case "$ldflags" in
3970'') if ./venix; then
3971 dflt='-i -z'
10a23457 3972 else
bd9b35c9 3973 dflt=''
10a23457 3974 fi
bd9b35c9
JH
3975 case "$ccflags" in
3976 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 3977 esac
bd9b35c9
JH
3978 ;;
3979*) dflt="$ldflags";;
3980esac
3981
3982: Try to guess additional flags to pick up local libraries.
3983for thislibdir in $libpth; do
3984 case " $loclibpth " in
3985 *" $thislibdir "*)
3986 case "$dflt " in
3987 *"-L$thislibdir "*) ;;
3988 *) dflt="$dflt -L$thislibdir" ;;
3989 esac
c4f23d77
AD
3990 ;;
3991 esac
bd9b35c9 3992done
c4f23d77 3993
bd9b35c9
JH
3994case "$dflt" in
3995'') dflt='none' ;;
3996esac
c4f23d77 3997
bd9b35c9
JH
3998$cat <<EOH
3999
4000Your C linker may need flags. For this question you should
4001include -L/whatever and any other flags used by the C linker, but you
4002should NOT include libraries like -lwhatever.
4003
4004Make sure you include the appropriate -L/path flags if your C linker
4005does not normally search all of the directories you specified above,
4006namely
4007 $libpth
4008To use no flags, specify the word "none".
4009
4010EOH
4011
4012rp="Any additional ld flags (NOT including libraries)?"
4013. ./myread
4014case "$ans" in
4015none) ldflags='';;
4016*) ldflags="$ans";;
4017esac
4018rmlist="$rmlist pdp11"
4019
4020: coherency check
4021echo " "
4022echo "Checking your choice of C compiler and flags for coherency..." >&4
4023$cat > try.c <<'EOF'
4024#include <stdio.h>
4025int main() { printf("Ok\n"); exit(0); }
4026EOF
7a282f6d 4027set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4028shift
4029$cat >try.msg <<'EOM'
4030I've tried to compile and run the following simple program:
4031
4032EOM
4033$cat try.c >> try.msg
4034
4035$cat >> try.msg <<EOM
4036
4037I used the command:
4038
4039 $*
4040 ./try
4041
4042and I got the following output:
4043
4044EOM
4045dflt=y
7a282f6d 4046if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
bd9b35c9
JH
4047 if sh -c './try' >>try.msg 2>&1; then
4048 xxx=`./try`
4049 case "$xxx" in
4050 "Ok") dflt=n ;;
4051 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4052 case " $libs " in
4053 *" -lsfio "*)
4054 cat >> try.msg <<'EOQS'
4055If $libs contains -lsfio, and sfio is mis-configured, then it
4056sometimes (apparently) runs and exits with a 0 status, but with no
4057output! It may have to do with sfio's use of _exit vs. exit.
4058
4059EOQS
4060 rp="You have a big problem. Shall I abort Configure"
4061 dflt=y
4062 ;;
4063 esac
4064 ;;
4065 esac
4066 else
4067 echo "The program compiled OK, but exited with status $?." >>try.msg
4068 rp="You have a problem. Shall I abort Configure"
4069 dflt=y
4070 fi
4071else
4072 echo "I can't compile the test program." >>try.msg
4073 rp="You have a BIG problem. Shall I abort Configure"
4074 dflt=y
4075fi
4076case "$dflt" in
4077y)
4078 $cat try.msg >&4
4079 case "$knowitall" in
4080 '')
4081 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4082 ;;
bd9b35c9 4083 *) dflt=n;;
c4f23d77 4084 esac
bd9b35c9
JH
4085 echo " "
4086 . ./myread
4087 case "$ans" in
4088 n*|N*) ;;
4089 *) echo "Ok. Stopping Configure." >&4
4090 exit 1
c4f23d77
AD
4091 ;;
4092 esac
4093 ;;
bd9b35c9 4094n) echo "OK, that should do.";;
c4f23d77 4095esac
bd9b35c9 4096$rm -f try try.* core
c4f23d77 4097
b4eb6b3d
JH
4098: define an is-a-typedef? function
4099typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4100case "$inclist" in
4101"") inclist="sys/types.h";;
4102esac;
4103eval "varval=\$$var";
4104case "$varval" in
4105"")
4106 $rm -f temp.c;
4107 for inc in $inclist; do
4108 echo "#include <$inc>" >>temp.c;
4109 done;
4110 echo "#ifdef $type" >> temp.c;
4111 echo "printf(\"We have $type\");" >> temp.c;
4112 echo "#endif" >> temp.c;
4113 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4114 if $contains $type temp.E >/dev/null 2>&1; then
4115 eval "$var=\$type";
4116 else
4117 eval "$var=\$def";
4118 fi;
4119 $rm -f temp.?;;
4120*) eval "$var=\$varval";;
4121esac'
4122
4123: define an is-a-typedef? function that prompts if the type is not available.
4124typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4125case "$inclist" in
4126"") inclist="sys/types.h";;
4127esac;
4128eval "varval=\$$var";
4129case "$varval" in
4130"")
4131 $rm -f temp.c;
4132 for inc in $inclist; do
4133 echo "#include <$inc>" >>temp.c;
4134 done;
4135 echo "#ifdef $type" >> temp.c;
4136 echo "printf(\"We have $type\");" >> temp.c;
4137 echo "#endif" >> temp.c;
4138 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4139 echo " " ;
4140 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4141 if $contains $type temp.E >/dev/null 2>&1; then
4142 echo "$type found." >&4;
4143 eval "$var=\$type";
4144 else
4145 echo "$type NOT found." >&4;
4146 dflt="$def";
4147 . ./myread ;
4148 eval "$var=\$ans";
4149 fi;
4150 $rm -f temp.?;;
4151*) eval "$var=\$varval";;
4152esac'
4153
bd9b35c9
JH
4154: define a shorthand compile call
4155compile='
4156mc_file=$1;
4157shift;
08413ebc 4158$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4159: define a shorthand compile call for compilations that should be ok.
4160compile_ok='
4161mc_file=$1;
4162shift;
7a282f6d 4163$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4164
b4eb6b3d 4165: check for lengths of integral types
bd9b35c9 4166echo " "
b4eb6b3d
JH
4167case "$intsize" in
4168'')
4169 echo "Checking to see how big your integers are..." >&4
4170 $cat >intsize.c <<'EOCP'
bd9b35c9
JH
4171#include <stdio.h>
4172int main()
4173{
b4eb6b3d
JH
4174 printf("intsize=%d;\n", (int)sizeof(int));
4175 printf("longsize=%d;\n", (int)sizeof(long));
4176 printf("shortsize=%d;\n", (int)sizeof(short));
4177 exit(0);
bd9b35c9 4178}
b4eb6b3d
JH
4179EOCP
4180 set intsize
4181 if eval $compile_ok && ./intsize > /dev/null; then
4182 eval `./intsize`
4183 echo "Your integers are $intsize bytes long."
4184 echo "Your long integers are $longsize bytes long."
4185 echo "Your short integers are $shortsize bytes long."
4186 else
4187 $cat >&4 <<EOM
4188!
4189Help! I can't compile and run the intsize test program: please enlighten me!
4190(This is probably a misconfiguration in your system or libraries, and
4191you really ought to fix it. Still, I'll try anyway.)
4192!
bd9b35c9 4193EOM
b4eb6b3d
JH
4194 dflt=4
4195 rp="What is the size of an integer (in bytes)?"
4196 . ./myread
4197 intsize="$ans"
4198 dflt=$intsize
4199 rp="What is the size of a long integer (in bytes)?"
4200 . ./myread
4201 longsize="$ans"
4202 dflt=2
4203 rp="What is the size of a short integer (in bytes)?"
4204 . ./myread
4205 shortsize="$ans"
4206 fi
4207 ;;
4208esac
4209$rm -f intsize intsize.*
c1a7f87b 4210
b4eb6b3d
JH
4211: see what type lseek is declared as in the kernel
4212rp="What is the type used for lseek's offset on this system?"
4213set off_t lseektype long stdio.h sys/types.h
4214eval $typedef_ask
4215
4216echo " "
4217echo "Checking to see how big your file offsets are..." >&4
4218$cat >try.c <<EOCP
4219#include <sys/types.h>
4220#include <stdio.h>
4221int main()
4222{
4223 printf("%d\n", (int)sizeof($lseektype));
4224 return(0);
4225}
4226EOCP
4227set try
4228if eval $compile_ok; then
4229 lseeksize=`./try`
4230 echo "Your file offsets are $lseeksize bytes long."
4231else
4232 dflt=$longsize
4233 echo " "
4234 echo "(I can't seem to compile the test program. Guessing...)"
4235 rp="What is the size of your file offsets (in bytes)?"
4236 . ./myread
4237 lseeksize="$ans"
4238fi
4239$rm -f try.c try
4240
4241: see what type file positions are declared as in the library
4242rp="What is the type for file position used by fsetpos()?"
4243set fpos_t fpostype long stdio.h sys/types.h
4244eval $typedef_ask
4245
4246echo " "
4247case "$fpostype" in
4248*_t) zzz="$fpostype" ;;
4249*) zzz="fpos_t" ;;
4250esac
4251echo "Checking the size of $zzz..." >&4
4252cat > try.c <<EOCP
4253#include <sys/types.h>
4254#include <stdio.h>
4255int main() {
4256 printf("%d\n", (int)sizeof($fpostype));
4257 exit(0);
4258}
4259EOCP
4260set try
4261if eval $compile_ok; then
4262 yyy=`./try`
4263 case "$yyy" in
4264 '') fpossize=4
4265 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4266 ;;
4267 *) fpossize=$yyy
4268 echo "Your $zzz is $fpossize bytes long."
4269 ;;
4270 esac
4271else
4272 dflt="$longsize"
4273 echo " " >&4
4274 echo "(I can't compile the test program. Guessing...)" >&4
4275 rp="What is the size of your file positions (in bytes)?"
4276 . ./myread
4277 fpossize="$ans"
4278fi
4279
4280
4281
4282# Backward compatibility (uselfs is deprecated).
4283case "$uselfs" in
4284"$define"|true|[yY]*)
4285 cat <<EOM >&4
4286
4287*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4288EOM
4289 uselargefiles="$define"
4290 ;;
4291esac
4292
4293case "$lseeksize:$fpossize" in
42948:8) cat <<EOM
4295
4296You can have files larger than 2 gigabytes.
4297EOM
4298 val="$define" ;;
4299*) case "$uselargefiles" in
4300 "$undef"|false|[nN]*) dflt='n' ;;
4301 *) dflt='y' ;;
4302 esac
4303 cat <<EOM
4304
4305Perl can be built to understand large files (files larger than 2 gigabytes)
4306on some systems. To do so, Configure can be run with -Duselargefiles.
4307
4308If this doesn't make any sense to you, just accept the default '$dflt'.
4309EOM
4310 rp='Try to understand large files, if available?'
4311 . ./myread
4312 case "$ans" in
4313 y|Y) val="$define" ;;
4314 *) val="$undef" ;;
4315 esac
4316 ;;
4317esac
4318set uselargefiles
4319eval $setvar
4320case "$uselargefiles" in
4321"$define")
4322: Look for a hint-file generated 'call-back-unit'. If the
4323: user has specified that a large files perl is to be built,
4324: we may need to set or change some other defaults.
4325 if $test -f uselargefiles.cbu; then
4326 echo "Your platform has some specific hints for large file builds, using them..."
4327 . ./uselargefiles.cbu
4328 echo " "
4329 echo "Rechecking to see how big your file offsets are..." >&4
4330 $cat >try.c <<EOCP
4331#include <sys/types.h>
4332#include <stdio.h>
4333int main()
4334{
4335 printf("%d\n", (int)sizeof($lseektype));
4336 return(0);
4337}
4338EOCP
4339 set try
4340 if eval $compile_ok; then
4341 lseeksize=`./try`
4342 $echo "Your file offsets are now $lseeksize bytes long."
4343 else
4344 dflt="$lseeksize"
4345 echo " "
4346 echo "(I can't seem to compile the test program. Guessing...)"
4347 rp="What is the size of your file offsets (in bytes)?"
4348 . ./myread
4349 lseeksize="$ans"
4350 fi
4351 case "$fpostype" in
4352 *_t) zzz="$fpostype" ;;
4353 *) zzz="fpos_t" ;;
4354 esac
4355 $echo $n "Rechecking the size of $zzz...$c" >&4
4356 $cat > try.c <<EOCP
4357#include <sys/types.h>
4358#include <stdio.h>
4359int main() {
4360 printf("%d\n", (int)sizeof($fpostype));
4361 exit(0);
4362}
4363EOCP
4364 set try
4365 if eval $compile_ok; then
4366 yyy=`./try`
4367 dflt="$lseeksize"
4368 case "$yyy" in
4369 '') echo " "
4370 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4371 ;;
4372 *) fpossize=$yyy
4373 echo " $fpossize bytes." >&4
4374 ;;
4375 esac
4376 else
4377 dflt="$fpossize"
4378 echo " "
4379 echo "(I can't compile the test program. Guessing...)" >&4
4380 rp="What is the size of your file positions (in bytes)?"
4381 . ./myread
4382 fpossize="$ans"
4383 fi
4384 $rm -f try.c try
4385 fi
4386 ;;
4387esac
4388
4389
4390case "$usemorebits" in
4391"$define"|true|[yY]*)
4392 use64bitint="$define"
4393 uselongdouble="$define"
4394 usemorebits="$define"
4395 ;;
4396*) usemorebits="$undef"
4397 ;;
4398esac
4399
4400
4401case "$uselonglong" in
4402"$define"|true|[yY]*)
4403 cat <<EOM >&4
4404
4405*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4406EOM
4407 use64bitint="$define"
4408 ;;
4409esac
4410case "$use64bits" in
4411"$define"|true|[yY]*)
4412 cat <<EOM >&4
4413
4414*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4415EOM
4416 use64bitint="$define"
4417 ;;
4418esac
4419case "$use64bitints" in
4420"$define"|true|[yY]*)
4421 cat <<EOM >&4
4422
4423*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4424EOM
4425 use64bitint="$define"
4426 ;;
4427esac
4428case "$use64bitsint" in
4429"$define"|true|[yY]*)
4430 cat <<EOM >&4
4431
4432*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4433EOM
4434 use64bitint="$define"
4435 ;;
4436esac
4437case "$uselonglongs" in
4438"$define"|true|[yY]*)
4439 cat <<EOM >&4
4440
4441*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4442EOM
4443 use64bitint="$define"
4444 ;;
4445esac
4446case "$use64bitsall" in
4447"$define"|true|[yY]*)
4448 cat <<EOM >&4
4449
4450*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4451EOM
4452 use64bitall="$define"
4453 ;;
4454esac
4455
4456case "$ccflags" in
4457*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4458esac
4459case "$use64bitall" in
4460"$define"|true|[yY]*) use64bitint="$define" ;;
4461esac
4462
4463case "$longsize" in
44648) cat <<EOM
4465
4466You have natively 64-bit long integers.
4467EOM
4468 val="$define"
4469 ;;
4470*) case "$use64bitint" in
4471 "$define"|true|[yY]*) dflt='y';;
4472 *) dflt='n';;
4473 esac
4474 cat <<EOM
4475
4476Perl can be built to take advantage of 64-bit integer types
4477on some systems. To do so, Configure can be run with -Duse64bitint.
4478Choosing this option will most probably introduce binary incompatibilities.
4479
4480If this doesn't make any sense to you, just accept the default '$dflt'.
4481EOM
4482 rp='Try to use 64-bit integers, if available?'
4483 . ./myread
4484 case "$ans" in
4485 [yY]*) val="$define" ;;
4486 *) val="$undef" ;;
4487 esac
4488 ;;
4489esac
4490set use64bitint
4491eval $setvar
4492
4493case "$use64bitall" in
4494"$define"|true|[yY]*) dflt='y' ;;
4495*) case "$longsize" in
4496 8) dflt='y' ;;
4497 *) dflt='n' ;;
4498 esac
4499 ;;
4500esac
4501cat <<EOM
4502
4503You may also choose to try maximal 64-bitness. It means using as much
450464-bitness as possible on the platform. This in turn means even more
4505binary incompatibilities. On the other hand, your platform may not
4506have any more 64-bitness available than what you already have chosen.
4507
4508If this doesn't make any sense to you, just accept the default '$dflt'.
4509EOM
4510rp='Try to use maximal 64-bit support, if available?'
4511. ./myread
4512case "$ans" in
4513[yY]*) val="$define" ;;
4514*) val="$undef" ;;
4515esac
4516set use64bitall
4517eval $setvar
4518case "$use64bitall" in
4519"$define")
4520 case "$use64bitint" in
4521 "$undef")
4522 cat <<EOM
4523
4524Since you have chosen a maximally 64-bit build, I'm also turning on
4525the use of 64-bit integers.
4526EOM
4527 use64bitint="$define" ;;
4528 esac
4529 ;;
4530esac
4531
4532case "$use64bitint" in
4533"$define"|true|[yY]*)
4534: Look for a hint-file generated 'call-back-unit'. If the
4535: user has specified that a 64-bit perl is to be built,
4536: we may need to set or change some other defaults.
4537 if $test -f use64bitint.cbu; then
4538 echo "Your platform has some specific hints for 64-bit integers, using them..."
4539 . ./use64bitint.cbu
4540 fi
4541 case "$longsize" in
4542 4) case "$archname64" in
4543 '') archname64=64int ;;
4544 esac
4545 ;;
4546 esac
4547 ;;
4548esac
4549
4550case "$use64bitall" in
4551"$define"|true|[yY]*)
4552: Look for a hint-file generated 'call-back-unit'. If the
4553: user has specified that a maximally 64-bit perl is to be built,
4554: we may need to set or change some other defaults.
4555 if $test -f use64bitall.cbu; then
4556 echo "Your platform has some specific hints for 64-bit builds, using them..."
4557 . ./use64bitall.cbu
4558 fi
4559 case "$longsize" in
4560 4) case "$archname64" in
4561 ''|64int) archname64=64all ;;
4562 esac
4563 ;;
4564 esac
4565 ;;
4566esac
4567
4568echo " "
4569echo "Checking for GNU C Library..." >&4
4570cat >gnulibc.c <<EOM
4571#include <stdio.h>
4572int main()
4573{
4574#ifdef __GLIBC__
4575 exit(0);
4576#else
4577 exit(1);
4578#endif
4579}
4580EOM
4581set gnulibc
4582if eval $compile_ok && ./gnulibc; then
4583 val="$define"
4584 echo "You are using the GNU C Library"
4585else
4586 val="$undef"
4587 echo "You are not using the GNU C Library"
4588fi
4589$rm -f gnulibc*
4590set d_gnulibc
4591eval $setvar
4592
4593: see if nm is to be used to determine whether a symbol is defined or not
4594case "$usenm" in
4595'')
4596 dflt=''
c1a7f87b
JH
4597 case "$d_gnulibc" in
4598 "$define")
4599 echo " "
4600 echo "nm probably won't work on the GNU C Library." >&4
4601 dflt=n
bd9b35c9 4602 ;;
c1a7f87b
JH
4603 esac
4604 case "$dflt" in
4605 '')
4606 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4607 echo " "
4608 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4609 echo "'nm' won't be sufficient on this sytem." >&4
4610 dflt=n
4611 fi
4612 ;;
4613 esac
4614 case "$dflt" in
4615 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4616 if $test $dflt -gt 20; then
4617 dflt=y
4618 else
4619 dflt=n
4620 fi
bd9b35c9
JH
4621 ;;
4622 esac
bd9b35c9
JH
4623 ;;
4624*)
c1a7f87b
JH
4625 case "$usenm" in
4626 true|$define) dflt=y;;
4627 *) dflt=n;;
4628 esac
bd9b35c9
JH
4629 ;;
4630esac
4631$cat <<EOM
4632
c1a7f87b
JH
4633I can use $nm to extract the symbols from your C libraries. This
4634is a time consuming task which may generate huge output on the disk (up
4635to 3 megabytes) but that should make the symbols extraction faster. The
4636alternative is to skip the 'nm' extraction part and to compile a small
4637test program instead to determine whether each symbol is present. If
4638you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4639this may be the best solution.
4640
4641You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
4642
4643EOM
c1a7f87b
JH
4644rp="Shall I use $nm to extract C symbols from the libraries?"
4645. ./myread
4646case "$ans" in
4647[Nn]*) usenm=false;;
4648*) usenm=true;;
bd9b35c9 4649esac
bd9b35c9 4650
c1a7f87b
JH
4651runnm=$usenm
4652case "$reuseval" in
4653true) runnm=false;;
8e07c86e 4654esac
29209bc5 4655
c1a7f87b
JH
4656: nm options which may be necessary
4657case "$nm_opt" in
4658'') if $test -f /mach_boot; then
4659 nm_opt='' # Mach
4660 elif $test -d /usr/ccs/lib; then
4661 nm_opt='-p' # Solaris (and SunOS?)
4662 elif $test -f /dgux; then
4663 nm_opt='-p' # DG-UX
4664 elif $test -f /lib64/rld; then
4665 nm_opt='-p' # 64-bit Irix
4666 else
4667 nm_opt=''
4668 fi;;
4669esac
bd9b35c9 4670
c1a7f87b
JH
4671: nm options which may be necessary for shared libraries but illegal
4672: for archive libraries. Thank you, Linux.
4673case "$nm_so_opt" in
4674'') case "$myuname" in
4675 *linux*)
4676 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4677 nm_so_opt='--dynamic'
4678 fi
4679 ;;
bd9b35c9 4680 esac
c1a7f87b
JH
4681 ;;
4682esac
8e07c86e 4683
c1a7f87b
JH
4684case "$runnm" in
4685true)
4686: get list of predefined functions in a handy place
4687echo " "
4688case "$libc" in
4689'') libc=unknown
4690 case "$libs" in
4691 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 4692 esac
ff935051
JH
4693 ;;
4694esac
c1a7f87b
JH
4695libnames='';
4696case "$libs" in
4697'') ;;
4698*) for thislib in $libs; do
4699 case "$thislib" in
4700 -lc|-lc_s)
4701 : Handle C library specially below.
4702 ;;
4703 -l*)
4704 thislib=`echo $thislib | $sed -e 's/^-l//'`
4705 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4706 :
4707 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4708 :
4709 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4710 :
4711 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4712 :
4713 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4714 :
4715 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4716 :
4717 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4718 :
4719 else
4720 try=''
4721 fi
4722 libnames="$libnames $try"
4723 ;;
4724 *) libnames="$libnames $thislib" ;;
34d1710f 4725 esac
c1a7f87b 4726 done
4633a7c4
LW
4727 ;;
4728esac
c1a7f87b
JH
4729xxx=normal
4730case "$libc" in
4731unknown)
4732 set /lib/libc.$so
4733 for xxx in $libpth; do
4734 $test -r $1 || set $xxx/libc.$so
4735 : The messy sed command sorts on library version numbers.
4736 $test -r $1 || \
4737 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4738 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4739 h
4740 s/[0-9][0-9]*/0000&/g
4741 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4742 G
4743 s/\n/ /' | \
381aa1ff 4744 $sort | $sed -e 's/^.* //'`
c1a7f87b
JH
4745 eval set \$$#
4746 done
4747 $test -r $1 || set /usr/ccs/lib/libc.$so
4748 $test -r $1 || set /lib/libsys_s$_a
4749 ;;
4750*)
4751 set blurfl
4752 ;;
a4f3eea9 4753esac
c1a7f87b
JH
4754if $test -r "$1"; then
4755 echo "Your (shared) C library seems to be in $1."
4756 libc="$1"
4757elif $test -r /lib/libc && $test -r /lib/clib; then
4758 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4759 xxx=apollo
4760 libc='/lib/clib /lib/libc'
4761 if $test -r /lib/syslib; then
4762 echo "(Your math library is in /lib/syslib.)"
4763 libc="$libc /lib/syslib"
4764 fi
4765elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4766 echo "Your C library seems to be in $libc, as you said before."
4767elif $test -r $incpath/usr/lib/libc$_a; then
4768 libc=$incpath/usr/lib/libc$_a;
4769 echo "Your C library seems to be in $libc. That's fine."
4770elif $test -r /lib/libc$_a; then
4771 libc=/lib/libc$_a;
4772 echo "Your C library seems to be in $libc. You're normal."
4773else
4774 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4775 :
4776 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4777 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4778 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4779 :
4780 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4781 :
4782 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4783 :
4784 else
4785 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4786 fi
4787 if $test -r "$tans"; then
4788 echo "Your C library seems to be in $tans, of all places."
4789 libc=$tans
4790 else
4791 libc='blurfl'
4792 fi
4793fi
4794if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4795 dflt="$libc"
4796 cat <<EOM
a4f3eea9 4797
c1a7f87b
JH
4798If the guess above is wrong (which it might be if you're using a strange
4799compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
4800
4801EOM
a4f3eea9 4802else
c1a7f87b 4803 dflt=''
381aa1ff 4804 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
c1a7f87b
JH
4805 cat >&4 <<EOM
4806I can't seem to find your C library. I've looked in the following places:
a4f3eea9 4807
c1a7f87b
JH
4808EOM
4809 $sed 's/^/ /' libpath
4810 cat <<EOM
29209bc5 4811
c1a7f87b 4812None of these seems to contain your C library. I need to get its name...
a4f3eea9 4813
bd9b35c9 4814EOM
bd9b35c9 4815fi
c1a7f87b
JH
4816fn=f
4817rp='Where is your C library?'
4818. ./getfile
4819libc="$ans"
a4f3eea9 4820
c1a7f87b 4821echo " "
381aa1ff 4822echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
c1a7f87b
JH
4823set X `cat libnames`
4824shift
4825xxx=files
4826case $# in 1) xxx=file; esac
4827echo "Extracting names from the following $xxx for later perusal:" >&4
4828echo " "
4829$sed 's/^/ /' libnames >&4
4830echo " "
4831$echo $n "This may take a while...$c" >&4
a4f3eea9 4832
c1a7f87b
JH
4833for file in $*; do
4834 case $file in
4835 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4836 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4837 esac
c1a7f87b 4838done >libc.tmp
a4f3eea9 4839
c1a7f87b
JH
4840$echo $n ".$c"
4841$grep fprintf libc.tmp > libc.ptf
4842xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4843xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4844xxx='[ADTSIW]'
4845if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4846 eval $xscan;\
4847 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848 eval $xrun
4849elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4850 eval $xscan;\
4851 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852 eval $xrun
4853elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4854 eval $xscan;\
4855 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856 eval $xrun
4857elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4858 eval $xscan;\
4859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860 eval $xrun
4861elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4862 eval $xscan;\
4863 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864 eval $xrun
4865elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4866 eval $xscan;\
4867 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868 eval $xrun
4869elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4870 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4871 eval $xscan;\
4872 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873 eval $xrun
4874elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4875 eval $xscan;\
4876 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877 eval $xrun
4878elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4879 eval $xscan;\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881 eval $xrun
4882elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4883 eval $xscan;\
4884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885 eval $xrun
4886elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4887 eval $xscan;\
4888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889 eval $xrun
4890elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4891 eval $xscan;\
4892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893 eval $xrun
4894elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4895 eval $xscan;\
4896 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4897 eval $xrun
4898elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4899 eval $xscan;\
4900 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4901 eval $xrun
4902else
4903 $nm -p $* 2>/dev/null >libc.tmp
4904 $grep fprintf libc.tmp > libc.ptf
4905 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4906 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4907 then
4908 nm_opt='-p'
4909 eval $xrun
bd9b35c9 4910 else
c1a7f87b
JH
4911 echo " "
4912 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4913 com=''
4914 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4915 for thisname in $libnames $libc; do
4916 $ar t $thisname >>libc.tmp
4917 done
4918 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4919 echo "Ok." >&4
4920 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4921 # Repeat libc to extract forwarders to DLL entries too
4922 for thisname in $libnames $libc; do
4923 $ar tv $thisname >>libc.tmp
4924 # Revision 50 of EMX has bug in $ar.
4925 # it will not extract forwarders to DLL entries
4926 # Use emximp which will extract exactly them.
4927 emximp -o tmp.imp $thisname \
4928 2>/dev/null && \
4929 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4930 < tmp.imp >>libc.tmp
4931 $rm tmp.imp
4932 done
4933 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4934 echo "Ok." >&4
4935 else
4936 echo "$ar didn't seem to work right." >&4
4937 echo "Maybe this is a Cray...trying bld instead..." >&4
4938 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4939 then
4940 for thisname in $libnames; do
4941 bld t $libnames | \
4942 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4943 $ar t $thisname >>libc.tmp
4944 done
4945 echo "Ok." >&4
bd9b35c9 4946 else
c1a7f87b
JH
4947 echo "That didn't work either. Giving up." >&4
4948 exit 1
bd9b35c9 4949 fi
c1a7f87b 4950 fi
a4f3eea9 4951 fi
a4f3eea9 4952fi
c1a7f87b
JH
4953nm_extract="$com"
4954if $test -f /lib/syscalls.exp; then
4955 echo " "
4956 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4957 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4958fi
4959;;
4960esac
4961$rm -f libnames libpath
bd9b35c9 4962
c1a7f87b
JH
4963: is a C symbol defined?
4964csym='tlook=$1;
4965case "$3" in
4966-v) tf=libc.tmp; tc=""; tdc="";;
4967-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4968*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4969esac;
4970tx=yes;
4971case "$reuseval-$4" in
4972true-) ;;
4973true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4974esac;
4975case "$tx" in
4976yes)
4977 case "$runnm" in
4978 true)
4979 if $contains $tlook $tf >/dev/null 2>&1;
4980 then tval=true;
4981 else tval=false;
4982 fi;;
4983 *)
4984 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 4985 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
4986 then tval=true;
4987 else tval=false;
4988 fi;
4989 $rm -f t t.c;;
4990 esac;;
4991*)
4992 case "$tval" in
4993 $define) tval=true;;
4994 *) tval=false;;
4995 esac;;
4996esac;
4997eval "$2=$tval"'
bd9b35c9 4998
c1a7f87b
JH
4999: define an is-in-libc? function
5000inlibc='echo " "; td=$define; tu=$undef;
5001sym=$1; var=$2; eval "was=\$$2";
5002tx=yes;
5003case "$reuseval$was" in
5004true) ;;
5005true*) tx=no;;
5006esac;
5007case "$tx" in
5008yes)
5009 set $sym tres -f;
5010 eval $csym;
5011 case "$tres" in
5012 true)
5013 echo "$sym() found." >&4;
5014 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5015 *)
5016 echo "$sym() NOT found." >&4;
5017 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5018 esac;;
bd9b35c9 5019*)
c1a7f87b
JH
5020 case "$was" in
5021 $define) echo "$sym() found." >&4;;
5022 *) echo "$sym() NOT found." >&4;;
5023 esac;;
5024esac'
5025
b4eb6b3d
JH
5026: see if sqrtl exists
5027set sqrtl d_sqrtl
c1a7f87b
JH
5028eval $inlibc
5029
b4eb6b3d
JH
5030case "$ccflags" in
5031*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5032esac
b4eb6b3d
JH
5033
5034case "$uselongdouble" in
5035$define|true|[yY]*) dflt='y';;
5036*) dflt='n';;
5037esac
5038cat <<EOM
5039
5040Perl can be built to take advantage of long doubles which
5041(if available) may give more accuracy and range for floating point numbers.
5042
5043If this doesn't make any sense to you, just accept the default '$dflt'.
5044EOM
5045rp='Try to use long doubles if available?'
c1a7f87b
JH
5046. ./myread
5047case "$ans" in
b4eb6b3d
JH
5048y|Y) val="$define" ;;
5049*) val="$undef" ;;
5050esac
5051set uselongdouble
5052eval $setvar
bfb7748a 5053
b4eb6b3d
JH
5054case "$uselongdouble" in
5055true|[yY]*) uselongdouble="$define" ;;
5056esac
bfb7748a 5057
b4eb6b3d
JH
5058case "$uselongdouble" in
5059$define)
5060: Look for a hint-file generated 'call-back-unit'. If the
5061: user has specified that long doubles should be used,
5062: we may need to set or change some other defaults.
5063 if $test -f uselongdouble.cbu; then
5064 echo "Your platform has some specific hints for long doubles, using them..."
5065 . ./uselongdouble.cbu
5066 else
5067 $cat <<EOM
5068(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5069EOM
b4eb6b3d
JH
5070 fi
5071 ;;
5072esac
5073
5074case "$uselongdouble:$d_sqrtl" in
5075$define:$undef)
5076 $cat <<EOM >&4
5077
5078*** You requested the use of long doubles but you do not seem to have
5079*** the mathematic functions for long doubles. I'm disabling the use
5080*** of long doubles.
5081
5082EOM
5083 uselongdouble=$undef
5084 ;;
5085esac
5086
5087: check for length of double
5088echo " "
5089case "$doublesize" in
5090'')
5091 echo "Checking to see how big your double precision numbers are..." >&4
5092 $cat >try.c <<'EOCP'
5093#include <stdio.h>
5094int main()
5095{
5096 printf("%d\n", (int)sizeof(double));
5097 exit(0);
5098}
5099EOCP
5100 set try
5101 if eval $compile_ok; then
5102 doublesize=`./try`
5103 echo "Your double is $doublesize bytes long."
5104 else
5105 dflt='8'
5106 echo "(I can't seem to compile the test program. Guessing...)"
5107 rp="What is the size of a double precision number (in bytes)?"
5108 . ./myread
5109 doublesize="$ans"
5110 fi
5111 ;;
5112esac
5113$rm -f try.c try
5114
5115: check for long doubles
5116echo " "
5117echo "Checking to see if you have long double..." >&4
5118echo 'int main() { long double x = 7.0; }' > try.c
5119set try
5120if eval $compile; then
5121 val="$define"
5122 echo "You have long double."
5123else
5124 val="$undef"
5125 echo "You do not have long double."
5126fi
5127$rm try.*
5128set d_longdbl
5129eval $setvar
5130
5131: check for length of long double
5132case "${d_longdbl}${longdblsize}" in
5133$define)
5134 echo " "
5135 echo "Checking to see how big your long doubles are..." >&4
5136 $cat >try.c <<'EOCP'
5137#include <stdio.h>
5138int main()
5139{
5140 printf("%d\n", sizeof(long double));
5141}
5142EOCP
5143 set try
5144 set try
5145 if eval $compile; then
5146 longdblsize=`./try$exe_ext`
5147 echo "Your long doubles are $longdblsize bytes long."
5148 else
5149 dflt='8'
5150 echo " "
5151 echo "(I can't seem to compile the test program. Guessing...)" >&4
5152 rp="What is the size of a long double (in bytes)?"
5153 . ./myread
5154 longdblsize="$ans"
5155 fi
5156 if $test "X$doublesize" = "X$longdblsize"; then
5157 echo "(That isn't any different from an ordinary double.)"
5158 fi
5159 ;;
5160esac
5161$rm -f try.* try
5162
5163: determine the architecture name
5164echo " "
5165if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5166 tarch=`arch`"-$osname"
5167elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5168 if uname -m > tmparch 2>&1 ; then
5169 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5170 -e 's/$/'"-$osname/" tmparch`
5171 else
5172 tarch="$osname"
5173 fi
5174 $rm -f tmparch
5175else
5176 tarch="$osname"
5177fi
5178case "$myarchname" in
5179''|"$tarch") ;;
5180*)
5181 echo "(Your architecture name used to be $myarchname.)"
5182 archname=''
5183 ;;
5184esac
5185myarchname="$tarch"
5186case "$archname" in
5187'') dflt="$tarch";;
5188*) dflt="$archname";;
5189esac
5190rp='What is your architecture name'
5191. ./myread
5192archname="$ans"
5193case "$usethreads" in
5194$define)
5195 echo "Threads selected." >&4
5196 case "$archname" in
5197 *-thread*) echo "...and architecture name already has -thread." >&4
5198 ;;
5199 *) archname="$archname-thread"
5200 echo "...setting architecture name to $archname." >&4
5201 ;;
5202 esac
5203 ;;
5204esac
5205case "$usemultiplicity" in
5206$define)
5207 echo "Multiplicity selected." >&4
5208 case "$archname" in
5209 *-multi*) echo "...and architecture name already has -multi." >&4
5210 ;;
5211 *) archname="$archname-multi"
5212 echo "...setting architecture name to $archname." >&4
5213 ;;
5214 esac
5215 ;;
5216esac
5217case "$use64bitint$use64bitall" in
5218*"$define"*)
5219 case "$archname64" in
5220 '')
5221 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5222 ;;
5223 *)
5224 case "$use64bitint" in
5225 "$define") echo "64 bit integers selected." >&4 ;;
5226 esac
5227 case "$use64bitall" in
5228 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5229 esac
5230 case "$archname" in
5231 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5232 ;;
5233 *) archname="$archname-$archname64"
5234 echo "...setting architecture name to $archname." >&4
5235 ;;
5236 esac
5237 ;;
5238 esac
5239esac
5240case "$uselongdouble" in
5241$define)
5242 echo "Long doubles selected." >&4
5243 case "$longdblsize" in
5244 $doublesize)
5245 "...but long doubles are equal to doubles, not changing architecture name." >&4
5246 ;;
5247 *)
5248 case "$archname" in
5249 *-ld*) echo "...and architecture name already has -ld." >&4
5250 ;;
5251 *) archname="$archname-ld"
5252 echo "...setting architecture name to $archname." >&4
5253 ;;
5254 esac
5255 ;;
5256 esac
5257 ;;
5258esac
5259
5260: determine root of directory hierarchy where package will be installed.
5261case "$prefix" in
5262'')
5263 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5264 ;;
5265*)
5266 dflt="$prefix"
5267 ;;
5268esac
5269$cat <<EOM
5270
5271By default, $package will be installed in $dflt/bin, manual pages
5272under $dflt/man, etc..., i.e. with $dflt as prefix for all
5273installation directories. Typically this is something like /usr/local.
5274If you wish to have binaries under /usr/bin but other parts of the
5275installation under /usr/local, that's ok: you will be prompted
5276separately for each of the installation directories, the prefix being
5277only used to set the defaults.
5278
5279EOM
5280fn=d~
5281rp='Installation prefix to use?'
5282. ./getfile
5283oldprefix=''
5284case "$prefix" in
5285'') ;;
5286*)
5287 case "$ans" in
5288 "$prefix") ;;
5289 *) oldprefix="$prefix";;
5290 esac
5291 ;;
5292esac
5293prefix="$ans"
5294prefixexp="$ansexp"
5295
5296: is AFS running?
5297echo " "
5298case "$afs" in
5299$define|true) afs=true ;;
5300$undef|false) afs=false ;;
5301*) if test -d /afs; then
5302 afs=true
5303 else
5304 afs=false
5305 fi
5306 ;;
5307esac
5308if $afs; then
5309 echo "AFS may be running... I'll be extra cautious then..." >&4
5310else
5311 echo "AFS does not seem to be running..." >&4
5312fi
5313
5314: determine installation prefix for where package is to be installed.
5315if $afs; then
5316$cat <<EOM
5317
5318Since you are running AFS, I need to distinguish the directory in which
5319files will reside from the directory in which they are installed (and from
5320which they are presumably copied to the former directory by occult means).
5321
5322EOM
5323 case "$installprefix" in
5324 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5325 *) dflt="$installprefix";;
5326 esac
5327else
5328$cat <<EOM
5329
5330In some special cases, particularly when building $package for distribution,
5331it is convenient to distinguish between the directory in which files should
5332be installed from the directory ($prefix) in which they
5333will eventually reside. For most users, these two directories are the same.
5334
5335EOM
5336 case "$installprefix" in
5337 '') dflt=$prefix ;;
5338 *) dflt=$installprefix;;
5339 esac
5340fi
5341fn=d~
5342rp='What installation prefix should I use for installing files?'
5343. ./getfile
5344installprefix="$ans"
5345installprefixexp="$ansexp"
5346
5347: set the prefixit variable, to compute a suitable default value
5348prefixit='case "$3" in
5349""|none)
5350 case "$oldprefix" in
5351 "") eval "$1=\"\$$2\"";;
5352 *)
5353 case "$3" in
5354 "") eval "$1=";;
5355 none)
5356 eval "tp=\"\$$2\"";
5357 case "$tp" in
5358 ""|" ") eval "$1=\"\$$2\"";;
5359 *) eval "$1=";;
5360 esac;;
5361 esac;;
5362 esac;;
5363*)
5364 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5365 case "$tp" in
5366 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5367 /*-$oldprefix/*|\~*-$oldprefix/*)
5368 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5369 *) eval "$1=\"\$$2\"";;
5370 esac;;
5371esac'
5372
5373
5374: get the patchlevel
5375echo " "
5376echo "Getting the current patchlevel..." >&4
5377if $test -r $rsrc/patchlevel.h;then
5378 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5379 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5380 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5381 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5382 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5383 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5384else
5385 revision=0
5386 patchlevel=0
5387 subversion=0
5388 api_revision=0
5389 api_version=0
5390 api_subversion=0
5391fi
5392$echo "(You have $package version $patchlevel subversion $subversion.)"
5393case "$osname" in
5394dos|vms)
5395 : XXX Should be a Configure test for double-dots in filenames.
5396 version=`echo $revision $patchlevel $subversion | \
5397 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5398 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5399 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5400 ;;
5401*)
5402 version=`echo $revision $patchlevel $subversion | \
5403 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5404 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5405 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5406 ;;
5407esac
5408: Special case the 5.005_xx maintenance series, which used 5.005
5409: without any subversion label as a subdirectory in $sitelib
5410if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5411 api_versionstring='5.005'
5412fi
5413
5414: determine installation style
5415: For now, try to deduce it from prefix unless it is already set.
5416: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5417case "$installstyle" in
5418'') case "$prefix" in
5419 *perl*) dflt='lib';;
5420 *) dflt='lib/perl5' ;;
5421 esac
5422 ;;
5423*) dflt="$installstyle" ;;
5424esac
5425: Probably not worth prompting for this since we prompt for all
5426: the directories individually, and the prompt would be too long and
5427: confusing anyway.
5428installstyle=$dflt
5429
5430: determine where private library files go
5431: Usual default is /usr/local/lib/perl5/$version.
5432: Also allow things like /opt/perl/lib/$version, since
5433: /opt/perl/lib/perl5... would be redundant.
5434: The default "style" setting is made in installstyle.U
5435case "$installstyle" in
5436*lib/perl5*) set dflt privlib lib/$package/$version ;;
5437*) set dflt privlib lib/$version ;;
5438esac
5439eval $prefixit
5440$cat <<EOM
5441
5442There are some auxiliary files for $package that need to be put into a
5443private library directory that is accessible by everyone.
5444
5445EOM
5446fn=d~+
5447rp='Pathname where the private library files will reside?'
5448. ./getfile
5449privlib="$ans"
5450privlibexp="$ansexp"
5451: Change installation prefix, if necessary.
5452if $test X"$prefix" != X"$installprefix"; then
5453 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5454else
5455 installprivlib="$privlibexp"
5456fi
5457
5458: set the prefixup variable, to restore leading tilda escape
5459prefixup='case "$prefixexp" in
5460"$prefix") ;;
5461*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5462esac'
5463
5464: determine where public architecture dependent libraries go
5465set archlib archlib
5466eval $prefixit
5467: privlib default is /usr/local/lib/$package/$version
5468: archlib default is /usr/local/lib/$package/$version/$archname
5469: privlib may have an optional trailing /share.
5470tdflt=`echo $privlib | $sed 's,/share$,,'`
5471tdflt=$tdflt/$archname
5472case "$archlib" in
5473'') dflt=$tdflt
5474 ;;
5475*) dflt="$archlib"
5476 ;;
5477esac
5478$cat <<EOM
5479
5480$spackage contains architecture-dependent library files. If you are
5481sharing libraries in a heterogeneous environment, you might store
5482these files in a separate location. Otherwise, you can just include
5483them with the rest of the public library files.
5484
5485EOM
5486fn=d+~
5487rp='Where do you want to put the public architecture-dependent libraries?'
5488. ./getfile
5489archlib="$ans"
5490archlibexp="$ansexp"
5491if $test X"$archlib" = X"$privlib"; then
5492 d_archlib="$undef"
5493else
5494 d_archlib="$define"
5495fi
5496: Change installation prefix, if necessary.
5497if $test X"$prefix" != X"$installprefix"; then
5498 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5499else
5500 installarchlib="$archlibexp"
5501fi
5502
5503
5504: Binary compatibility with 5.005 is not possible for builds
5505: with advanced features
5506case "$usethreads$usemultiplicity" in
5507*define*)
5508 bincompat5005="$undef"
5509 d_bincompat5005="$undef"
5510 ;;
5511*) $cat <<EOM
5512
5513This version of Perl can be compiled for binary compatibility with 5.005.
5514If you decide to do so, you will be able to continue using most of the
5515extensions that were compiled for Perl 5.005.
5516
5517EOM
5518 case "$bincompat5005$d_bincompat5005" in
5519 *"$undef"*) dflt=n ;;
5520 *) dflt=y ;;
5521 esac
5522 rp='Binary compatibility with Perl 5.005?'
5523 . ./myread
5524 case "$ans" in
5525 y*) val="$define" ;;
5526 *) val="$undef" ;;
5527 esac
5528 set d_bincompat5005
5529 eval $setvar
5530 case "$d_bincompat5005" in
5531 "$define")
5532 bincompat5005="$define"
5533 ;;
5534 *) bincompat5005="$undef"
5535 d_bincompat5005="$undef"
5536 ;;
5537 esac
5538 ;;
5539esac
5540
5541
5542: see if setuid scripts can be secure
5543$cat <<EOM
5544
5545Some kernels have a bug that prevents setuid #! scripts from being
5546secure. Some sites have disabled setuid #! scripts because of this.
5547
5548First let's decide if your kernel supports secure setuid #! scripts.
5549(If setuid #! scripts would be secure but have been disabled anyway,
5550don't say that they are secure if asked.)
5551
5552EOM
5553
5554val="$undef"
5555if $test -d /dev/fd; then
5556 echo "#!$ls" >reflect
5557 chmod +x,u+s reflect
5558 ./reflect >flect 2>&1
5559 if $contains "/dev/fd" flect >/dev/null; then
5560 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5561 val="$define"
5562 else
5563 $cat <<EOM
5564If you are not sure if they are secure, I can check but I'll need a
5565username and password different from the one you are using right now.
5566If you don't have such a username or don't want me to test, simply
5567enter 'none'.
5568
5569EOM
5570 rp='Other username to test security of setuid scripts with?'
5571 dflt='none'
5572 . ./myread
5573 case "$ans" in
5574 n|none)
5575 case "$d_suidsafe" in
5576 '') echo "I'll assume setuid scripts are *not* secure." >&4
5577 dflt=n;;
5578 "$undef")
5579 echo "Well, the $hint value is *not* secure." >&4
5580 dflt=n;;
5581 *) echo "Well, the $hint value *is* secure." >&4
5582 dflt=y;;
5583 esac
c1a7f87b 5584 ;;
b4eb6b3d
JH
5585 *)
5586 $rm -f reflect flect
5587 echo "#!$ls" >reflect
5588 chmod +x,u+s reflect
5589 echo >flect
5590 chmod a+w flect
5591 echo '"su" will (probably) prompt you for '"$ans's password."
5592 su $ans -c './reflect >flect'
5593 if $contains "/dev/fd" flect >/dev/null; then
5594 echo "Okay, it looks like setuid scripts are secure." >&4
5595 dflt=y
5596 else
5597 echo "I don't think setuid scripts are secure." >&4
5598 dflt=n
5599 fi
5600 ;;
5601 esac
5602 rp='Does your kernel have *secure* setuid scripts?'
5603 . ./myread
5604 case "$ans" in
5605 [yY]*) val="$define";;
5606 *) val="$undef";;
5607 esac
5608 fi
5609else
5610 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5611 echo "(That's for file descriptors, not floppy disks.)"
5612 val="$undef"
5613fi
5614set d_suidsafe
5615eval $setvar
5616
5617$rm -f reflect flect
5618
5619: now see if they want to do setuid emulation
5620echo " "
5621val="$undef"
5622case "$d_suidsafe" in
5623"$define")
5624 val="$undef"
5625 echo "No need to emulate SUID scripts since they are secure here." >& 4
5626 ;;
5627*)
5628 $cat <<EOM
5629Some systems have disabled setuid scripts, especially systems where
5630setuid scripts cannot be secure. On systems where setuid scripts have
5631been disabled, the setuid/setgid bits on scripts are currently
5632useless. It is possible for $package to detect those bits and emulate
5633setuid/setgid in a secure fashion. This emulation will only work if
5634setuid scripts have been disabled in your kernel.
5635
5636EOM
5637 case "$d_dosuid" in
5638 "$define") dflt=y ;;
5639 *) dflt=n ;;
5640 esac
5641 rp="Do you want to do setuid/setgid emulation?"
5642 . ./myread
5643 case "$ans" in
5644 [yY]*) val="$define";;
5645 *) val="$undef";;
5646 esac
5647 ;;
5648esac
5649set d_dosuid
5650eval $setvar
5651
5652: determine filename position in cpp output
5653echo " "
5654echo "Computing filename position in cpp output for #include directives..." >&4
5655echo '#include <stdio.h>' > foo.c
5656$cat >fieldn <<EOF
5657$startsh
5658$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5659$grep '^[ ]*#.*stdio\.h' | \
5660while read cline; do
5661 pos=1
5662 set \$cline
5663 while $test \$# -gt 0; do
5664 if $test -r \`echo \$1 | $tr -d '"'\`; then
5665 echo "\$pos"
5666 exit 0
5667 fi
5668 shift
5669 pos=\`expr \$pos + 1\`
5670 done
5671done
5672EOF
5673chmod +x fieldn
5674fieldn=`./fieldn`
5675$rm -f foo.c fieldn
5676case $fieldn in
5677'') pos='???';;
56781) pos=first;;
56792) pos=second;;
56803) pos=third;;
5681*) pos="${fieldn}th";;
5682esac
5683echo "Your cpp writes the filename in the $pos field of the line."
5684
5685: locate header file
5686$cat >findhdr <<EOF
5687$startsh
5688wanted=\$1
5689name=''
5690for usrincdir in $usrinc
5691do
5692 if test -f \$usrincdir/\$wanted; then
5693 echo "\$usrincdir/\$wanted"
5694 exit 0
5695 fi
5696done
5697awkprg='{ print \$$fieldn }'
5698echo "#include <\$wanted>" > foo\$\$.c
5699$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5700$grep "^[ ]*#.*\$wanted" | \
5701while read cline; do
5702 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5703 case "\$name" in
5704 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5705 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5706 *) exit 2;;
5707 esac;
5708done;
5709#
5710# status = 0: grep returned 0 lines, case statement not executed
5711# status = 1: headerfile found
5712# status = 2: while loop executed, no headerfile found
5713#
5714status=\$?
5715$rm -f foo\$\$.c;
5716if test \$status -eq 1; then
5717 exit 0;
5718fi
5719exit 1
5720EOF
5721chmod +x findhdr
5722
5723: define an alternate in-header-list? function
5724inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5725cont=true; xxf="echo \"<\$1> found.\" >&4";
5726case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5727*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5728esac;
5729case $# in 4) instead=instead;; *) instead="at last";; esac;
5730while $test "$cont"; do
5731 xxx=`./findhdr $1`
5732 var=$2; eval "was=\$$2";
5733 if $test "$xxx" && $test -r "$xxx";
5734 then eval $xxf;
5735 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5736 cont="";
5737 else eval $xxnf;
5738 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5739 set $yyy; shift; shift; yyy=$@;
5740 case $# in 0) cont="";;
5741 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5742 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5743 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5744 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5745 esac;
5746done;
5747while $test "$yyy";
5748do set $yyy; var=$2; eval "was=\$$2";
5749 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5750 set $yyy; shift; shift; yyy=$@;
5751done'
5752
5753: see if this is a malloc.h system
5754set malloc.h i_malloc
5755eval $inhdr
5756
5757: see if stdlib is available
5758set stdlib.h i_stdlib
5759eval $inhdr
5760
5761: determine which malloc to compile in
5762echo " "
5763case "$usemymalloc" in
5764''|[yY]*|true|$define) dflt='y' ;;
5765*) dflt='n' ;;
5766esac
5767rp="Do you wish to attempt to use the malloc that comes with $package?"
5768. ./myread
5769usemymalloc="$ans"
5770case "$ans" in
5771y*|true)
5772 usemymalloc='y'
5773 mallocsrc='malloc.c'
5774 mallocobj="malloc$_o"
5775 d_mymalloc="$define"
5776 case "$libs" in
5777 *-lmalloc*)
5778 : Remove malloc from list of libraries to use
5779 echo "Removing unneeded -lmalloc from library list" >&4
5780 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5781 shift
5782 libs="$*"
5783 echo "libs = $libs" >&4
5784 ;;
5785 esac
5786 ;;
5787*)
5788 usemymalloc='n'
5789 mallocsrc=''
5790 mallocobj=''
5791 d_mymalloc="$undef"
5792 ;;
5793esac
5794
5795: compute the return types of malloc and free
5796echo " "
5797$cat >malloc.c <<END
5798#$i_malloc I_MALLOC
5799#$i_stdlib I_STDLIB
5800#include <stdio.h>
5801#include <sys/types.h>
5802#ifdef I_MALLOC
5803#include <malloc.h>
5804#endif
5805#ifdef I_STDLIB
5806#include <stdlib.h>
5807#endif
5808#ifdef TRY_MALLOC
5809void *malloc();
5810#endif
5811#ifdef TRY_FREE
5812void free();
5813#endif
5814END
5815case "$malloctype" in
5816'')
5817 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5818 malloctype='void *'
5819 else
5820 malloctype='char *'
5821 fi
5822 ;;
5823esac
5824echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5825
5826case "$freetype" in
5827'')
5828 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5829 freetype='void'
5830 else
5831 freetype='int'
5832 fi
5833 ;;
5834esac
5835echo "Your system uses $freetype free(), it would seem." >&4
5836$rm -f malloc.[co]
5837$cat <<EOM
5838
5839After $package is installed, you may wish to install various
5840add-on modules and utilities. Typically, these add-ons will
5841be installed under $prefix with the rest
5842of this package. However, you may wish to install such add-ons
5843elsewhere under a different prefix.
5844
5845If you do not wish to put everything under a single prefix, that's
5846ok. You will be prompted for the individual locations; this siteprefix
5847is only used to suggest the defaults.
5848
5849The default should be fine for most people.
5850
5851EOM
5852fn=d~+
5853rp='Installation prefix to use for add-on modules and utilities?'
5854: XXX Here might be another good place for an installstyle setting.
5855case "$siteprefix" in
5856'') dflt=$prefix ;;
5857*) dflt=$siteprefix ;;
5858esac
5859. ./getfile
5860: XXX Prefixit unit does not yet support siteprefix and vendorprefix
5861oldsiteprefix=''
5862case "$siteprefix" in
5863'') ;;
5864*) case "$ans" in
5865 "$prefix") ;;
5866 *) oldsiteprefix="$prefix";;
5867 esac
5868 ;;
5869esac
5870siteprefix="$ans"
5871siteprefixexp="$ansexp"
5872
5873: determine where site specific libraries go.
5874: Usual default is /usr/local/lib/perl5/site_perl/$version
5875: The default "style" setting is made in installstyle.U
5876: XXX No longer works with Prefixit stuff.
5877prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5878case "$sitelib" in
5879'') case "$installstyle" in
5880 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5881 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5882 esac
5883 ;;
5884*) dflt="$sitelib"
5885 ;;
5886esac
5887$cat <<EOM
5888
5889The installation process will create a directory for
5890site-specific extensions and modules. Most users find it convenient
5891to place all site-specific files in this directory rather than in the
5892main distribution directory.
5893
5894EOM
5895fn=d~+
5896rp='Pathname for the site-specific library files?'
5897. ./getfile
5898sitelib="$ans"
5899sitelibexp="$ansexp"
5900sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5901: Change installation prefix, if necessary.
5902if $test X"$prefix" != X"$installprefix"; then
5903 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5904else
5905 installsitelib="$sitelibexp"
5906fi
5907
5908: determine where site specific architecture-dependent libraries go.
5909: sitelib default is /usr/local/lib/perl5/site_perl/$version
5910: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5911: sitelib may have an optional trailing /share.
5912case "$sitearch" in
5913'') dflt=`echo $sitelib | $sed 's,/share$,,'`
5914 dflt="$dflt/$archname"
5915 ;;
5916*) dflt="$sitearch"
5917 ;;
5918esac
5919set sitearch sitearch none
5920eval $prefixit
5921$cat <<EOM
5922
5923The installation process will also create a directory for
5924architecture-dependent site-specific extensions and modules.
5925
5926EOM
5927fn=d~+
5928rp='Pathname for the site-specific architecture-dependent library files?'
5929. ./getfile
5930sitearch="$ans"
5931sitearchexp="$ansexp"
5932: Change installation prefix, if necessary.
5933if $test X"$prefix" != X"$installprefix"; then
5934 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5935else
5936 installsitearch="$sitearchexp"
5937fi
5938
5939$cat <<EOM
5940
5941The installation process will also create a directory for
5942vendor-supplied add-ons. Vendors who supply perl with their system
5943may find it convenient to place all vendor-supplied files in this
5944directory rather than in the main distribution directory. This will
5945ease upgrades between binary-compatible maintenance versions of perl.
5946
5947Of course you may also use these directories in whatever way you see
5948fit. For example, you might use them to access modules shared over a
5949company-wide network.
5950
5951The default answer should be fine for most people.
5952This causes further questions about vendor add-ons to be skipped
5953and no vendor-specific directories will be configured for perl.
5954
5955EOM
5956rp='Do you want to configure vendor-specific add-on directories?'
5957case "$usevendorprefix" in
5958define|true|[yY]*) dflt=y ;;
5959*) : User may have set vendorprefix directly on Configure command line.
5960 case "$vendorprefix" in
5961 ''|' ') dflt=n ;;
5962 *) dflt=y ;;
5963 esac
5964 ;;
5965esac
5966. ./myread
5967case "$ans" in
5968[yY]*) fn=d~+
5969 rp='Installation prefix to use for vendor-supplied add-ons?'
5970 case "$vendorprefix" in
5971 '') dflt='' ;;
5972 *) dflt=$vendorprefix ;;
5973 esac
5974 . ./getfile
5975 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5976 oldvendorprefix=''
5977 case "$vendorprefix" in
5978 '') ;;
5979 *) case "$ans" in
5980 "$prefix") ;;
5981 *) oldvendorprefix="$prefix";;
5982 esac
5983 ;;
5984 esac
5985 usevendorprefix="$define"
5986 vendorprefix="$ans"
5987 vendorprefixexp="$ansexp"
5988 ;;
5989*) usevendorprefix="$undef"
5990 vendorprefix=''
5991 vendorprefixexp=''
5992 ;;
5993esac
5994
5995case "$vendorprefix" in
5996'') d_vendorlib="$undef"
5997 vendorlib=''
5998 vendorlibexp=''
5999 ;;
6000*) d_vendorlib="$define"
6001 : determine where vendor-supplied modules go.
6002 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6003 case "$vendorlib" in
6004 '')
6005 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6006 case "$installstyle" in
6007 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6008 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6009 esac
6010 ;;
6011 *) dflt="$vendorlib"
6012 ;;
6013 esac
6014 fn=d~+
6015 rp='Pathname for the vendor-supplied library files?'
6016 . ./getfile
6017 vendorlib="$ans"
6018 vendorlibexp="$ansexp"
6019 ;;
6020esac
6021vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6022: Change installation prefix, if necessary.
6023if $test X"$prefix" != X"$installprefix"; then
6024 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6025else
6026 installvendorlib="$vendorlibexp"
6027fi
6028
6029case "$vendorprefix" in
6030'') d_vendorarch="$undef"
6031 vendorarch=''
6032 vendorarchexp=''
6033 ;;
6034*) d_vendorarch="$define"
6035 : determine where vendor-supplied architecture-dependent libraries go.
6036 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6037 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6038 : vendorlib may have an optional trailing /share.
6039 case "$vendorarch" in
6040 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6041 dflt="$dflt/$archname"
6042 ;;
6043 *) dflt="$vendorarch" ;;
6044 esac
6045 fn=d~+
6046 rp='Pathname for vendor-supplied architecture-dependent files?'
6047 . ./getfile
6048 vendorarch="$ans"
6049 vendorarchexp="$ansexp"
6050 ;;
6051esac
6052: Change installation prefix, if necessary.
6053if $test X"$prefix" != X"$installprefix"; then
6054 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6055else
6056 installvendorarch="$vendorarchexp"
6057fi
6058
6059: Final catch-all directories to search
6060$cat <<EOM
6061
6062Lastly, you can have perl look in other directories for extensions and
6063modules in addition to those already specified.
6064These directories will be searched after
6065 $sitearch
6066 $sitelib
6067EOM
6068test X"$vendorlib" != "X" && echo ' ' $vendorlib
6069test X"$vendorarch" != "X" && echo ' ' $vendorarch
6070echo ' '
6071case "$otherlibdirs" in
6072''|' ') dflt='none' ;;
6073*) dflt="$otherlibdirs" ;;
6074esac
6075$cat <<EOM
6076Enter a colon-separated set of extra paths to include in perl's @INC
6077search path, or enter 'none' for no extra paths.
6078
6079EOM
6080
6081rp='Colon-separated list of additional directories for perl to search?'
6082. ./myread
6083case "$ans" in
6084' '|''|none) otherlibdirs=' ' ;;
6085*) otherlibdirs="$ans" ;;
6086esac
6087case "$otherlibdirs" in
6088' ') val=$undef ;;
6089*) val=$define ;;
6090esac
6091set d_perl_otherlibdirs
6092eval $setvar
6093
6094: Cruising for prototypes
6095echo " "
6096echo "Checking out function prototypes..." >&4
6097$cat >prototype.c <<'EOCP'
6098int main(int argc, char *argv[]) {
6099 exit(0);}
6100EOCP
6101if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6102 echo "Your C compiler appears to support function prototypes."
6103 val="$define"
6104else
6105 echo "Your C compiler doesn't seem to understand function prototypes."
6106 val="$undef"
6107fi
6108set prototype
6109eval $setvar
6110$rm -f prototype*
6111
6112case "$prototype" in
6113"$define") ;;
6114*) ansi2knr='ansi2knr'
6115 echo " "
6116 cat <<EOM >&4
6117
6118$me: FATAL ERROR:
6119This version of $package can only be compiled by a compiler that
6120understands function prototypes. Unfortunately, your C compiler
6121 $cc $ccflags
6122doesn't seem to understand them. Sorry about that.
6123
6124If GNU cc is available for your system, perhaps you could try that instead.
6125
6126Eventually, we hope to support building Perl with pre-ANSI compilers.
6127If you would like to help in that effort, please contact <perlbug@perl.org>.
6128
6129Aborting Configure now.
6130EOM
6131 exit 2
6132 ;;
6133esac
6134
6135: determine where public executables go
6136echo " "
6137set dflt bin bin
6138eval $prefixit
6139fn=d~
6140rp='Pathname where the public executables will reside?'
6141. ./getfile
6142if $test "X$ansexp" != "X$binexp"; then
6143 installbin=''
6144fi
6145bin="$ans"
6146binexp="$ansexp"
6147: Change installation prefix, if necessary.
6148: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6149if $test X"$prefix" != X"$installprefix"; then
6150 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6151else
6152 installbin="$binexp"
6153fi
6154
6155: Find perl5.005 or later.
6156echo "Looking for a previously installed perl5.005 or later... "
6157case "$perl5" in
6158'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6159 : Check if this perl is recent and can load a simple module
6160 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6161 perl5=$tdir/perl
6162 break;
6163 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6164 perl5=$tdir/perl
6165 break;
6166 fi
6167 done
6168 ;;
6169*) perl5="$perl5"
6170 ;;
6171esac
6172case "$perl5" in
6173'') echo "None found. That's ok.";;
6174*) echo "Using $perl5." ;;
6175esac
6176
6177: Determine list of previous versions to include in @INC
6178$cat > getverlist <<EOPL
6179#!$perl5 -w
6180use File::Basename;
6181\$api_versionstring = "$api_versionstring";
6182\$version = "$version";
6183\$stem = "$sitelib_stem";
6184\$archname = "$archname";
6185EOPL
6186 $cat >> getverlist <<'EOPL'
6187# Can't have leading @ because metaconfig interprets it as a command!
6188;@inc_version_list=();
6189# XXX Redo to do opendir/readdir?
6190if (-d $stem) {
6191 chdir($stem);
6192 ;@candidates = glob("5.*");
6193}
6194else {
6195 ;@candidates = ();
6196}
6197
6198# XXX ToDo: These comparisons must be reworked when two-digit
6199# subversions come along, so that 5.7.10 compares as greater than
6200# 5.7.3! By that time, hope that 5.6.x is sufficiently
6201# widespread that we can use the built-in version vectors rather
6202# than reinventing them here. For 5.6.0, however, we must
6203# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6204foreach $d (@candidates) {
6205 if ($d lt $version) {
6206 if ($d ge $api_versionstring) {
6207 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6208 }
6209 elsif ($d ge "5.005") {
6210 unshift(@inc_version_list, grep { -d } $d);
6211 }
6212 }
6213 else {
6214 # Skip newer version. I.e. don't look in
6215 # 5.7.0 if we're installing 5.6.1.
6216 }
6217}
6218
6219if (@inc_version_list) {
6220 print join(' ', @inc_version_list);
6221}
6222else {
6223 # Blank space to preserve value for next Configure run.
6224 print " ";
6225}
6226EOPL
6227chmod +x getverlist
6228case "$inc_version_list" in
6229'') if test -x "$perl5"; then
6230 dflt=`$perl5 getverlist`
6231 else
6232 dflt='none'
6233 fi
6234 ;;
6235$undef) dflt='none' ;;
6236*) dflt="$inc_version_list" ;;
6237esac
6238case "$dflt" in
6239''|' ') dflt=none ;;
6240esac
6241case "$dflt" in
62425.005) case "$bincompat5005" in
6243 $define|true|[yY]*) ;;
6244 *) dflt=none ;;
6245 esac
6246 ;;
6247esac
6248$cat <<'EOM'
6249
6250In order to ease the process of upgrading, this version of perl
6251can be configured to use modules built and installed with earlier
6252versions of perl that were installed under $prefix. Specify here
6253the list of earlier versions that this version of perl should check.
6254If Configure detected no earlier versions of perl installed under
6255$prefix, then the list will be empty. Answer 'none' to tell perl
6256to not search earlier versions.
6257
6258The default should almost always be sensible, so if you're not sure,
6259just accept the default.
6260EOM
6261
6262rp='List of earlier versions to include in @INC?'
6263. ./myread
6264case "$ans" in
6265[Nn]one|''|' ') inc_version_list=' ' ;;
6266*) inc_version_list="$ans" ;;
6267esac
6268case "$inc_version_list" in
6269''|' ')
6270 inc_version_list_init='0';;
6271*) inc_version_list_init=`echo $inc_version_list |
6272 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6273 ;;
6274esac
6275$rm -f getverlist
6276
6277: determine whether to install perl also as /usr/bin/perl
6278
6279echo " "
6280if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6281 $cat <<EOM
6282Many scripts expect perl to be installed as /usr/bin/perl.
6283I can install the perl you are about to compile also as /usr/bin/perl
6284(in addition to $installbin/perl).
6285EOM
6286 case "$installusrbinperl" in
6287 "$undef"|[nN]*) dflt='n';;
6288 *) dflt='y';;
6289 esac
6290 rp="Do you want to install perl as /usr/bin/perl?"
6291 . ./myread
6292 case "$ans" in
6293 [yY]*) val="$define";;
6294 *) val="$undef" ;;
6295 esac
6296else
6297 val="$undef"
6298fi
6299set installusrbinperl
6300eval $setvar
6301
6302: see if dld is available
6303set dld.h i_dld
6304eval $inhdr
6305
6306: see if dlopen exists
6307xxx_runnm="$runnm"
6308runnm=false
6309set dlopen d_dlopen
6310eval $inlibc
6311runnm="$xxx_runnm"
6312
6313: determine which dynamic loading, if any, to compile in
6314echo " "
6315dldir="ext/DynaLoader"
6316case "$usedl" in
6317$define|y|true)
6318 dflt='y'
6319 usedl="$define"
6320 ;;
6321$undef|n|false)
6322 dflt='n'
6323 usedl="$undef"
6324 ;;
6325*)
6326 dflt='n'
6327 case "$d_dlopen" in
6328 $define) dflt='y' ;;
6329 esac
6330 case "$i_dld" in
6331 $define) dflt='y' ;;
6332 esac
6333 : Does a dl_xxx.xs file exist for this operating system
6334 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6335 ;;
6336esac
6337rp="Do you wish to use dynamic loading?"
6338. ./myread
6339usedl="$ans"
6340case "$ans" in
6341y*) usedl="$define"
6342 case "$dlsrc" in
6343 '')
6344 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6345 dflt="$dldir/dl_${osname}.xs"
6346 elif $test "$d_dlopen" = "$define" ; then
6347 dflt="$dldir/dl_dlopen.xs"
6348 elif $test "$i_dld" = "$define" ; then
6349 dflt="$dldir/dl_dld.xs"
6350 else
6351 dflt=''
6352 fi
6353 ;;
6354 *) dflt="$dldir/$dlsrc"
6355 ;;
6356 esac
6357 echo "The following dynamic loading files are available:"
6358 : Can not go over to $dldir because getfile has path hard-coded in.
6359 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6360 rp="Source file to use for dynamic loading"
6361 fn="fne"
6362 gfpth="$src"
6363 . ./getfile
6364 usedl="$define"
6365 : emulate basename
6366 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6367
6368 $cat << EOM
6369
6370Some systems may require passing special flags to $cc -c to
6371compile modules that will be used to create a shared library.
6372To use no flags, say "none".
6373
6374EOM
6375 case "$cccdlflags" in
6376 '') case "$gccversion" in
6377 '') case "$osname" in
6378 hpux) dflt='+z' ;;
6379 next) dflt='none' ;;
6380 irix*) dflt='-KPIC' ;;
48bcfe03 6381 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
b4eb6b3d
JH
6382 sunos) dflt='-pic' ;;
6383 *) dflt='none' ;;
6384 esac
6385 ;;
6386 *) case "$osname" in
48bcfe03 6387 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
b4eb6b3d
JH
6388 *) dflt='-fpic' ;;
6389 esac ;;
6390 esac ;;
6391 ' ') dflt='none' ;;
6392 *) dflt="$cccdlflags" ;;
6393 esac
6394 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6395 . ./myread
6396 case "$ans" in
6397 none) cccdlflags=' ' ;;
6398 *) cccdlflags="$ans" ;;
6399 esac
6400
6401 cat << EOM
6402
6403Some systems use ld to create libraries that can be dynamically loaded,
6404while other systems (such as those using ELF) use $cc.
6405
6406EOM
6407 case "$ld" in
6408 '') $cat >try.c <<'EOM'
6409/* Test for whether ELF binaries are produced */
6410#include <fcntl.h>
6411#include <stdlib.h>
6412int main() {
6413 char b[4];
6414 int i = open("a.out",O_RDONLY);
6415 if(i == -1)
6416 exit(1); /* fail */
6417 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6418 exit(0); /* succeed (yes, it's ELF) */
6419 else
6420 exit(1); /* fail */
6421}
6422EOM
6423 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6424 cat <<EOM
6425You appear to have ELF support. I'll use $cc to build dynamic libraries.
6426EOM
6427 dflt="$cc"
6428 else
6429 echo "I'll use ld to build dynamic libraries."
6430 dflt='ld'
6431 fi
6432 rm -f try.c a.out
6433 ;;
6434 *) dflt="$ld"
6435 ;;
6436 esac
6437
6438 rp="What command should be used to create dynamic libraries?"
6439 . ./myread
6440 ld="$ans"
6441
6442 cat << EOM
6443
6444Some systems may require passing special flags to $ld to create a
6445library that can be dynamically loaded. If your ld flags include
6446-L/other/path options to locate libraries outside your loader's normal
6447search path, you may need to specify those -L options here as well. To
6448use no flags, say "none".
6449
6450EOM
6451 case "$lddlflags" in
6452 '') case "$osname" in
6453 beos) dflt='-nostart' ;;
6454 hpux) dflt='-b';
6455 case "$gccversion" in
6456 '') dflt="$dflt +vnocompatwarnings" ;;
6457 esac
6458 ;;
6459 linux|irix*) dflt='-shared' ;;
6460 next) dflt='none' ;;
6461 solaris) dflt='-G' ;;
6462 sunos) dflt='-assert nodefinitions' ;;
48bcfe03 6463 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
b4eb6b3d
JH
6464 *) dflt='none' ;;
6465 esac
6466 ;;
6467 *) dflt="$lddlflags" ;;
6468 esac
6469
6470 : Try to guess additional flags to pick up local libraries.
6471 : Be careful not to append to a plain 'none'
6472 case "$dflt" in
6473 none) dflt='' ;;
6474 esac
6475 for thisflag in $ldflags; do
6476 case "$thisflag" in
6477 -L*|-R*)
6478 case " $dflt " in
6479 *" $thisflag "*) ;;
6480 *) dflt="$dflt $thisflag" ;;
6481 esac
6482 ;;
6483 esac
6484 done
6485
6486 case "$dflt" in
6487 ''|' ') dflt='none' ;;
6488 esac
6489
6490 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6491 . ./myread
6492 case "$ans" in
6493 none) lddlflags=' ' ;;
6494 *) lddlflags="$ans" ;;
6495 esac
6496
6497 cat <<EOM
6498
6499Some systems may require passing special flags to $cc to indicate that
6500the resulting executable will use dynamic linking. To use no flags,
6501say "none".
6502
6503EOM
6504 case "$ccdlflags" in
6505 '') case "$osname" in
6506 hpux) dflt='-Wl,-E' ;;
6507 linux) dflt='-rdynamic' ;;
6508 next) dflt='none' ;;
6509 sunos) dflt='none' ;;
6510 *) dflt='none' ;;
6511 esac ;;
6512 ' ') dflt='none' ;;
6513 *) dflt="$ccdlflags" ;;
6514 esac
6515 rp="Any special flags to pass to $cc to use dynamic linking?"
6516 . ./myread
6517 case "$ans" in
6518 none) ccdlflags=' ' ;;
6519 *) ccdlflags="$ans" ;;
6520 esac
6521 ;;
6522*) usedl="$undef"
6523 ld='ld'
6524 dlsrc='dl_none.xs'
6525 lddlflags=''
6526 ccdlflags=''
6527 ;;
6528esac
6529
6530also=''
6531case "$usedl" in
6532$undef)
6533 # No dynamic loading being used, so don't bother even to prompt.
6534 useshrplib='false'
6535 ;;
6536*) case "$useshrplib" in
6537 '') case "$osname" in
48bcfe03 6538 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
b4eb6b3d
JH
6539 dflt=y
6540 also='Building a shared libperl is required for dynamic loading to work on your system.'
6541 ;;
6542 next*)
6543 case "$osvers" in
6544 4*) dflt=y
6545 also='Building a shared libperl is needed for MAB support.'
6546 ;;
6547 *) dflt=n
6548 ;;
6549 esac
6550 ;;
6551 *) dflt=n
6552 ;;
6553 esac
6554 ;;
6555 $define|true|[Yy]*)
6556 dflt=y
6557 ;;
6558 *) dflt=n
6559 ;;
6560 esac
6561 $cat << EOM
6562
6563The perl executable is normally obtained by linking perlmain.c with
6564libperl${_a}, any static extensions (usually just DynaLoader), and
6565any other libraries needed on this system (such as -lm, etc.). Since
6566your system supports dynamic loading, it is probably possible to build
6567a shared libperl.$so. If you will have more than one executable linked
6568to libperl.$so, this will significantly reduce the size of each
6569executable, but it may have a noticeable affect on performance. The
6570default is probably sensible for your system.
6571$also
6572
6573EOM
6574 rp="Build a shared libperl.$so (y/n)"
6575 . ./myread
6576 case "$ans" in
6577 true|$define|[Yy]*)
6578 useshrplib='true' ;;
6579 *) useshrplib='false' ;;
6580 esac
6581 ;;
6582esac
6583
6584case "$useshrplib" in
6585true)
6586 case "$libperl" in
6587 '')
6588 # Figure out a good name for libperl.so. Since it gets stored in
6589 # a version-specific architecture-dependent library, the version
6590 # number isn't really that important, except for making cc/ld happy.
6591 #
6592 # A name such as libperl.so.3.1
6593 majmin="libperl.$so.$patchlevel.$subversion"
6594 # A name such as libperl.so.301
6595 majonly=`echo $patchlevel $subversion |
6596 $awk '{printf "%d%02d", $1, $2}'`
6597 majonly=libperl.$so.$majonly
6598 # I'd prefer to keep the os-specific stuff here to a minimum, and
6599 # rely on figuring it out from the naming of libc.
6600 case "${osname}${osvers}" in
6601 next4*)
6602 dflt=libperl.5.$so
6603 # XXX How handle the --version stuff for MAB?
6604 ;;
6605 linux*) # ld won't link with a bare -lperl otherwise.
6606 dflt=libperl.$so
6607 ;;
6608 cygwin*) # include version
6609 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6610 ;;
6611 *) # Try to guess based on whether libc has major.minor.
6612 case "$libc" in
6613 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6614 *libc.$so.[0-9]*) dflt=$majonly ;;
6615 *) dflt=libperl.$so ;;
6616 esac
6617 ;;
6618 esac
6619 ;;
6620 *) dflt=$libperl
6621 ;;
6622 esac
6623 cat << EOM
6624
6625I need to select a good name for the shared libperl. If your system uses
6626library names with major and minor numbers, then you might want something
6627like $majmin. Alternatively, if your system uses a single version
6628number for shared libraries, then you might want to use $majonly.
6629Or, your system might be quite happy with a simple libperl.$so.
6630
6631Since the shared libperl will get installed into a version-specific
6632architecture-dependent directory, the version number of the shared perl
6633library probably isn't important, so the default should be o.k.
6634
6635EOM
6636 rp='What name do you want to give to the shared libperl?'
6637 . ./myread
6638 libperl=$ans
6639 echo "Ok, I'll use $libperl"
6640 ;;
6641*)
6642 libperl="libperl${_a}"
6643 ;;
6644esac
6645
6646# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6647case "$shrpdir" in
6648'') ;;
6649*) $cat >&4 <<EOM
6650WARNING: Use of the shrpdir variable for the installation location of
6651the shared $libperl is not supported. It was never documented and
6652will not work in this version. Let me (perlbug@perl.org)
6653know of any problems this may cause.
6654
6655EOM
6656 case "$shrpdir" in
6657 "$archlibexp/CORE")
6658 $cat >&4 <<EOM
6659But your current setting of $shrpdir is
6660the default anyway, so it's harmless.
6661EOM
6662 ;;
6663 *)
6664 $cat >&4 <<EOM
6665Further, your current attempted setting of $shrpdir
6666conflicts with the value of $archlibexp/CORE
6667that installperl will use.
6668EOM
6669 ;;
6670 esac
6671 ;;
6672esac
6673
6674# How will the perl executable find the installed shared $libperl?
6675# Add $xxx to ccdlflags.
6676# If we can't figure out a command-line option, use $shrpenv to
6677# set env LD_RUN_PATH. The main perl makefile uses this.
6678shrpdir=$archlibexp/CORE
6679xxx=''
6680tmp_shrpenv=''
6681if "$useshrplib"; then
6682 case "$osname" in
6683 aix)
6684 # We'll set it in Makefile.SH...
6685 ;;
6686 solaris|netbsd)
6687 xxx="-R $shrpdir"
6688 ;;
6689 freebsd)
6690 xxx="-Wl,-R$shrpdir"
6691 ;;
6692 linux|irix*|dec_osf)
6693 xxx="-Wl,-rpath,$shrpdir"
6694 ;;
6695 next)
6696 # next doesn't like the default...
6697 ;;
6698 beos)
6699 # beos doesn't like the default, either.
6700 ;;
6701 hpux*)
6702 # hpux doesn't like the default, either.
6703 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6704 ;;
6705 *)
6706 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6707 ;;
6708 esac
6709 case "$xxx" in
6710 '') ;;
6711 *)
6712 # Only add $xxx if it isn't already in ccdlflags.
6713 case " $ccdlflags " in
6714 *" $xxx "*) ;;
6715 *) ccdlflags="$ccdlflags $xxx"
6716 cat <<EOM >&4
6717
6718Adding $xxx to the flags
6719passed to $ld so that the perl executable will find the
6720installed shared $libperl.
6721
6722EOM
6723 ;;
6724 esac
6725 ;;
6726 esac
6727fi
6728# Fix ccdlflags in AIX for building external extensions.
6729# (For building Perl itself bare -bE:perl.exp is needed,
6730# Makefile.SH takes care of this.)
6731case "$osname" in
6732aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6733esac
6734# Respect a hint or command-line value.
6735case "$shrpenv" in
6736'') shrpenv="$tmp_shrpenv" ;;
6737esac
6738case "$ldlibpthname" in
6739'') ldlibpthname=LD_LIBRARY_PATH ;;
6740none) ldlibpthname='' ;;
6741esac
6742
6743: determine where manual pages are on this system
6744echo " "
6745case "$sysman" in
6746'')
6747 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6748 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6749 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6750 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6751 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6752 sysman=`./loc . /usr/man/man1 $syspath`
6753 ;;
6754esac
6755if $test -d "$sysman"; then
6756 echo "System manual is in $sysman." >&4
6757else
6758 echo "Could not find manual pages in source form." >&4
6759fi
6760
6761: determine where manual pages go
6762set man1dir man1dir none
6763eval $prefixit
6764$cat <<EOM
6765
6766$spackage has manual pages available in source form.
6767EOM
6768case "$nroff" in
6769nroff)
6770 echo "However, you don't have nroff, so they're probably useless to you."
6771 case "$man1dir" in
6772 '') man1dir="none";;
6773 esac;;
6774esac
6775echo "If you don't want the manual sources installed, answer 'none'."
6776case "$man1dir" in
6777' ') dflt=none
6778 ;;
6779'')
6780 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6781 lookpath="$lookpath $prefixexp/man/p_man/man1"
6782 lookpath="$lookpath $prefixexp/man/u_man/man1"
6783 lookpath="$lookpath $prefixexp/man/man.1"
6784 case "$sysman" in
6785 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6786 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6787 esac
6788 set dflt
6789 eval $prefixup
6790 ;;
6791*) dflt="$man1dir"
6792 ;;
6793esac
6794echo " "
6795fn=dn+~
6796rp="Where do the main $spackage manual pages (source) go?"
6797. ./getfile
6798if $test "X$man1direxp" != "X$ansexp"; then
6799 installman1dir=''
6800fi
6801man1dir="$ans"
6802man1direxp="$ansexp"
6803case "$man1dir" in
6804'') man1dir=' '
6805 installman1dir='';;
6806esac
6807
6808: Change installation prefix, if necessary.
6809if $test X"$prefix" != X"$installprefix"; then
6810 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6811else
6812 installman1dir="$man1direxp"
6813fi
6814
6815: What suffix to use on installed man pages
6816
6817case "$man1dir" in
6818' ')
6819 man1ext='0'
6820 ;;
6821*)
6822 rp="What suffix should be used for the main $spackage man pages?"
6823 case "$man1ext" in
6824 '') case "$man1dir" in
6825 *1) dflt=1 ;;
6826 *1p) dflt=1p ;;
6827 *1pm) dflt=1pm ;;
6828 *l) dflt=l;;
6829 *n) dflt=n;;
6830 *o) dflt=o;;
6831 *p) dflt=p;;
6832 *C) dflt=C;;
6833 *L) dflt=L;;
6834 *L1) dflt=L1;;
6835 *) dflt=1;;
6836 esac
6837 ;;
6838 *) dflt="$man1ext";;
6839 esac
6840 . ./myread
6841 man1ext="$ans"
6842 ;;
6843esac
6844
6845: see if we can have long filenames
6846echo " "
6847first=123456789abcdef
6848$rm -f $first
6849if (echo hi >$first) 2>/dev/null; then
6850 if $test -f 123456789abcde; then
6851 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6852 val="$undef"
6853 else
6854 echo 'You can have filenames longer than 14 characters.'>&4
6855 val="$define"
6856 fi
6857else
6858 $cat <<'EOM'
6859You can't have filenames longer than 14 chars.
6860You can't even think about them!
6861EOM
6862 val="$undef"
6863fi
6864set d_flexfnam
6865eval $setvar
6866$rm -rf 123456789abcde*
6867
6868: determine where library module manual pages go
6869set man3dir man3dir none
6870eval $prefixit
6871$cat <<EOM
6872
6873$spackage has manual pages for many of the library modules.
6874EOM
6875
6876case "$nroff" in
6877nroff)
6878 $cat <<'EOM'
6879However, you don't have nroff, so they're probably useless to you.
6880EOM
6881 case "$man3dir" in
6882 '') man3dir="none";;
6883 esac;;
6884esac
6885
6886case "$d_flexfnam" in
6887undef)
6888 $cat <<'EOM'
6889However, your system can't handle the long file names like File::Basename.3.
6890EOM
6891 case "$man3dir" in
6892 '') man3dir="none";;
6893 esac;;
6894esac
6895
6896echo "If you don't want the manual sources installed, answer 'none'."
6897prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6898case "$man3dir" in
6899'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6900 if $test -d "$privlib/man/man3"; then
6901 cat <<EOM >&4
6902
6903WARNING: Previous versions of perl installed man3 pages into
6904$privlib/man/man3. This version will suggest a
6905new default of $dflt.
6906EOM
6907 tdflt=$dflt
6908 dflt='n'
6909 rp='Do you wish to preserve the old behavior?(y/n)'
6910 . ./myread
6911 case "$ans" in
6912 y*) dflt="$privlib/man/man3" ;;
6913 *) dflt=$tdflt ;;
6914 esac
6915 fi
6916 ;;
6917*) dflt="$man3dir" ;;
6918esac
6919case "$dflt" in
6920' ') dflt=none ;;
6921esac
6922echo " "
6923fn=dn+~
6924rp="Where do the $package library man pages (source) go?"
6925. ./getfile
6926man3dir="$ans"
6927man3direxp="$ansexp"
6928case "$man3dir" in
6929'') man3dir=' '
6930 installman3dir='';;
6931esac
6932
6933: Change installation prefix, if necessary.
6934if $test X"$prefix" != X"$installprefix"; then
6935 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6936else
6937 installman3dir="$man3direxp"
6938fi
6939
6940: What suffix to use on installed man pages
6941case "$man3dir" in
6942' ')
6943 man3ext='0'
6944 ;;
6945*)
6946 rp="What suffix should be used for the $package library man pages?"
6947 case "$man3ext" in
6948 '') case "$man3dir" in
6949 *3) dflt=3 ;;
6950 *3p) dflt=3p ;;
6951 *3pm) dflt=3pm ;;
6952 *l) dflt=l;;
6953 *n) dflt=n;;
6954 *o) dflt=o;;
6955 *p) dflt=p;;
6956 *C) dflt=C;;
6957 *L) dflt=L;;
6958 *L3) dflt=L3;;
6959 *) dflt=3;;
6960 esac
6961 ;;
6962 *) dflt="$man3ext";;
6963 esac
6964 . ./myread
6965 man3ext="$ans"
6966 ;;
6967esac
6968
6969: see if we have to deal with yellow pages, now NIS.
6970if $test -d /usr/etc/yp || $test -d /etc/yp; then
6971 if $test -f /usr/etc/nibindd; then
6972 echo " "
6973 echo "I'm fairly confident you're on a NeXT."
6974 echo " "
6975 rp='Do you get the hosts file via NetInfo?'
6976 dflt=y
6977 case "$hostcat" in
6978 nidump*) ;;
6979 '') ;;
6980 *) dflt=n;;
6981 esac
6982 . ./myread
6983 case "$ans" in
6984 y*) hostcat='nidump hosts .';;
6985 *) case "$hostcat" in
6986 nidump*) hostcat='';;
6987 esac
6988 ;;
6989 esac
6990 fi
6991 case "$hostcat" in
6992 nidump*) ;;
6993 *)
6994 case "$hostcat" in
6995 *ypcat*) dflt=y;;
6996 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6997 dflt=y
6998 else
6999 dflt=n
7000 fi;;
7001 *) dflt=n;;
7002 esac
7003 echo " "
7004 rp='Are you getting the hosts file via yellow pages?'
7005 . ./myread
7006 case "$ans" in
7007 y*) hostcat='ypcat hosts';;
7008 *) hostcat='cat /etc/hosts';;
7009 esac
7010 ;;
7011 esac
7012fi
7013case "$hostcat" in
7014'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7015esac
7016case "$groupcat" in
7017'') test -f /etc/group && groupcat='cat /etc/group';;
7018esac
7019case "$passcat" in
7020'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7021esac
7022
7023: now get the host name
7024echo " "
7025echo "Figuring out host name..." >&4
7026case "$myhostname" in
7027'') cont=true
7028 echo 'Maybe "hostname" will work...'
7029 if tans=`sh -c hostname 2>&1` ; then
7030 myhostname=$tans
7031 phostname=hostname
7032 cont=''
7033 fi
7034 ;;
7035*) cont='';;
7036esac
7037if $test "$cont"; then
7038 if ./xenix; then
7039 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7040 if tans=`cat /etc/systemid 2>&1` ; then
7041 myhostname=$tans
7042 phostname='cat /etc/systemid'
7043 echo "Whadyaknow. Xenix always was a bit strange..."
7044 cont=''
7045 fi
7046 elif $test -r /etc/systemid; then
7047 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7048 fi
7049fi
7050if $test "$cont"; then
7051 echo 'No, maybe "uuname -l" will work...'
7052 if tans=`sh -c 'uuname -l' 2>&1` ; then
7053 myhostname=$tans
7054 phostname='uuname -l'
7055 else
7056 echo 'Strange. Maybe "uname -n" will work...'
7057 if tans=`sh -c 'uname -n' 2>&1` ; then
7058 myhostname=$tans
7059 phostname='uname -n'
7060 else
7061 echo 'Oh well, maybe I can mine it out of whoami.h...'
7062 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7063 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7064 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7065 else
7066 case "$myhostname" in
7067 '') echo "Does this machine have an identity crisis or something?"
7068 phostname='';;
7069 *)
7070 echo "Well, you said $myhostname before..."
7071 phostname='echo $myhostname';;
7072 esac
7073 fi
7074 fi
7075 fi
7076fi
7077: you do not want to know about this
7078set $myhostname
7079myhostname=$1
7080
7081: verify guess
7082if $test "$myhostname" ; then
7083 dflt=y
7084 rp='Your host name appears to be "'$myhostname'".'" Right?"
7085 . ./myread
7086 case "$ans" in
7087 y*) ;;
7088 *) myhostname='';;
7089 esac
7090fi
7091
7092: bad guess or no guess
7093while $test "X$myhostname" = X ; do
7094 dflt=''
7095 rp="Please type the (one word) name of your host:"
7096 . ./myread
7097 myhostname="$ans"
7098done
7099
7100: translate upper to lower if necessary
7101case "$myhostname" in
7102*[A-Z]*)
7103 echo "(Normalizing case in your host name)"
7104 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7105 ;;
7106esac
7107
7108case "$myhostname" in
7109*.*)
7110 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7111 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7112 echo "(Trimming domain name from host name--host name is now $myhostname)"
7113 ;;
7114*) case "$mydomain" in
7115 '')
7116 {
7117 test "X$hostcat" = "Xypcat hosts" &&
7118 ypmatch "$myhostname" hosts 2>/dev/null |\
7119 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7120 $test -s hosts
7121 } || {
7122 test "X$hostcat" != "X" &&
7123 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7124 /[ ]$myhostname[ . ]/p" > hosts
7125 }
7126 tmp_re="[ . ]"
f08cbdd1
PP
7127 if $test -f hosts; then
7128 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7129 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7130 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7131 hosts | $sort | $uniq | \
7132 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7133 case `$echo X$dflt` in
7134 X*\ *) echo "(Several hosts in the database matched hostname)"
7135 dflt=.
7136 ;;
7137 X.) echo "(You do not have fully-qualified names in the hosts database)"
7138 ;;
7139 esac
7140 else
7141 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7142 dflt=.
f08cbdd1 7143 fi
b4eb6b3d
JH
7144 case "$dflt" in
7145 .)
7146 tans=`./loc resolv.conf X /etc /usr/etc`
7147 if $test -f "$tans"; then
7148 echo "(Attempting domain name extraction from $tans)"
7149 dflt=.`$sed -n -e 's/ / /g' \
7150 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7151 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7152 case "$dflt" in
7153 .) dflt=.`$sed -n -e 's/ / /g' \
7154 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7155 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7156 ;;
7157 esac
7158 fi
7159 ;;
7160 esac
7161 case "$dflt" in
7162 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7163 dflt=.`sh -c domainname 2>/dev/null`
7164 case "$dflt" in
7165 '') dflt='.';;
7166 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7167 esac
7168 ;;
7169 esac
7170 case "$dflt" in
7171 .) echo "(Lost all hope -- silly guess then)"
7172 dflt='.uucp'
7173 ;;
7174 esac
7175 $rm -f hosts
7176 ;;
7177 *) dflt="$mydomain";;
7178 esac;;
7179esac
7180echo " "
7181rp="What is your domain name?"
7182. ./myread
7183tans="$ans"
7184case "$ans" in
7185'') ;;
7186.*) ;;
7187*) tans=".$tans";;
7188esac
7189mydomain="$tans"
7190
7191: translate upper to lower if necessary
7192case "$mydomain" in
7193*[A-Z]*)
7194 echo "(Normalizing case in your domain name)"
7195 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7196 ;;
7197esac
7198
7199: a little sanity check here
7200case "$phostname" in
7201'') ;;
7202*)
7203 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7204 $myhostname$mydomain|$myhostname) ;;
7205 *)
7206 case "$phostname" in
7207 sed*)
7208 echo "(That doesn't agree with your whoami.h file, by the way.)"
7209 ;;
7210 *)
7211 echo "(That doesn't agree with your $phostname command, by the way.)"
7212 ;;
7213 esac
7214 ;;
7215 esac
7216 ;;
7217esac
7218
7219$cat <<EOM
7220
7221I need to get your e-mail address in Internet format if possible, i.e.
7222something like user@host.domain. Please answer accurately since I have
7223no easy means to double check it. The default value provided below
7224is most probably close to reality but may not be valid from outside
7225your organization...
7226
7227EOM
7228cont=x
7229while test "$cont"; do
7230 case "$cf_email" in
7231 '') dflt="$cf_by@$myhostname$mydomain";;
7232 *) dflt="$cf_email";;
7233 esac
7234 rp='What is your e-mail address?'
7235 . ./myread
7236 cf_email="$ans"
7237 case "$cf_email" in
7238 *@*.*) cont='' ;;
7239 *)
7240 rp='Address does not look like an Internet one. Use it anyway?'
7241 case "$fastread" in
7242 yes) dflt=y ;;
7243 *) dflt=n ;;
7244 esac
7245 . ./myread
7246 case "$ans" in
7247 y*) cont='' ;;
7248 *) echo " " ;;
7249 esac
7250 ;;
7251 esac
7252done
7253
7254$cat <<EOM
7255
7256If you or somebody else will be maintaining perl at your site, please
7257fill in the correct e-mail address here so that they may be contacted
7258if necessary. Currently, the "perlbug" program included with perl
7259will send mail to this address in addition to perlbug@perl.org. You may
7260enter "none" for no administrator.
7261
7262EOM
7263case "$perladmin" in
7264'') dflt="$cf_email";;
7265*) dflt="$perladmin";;
7266esac
7267rp='Perl administrator e-mail address'
7268. ./myread
7269perladmin="$ans"
7270
7271: figure out how to guarantee perl startup
7272case "$startperl" in
7273'')
7274 case "$sharpbang" in
7275 *!)
7276 $cat <<EOH
7277
7278I can use the #! construct to start perl on your system. This will
7279make startup of perl scripts faster, but may cause problems if you
7280want to share those scripts and perl is not in a standard place
7281($binexp/perl) on all your platforms. The alternative is to force
7282a shell by starting the script with a single ':' character.
7283
7284EOH
7285 dflt="$binexp/perl"
7286 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7287 . ./myread
7288 case "$ans" in
7289 none) startperl=": # use perl";;
7290 *) startperl="#!$ans"
7291 if $test 30 -lt `echo "$ans" | wc -c`; then
7292 $cat >&4 <<EOM
7293
7294WARNING: Some systems limit the #! command to 32 characters.
7295If you experience difficulty running Perl scripts with #!, try
7296installing Perl in a directory with a shorter pathname.
7297
7298EOM
7299 fi ;;
7300 esac
7301 ;;
7302 *) startperl=": # use perl"
7303 ;;
7304 esac
7305 ;;
7306esac
7307echo "I'll use $startperl to start perl scripts."
7308
7309: figure best path for perl in scripts
7310case "$perlpath" in
7311'')
7312 perlpath="$binexp/perl"
7313 case "$startperl" in
7314 *!*) ;;
7315 *)
7316 $cat <<EOH
7317
7318I will use the "eval 'exec'" idiom to start Perl on your system.
7319I can use the full path of your Perl binary for this purpose, but
7320doing so may cause problems if you want to share those scripts and
7321Perl is not always in a standard place ($binexp/perl).
7322
7323EOH
7324 dflt="$binexp/perl"
7325 rp="What path shall I use in \"eval 'exec'\"?"
7326 . ./myread
7327 perlpath="$ans"
7328 ;;
7329 esac
7330 ;;
7331esac
7332case "$startperl" in
7333*!*) ;;
7334*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7335esac
7336
7337: determine where public executable scripts go
7338set scriptdir scriptdir
7339eval $prefixit
7340case "$scriptdir" in
7341'')
7342 dflt="$bin"
7343 : guess some guesses
7344 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7345 $test -d /usr/share/bin && dflt=/usr/share/bin
7346 $test -d /usr/local/script && dflt=/usr/local/script
7347 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7348 $test -d $prefixexp/script && dflt=$prefixexp/script
7349 set dflt
7350 eval $prefixup
7351 ;;
7352*) dflt="$scriptdir"
7353 ;;
7354esac
7355$cat <<EOM
7356
7357Some installations have a separate directory just for executable scripts so
7358that they can mount it across multiple architectures but keep the scripts in
7359one spot. You might, for example, have a subdirectory of /usr/share for this.
7360Or you might just lump your scripts in with all your other executables.
7361
7362EOM
7363fn=d~
7364rp='Where do you keep publicly executable scripts?'
7365. ./getfile
7366if $test "X$ansexp" != "X$scriptdirexp"; then
7367 installscript=''
7368fi
7369scriptdir="$ans"
7370scriptdirexp="$ansexp"
7371: Change installation prefix, if necessary.
7372if $test X"$prefix" != X"$installprefix"; then
7373 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7374else
7375 installscript="$scriptdirexp"
7376fi
7377
7378: determine where add-on public executables go
7379case "$sitebin" in
7380'') dflt=$siteprefix/bin ;;
7381*) dflt=$sitebin ;;
7382esac
7383fn=d~
7384rp='Pathname where the add-on public executables should be installed?'
7385. ./getfile
7386sitebin="$ans"
7387sitebinexp="$ansexp"
7388: Change installation prefix, if necessary.
7389if $test X"$prefix" != X"$installprefix"; then
7390 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7391else
7392 installsitebin="$sitebinexp"
7393fi
7394
7395case "$useperlio" in
7396$define|true|[yY]*) dflt='y';;
7397*) dflt='n';;
7398esac
7399cat <<EOM
7400
7401Previous version of $package used the standard IO mechanisms as defined
7402in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7403mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7404the default. This abstraction layer can use AT&T's sfio (if you already
7405have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7406problems with some extension modules. Using PerlIO with stdio is safe,
7407but it is slower than plain stdio and therefore is not the default.
7408
7409If this doesn't make any sense to you, just accept the default '$dflt'.
7410EOM
7411rp='Use the experimental PerlIO abstraction layer?'
7412. ./myread
7413case "$ans" in
7414y|Y)
7415 val="$define"
7416 ;;
7417*)
7418 echo "Ok, doing things the stdio way"
7419 val="$undef"
7420 ;;
7421esac
7422set useperlio
7423eval $setvar
7424
7425case "$vendorprefix" in
7426'') d_vendorbin="$undef"
7427 vendorbin=''
7428 vendorbinexp=''
7429 ;;
7430*) d_vendorbin="$define"
7431 : determine where vendor-supplied executables go.
7432 case "$vendorbin" in
7433 '') dflt=$vendorprefix/bin ;;
7434 *) dflt="$vendorbin" ;;
7435 esac
7436 fn=d~+
7437 rp='Pathname for the vendor-supplied executables directory?'
7438 . ./getfile
7439 vendorbin="$ans"
7440 vendorbinexp="$ansexp"
7441 ;;
7442esac
7443: Change installation prefix, if necessary.
7444if $test X"$prefix" != X"$installprefix"; then
7445 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7446else
7447 installvendorbin="$vendorbinexp"
7448fi
7449
d56c5707
JH
7450: determine whether to only install version-specific parts.
7451echo " "
7452$cat <<EOM
7453Do you want to install only the version-specific parts of the perl
7454distribution? Usually you do *not* want to do this.
7455EOM
7456case "$versiononly" in
7457"$define"|[Yy]*|true) dflt='y' ;;
7458*) dflt='n';
7459esac
7460rp="Do you want to install only the version-specific parts of perl?"
7461. ./myread
7462case "$ans" in
7463[yY]*) val="$define";;
7464*) val="$undef" ;;
7465esac
7466set versiononly
7467eval $setvar
7468
b4eb6b3d
JH
7469: see if qgcvt exists
7470set qgcvt d_qgcvt
7471eval $inlibc
7472
7473echo " "
7474
7475if $test X"$d_longdbl" = X"$define"; then
7476
7477echo "Checking how to print long doubles..." >&4
7478
7479if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7480 $cat >try.c <<'EOCP'
7481#include <sys/types.h>
7482#include <stdio.h>
7483int main() {
7484 double d = 123.456;
7485 printf("%.3f\n", d);
7486}
7487EOCP
7488 set try
7489 if eval $compile; then
7490 yyy=`./try$exe_ext`
7491 case "$yyy" in
7492 123.456)
7493 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7494 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7495 echo "We will use %f."
7496 ;;
7497 esac
7498 fi
7499fi
7500
7501if $test X"$sPRIfldbl" = X; then
7502 $cat >try.c <<'EOCP'
7503#include <sys/types.h>
7504#include <stdio.h>
7505int main() {
7506 long double d = 123.456;
7507 printf("%.3llf\n", d);
7508}
7509EOCP
7510 set try
7511 if eval $compile; then
7512 yyy=`./try$exe_ext`
7513 case "$yyy" in
7514 123.456)
7515 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7516 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7517 echo "We will use %llf."
7518 ;;
7519 esac
7520 fi
7521fi
7522
7523if $test X"$sPRIfldbl" = X; then
7524 $cat >try.c <<'EOCP'
7525#include <sys/types.h>
7526#include <stdio.h>
7527int main() {
7528 long double d = 123.456;
7529 printf("%.3Lf\n", d);
7530}
7531EOCP
7532 set try
7533 if eval $compile; then
7534 yyy=`./try$exe_ext`
7535 case "$yyy" in
7536 123.456)
7537 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7538 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7539 echo "We will use %Lf."
7540 ;;
7541 esac
7542 fi
7543fi
7544
7545if $test X"$sPRIfldbl" = X; then
7546 $cat >try.c <<'EOCP'
7547#include <sys/types.h>
7548#include <stdio.h>
7549int main() {
7550 long double d = 123.456;
7551 printf("%.3lf\n", d);
7552}
7553EOCP
7554 set try
7555 if eval $compile; then
7556 yyy=`./try$exe_ext`
7557 case "$yyy" in
7558 123.456)
7559 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7560 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7561 echo "We will use %lf."
7562 ;;
7563 esac
7564 fi
7565fi
7566
7567if $test X"$sPRIfldbl" = X; then
7568 echo "Cannot figure out how to print long doubles." >&4
7569else
7570 sSCNfldbl=$sPRIfldbl # expect consistency
7571fi
7572
7573$rm -f try try.*
7574
7575fi # d_longdbl
7576
7577case "$sPRIfldbl" in
7578'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7579 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7580 d_SCNfldbl="$undef";
7581 ;;
7582*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7583 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7584 d_SCNfldbl="$define";
7585 ;;
7586esac
7587
7588: Check how to convert floats to strings.
7589echo " "
7590echo "Checking for an efficient way to convert floats to strings."
7591echo " " > try.c
7592case "$uselongdouble" in
7593"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7594esac
7595case "$d_longdbl" in
7596"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7597esac
7598case "$d_PRIgldbl" in
7599"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7600esac
7601$cat >>try.c <<EOP
7602#ifdef TRY_gconvert
7603#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7604char *myname = "gconvert";
7605#endif
7606#ifdef TRY_gcvt
7607#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7608char *myname = "gcvt";
7609#endif
7610#ifdef TRY_qgcvt
7611#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7612char *myname = "qgcvt";
7613#define DOUBLETYPE long double
7614#endif
7615#ifdef TRY_sprintf
7616#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7617#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7618#else
7619#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7620#endif
7621char *myname = "sprintf";
7622#endif
7623
7624#ifndef DOUBLETYPE
7625#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7626#define DOUBLETYPE long double
7627#else
7628#define DOUBLETYPE double
7629#endif
7630#endif
7631
7632#include <stdio.h>
7633
7634#define I_STDLIB $i_stdlib
7635#ifdef I_STDLIB
7636#include <stdlib.h>
7637#endif
7638
7639int
7640checkit(expect, got)
7641char *expect;
7642char *got;
7643{
7644 if (strcmp(expect, got)) {
7645 printf("%s oddity: Expected %s, got %s\n",
7646 myname, expect, got);
7647 exit(1);
7648 }
7649}
7650
7651int main()
7652{
7653 char buf[64];
7654 buf[63] = '\0';
7655
7656 /* This must be 1st test on (which?) platform */
7657 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7658 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7659 checkit("0.1", buf);
7660
7661 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7662 checkit("1", buf);
7663
7664 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7665 checkit("1.1", buf);
7666
7667 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7668 checkit("1.01", buf);
7669
7670 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7671 checkit("1.001", buf);
7672
7673 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7674 checkit("1.0001", buf);
7675
7676 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7677 checkit("1.00001", buf);
7678
7679 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7680 checkit("1.000001", buf);
7681
7682 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7683 checkit("0", buf);
7684
7685 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7686 checkit("-1", buf);
7687
7688 /* Some Linux gcvt's give 1.e+5 here. */
7689 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7690 checkit("100000", buf);
7691
7692 /* Some Linux gcvt's give -1.e+5 here. */
7693 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7694 checkit("-100000", buf);
7695
7696 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7697 checkit("123.456", buf);
7698
7699 exit(0);
7700}
7701EOP
7702case "$d_Gconvert" in
7703gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7704gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7705sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7706*) xxx_list='gconvert gcvt sprintf' ;;
7707esac
7708
7709case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7710"$define$define$define")
7711 # for long doubles prefer first qgcvt, then sprintf
7712 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7713 xxx_list="sprintf $xxx_list"
7714 case "$d_qgcvt" in
7715 "$define") xxx_list="qgcvt $xxx_list" ;;
7716 esac
7717 ;;
7718esac
7719
7720for xxx_convert in $xxx_list; do
7721 echo "Trying $xxx_convert..."
7722 $rm -f try try$_o
7723 set try -DTRY_$xxx_convert
7724 if eval $compile; then
7725 echo "$xxx_convert() found." >&4
7726 if ./try; then
7727 echo "I'll use $xxx_convert to convert floats into a string." >&4
7728 break;
7729 else
7730 echo "...But $xxx_convert didn't work as I expected."
7731 fi
7732 else
7733 echo "$xxx_convert NOT found." >&4
7734 fi
7735done
7736
7737case "$xxx_convert" in
7738gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7739gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7740qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7741*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7742 "$define$define$define")
7743 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7744 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7745 esac
7746 ;;
7747esac
7748
7749: Initialize h_fcntl
7750h_fcntl=false
7751
7752: Initialize h_sysfile
7753h_sysfile=false
7754
7755: access call always available on UNIX
7756set access d_access
7757eval $inlibc
7758
7759: locate the flags for 'access()'
7760case "$d_access" in
7761"$define")
7762 echo " "
7763 $cat >access.c <<'EOCP'
7764#include <sys/types.h>
7765#ifdef I_FCNTL
7766#include <fcntl.h>
7767#endif
7768#ifdef I_SYS_FILE
7769#include <sys/file.h>
7770#endif
7771#ifdef I_UNISTD
7772#include <unistd.h>
7773#endif
7774int main() {
7775 exit(R_OK);
7776}
7777EOCP
7778 : check sys/file.h first, no particular reason here
7779 if $test `./findhdr sys/file.h` && \
7a282f6d 7780 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7781 h_sysfile=true;
7782 echo "<sys/file.h> defines the *_OK access constants." >&4
7783 elif $test `./findhdr fcntl.h` && \
7a282f6d 7784 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7785 h_fcntl=true;
7786 echo "<fcntl.h> defines the *_OK access constants." >&4
7787 elif $test `./findhdr unistd.h` && \
7a282f6d 7788 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7789 echo "<unistd.h> defines the *_OK access constants." >&4
7790 else
7791 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7792 fi
7793 ;;
7794esac
7795$rm -f access*
7796
7797: see if accessx exists
7798set accessx d_accessx
7799eval $inlibc
7800
7801: see if alarm exists
7802set alarm d_alarm
7803eval $inlibc
7804
7805: see if atolf exists
7806set atolf d_atolf
7807eval $inlibc
7808
7809: see if atoll exists
7810set atoll d_atoll
7811eval $inlibc
7812
7813: Look for GNU-cc style attribute checking
7814echo " "
7815echo "Checking whether your compiler can handle __attribute__ ..." >&4
7816$cat >attrib.c <<'EOCP'
7817#include <stdio.h>
7818void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7819EOCP
7820if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7821 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7822 echo "Your C compiler doesn't fully support __attribute__."
7823 val="$undef"
7824 else
7825 echo "Your C compiler supports __attribute__."
7826 val="$define"
7827 fi
7828else
7829 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7830 val="$undef"
7831fi
7832set d_attribut
7833eval $setvar
7834$rm -f attrib*
7835
7836: see if bcmp exists
7837set bcmp d_bcmp
7838eval $inlibc
7839
7840: see if bcopy exists
7841set bcopy d_bcopy
7842eval $inlibc
7843
7844: see if this is a unistd.h system
7845set unistd.h i_unistd
7846eval $inhdr
7847
7848: see if getpgrp exists
7849set getpgrp d_getpgrp
7850eval $inlibc
7851
7852case "$d_getpgrp" in
7853"$define")
7854 echo " "
7855 echo "Checking to see which flavor of getpgrp is in use..."
7856 $cat >set.c <<EOP
7857#$i_unistd I_UNISTD
7858#include <sys/types.h>
7859#ifdef I_UNISTD
7860# include <unistd.h>
7861#endif
7862int main()
7863{
7864 if (getuid() == 0) {
7865 printf("(I see you are running Configure as super-user...)\n");
7866 setuid(1);
7867 }
7868#ifdef TRY_BSD_PGRP
7869 if (getpgrp(1) == 0)
7870 exit(0);
7871#else
7872 if (getpgrp() > 0)
7873 exit(0);
7874#endif
7875 exit(1);
7876}
7877EOP
7a282f6d 7878 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7879 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7880 val="$define"
7a282f6d 7881 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7882 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7883 val="$undef"
7884 else
7885 echo "I can't seem to compile and run the test program."
7886 if ./usg; then
7887 xxx="a USG one, i.e. you use getpgrp()."
7888 else
7889 # SVR4 systems can appear rather BSD-ish.
7890 case "$i_unistd" in
7891 $undef)
7892 xxx="a BSD one, i.e. you use getpgrp(pid)."
7893 val="$define"
7894 ;;
7895 $define)
7896 xxx="probably a USG one, i.e. you use getpgrp()."
7897 val="$undef"
7898 ;;
7899 esac
7900 fi
7901 echo "Assuming your getpgrp is $xxx" >&4
7902 fi
7903 ;;
7904*) val="$undef";;
7905esac
7906set d_bsdgetpgrp
7907eval $setvar
7908$rm -f set set.c
7909
7910: see if setpgrp exists
7911set setpgrp d_setpgrp
7912eval $inlibc
7913
7914case "$d_setpgrp" in
7915"$define")
7916 echo " "
7917 echo "Checking to see which flavor of setpgrp is in use..."
7918 $cat >set.c <<EOP
7919#$i_unistd I_UNISTD
7920#include <sys/types.h>
7921#ifdef I_UNISTD
7922# include <unistd.h>
7923#endif
7924int main()
7925{
7926 if (getuid() == 0) {
7927 printf("(I see you are running Configure as super-user...)\n");
7928 setuid(1);
7929 }
7930#ifdef TRY_BSD_PGRP
7931 if (-1 == setpgrp(1, 1))
7932 exit(0);
7933#else
7934 if (setpgrp() != -1)
7935 exit(0);
7936#endif
7937 exit(1);
7938}
7939EOP
7a282f6d 7940 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7941 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7942 val="$define"
7a282f6d 7943 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7944 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7945 val="$undef"
7946 else
7947 echo "(I can't seem to compile and run the test program.)"
7948 if ./usg; then
7949 xxx="a USG one, i.e. you use setpgrp()."
7950 else
7951 # SVR4 systems can appear rather BSD-ish.
7952 case "$i_unistd" in
7953 $undef)
7954 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7955 val="$define"
7956 ;;
7957 $define)
7958 xxx="probably a USG one, i.e. you use setpgrp()."
7959 val="$undef"
7960 ;;
7961 esac
7962 fi
7963 echo "Assuming your setpgrp is $xxx" >&4
7964 fi
7965 ;;
7966*) val="$undef";;
7967esac
7968set d_bsdsetpgrp
7969eval $setvar
7970$rm -f set set.c
7971: see if bzero exists
7972set bzero d_bzero
7973eval $inlibc
7974
7975: see if signal is declared as pointer to function returning int or void
7976echo " "
7977xxx=`./findhdr signal.h`
7978$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7979if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7980 echo "You have int (*signal())() instead of void." >&4
7981 val="$undef"
7982elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7983 echo "You have void (*signal())()." >&4
7984 val="$define"
7985elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7986 echo "You have int (*signal())() instead of void." >&4
7987 val="$undef"
7988elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7989 echo "You have void (*signal())()." >&4
7990 val="$define"
7991else
7992 case "$d_voidsig" in
7993 '')
7994 echo "I can't determine whether signal handler returns void or int..." >&4
7995 dflt=void
7996 rp="What type does your signal handler return?"
7997 . ./myread
7998 case "$ans" in
7999 v*) val="$define";;
8000 *) val="$undef";;
8001 esac;;
8002 "$define")
8003 echo "As you already told me, signal handler returns void." >&4
8004 val="$define"
8005 ;;
8006 *) echo "As you already told me, signal handler returns int." >&4
8007 val="$undef"
8008 ;;
8009 esac
8010fi
8011set d_voidsig
8012eval $setvar
8013case "$d_voidsig" in
8014"$define") signal_t="void";;
8015*) signal_t="int";;
8016esac
8017$rm -f $$.tmp
8018
8019: check for ability to cast large floats to 32-bit ints.
8020echo " "
8021echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8022if $test "$intsize" -ge 4; then
8023 xxx=int
8024else
8025 xxx=long
8026fi
8027$cat >try.c <<EOCP
8028#include <stdio.h>
8029#include <sys/types.h>
8030#include <signal.h>
8031$signal_t blech(s) int s; { exit(3); }
8032int main()
8033{
8034 $xxx i32;
8035 double f, g;
8036 int result = 0;
8037 char str[16];
8038 signal(SIGFPE, blech);
8039
8040 /* Don't let compiler optimize the test away. Store the number
8041 in a writable string for gcc to pass to sscanf under HP/UX.
8042 */
8043 sprintf(str, "2147483647");
8044 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8045 g = 10 * f;
8046 i32 = ($xxx) g;
8047
8048 /* x86 processors will probably give 0x8000 0000, which is a
8049 sign change. We don't want that. We want to mimic SPARC
8050 behavior here, which is to preserve the sign and give
8051 back 0x7fff ffff.
8052 */
8053 if (i32 != ($xxx) f)
8054 result |= 1;
8055 exit(result);
8056}
8057EOCP
8058set try
8059if eval $compile_ok; then
8060 ./try
8061 yyy=$?
8062else
8063 echo "(I can't seem to compile the test program--assuming it can't)"
8064 yyy=1
8065fi
8066case "$yyy" in
80670) val="$define"
8068 echo "Yup, it can."
8069 ;;
8070*) val="$undef"
8071 echo "Nope, it can't."
8072 ;;
8073esac
8074set d_casti32
8075eval $setvar
8076$rm -f try try.*
8077
8078: check for ability to cast negative floats to unsigned
8079echo " "
8080echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8081$cat >try.c <<EOCP
8082#include <stdio.h>
8083#include <sys/types.h>
8084#include <signal.h>
8085$signal_t blech(s) int s; { exit(7); }
8086$signal_t blech_in_list(s) int s; { exit(4); }
8087unsigned long dummy_long(p) unsigned long p; { return p; }
8088unsigned int dummy_int(p) unsigned int p; { return p; }
8089unsigned short dummy_short(p) unsigned short p; { return p; }
8090int main()
8091{
8092 double f;
8093 unsigned long along;
8094 unsigned int aint;
8095 unsigned short ashort;
8096 int result = 0;
8097 char str[16];
8098
8099 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8100 a direct f = -123. assignment. gcc-2.8.0 reportedly
8101 optimized the whole file away
8102 */
8103 /* Store the number in a writable string for gcc to pass to
8104 sscanf under HP/UX.
8105 */
8106 sprintf(str, "-123");
8107 sscanf(str, "%lf", &f); /* f = -123.; */
8108
8109 signal(SIGFPE, blech);
8110 along = (unsigned long)f;
8111 aint = (unsigned int)f;
8112 ashort = (unsigned short)f;
8113 if (along != (unsigned long)-123)
8114 result |= 1;
8115 if (aint != (unsigned int)-123)
8116 result |= 1;
8117 if (ashort != (unsigned short)-123)
8118 result |= 1;
8119 sprintf(str, "1073741824.");
8120 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8121 f = f + f;
8122 along = 0;
8123 along = (unsigned long)f;
8124 if (along != 0x80000000)
8125 result |= 2;
8126 f -= 1.;
8127 along = 0;
8128 along = (unsigned long)f;
8129 if (along != 0x7fffffff)
8130 result |= 1;
8131 f += 2.;
8132 along = 0;
8133 along = (unsigned long)f;
8134 if (along != 0x80000001)
8135 result |= 2;
8136 if (result)
8137 exit(result);
8138 signal(SIGFPE, blech_in_list);
8139 sprintf(str, "123.");
8140 sscanf(str, "%lf", &f); /* f = 123.; */
8141 along = dummy_long((unsigned long)f);
8142 aint = dummy_int((unsigned int)f);
8143 ashort = dummy_short((unsigned short)f);
8144 if (along != (unsigned long)123)
8145 result |= 4;
8146 if (aint != (unsigned int)123)
8147 result |= 4;
8148 if (ashort != (unsigned short)123)
8149 result |= 4;
8150 exit(result);
8151
8152}
8153EOCP
8154set try
8155if eval $compile_ok; then
8156 ./try
8157 castflags=$?
8158else
8159 echo "(I can't seem to compile the test program--assuming it can't)"
8160 castflags=7
8161fi
8162case "$castflags" in
81630) val="$define"
8164 echo "Yup, it can."
8165 ;;
8166*) val="$undef"
8167 echo "Nope, it can't."
8168 ;;
8169esac
8170set d_castneg
8171eval $setvar
8172$rm -f try.*
8173
8174: see if vprintf exists
8175echo " "
8176if set vprintf val -f d_vprintf; eval $csym; $val; then
8177 echo 'vprintf() found.' >&4
8178 val="$define"
8179 $cat >vprintf.c <<'EOF'
8180#include <varargs.h>
8181
8182int main() { xxx("foo"); }
8183
8184xxx(va_alist)
8185va_dcl
8186{
8187 va_list args;
8188 char buf[10];
8189
8190 va_start(args);
8191 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8192}
8193EOF
8194 set vprintf
8195 if eval $compile && ./vprintf; then
8196 echo "Your vsprintf() returns (int)." >&4
8197 val2="$undef"
8198 else
8199 echo "Your vsprintf() returns (char*)." >&4
8200 val2="$define"
8201 fi
8202else
8203 echo 'vprintf() NOT found.' >&4
8204 val="$undef"
8205 val2="$undef"
8206fi
8207set d_vprintf
8208eval $setvar
8209val=$val2
8210set d_charvspr
8211eval $setvar
8212
8213: see if chown exists
8214set chown d_chown
8215eval $inlibc
8216
8217: see if chroot exists
8218set chroot d_chroot
8219eval $inlibc
8220
8221: see if chsize exists
8222set chsize d_chsize
8223eval $inlibc
8224
8225: check for const keyword
8226echo " "
8227echo 'Checking to see if your C compiler knows about "const"...' >&4
8228$cat >const.c <<'EOCP'
8229typedef struct spug { int drokk; } spug;
8230int main()
8231{
8232 const char *foo;
8233 const spug y;
8234}
8235EOCP
8236if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8237 val="$define"
8238 echo "Yup, it does."
8239else
8240 val="$undef"
8241 echo "Nope, it doesn't."
8242fi
8243set d_const
8244eval $setvar
8245
8246: see if crypt exists
8247echo " "
8248if set crypt val -f d_crypt; eval $csym; $val; then
8249 echo 'crypt() found.' >&4
8250 val="$define"
8251 cryptlib=''
8252else
8253 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8254 if $test -z "$cryptlib"; then
8255 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8256 else
8257 cryptlib=-lcrypt
8258 fi
8259 if $test -z "$cryptlib"; then
8260 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8261 else
8262 cryptlib=-lcrypt
8263 fi
8264 if $test -z "$cryptlib"; then
8265 cryptlib=`./loc libcrypt$_a "" $libpth`
8266 else
8267 cryptlib=-lcrypt
8268 fi
8269 if $test -z "$cryptlib"; then
8270 echo 'crypt() NOT found.' >&4
8271 val="$undef"
8272 else
8273 val="$define"
8274 fi
8275fi
8276set d_crypt
8277eval $setvar
8278
8279: get csh whereabouts
8280case "$csh" in
8281'csh') val="$undef" ;;
8282*) val="$define" ;;
8283esac
8284set d_csh
8285eval $setvar
8286: Respect a hint or command line value for full_csh.
8287case "$full_csh" in
8288'') full_csh=$csh ;;
8289esac
8290
8291: see if cuserid exists
8292set cuserid d_cuserid
8293eval $inlibc
8294
8295: see if this is a limits.h system
8296set limits.h i_limits
8297eval $inhdr
8298
8299: see if this is a float.h system
8300set float.h i_float
8301eval $inhdr
8302
8303: See if number of significant digits in a double precision number is known
8304echo " "
8305$cat >dbl_dig.c <<EOM
8306#$i_limits I_LIMITS
8307#$i_float I_FLOAT
8308#ifdef I_LIMITS
8309#include <limits.h>
8310#endif
8311#ifdef I_FLOAT
8312#include <float.h>
8313#endif
8314#ifdef DBL_DIG
8315printf("Contains DBL_DIG");
8316#endif
8317EOM
8318$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8319if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8320 echo "DBL_DIG found." >&4
8321 val="$define"
8322else
8323 echo "DBL_DIG NOT found." >&4
8324 val="$undef"
8325fi
8326$rm -f dbl_dig.?
8327set d_dbl_dig
8328eval $setvar
8329
8330: see if difftime exists
8331set difftime d_difftime
8332eval $inlibc
8333
8334: see if this is a dirent system
8335echo " "
8336if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8337 val="$define"
8338 echo "<dirent.h> found." >&4
8339else
8340 val="$undef"
8341 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8342 echo "<sys/dir.h> found." >&4
8343 echo " "
8344 else
8345 xinc=`./findhdr sys/ndir.h`
8346 fi
8347 echo "<dirent.h> NOT found." >&4
8348fi
8349set i_dirent
8350eval $setvar
8351
8352: Look for type of directory structure.
8353echo " "
8354$cppstdin $cppflags $cppminus < "$xinc" > try.c
8355
8356case "$direntrytype" in
8357''|' ')
8358 case "$i_dirent" in
8359 $define) guess1='struct dirent' ;;
8360 *) guess1='struct direct' ;;
8361 esac
8362 ;;
8363*) guess1="$direntrytype"
8364 ;;
8365esac
8366
8367case "$guess1" in
8368'struct dirent') guess2='struct direct' ;;
8369*) guess2='struct dirent' ;;
8370esac
8371
8372if $contains "$guess1" try.c >/dev/null 2>&1; then
8373 direntrytype="$guess1"
8374 echo "Your directory entries are $direntrytype." >&4
8375elif $contains "$guess2" try.c >/dev/null 2>&1; then
8376 direntrytype="$guess2"
8377 echo "Your directory entries seem to be $direntrytype." >&4
8378else
8379 echo "I don't recognize your system's directory entries." >&4
8380 rp="What type is used for directory entries on this system?"
8381 dflt="$guess1"
8382 . ./myread
8383 direntrytype="$ans"
8384fi
8385$rm -f try.c
8386
8387
8388: see if the directory entry stores field length
8389echo " "
8390$cppstdin $cppflags $cppminus < "$xinc" > try.c
8391if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8392 echo "Good, your directory entry keeps length information in d_namlen." >&4
8393 val="$define"
8394else
8395 echo "Your directory entry does not know about the d_namlen field." >&4
8396 val="$undef"
8397fi
8398set d_dirnamlen
8399eval $setvar
8400$rm -f try.c
8401
8402: see if dlerror exists
8403xxx_runnm="$runnm"
8404runnm=false
8405set dlerror d_dlerror
8406eval $inlibc
8407runnm="$xxx_runnm"
8408
8409: see if dlfcn is available
8410set dlfcn.h i_dlfcn
8411eval $inhdr
8412
8413case "$usedl" in
8414$define|y|true)
8415 $cat << EOM
8416
8417On a few systems, the dynamically loaded modules that perl generates and uses
8418will need a different extension than shared libs. The default will probably
8419be appropriate.
8420
8421EOM
8422 case "$dlext" in
8423 '') dflt="$so" ;;
8424 *) dflt="$dlext" ;;
8425 esac
8426 rp='What is the extension of dynamically loaded modules'
8427 . ./myread
8428 dlext="$ans"
8429 ;;
8430*)
8431 dlext="none"
8432 ;;
8433esac
8434
8435: Check if dlsym need a leading underscore
8436echo " "
8437val="$undef"
8438
8439case "$dlsrc" in
8440dl_dlopen.xs)
8441 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8442 $cat >dyna.c <<'EOM'
8443fred () { }
8444EOM
8445
8446$cat >fred.c<<EOM
8447
8448#include <stdio.h>
8449#$i_dlfcn I_DLFCN
8450#ifdef I_DLFCN
8451#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8452#else
8453#include <sys/types.h>
8454#include <nlist.h>
8455#include <link.h>
8456#endif
8457
8458extern int fred() ;
8459
8460int main()
8461{
8462 void * handle ;
8463 void * symbol ;
8464#ifndef RTLD_LAZY
8465 int mode = 1 ;
8466#else
8467 int mode = RTLD_LAZY ;
8468#endif
8469 handle = dlopen("./dyna.$dlext", mode) ;
8470 if (handle == NULL) {
8471 printf ("1\n") ;
8472 fflush (stdout) ;
8473 exit(0);
8474 }
8475 symbol = dlsym(handle, "fred") ;
8476 if (symbol == NULL) {
8477 /* try putting a leading underscore */
8478 symbol = dlsym(handle, "_fred") ;
8479 if (symbol == NULL) {
8480 printf ("2\n") ;
8481 fflush (stdout) ;
8482 exit(0);
8483 }
8484 printf ("3\n") ;
8485 }
8486 else
8487 printf ("4\n") ;
8488 fflush (stdout) ;
8489 exit(0);
8490}
8491EOM
8492 : Call the object file tmp-dyna.o in case dlext=o.
8493 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8494 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7a282f6d
JH
8495 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8496 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
b4eb6b3d
JH
8497 xxx=`./fred`
8498 case $xxx in
8499 1) echo "Test program failed using dlopen." >&4
8500 echo "Perhaps you should not use dynamic loading." >&4;;
8501 2) echo "Test program failed using dlsym." >&4
8502 echo "Perhaps you should not use dynamic loading." >&4;;
8503 3) echo "dlsym needs a leading underscore" >&4
8504 val="$define" ;;
8505 4) echo "dlsym doesn't need a leading underscore." >&4;;
8506 esac
8507 else
8508 echo "I can't compile and run the test program." >&4
8509 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8510 fi
8511 ;;
8512esac
8513
8514$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8515
8516set d_dlsymun
8517eval $setvar
8518
8519hasproto='varname=$1; func=$2; shift; shift;
8520while $test $# -ge 2; do
8521 case "$1" in
8522 $define) echo "#include <$2>";;
8523 esac ;
8524 shift 2;
8525done > try.c;
8526$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8527if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8528 echo "$func() prototype found.";
8529 val="$define";
8530else
8531 echo "$func() prototype NOT found.";
8532 val="$undef";
8533fi;
8534set $varname;
8535eval $setvar;
8536$rm -f try.c tryout.c'
8537
8538: see if prototype for drand48 is available
8539echo " "
8540set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8541eval $hasproto
8542
8543: see if dup2 exists
8544set dup2 d_dup2
8545eval $inlibc
8546
8547: see if eaccess exists
8548set eaccess d_eaccess
8549eval $inlibc
8550
8551: see if endgrent exists
8552set endgrent d_endgrent
8553eval $inlibc
8554
8555: see if endhostent exists
8556set endhostent d_endhent
8557eval $inlibc
8558
8559: see if endnetent exists
8560set endnetent d_endnent
8561eval $inlibc
8562
8563: see if endprotoent exists
8564set endprotoent d_endpent
8565eval $inlibc
8566
8567: see if endpwent exists
8568set endpwent d_endpwent
8569eval $inlibc
8570
8571: see if endservent exists
8572set endservent d_endsent
8573eval $inlibc
8574
8575: Locate the flags for 'open()'
8576echo " "
8577$cat >open3.c <<'EOCP'
8578#include <sys/types.h>
8579#ifdef I_FCNTL
8580#include <fcntl.h>
8581#endif
8582#ifdef I_SYS_FILE
8583#include <sys/file.h>
8584#endif
8585int main() {
8586 if(O_RDONLY);
8587#ifdef O_TRUNC
8588 exit(0);
8589#else
8590 exit(1);
8591#endif
8592}
8593EOCP
8594: check sys/file.h first to get FREAD on Sun
8595if $test `./findhdr sys/file.h` && \
8596 set open3 -DI_SYS_FILE && eval $compile; then
8597 h_sysfile=true;
8598 echo "<sys/file.h> defines the O_* constants..." >&4
8599 if ./open3; then
8600 echo "and you have the 3 argument form of open()." >&4
8601 val="$define"
8602 else
8603 echo "but not the 3 argument form of open(). Oh, well." >&4
8604 val="$undef"
8605 fi
8606elif $test `./findhdr fcntl.h` && \
8607 set open3 -DI_FCNTL && eval $compile; then
8608 h_fcntl=true;
8609 echo "<fcntl.h> defines the O_* constants..." >&4
8610 if ./open3; then
8611 echo "and you have the 3 argument form of open()." >&4
8612 val="$define"
8613 else
8614 echo "but not the 3 argument form of open(). Oh, well." >&4
8615 val="$undef"
8616 fi
8617else
8618 val="$undef"
8619 echo "I can't find the O_* constant definitions! You got problems." >&4
8620fi
8621set d_open3
8622eval $setvar
8623$rm -f open3*
8624
8625: see which of string.h or strings.h is needed
8626echo " "
8627strings=`./findhdr string.h`
8628if $test "$strings" && $test -r "$strings"; then
8629 echo "Using <string.h> instead of <strings.h>." >&4
8630 val="$define"
8631else
8632 val="$undef"
8633 strings=`./findhdr strings.h`
8634 if $test "$strings" && $test -r "$strings"; then
8635 echo "Using <strings.h> instead of <string.h>." >&4
8636 else
8637 echo "No string header found -- You'll surely have problems." >&4
8638 fi
8639fi
8640set i_string
8641eval $setvar
8642case "$i_string" in
8643"$undef") strings=`./findhdr strings.h`;;
8644*) strings=`./findhdr string.h`;;
8645esac
8646
8647: check for non-blocking I/O stuff
8648case "$h_sysfile" in
8649true) echo "#include <sys/file.h>" > head.c;;
8650*)
8651 case "$h_fcntl" in
8652 true) echo "#include <fcntl.h>" > head.c;;
8653 *) echo "#include <sys/fcntl.h>" > head.c;;
8654 esac
8655 ;;
8656esac
8657echo " "
8658echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8659case "$o_nonblock" in
8660'')
8661 $cat head.c > try.c
8662 $cat >>try.c <<'EOCP'
8663#include <stdio.h>
8664int main() {
8665#ifdef O_NONBLOCK
8666 printf("O_NONBLOCK\n");
8667 exit(0);
8668#endif
8669#ifdef O_NDELAY
8670 printf("O_NDELAY\n");
8671 exit(0);
8672#endif
8673#ifdef FNDELAY
8674 printf("FNDELAY\n");
8675 exit(0);
8676#endif
8677 exit(0);
8678}
8679EOCP
8680 set try
8681 if eval $compile_ok; then
8682 o_nonblock=`./try`
8683 case "$o_nonblock" in
8684 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8685 *) echo "Seems like we can use $o_nonblock.";;
8686 esac
8687 else
8688 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8689 fi
8690 ;;
8691*) echo "Using $hint value $o_nonblock.";;
8692esac
8693$rm -f try try.* .out core
8694
8695echo " "
8696echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8697case "$eagain" in
8698'')
8699 $cat head.c > try.c
8700 $cat >>try.c <<EOCP
8701#include <errno.h>
8702#include <sys/types.h>
8703#include <signal.h>
8704#include <stdio.h>
8705#define MY_O_NONBLOCK $o_nonblock
8706#ifndef errno /* XXX need better Configure test */
8707extern int errno;
8708#endif
8709#$i_unistd I_UNISTD
8710#ifdef I_UNISTD
8711#include <unistd.h>
8712#endif
8713#$i_string I_STRING
8714#ifdef I_STRING
8715#include <string.h>
8716#else
8717#include <strings.h>
8718#endif
8719$signal_t blech(x) int x; { exit(3); }
8720EOCP
8721 $cat >> try.c <<'EOCP'
8722int main()
8723{
8724 int pd[2];
8725 int pu[2];
8726 char buf[1];
8727 char string[100];
8728
8729 pipe(pd); /* Down: child -> parent */
8730 pipe(pu); /* Up: parent -> child */
8731 if (0 != fork()) {
8732 int ret;
8733 close(pd[1]); /* Parent reads from pd[0] */
8734 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8735 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8736 exit(1);
8737 signal(SIGALRM, blech);
8738 alarm(5);
8739 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8740 exit(2);
8741 sprintf(string, "%d\n", ret);
8742 write(2, string, strlen(string));
8743 alarm(0);
8744#ifdef EAGAIN
8745 if (errno == EAGAIN) {
8746 printf("EAGAIN\n");
8747 goto ok;
8748 }
8749#endif
8750#ifdef EWOULDBLOCK
8751 if (errno == EWOULDBLOCK)
8752 printf("EWOULDBLOCK\n");
8753#endif
8754 ok:
8755 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8756 sleep(2); /* Give it time to close our pipe */
8757 alarm(5);
8758 ret = read(pd[0], buf, 1); /* Should read EOF */
8759 alarm(0);
8760 sprintf(string, "%d\n", ret);
8761 write(3, string, strlen(string));
8762 exit(0);
8763 }
8764
8765 close(pd[0]); /* We write to pd[1] */
8766 close(pu[1]); /* We read from pu[0] */
8767 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8768 close(pd[1]); /* Pipe pd is now fully closed! */
8769 exit(0); /* Bye bye, thank you for playing! */
8770}
8771EOCP
8772 set try
8773 if eval $compile_ok; then
8774 echo "$startsh" >mtry
8775 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8776 chmod +x mtry
8777 ./mtry >/dev/null 2>&1
8778 case $? in
8779 0) eagain=`$cat try.out`;;
8780 1) echo "Could not perform non-blocking setting!";;
8781 2) echo "I did a successful read() for something that was not there!";;
8782 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8783 *) echo "Something terribly wrong happened during testing.";;
8784 esac
8785 rd_nodata=`$cat try.ret`
8786 echo "A read() system call with no data present returns $rd_nodata."
8787 case "$rd_nodata" in
8788 0|-1) ;;
8789 *)
8790 echo "(That's peculiar, fixing that to be -1.)"
8791 rd_nodata=-1
8792 ;;
8793 esac
8794 case "$eagain" in
8795 '')
8796 echo "Forcing errno EAGAIN on read() with no data available."
8797 eagain=EAGAIN
8798 ;;
8799 *)
8800 echo "Your read() sets errno to $eagain when no data is available."
8801 ;;
8802 esac
8803 status=`$cat try.err`
8804 case "$status" in
8805 0) echo "And it correctly returns 0 to signal EOF.";;
8806 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8807 *) echo "However, your read() returns '$status' on EOF??";;
8808 esac
8809 val="$define"
8810 if test "$status" = "$rd_nodata"; then
8811 echo "WARNING: you can't distinguish between EOF and no data!"
8812 val="$undef"
8813 fi
8814 else
8815 echo "I can't compile the test program--assuming errno EAGAIN will do."
8816 eagain=EAGAIN
8817 fi
8818 set d_eofnblk
8819 eval $setvar
8820 ;;
8821*)
8822 echo "Using $hint value $eagain."
8823 echo "Your read() returns $rd_nodata when no data is present."
8824 case "$d_eofnblk" in
8825 "$define") echo "And you can see EOF because read() returns 0.";;
8826 "$undef") echo "But you can't see EOF status from read() returned value.";;
8827 *)
8828 echo "(Assuming you can't see EOF status from read anyway.)"
8829 d_eofnblk=$undef
8830 ;;
8831 esac
8832 ;;
8833esac
8834$rm -f try try.* .out core head.c mtry
8835
8836: see if fchmod exists
8837set fchmod d_fchmod
8838eval $inlibc
8839
8840: see if fchown exists
8841set fchown d_fchown
8842eval $inlibc
8843
8844: see if this is an fcntl system
8845set fcntl d_fcntl
8846eval $inlibc
8847
8848hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8849while $test $# -ge 2; do
8850 case "$1" in
8851 $define) echo "#include <$2>";;
8852 esac ;
8853 shift 2;
8854done > try.c;
8855echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8856set try;
8857if eval $compile; then
8858 val="$define";
8859else
8860 val="$undef";
8861fi;
8862set $varname;
8863eval $setvar;
8864$rm -f try.c try.o'
8865
8866socketlib=''
8867sockethdr=''
8868: see whether socket exists
8869echo " "
8870$echo $n "Hmm... $c" >&4
8871if set socket val -f d_socket; eval $csym; $val; then
8872 echo "Looks like you have Berkeley networking support." >&4
8873 d_socket="$define"
8874 if set setsockopt val -f; eval $csym; $val; then
8875 d_oldsock="$undef"
8876 else
8877 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8878 d_oldsock="$define"
8879 fi
8880else
8881 if $contains socklib libc.list >/dev/null 2>&1; then
8882 echo "Looks like you have Berkeley networking support." >&4
8883 d_socket="$define"
8884 : we will have to assume that it supports the 4.2 BSD interface
8885 d_oldsock="$undef"
8886 else
8887 echo "You don't have Berkeley networking in libc$_a..." >&4
8888 if test "X$d_socket" = "X$define"; then
8889 echo "...but you seem to believe that you have sockets." >&4
8890 else
8891 for net in net socket
8892 do
8893 if test -f /usr/lib/lib$net$_a; then
8894 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8895 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8896 if $contains socket libc.list >/dev/null 2>&1; then
8897 d_socket="$define"
8898 socketlib="-l$net"
8899 case "$net" in
8900 net)
8901 echo "...but the Wollongong group seems to have hacked it in." >&4
8902 sockethdr="-I/usr/netinclude"
8903 ;;
8904 esac
8905 echo "Found Berkeley sockets interface in lib$net." >& 4
8906 if $contains setsockopt libc.list >/dev/null 2>&1; then
8907 d_oldsock="$undef"
8908 else
8909 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8910 d_oldsock="$define"
8911 fi
8912 break
8913 fi
8914 fi
8915 done
8916 if test "X$d_socket" != "X$define"; then
8917 echo "or anywhere else I see." >&4
8918 d_socket="$undef"
8919 d_oldsock="$undef"
8920 fi
8921 fi
8922 fi
8923fi
8924
8925: see if socketpair exists
8926set socketpair d_sockpair
8927eval $inlibc
8928
8929
8930echo " "
8931echo "Checking the availability of certain socket constants..." >& 4
8932for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8933 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8934 $cat >try.c <<EOF
8935#include <sys/types.h>
8936#include <sys/socket.h>
8937int main() {
8938 int i = $ENUM;
8939}
8940EOF
8941 val="$undef"
8942 set try; if eval $compile; then
8943 val="$define"
8944 fi
8945 set d_${enum}; eval $setvar
8946 $rm -f try.c try
8947done
8948
8949: see if sys/select.h has to be included
8950set sys/select.h i_sysselct
8951eval $inhdr
8952
8953: see if we should include time.h, sys/time.h, or both
8954echo " "
8955if test "X$timeincl" = X; then
8956 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8957 $echo $n "I'm now running the test program...$c"
8958 $cat >try.c <<'EOCP'
8959#include <sys/types.h>
8960#ifdef I_TIME
8961#include <time.h>
8962#endif
8963#ifdef I_SYSTIME
8964#ifdef SYSTIMEKERNEL
8965#define KERNEL
8966#endif
8967#include <sys/time.h>
8968#endif
8969#ifdef I_SYSSELECT
8970#include <sys/select.h>
8971#endif
8972int main()
8973{
8974 struct tm foo;
8975#ifdef S_TIMEVAL
8976 struct timeval bar;
8977#endif
8978#ifdef S_TIMEZONE
8979 struct timezone tzp;
8980#endif
8981 if (foo.tm_sec == foo.tm_sec)
8982 exit(0);
8983#ifdef S_TIMEVAL
8984 if (bar.tv_sec == bar.tv_sec)
8985 exit(0);
8986#endif
8987 exit(1);
8988}
8989EOCP
8990 flags=''
8991 for s_timezone in '-DS_TIMEZONE' ''; do
8992 sysselect=''
8993 for s_timeval in '-DS_TIMEVAL' ''; do
8994 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8995 for i_time in '' '-DI_TIME'; do
8996 for i_systime in '-DI_SYSTIME' ''; do
8997 case "$flags" in
8998 '') $echo $n ".$c"
8999 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9000 if eval $compile; then
9001 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9002 shift
9003 flags="$*"
9004 echo " "
9005 $echo $n "Succeeded with $flags$c"
9006 fi
9007 ;;
9008 esac
9009 done
9010 done
9011 done
9012 done
9013 done
9014 timeincl=''
9015 echo " "
9016 case "$flags" in
9017 *SYSTIMEKERNEL*) i_systimek="$define"
9018 timeincl=`./findhdr sys/time.h`
9019 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9020 *) i_systimek="$undef";;
9021 esac
9022 case "$flags" in
9023 *I_TIME*) i_time="$define"
9024 timeincl=`./findhdr time.h`" $timeincl"
9025 echo "We'll include <time.h>." >&4;;
9026 *) i_time="$undef";;
9027 esac
9028 case "$flags" in
9029 *I_SYSTIME*) i_systime="$define"
9030 timeincl=`./findhdr sys/time.h`" $timeincl"
9031 echo "We'll include <sys/time.h>." >&4;;
9032 *) i_systime="$undef";;
9033 esac
9034 $rm -f try.c try
9035fi
9036
9037: check for fd_set items
9038$cat <<EOM
9039
9040Checking to see how well your C compiler handles fd_set and friends ...
9041EOM
9042$cat >fd_set.c <<EOCP
9043#$i_systime I_SYS_TIME
9044#$i_sysselct I_SYS_SELECT
9045#$d_socket HAS_SOCKET
9046#include <sys/types.h>
9047#ifdef HAS_SOCKET
9048#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9049#endif
9050#ifdef I_SYS_TIME
9051#include <sys/time.h>
9052#endif
9053#ifdef I_SYS_SELECT
9054#include <sys/select.h>
9055#endif
9056int main() {
9057 fd_set fds;
9058
9059#ifdef TRYBITS
9060 if(fds.fds_bits);
9061#endif
9062
9063#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9064 exit(0);
9065#else
9066 exit(1);
9067#endif
9068}
9069EOCP
9070set fd_set -DTRYBITS
9071if eval $compile; then
9072 d_fds_bits="$define"
9073 d_fd_set="$define"
9074 echo "Well, your system knows about the normal fd_set typedef..." >&4
9075 if ./fd_set; then
9076 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9077 d_fd_macros="$define"
9078 else
9079 $cat >&4 <<'EOM'
9080but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9081EOM
9082 d_fd_macros="$undef"
9083 fi
9084else
9085 $cat <<'EOM'
9086Hmm, your compiler has some difficulty with fd_set. Checking further...
9087EOM
9088 set fd_set
9089 if eval $compile; then
9090 d_fds_bits="$undef"
9091 d_fd_set="$define"
9092 echo "Well, your system has some sort of fd_set available..." >&4
9093 if ./fd_set; then
9094 echo "and you have the normal fd_set macros." >&4
9095 d_fd_macros="$define"
9096 else
9097 $cat <<'EOM'
9098but not the normal fd_set macros! Gross! More work for me...
9099EOM
9100 d_fd_macros="$undef"
9101 fi
9102 else
9103 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9104 d_fd_set="$undef"
9105 d_fds_bits="$undef"
9106 d_fd_macros="$undef"
9107 fi
9108fi
9109$rm -f fd_set*
9110
9111: see if fgetpos exists
9112set fgetpos d_fgetpos
9113eval $inlibc
9114
9115: see if flock exists
9116set flock d_flock
9117eval $inlibc
9118
9119: see if fork exists
9120set fork d_fork
9121eval $inlibc
9122
9123: see if pathconf exists
9124set pathconf d_pathconf
9125eval $inlibc
9126
9127: see if fpathconf exists
9128set fpathconf d_fpathconf
9129eval $inlibc
9130
9131
9132: check for fpos64_t
9133echo " "
9134echo "Checking to see if you have fpos64_t..." >&4
9135$cat >try.c <<EOCP
9136#include <stdio.h>
9137int main() { fpos64_t x = 7; }
9138EOCP
9139set try
9140if eval $compile; then
9141 val="$define"
9142 echo "You have fpos64_t."
9143else
9144 val="$undef"
9145 echo "You do not have fpos64_t."
9146 case "$fpossize" in
9147 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9148 esac
9149fi
9150$rm -f try.* try
9151set d_fpos64_t
9152eval $setvar
9153
9154: see if frexpl exists
9155set frexpl d_frexpl
9156eval $inlibc
9157
9158hasstruct='varname=$1; struct=$2; shift; shift;
9159while $test $# -ge 2; do
9160 case "$1" in
9161 $define) echo "#include <$2>";;
9162 esac ;
9163 shift 2;
9164done > try.c;
9165echo "int main () { struct $struct foo; }" >> try.c;
9166set try;
9167if eval $compile; then
9168 val="$define";
9169else
9170 val="$undef";
9171fi;
9172set $varname;
9173eval $setvar;
9174$rm -f try.c try.o'
9175
9176: see if this is a sys/param system
9177set sys/param.h i_sysparam
9178eval $inhdr
9179
9180: see if this is a sys/mount.h system
9181set sys/mount.h i_sysmount
9182eval $inhdr
9183
9184: see if sys/types.h has to be included
9185set sys/types.h i_systypes
9186eval $inhdr
9187
9188
9189echo " "
9190echo "Checking to see if your system supports struct fs_data..." >&4
9191set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9192eval $hasstruct
9193case "$d_fs_data_s" in
9194"$define") echo "Yes, it does." ;;
9195*) echo "No, it doesn't." ;;
9196esac
9197
9198: see if fseeko exists
9199set fseeko d_fseeko
9200eval $inlibc
9201case "$longsize" in
92028) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9203esac
9204
9205: see if fsetpos exists
9206set fsetpos d_fsetpos
9207eval $inlibc
9208
9209
9210: see if fstatfs exists
9211set fstatfs d_fstatfs
9212eval $inlibc
9213
9214
9215: see if statvfs exists
9216set statvfs d_statvfs
9217eval $inlibc
9218
9219: see if fstatvfs exists
9220set fstatvfs d_fstatvfs
9221eval $inlibc
9222
9223
9224: see if ftello exists
9225set ftello d_ftello
9226eval $inlibc
9227case "$longsize" in
92288) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9229esac
9230
9231: see if getcwd exists
9232set getcwd d_getcwd
9233eval $inlibc
9234
9235: see if getespwnam exists
9236set getespwnam d_getespwnam
9237eval $inlibc
9238
9239
9240: see if getfsstat exists
9241set getfsstat d_getfsstat
9242eval $inlibc
9243
9244: see if getgrent exists
9245set getgrent d_getgrent
9246eval $inlibc
9247
9248: see if gethostbyaddr exists
9249set gethostbyaddr d_gethbyaddr
9250eval $inlibc
9251
9252: see if gethostbyname exists
9253set gethostbyname d_gethbyname
9254eval $inlibc
9255
9256: see if gethostent exists
9257set gethostent d_gethent
9258eval $inlibc
9259
9260: see how we will look up host name
9261echo " "
9262call=''
9263if set gethostname val -f d_gethname; eval $csym; $val; then
9264 echo 'gethostname() found.' >&4
9265 d_gethname="$define"
9266 call=gethostname
9267fi
9268if set uname val -f d_uname; eval $csym; $val; then
9269 if ./xenix; then
9270 $cat <<'EOM'
9271uname() was found, but you're running xenix, and older versions of xenix
9272have a broken uname(). If you don't really know whether your xenix is old
9273enough to have a broken system call, use the default answer.
9274
9275EOM
9276 dflt=y
9277 case "$d_uname" in
9278 "$define") dflt=n;;
9279 esac
9280 rp='Is your uname() broken?'
9281 . ./myread
9282 case "$ans" in
9283 n*) d_uname="$define"; call=uname;;
9284 esac
9285 else
9286 echo 'uname() found.' >&4
9287 d_uname="$define"
9288 case "$call" in
9289 '') call=uname ;;
9290 esac
9291 fi
9292fi
9293case "$d_gethname" in
9294'') d_gethname="$undef";;
9295esac
9296case "$d_uname" in
9297'') d_uname="$undef";;
9298esac
9299case "$d_uname$d_gethname" in
9300*define*)
9301 dflt=n
9302 cat <<EOM
9303
9304Every now and then someone has a $call() that lies about the hostname
9305but can't be fixed for political or economic reasons. If you wish, I can
9306pretend $call() isn't there and maybe compute hostname at run-time
9307thanks to the '$phostname' command.
9308
9309EOM
9310 rp="Shall I ignore $call() from now on?"
9311 . ./myread
9312 case "$ans" in
9313 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9314 esac;;
9315esac
9316case "$phostname" in
9317'') aphostname='';;
9318*) case "$aphostname" in
9319 /*) ;;
9320 *) set X $phostname
9321 shift
9322 file=$1
9323 shift
9324 file=`./loc $file $file $pth`
9325 aphostname=`echo $file $*`
9326 ;;
9327 esac
9328 ;;
9329esac
9330case "$d_uname$d_gethname" in
9331*define*) ;;
9332*)
9333 case "$phostname" in
9334 '')
9335 echo "There will be no way for $package to get your hostname." >&4;;
9336 *)
9337 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9338 ;;
9339 esac;;
9340esac
9341case "$d_phostname" in
9342'') d_phostname="$undef";;
9343esac
9344
9345: see if this is a netdb.h system
9346set netdb.h i_netdb
9347eval $inhdr
9348
9349: see if prototypes for various gethostxxx netdb.h functions are available
9350echo " "
9351set d_gethostprotos gethostent $i_netdb netdb.h
9352eval $hasproto
9353
9354: see if getlogin exists
9355set getlogin d_getlogin
9356eval $inlibc
9357
9358: see if getmnt exists
9359set getmnt d_getmnt
9360eval $inlibc
9361
9362: see if getmntent exists
9363set getmntent d_getmntent
9364eval $inlibc
9365
9366: see if getnetbyaddr exists
9367set getnetbyaddr d_getnbyaddr
9368eval $inlibc
9369
9370: see if getnetbyname exists
9371set getnetbyname d_getnbyname
9372eval $inlibc
9373
9374: see if getnetent exists
9375set getnetent d_getnent
9376eval $inlibc
9377
9378: see if prototypes for various getnetxxx netdb.h functions are available
9379echo " "
9380set d_getnetprotos getnetent $i_netdb netdb.h
9381eval $hasproto
9382
9383
9384: see if getprotobyname exists
9385set getprotobyname d_getpbyname
9386eval $inlibc
9387
9388: see if getprotobynumber exists
9389set getprotobynumber d_getpbynumber
9390eval $inlibc
9391
9392: see if getprotoent exists
9393set getprotoent d_getpent
9394eval $inlibc
9395
9396: see if getpgid exists
9397set getpgid d_getpgid
9398eval $inlibc
9399
9400: see if getpgrp2 exists
9401set getpgrp2 d_getpgrp2
9402eval $inlibc
9403
9404: see if getppid exists
9405set getppid d_getppid
9406eval $inlibc
9407
9408: see if getpriority exists
9409set getpriority d_getprior
9410eval $inlibc
9411
9412: see if prototypes for various getprotoxxx netdb.h functions are available
9413echo " "
9414set d_getprotoprotos getprotoent $i_netdb netdb.h
9415eval $hasproto
9416
9417: see if getprpwnam exists
9418set getprpwnam d_getprpwnam
9419eval $inlibc
9420
9421: see if getpwent exists
9422set getpwent d_getpwent
9423eval $inlibc
9424
9425
9426: see if getservbyname exists
9427set getservbyname d_getsbyname
9428eval $inlibc
9429
9430: see if getservbyport exists
9431set getservbyport d_getsbyport
9432eval $inlibc
9433
9434: see if getservent exists
9435set getservent d_getsent
9436eval $inlibc
9437
9438: see if prototypes for various getservxxx netdb.h functions are available
9439echo " "
9440set d_getservprotos getservent $i_netdb netdb.h
9441eval $hasproto
9442
9443: see if getspnam exists
9444set getspnam d_getspnam
9445eval $inlibc
9446
9447: see if gettimeofday or ftime exists
9448set gettimeofday d_gettimeod
9449eval $inlibc
9450case "$d_gettimeod" in
9451"$undef")
9452 set ftime d_ftime
9453 eval $inlibc
9454 ;;
9455*)
9456 val="$undef"; set d_ftime; eval $setvar
9457 ;;
9458esac
9459case "$d_gettimeod$d_ftime" in
9460"$undef$undef")
9461 echo " "
9462 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9463 ;;
9464esac
9465
9466: see if this is an grp system
9467set grp.h i_grp
9468eval $inhdr
9469
9470case "$i_grp" in
9471$define)
9472 xxx=`./findhdr grp.h`
9473 $cppstdin $cppflags $cppminus < $xxx >$$.h
9474
9475 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9476 val="$define"
9477 else
9478 val="$undef"
9479 fi
9480 set d_grpasswd
9481 eval $setvar
9482
9483 $rm -f $$.h
9484 ;;
9485*)
9486 val="$undef";
9487 set d_grpasswd; eval $setvar
9488 ;;
9489esac
9490
9491: see if hasmntopt exists
9492set hasmntopt d_hasmntopt
9493eval $inlibc
9494
9495: see if this is a netinet/in.h or sys/in.h system
9496set netinet/in.h i_niin sys/in.h i_sysin
9497eval $inhdr
9498
9499: see if arpa/inet.h has to be included
9500set arpa/inet.h i_arpainet
9501eval $inhdr
9502
9503: see if htonl --and friends-- exists
9504val=''
9505set htonl val
9506eval $inlibc
9507
9508: Maybe they are macros.
9509case "$val" in
9510$undef)
9511 $cat >htonl.c <<EOM
9512#include <stdio.h>
9513#include <sys/types.h>
9514#$i_niin I_NETINET_IN
9515#$i_sysin I_SYS_IN
9516#$i_arpainet I_ARPA_INET
9517#ifdef I_NETINET_IN
9518#include <netinet/in.h>
9519#endif
9520#ifdef I_SYS_IN
9521#include <sys/in.h>
9522#endif
9523#ifdef I_ARPA_INET
9524#include <arpa/inet.h>
9525#endif
9526#ifdef htonl
9527printf("Defined as a macro.");
9528#endif
9529EOM
9530 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9531 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9532 val="$define"
9533 echo "But it seems to be defined as a macro." >&4
9534 fi
9535 $rm -f htonl.?
9536 ;;
9537esac
9538set d_htonl
9539eval $setvar
9540
9541: see if iconv exists
9542set iconv d_iconv
9543eval $inlibc
9544
9545: index or strchr
9546echo " "
9547if set index val -f; eval $csym; $val; then
9548 if set strchr val -f d_strchr; eval $csym; $val; then
9549 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9550 val="$define"
9551 vali="$undef"
9552 echo "strchr() found." >&4
9553 else
9554 val="$undef"
9555 vali="$define"
9556 echo "index() found." >&4
9557 fi
9558 else
9559 val="$undef"
9560 vali="$define"
9561 echo "index() found." >&4
9562 fi
9563else
9564 if set strchr val -f d_strchr; eval $csym; $val; then
9565 val="$define"
9566 vali="$undef"
9567 echo "strchr() found." >&4
9568 else
9569 echo "No index() or strchr() found!" >&4
9570 val="$undef"
9571 vali="$undef"
9572 fi
9573fi
9574set d_strchr; eval $setvar
9575val="$vali"
9576set d_index; eval $setvar
9577
9578: check whether inet_aton exists
9579set inet_aton d_inetaton
9580eval $inlibc
9581
9582: see if inttypes.h is available
9583: we want a real compile instead of Inhdr because some systems
9584: have an inttypes.h which includes non-existent headers
9585echo " "
9586$cat >try.c <<EOCP
9587#include <inttypes.h>
9588int main() {
9589 static int32_t foo32 = 0x12345678;
9590}
9591EOCP
9592set try
9593if eval $compile; then
9594 echo "<inttypes.h> found." >&4
9595 val="$define"
9596else
9597 echo "<inttypes.h> NOT found." >&4
9598 val="$undef"
9599fi
9600$rm -f try.c try
9601set i_inttypes
9602eval $setvar
9603
9604: check for int64_t
9605echo " "
9606echo "Checking to see if you have int64_t..." >&4
9607$cat >try.c <<EOCP
9608#include <sys/types.h>
9609#$i_inttypes I_INTTYPES
9610#ifdef I_INTTYPES
9611#include <inttypes.h>
9612#endif
9613int main() { int64_t x = 7; }
9614EOCP
9615set try
9616if eval $compile; then
9617 val="$define"
9618 echo "You have int64_t."
9619else
9620 val="$undef"
9621 echo "You do not have int64_t."
9622fi
9623$rm -f try try.*
9624set d_int64_t
9625eval $setvar
9626
9627: Look for isascii
9628echo " "
9629$cat >isascii.c <<'EOCP'
9630#include <stdio.h>
9631#include <ctype.h>
9632int main() {
9633 int c = 'A';
9634 if (isascii(c))
9635 exit(0);
9636 else
9637 exit(1);
9638}
9639EOCP
9640set isascii
9641if eval $compile; then
9642 echo "isascii() found." >&4
9643 val="$define"
9644else
9645 echo "isascii() NOT found." >&4
9646 val="$undef"
9647fi
9648set d_isascii
9649eval $setvar
9650$rm -f isascii*
9651
9652: see if isnan exists
9653set isnan d_isnan
9654eval $inlibc
9655
9656: see if isnanl exists
9657set isnanl d_isnanl
9658eval $inlibc
9659
9660: see if killpg exists
9661set killpg d_killpg
9662eval $inlibc
9663
9664: see if lchown exists
9665echo " "
9666$cat > try.c <<'EOCP'
9667/* System header to define __stub macros and hopefully few prototypes,
9668 which can conflict with char lchown(); below. */
9669#include <assert.h>
9670/* Override any gcc2 internal prototype to avoid an error. */
9671/* We use char because int might match the return type of a gcc2
9672 builtin and then its argument prototype would still apply. */
9673char lchown();
9674int main() {
9675 /* The GNU C library defines this for functions which it implements
9676 to always fail with ENOSYS. Some functions are actually named
9677 something starting with __ and the normal name is an alias. */
9678#if defined (__stub_lchown) || defined (__stub___lchown)
9679choke me
9680#else
9681lchown();
9682#endif
9683; return 0; }
9684EOCP
9685set try
9686if eval $compile; then
9687 $echo "lchown() found." >&4
9688 val="$define"
9689else
9690 $echo "lchown() NOT found." >&4
9691 val="$undef"
9692fi
9693set d_lchown
9694eval $setvar
9695
9696: See if number of significant digits in a double precision number is known
9697echo " "
9698$cat >ldbl_dig.c <<EOM
9699#$i_limits I_LIMITS
9700#$i_float I_FLOAT
9701#ifdef I_LIMITS
9702#include <limits.h>
9703#endif
9704#ifdef I_FLOAT
9705#include <float.h>
9706#endif
9707#ifdef LDBL_DIG
9708printf("Contains LDBL_DIG");
9709#endif
9710EOM
9711$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9712if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9713 echo "LDBL_DIG found." >&4
9714 val="$define"
9715else
9716 echo "LDBL_DIG NOT found." >&4
9717 val="$undef"
9718fi
9719$rm -f ldbl_dig.?
9720set d_ldbl_dig
9721eval $setvar
9722
9723: see if link exists
9724set link d_link
9725eval $inlibc
9726
9727: see if localeconv exists
9728set localeconv d_locconv
9729eval $inlibc
9730
9731: see if lockf exists
9732set lockf d_lockf
9733eval $inlibc
9734
9735: check for long long
9736echo " "
9737echo "Checking to see if you have long long..." >&4
9738echo 'int main() { long long x = 7; return 0; }' > try.c
9739set try
9740if eval $compile; then
9741 val="$define"
9742 echo "You have long long."
9743else
9744 val="$undef"
9745 echo "You do not have long long."
9746fi
9747$rm try.*
9748set d_longlong
9749eval $setvar
9750
9751: check for length of long long
9752case "${d_longlong}${longlongsize}" in
9753$define)
9754 echo " "
9755 echo "Checking to see how big your long longs are..." >&4
9756 $cat >try.c <<'EOCP'
9757#include <stdio.h>
9758int main()
9759{
9760 printf("%d\n", (int)sizeof(long long));
9761 return(0);
9762}
9763EOCP
9764 set try
9765 if eval $compile_ok; then
9766 longlongsize=`./try$exe_ext`
9767 echo "Your long longs are $longlongsize bytes long."
9768 else
9769 dflt='8'
9770 echo " "
9771 echo "(I can't seem to compile the test program. Guessing...)"
9772 rp="What is the size of a long long (in bytes)?"
9773 . ./myread
9774 longlongsize="$ans"
9775 fi
9776 if $test "X$longsize" = "X$longlongsize"; then
9777 echo "(That isn't any different from an ordinary long.)"
9778 fi
9779 ;;
9780esac
9781$rm -f try.* try
9782
9783: see if prototype for lseek is available
9784echo " "
9785set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9786eval $hasproto
9787
9788: see if lstat exists
9789set lstat d_lstat
9790eval $inlibc
9791
9792: see if madvise exists
9793set madvise d_madvise
9794eval $inlibc
9795
9796: see if mblen exists
9797set mblen d_mblen
9798eval $inlibc
9799
9800: see if mbstowcs exists
9801set mbstowcs d_mbstowcs
9802eval $inlibc
9803
9804: see if mbtowc exists
9805set mbtowc d_mbtowc
9806eval $inlibc
9807
9808: see if memchr exists
9809set memchr d_memchr
9810eval $inlibc
9811
9812: see if memcmp exists
9813set memcmp d_memcmp
9814eval $inlibc
9815
9816: see if memcpy exists
9817set memcpy d_memcpy
9818eval $inlibc
9819
9820: see if memmove exists
9821set memmove d_memmove
9822eval $inlibc
9823
9824: see if memset exists
9825set memset d_memset
9826eval $inlibc
9827
9828: see if mkdir exists
9829set mkdir d_mkdir
9830eval $inlibc
9831
9832: see if mkdtemp exists
9833set mkdtemp d_mkdtemp
9834eval $inlibc
9835
9836: see if mkfifo exists
9837set mkfifo d_mkfifo
9838eval $inlibc
9839
9840: see if mkstemp exists
9841set mkstemp d_mkstemp
9842eval $inlibc
9843
9844: see if mkstemps exists
9845set mkstemps d_mkstemps
9846eval $inlibc
9847
9848: see if mktime exists
9849set mktime d_mktime
9850eval $inlibc
9851
9852: see if this is a sys/mman.h system
9853set sys/mman.h i_sysmman
9854eval $inhdr
9855
9856: see if mmap exists
9857set mmap d_mmap
9858eval $inlibc
9859: see what shmat returns
9860: default to something harmless
9861mmaptype='void *'
9862case "$i_sysmman$d_mmap" in
9863"$define$define")
9864 $cat >mmap.c <<'END'
9865#include <sys/mman.h>
9866void *mmap();
9867END
9868 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9869 mmaptype='void *'
9870 else
9871 mmaptype='caddr_t'
9872 fi
9873 echo "and it returns ($mmaptype)." >&4
9874 ;;
9875esac
9876
9877
9878
9879: see if modfl exists
9880set modfl d_modfl
9881eval $inlibc
9882
9883: see if mprotect exists
9884set mprotect d_mprotect
9885eval $inlibc
9886
9887: see if msgctl exists
9888set msgctl d_msgctl
9889eval $inlibc
9890
9891: see if msgget exists
9892set msgget d_msgget
9893eval $inlibc
9894
9895: see if msgsnd exists
9896set msgsnd d_msgsnd
9897eval $inlibc
9898
9899: see if msgrcv exists
9900set msgrcv d_msgrcv
9901eval $inlibc
9902
9903: see how much of the 'msg*(2)' library is present.
9904h_msg=true
9905echo " "
9906case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9907*"$undef"*) h_msg=false;;
9908esac
9909case "$osname" in
9910freebsd)
9911 case "`ipcs 2>&1`" in
9912 "SVID messages"*"not configured"*)
9913 echo "Your $osname does not have the msg*(2) configured." >&4
9914 h_msg=false
9915 val="$undef"
9916 set msgctl d_msgctl
9917 eval $setvar
9918 set msgget d_msgget
9919 eval $setvar
9920 set msgsnd d_msgsnd
9921 eval $setvar
9922 set msgrcv d_msgrcv
9923 eval $setvar
9924 ;;
9925 esac
9926 ;;
9927esac
9928: we could also check for sys/ipc.h ...
9929if $h_msg && $test `./findhdr sys/msg.h`; then
9930 echo "You have the full msg*(2) library." >&4
9931 val="$define"
9932else
9933 echo "You don't have the full msg*(2) library." >&4
9934 val="$undef"
9935fi
9936set d_msg
9937eval $setvar
9938
9939: see if msync exists
9940set msync d_msync
9941eval $inlibc
9942
9943: see if munmap exists
9944set munmap d_munmap
9945eval $inlibc
9946
9947: see if nice exists
9948set nice d_nice
9949eval $inlibc
9950
9951
9952echo " "
9953echo "Checking which 64-bit integer type we could use..." >&4
9954
9955case "$intsize" in
99568) val=int
9957 set quadtype
9958 eval $setvar
9959 val='"unsigned int"'
9960 set uquadtype
9961 eval $setvar
9962 quadkind=1
9963 ;;
9964*) case "$longsize" in
9965 8) val=long
9966 set quadtype
9967 eval $setvar
9968 val='"unsigned long"'
9969 set uquadtype
9970 eval $setvar
9971 quadkind=2
9972 ;;
9973 *) case "$d_longlong:$longlongsize" in
9974 define:8)
9975 val='"long long"'
9976 set quadtype
9977 eval $setvar
9978 val='"unsigned long long"'
9979 set uquadtype
9980 eval $setvar
9981 quadkind=3
9982 ;;
9983 *) case "$d_int64_t" in
9984 define)
9985 val=int64_t
9986 set quadtype
9987 eval $setvar
9988 val=uint64_t
9989 set uquadtype
9990 eval $setvar
9991 quadkind=4
9992 ;;
9993 esac
9994 ;;
9995 esac
9996 ;;
9997 esac
9998 ;;
9999esac
10000
10001case "$quadtype" in
10002'') echo "Alas, no 64-bit integer types in sight." >&4
10003 d_quad="$undef"
10004 ;;
10005*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10006 verb="will"
10007 else
10008 verb="could"
10009 fi
10010 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10011 d_quad="$define"
10012 ;;
10013esac
10014
10015: check for length of character
10016echo " "
10017case "$charsize" in
10018'')
10019 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10020 $cat >try.c <<'EOCP'
10021#include <stdio.h>
10022int main()
10023{
10024 printf("%d\n", (int)sizeof(char));
10025 exit(0);
10026}
10027EOCP
10028 set try
10029 if eval $compile_ok; then
10030 dflt=`./try`
10031 else
10032 dflt='1'
10033 echo "(I can't seem to compile the test program. Guessing...)"
10034 fi
10035 ;;
10036*)
10037 dflt="$charsize"
10038 ;;
10039esac
10040rp="What is the size of a character (in bytes)?"
10041. ./myread
10042charsize="$ans"
10043$rm -f try.c try
10044
10045
10046echo " "
10047$echo "Choosing the C types to be used for Perl's internal types..." >&4
10048
10049case "$use64bitint:$d_quad:$quadtype" in
10050define:define:?*)
10051 ivtype="$quadtype"
10052 uvtype="$uquadtype"
10053 ivsize=8
10054 uvsize=8
10055 ;;
10056*) ivtype="long"
10057 uvtype="unsigned long"
10058 ivsize=$longsize
10059 uvsize=$longsize
10060 ;;
10061esac
10062
10063case "$uselongdouble:$d_longdbl" in
10064define:define)
10065 nvtype="long double"
10066 nvsize=$longdblsize
10067 ;;
10068*) nvtype=double
10069 nvsize=$doublesize
10070 ;;
10071esac
10072
10073$echo "(IV will be "$ivtype", $ivsize bytes)"
10074$echo "(UV will be "$uvtype", $uvsize bytes)"
10075$echo "(NV will be "$nvtype", $nvsize bytes)"
10076
10077$cat >try.c <<EOCP
10078#$i_inttypes I_INTTYPES
10079#ifdef I_INTTYPES
10080#include <inttypes.h>
10081#endif
10082#include <stdio.h>
10083int main() {
10084#ifdef INT8
10085 int8_t i = INT8_MAX;
10086 uint8_t u = UINT8_MAX;
10087 printf("int8_t\n");
10088#endif
10089#ifdef INT16
10090 int16_t i = INT16_MAX;
10091 uint16_t i = UINT16_MAX;
10092 printf("int16_t\n");
10093#endif
10094#ifdef INT32
10095 int32_t i = INT32_MAX;
10096 uint32_t u = UINT32_MAX;
10097 printf("int32_t\n");
10098#endif
10099}
10100EOCP
10101
10102case "$i8type" in
10103'') case "$charsize" in
10104 1) i8type=char
10105 u8type="unsigned char"
10106 i8size=$charsize
10107 u8size=$charsize
10108 ;;
10109 esac
10110 ;;
10111esac
10112case "$i8type" in
10113'') set try -DINT8
10114 if eval $compile; then
10115 case "`./try$exe_ext`" in
10116 int8_t) i8type=int8_t
10117 u8type=uint8_t
10118 i8size=1
10119 u8size=1
10120 ;;
10121 esac
10122 fi
10123 ;;
10124esac
10125case "$i8type" in
10126'') if $test $charsize -ge 1; then
10127 i8type=char
10128 u8type="unsigned char"
10129 i8size=$charsize
10130 u8size=$charsize
10131 fi
10132 ;;
10133esac
10134
10135case "$i16type" in
10136'') case "$shortsize" in
10137 2) i16type=short
10138 u16type="unsigned short"
10139 i16size=$shortsize
10140 u16size=$shortsize
10141 ;;
10142 esac
10143 ;;
10144esac
10145case "$i16type" in
10146'') set try -DINT16
10147 if eval $compile; then
10148 case "`./try$exe_ext`" in
10149 int16_t)
10150 i16type=int16_t
10151 u16type=uint16_t
10152 i16size=2
10153 u16size=2
10154 ;;
10155 esac
10156 fi
10157 ;;
10158esac
10159case "$i16type" in
10160'') if $test $shortsize -ge 2; then
10161 i16type=short
10162 u16type="unsigned short"
10163 i16size=$shortsize
10164 u16size=$shortsize
10165 fi
10166 ;;
10167esac
10168
10169case "$i32type" in
10170'') case "$longsize" in
10171 4) i32type=long
10172 u32type="unsigned long"
10173 i32size=$longsize
10174 u32size=$longsize
10175 ;;
10176 *) case "$intsize" in
10177 4) i32type=int
10178 u32type="unsigned int"
10179 i32size=$intsize
10180 u32size=$intsize
10181 ;;
10182 esac
10183 ;;
10184 esac
10185 ;;
10186esac
10187case "$i32type" in
10188'') set try -DINT32
10189 if eval $compile; then
10190 case "`./try$exe_ext`" in
10191 int32_t)
10192 i32type=int32_t
10193 u32type=uint32_t
10194 i32size=4
10195 u32size=4
10196 ;;
10197 esac
10198 fi
10199 ;;
10200esac
10201case "$i32type" in
10202'') if $test $intsize -ge 4; then
10203 i32type=int
10204 u32type="unsigned int"
10205 i32size=$intsize
10206 u32size=$intsize
10207 fi
10208 ;;
10209esac
10210
10211case "$i64type" in
10212'') case "$d_quad:$quadtype" in
10213 define:?*)
10214 i64type="$quadtype"
10215 u64type="$uquadtype"
10216 i64size=8
10217 u64size=8
10218 ;;
10219 esac
10220 ;;
10221esac
10222
10223$echo "Checking whether your NVs can preserve your UVs..." >&4
10224$cat <<EOP >try.c
10225#include <stdio.h>
10226int main() {
10227 $uvtype k = ($uvtype)~0, l;
10228 $nvtype d;
10229 l = k;
10230 d = ($nvtype)l;
10231 l = ($uvtype)d;
10232 if (l == k)
10233 printf("preserve\n");
10234 exit(0);
10235}
10236EOP
10237set try
10238if eval $compile; then
10239 case "`./try$exe_ext`" in
10240 preserve) d_nv_preserves_uv="$define" ;;
10241 esac
10242fi
10243case "$d_nv_preserves_uv" in
10244$define) $echo "Yes, they can." 2>&1 ;;
10245*) $echo "No, they can't." 2>&1
10246 d_nv_preserves_uv="$undef"
10247 ;;
10248esac
10249
10250$rm -f try.* try
10251
10252case "$d_nv_preserves_uv" in
10253"$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10254*) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10255 $cat <<EOP >try.c
10256#include <stdio.h>
10257int main() {
10258 $uvtype u = 0;
10259 int n = 8 * $uvsize;
10260 int i;
10261 for (i = 0; i < n; i++) {
10262 u = u << 1 | ($uvtype)1;
10263 if (($uvtype)($nvtype)u != u)
10264 break;
10265 }
10266 printf("%d\n", i);
10267 exit(0);
10268}
10269EOP
10270 set try
10271 if eval $compile; then
10272 d_nv_preserves_uv_bits="`./try$exe_ext`"
10273 fi
10274 case "$d_nv_preserves_uv_bits" in
10275 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10276 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10277 d_nv_preserves_uv_bits="$undef"
10278 ;;
10279 esac
10280 $rm -f try.* try
10281 ;;
10282esac
10283
10284
10285: check for off64_t
10286echo " "
10287echo "Checking to see if you have off64_t..." >&4
10288$cat >try.c <<EOCP
10289#include <sys/types.h>
10290#include <unistd.h>
10291int main() { off64_t x = 7; }
10292EOCP
10293set try
10294if eval $compile; then
10295 val="$define"
10296 echo "You have off64_t."
10297else
10298 val="$undef"
10299 echo "You do not have off64_t."
10300 case "$lseeksize" in
10301 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10302 esac
10303fi
10304$rm -f try.* try
10305set d_off64_t
10306eval $setvar
10307
10308: see if POSIX threads are available
10309set pthread.h i_pthread
10310eval $inhdr
10311
10312
10313
10314
10315: how to create joinable pthreads
10316if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10317 echo " "
10318 echo "Checking what constant to use for creating joinable pthreads..." >&4
10319 $cat >try.c <<'EOCP'
10320#include <pthread.h>
10321int main() {
10322 int detachstate = JOINABLE;
10323}
10324EOCP
10325 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10326 if eval $compile; then
10327 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10328 val="$undef" # Yes, undef.
10329 set d_old_pthread_create_joinable
10330 eval $setvar
10331 val=""
10332 set old_pthread_create_joinable
10333 eval $setvar
10334 else
10335 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10336 if eval $compile; then
10337 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10338 val="$define"
10339 set d_old_pthread_create_joinable
10340 eval $setvar
10341 val=PTHREAD_CREATE_UNDETACHED
10342 set old_pthread_create_joinable
10343 eval $setvar
10344 else
10345 set try -DJOINABLE=__UNDETACHED
10346 if eval $compile; then
10347 echo "You seem to use __UNDETACHED." >&4
10348 val="$define"
10349 set d_old_pthread_create_joinable
10350 eval $setvar
10351 val=__UNDETACHED
10352 set old_pthread_create_joinable
10353 eval $setvar
10354 else
10355 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10356 val="$define"
10357 set d_old_pthread_create_joinable
10358 eval $setvar
10359 val=0
10360 set old_pthread_create_joinable
10361 eval $setvar
10362 fi
10363 fi
10364 fi
10365 $rm -f try try.*
10366else
10367 d_old_pthread_create_joinable="$undef"
10368 old_pthread_create_joinable=""
10369fi
10370
10371: see if pause exists
10372set pause d_pause
10373eval $inlibc
10374
10375: see if pipe exists
10376set pipe d_pipe
10377eval $inlibc
10378
10379: see if poll exists
10380set poll d_poll
10381eval $inlibc
10382
10383
10384: see whether the various POSIXish _yields exist
10385$cat >try.c <<EOP
10386#include <pthread.h>
10387#include <stdio.h>
10388int main() {
10389#ifdef SCHED_YIELD
10390 sched_yield();
10391#else
10392#ifdef PTHREAD_YIELD
10393 pthread_yield();
10394#else
10395#ifdef PTHREAD_YIELD_NULL
10396 pthread_yield(NULL);
10397#endif
10398#endif
10399#endif
10400}
10401EOP
10402: see if sched_yield exists
10403set try -DSCHED_YIELD
10404if eval $compile; then
10405 val="$define"
10406 sched_yield='sched_yield()'
10407else
10408 val="$undef"
10409fi
10410case "$usethreads" in
10411$define)
10412 case "$val" in
10413 $define) echo 'sched_yield() found.' >&4 ;;
10414 *) echo 'sched_yield() NOT found.' >&4 ;;
10415 esac
10416esac
10417set d_sched_yield
10418eval $setvar
10419
10420: see if pthread_yield exists
10421set try -DPTHREAD_YIELD
10422if eval $compile; then
10423 val="$define"
10424 case "$sched_yield" in
10425 '') sched_yield='pthread_yield()' ;;
10426 esac
10427else
10428 set try -DPTHREAD_YIELD_NULL
10429 if eval $compile; then
10430 val="$define"
10431 case "$sched_yield" in
10432 '') sched_yield='pthread_yield(NULL)' ;;
10433 esac
10434 else
10435 val="$undef"
10436 fi
10437fi
10438case "$usethreads" in
10439$define)
10440 case "$val" in
10441 $define) echo 'pthread_yield() found.' >&4 ;;
10442 *) echo 'pthread_yield() NOT found.' >&4 ;;
10443 esac
10444 ;;
10445esac
10446set d_pthread_yield
10447eval $setvar
10448
10449case "$sched_yield" in
10450'') sched_yield=undef ;;
10451esac
10452
10453$rm -f try try.*
10454
10455: see if this is a pwd.h system
10456set pwd.h i_pwd
10457eval $inhdr
10458
10459case "$i_pwd" in
10460$define)
10461 xxx=`./findhdr pwd.h`
10462 $cppstdin $cppflags $cppminus < $xxx >$$.h
10463
10464 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10465 val="$define"
10466 else
10467 val="$undef"
10468 fi
10469 set d_pwquota
10470 eval $setvar
10471
10472 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10473 val="$define"
10474 else
10475 val="$undef"
10476 fi
10477 set d_pwage
10478 eval $setvar
10479
10480 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10481 val="$define"
10482 else
10483 val="$undef"
10484 fi
10485 set d_pwchange
10486 eval $setvar
10487
10488 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10489 val="$define"
10490 else
10491 val="$undef"
10492 fi
10493 set d_pwclass
10494 eval $setvar
10495
10496 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10497 val="$define"
10498 else
10499 val="$undef"
10500 fi
10501 set d_pwexpire
10502 eval $setvar
10503
10504 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10505 val="$define"
10506 else
10507 val="$undef"
10508 fi
10509 set d_pwcomment
10510 eval $setvar
10511
10512 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10513 val="$define"
10514 else
10515 val="$undef"
10516 fi
10517 set d_pwgecos
10518 eval $setvar
10519
10520 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10521 val="$define"
10522 else
10523 val="$undef"
10524 fi
10525 set d_pwpasswd
10526 eval $setvar
10527
10528 $rm -f $$.h
10529 ;;
10530*)
10531 val="$undef";
10532 set d_pwquota; eval $setvar
10533 set d_pwage; eval $setvar
10534 set d_pwchange; eval $setvar
10535 set d_pwclass; eval $setvar
10536 set d_pwexpire; eval $setvar
10537 set d_pwcomment; eval $setvar
10538 set d_pwgecos; eval $setvar
10539 set d_pwpasswd; eval $setvar
10540 ;;
10541esac
10542
10543: see if readdir and friends exist
10544set readdir d_readdir
10545eval $inlibc
10546set seekdir d_seekdir
10547eval $inlibc
10548set telldir d_telldir
10549eval $inlibc
10550set rewinddir d_rewinddir
10551eval $inlibc
10552
10553: see if readlink exists
10554set readlink d_readlink
10555eval $inlibc
10556
10557: see if rename exists
10558set rename d_rename
10559eval $inlibc
10560
10561: see if rmdir exists
10562set rmdir d_rmdir
10563eval $inlibc
10564
10565: see if memory.h is available.
10566val=''
10567set memory.h val
10568eval $inhdr
10569
10570: See if it conflicts with string.h
10571case "$val" in
10572$define)
10573 case "$strings" in
10574 '') ;;
10575 *)
10576 $cppstdin $cppflags $cppminus < $strings > mem.h
10577 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10578 echo " "
10579 echo "We won't be including <memory.h>."
10580 val="$undef"
10581 fi
10582 $rm -f mem.h
10583 ;;
10584 esac
10585esac
10586set i_memory
10587eval $setvar
10588
10589: can bcopy handle overlapping blocks?
10590val="$undef"
10591case "$d_bcopy" in
10592"$define")
10593 echo " "
10594 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10595 $cat >try.c <<EOCP
10596#$i_memory I_MEMORY
10597#$i_stdlib I_STDLIB
10598#$i_string I_STRING
10599#$i_unistd I_UNISTD
10600EOCP
10601 $cat >>try.c <<'EOCP'
10602#include <stdio.h>
10603#ifdef I_MEMORY
10604# include <memory.h>
10605#endif
10606#ifdef I_STDLIB
10607# include <stdlib.h>
10608#endif
10609#ifdef I_STRING
10610# include <string.h>
10611#else
10612# include <strings.h>
10613#endif
10614#ifdef I_UNISTD
10615# include <unistd.h> /* Needed for NetBSD */
10616#endif
10617int main()
10618{
10619char buf[128], abc[128];
10620char *b;
10621int len;
10622int off;
10623int align;
10624
10625bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10626
10627for (align = 7; align >= 0; align--) {
10628 for (len = 36; len; len--) {
10629 b = buf+align;
10630 bcopy(abc, b, len);
10631 for (off = 1; off <= len; off++) {
10632 bcopy(b, b+off, len);
10633 bcopy(b+off, b, len);
10634 if (bcmp(b, abc, len))
10635 exit(1);
10636 }
10637 }
10638}
10639exit(0);
10640}
10641EOCP
10642 set try
10643 if eval $compile_ok; then
10644 if ./try 2>/dev/null; then
10645 echo "Yes, it can."
10646 val="$define"
10647 else
10648 echo "It can't, sorry."
10649 case "$d_memmove" in
10650 "$define") echo "But that's Ok since you have memmove()." ;;
10651 esac
10652 fi
10653 else
10654 echo "(I can't compile the test program, so we'll assume not...)"
10655 case "$d_memmove" in
10656 "$define") echo "But that's Ok since you have memmove()." ;;
10657 esac
10658 fi
10659 ;;
10660esac
10661$rm -f try.* try core
10662set d_safebcpy
10663eval $setvar
10664
10665: can memcpy handle overlapping blocks?
10666val="$undef"
10667case "$d_memcpy" in
10668"$define")
10669 echo " "
10670 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10671 $cat >try.c <<EOCP
10672#$i_memory I_MEMORY
10673#$i_stdlib I_STDLIB
10674#$i_string I_STRING
10675#$i_unistd I_UNISTD
10676EOCP
10677 $cat >>try.c <<'EOCP'
10678#include <stdio.h>
10679#ifdef I_MEMORY
10680# include <memory.h>
10681#endif
10682#ifdef I_STDLIB
10683# include <stdlib.h>
10684#endif
10685#ifdef I_STRING
10686# include <string.h>
10687#else
10688# include <strings.h>
10689#endif
10690#ifdef I_UNISTD
10691# include <unistd.h> /* Needed for NetBSD */
10692#endif
10693int main()
10694{
10695char buf[128], abc[128];
10696char *b;
10697int len;
10698int off;
10699int align;
10700
10701/* Copy "abcde..." string to char abc[] so that gcc doesn't
10702 try to store the string in read-only memory. */
10703memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10704
10705for (align = 7; align >= 0; align--) {
10706 for (len = 36; len; len--) {
10707 b = buf+align;
10708 memcpy(b, abc, len);
10709 for (off = 1; off <= len; off++) {
10710 memcpy(b+off, b, len);
10711 memcpy(b, b+off, len);
10712 if (memcmp(b, abc, len))
10713 exit(1);
10714 }
10715 }
10716}
10717exit(0);
10718}
10719EOCP
10720 set try
10721 if eval $compile_ok; then
10722 if ./try 2>/dev/null; then
10723 echo "Yes, it can."
10724 val="$define"
10725 else
10726 echo "It can't, sorry."
10727 case "$d_memmove" in
10728 "$define") echo "But that's Ok since you have memmove()." ;;
10729 esac
10730 fi
10731 else
10732 echo "(I can't compile the test program, so we'll assume not...)"
10733 case "$d_memmove" in
10734 "$define") echo "But that's Ok since you have memmove()." ;;
10735 esac
10736 fi
10737 ;;
10738esac
10739$rm -f try.* try core
10740set d_safemcpy
10741eval $setvar
10742
10743: can memcmp be trusted to compare relative magnitude?
10744val="$undef"
10745case "$d_memcmp" in
10746"$define")
10747 echo " "
10748 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10749 $cat >try.c <<EOCP
10750#$i_memory I_MEMORY
10751#$i_stdlib I_STDLIB
10752#$i_string I_STRING
10753#$i_unistd I_UNISTD
10754EOCP
10755 $cat >>try.c <<'EOCP'
10756#include <stdio.h>
10757#ifdef I_MEMORY
10758# include <memory.h>
10759#endif
10760#ifdef I_STDLIB
10761# include <stdlib.h>
10762#endif
10763#ifdef I_STRING
10764# include <string.h>
10765#else
10766# include <strings.h>
10767#endif
10768#ifdef I_UNISTD
10769# include <unistd.h> /* Needed for NetBSD */
10770#endif
10771int main()
10772{
10773char a = -1;
10774char b = 0;
10775if ((a < b) && memcmp(&a, &b, 1) < 0)
10776 exit(1);
10777exit(0);
10778}
10779EOCP
10780 set try
10781 if eval $compile_ok; then
10782 if ./try 2>/dev/null; then
10783 echo "Yes, it can."
10784 val="$define"
10785 else
10786 echo "No, it can't (it uses signed chars)."
10787 fi
10788 else
10789 echo "(I can't compile the test program, so we'll assume not...)"
10790 fi
10791 ;;
10792esac
10793$rm -f try.* try core
10794set d_sanemcmp
10795eval $setvar
10796
10797: see if select exists
10798set select d_select
10799eval $inlibc
10800
10801: see if semctl exists
10802set semctl d_semctl
10803eval $inlibc
10804
10805: see if semget exists
10806set semget d_semget
10807eval $inlibc
10808
10809: see if semop exists
10810set semop d_semop
10811eval $inlibc
10812
10813: see how much of the 'sem*(2)' library is present.
10814h_sem=true
10815echo " "
10816case "$d_semctl$d_semget$d_semop" in
10817*"$undef"*) h_sem=false;;
10818esac
10819case "$osname" in
10820freebsd)
10821 case "`ipcs 2>&1`" in
10822 "SVID messages"*"not configured"*)
10823 echo "Your $osname does not have the sem*(2) configured." >&4
10824 h_sem=false
10825 val="$undef"
10826 set semctl d_semctl
10827 eval $setvar
10828 set semget d_semget
10829 eval $setvar
10830 set semop d_semop
10831 eval $setvar
10832 ;;
10833 esac
10834 ;;
10835esac
10836: we could also check for sys/ipc.h ...
10837if $h_sem && $test `./findhdr sys/sem.h`; then
10838 echo "You have the full sem*(2) library." >&4
10839 val="$define"
10840else
10841 echo "You don't have the full sem*(2) library." >&4
10842 val="$undef"
10843fi
10844set d_sem
10845eval $setvar
10846
10847: see whether sys/sem.h defines union semun
10848echo " "
10849$cat > try.c <<'END'
10850#include <sys/types.h>
10851#include <sys/ipc.h>
10852#include <sys/sem.h>
10853int main () { union semun semun; semun.buf = 0; }
10854END
10855set try
10856if eval $compile; then
10857 echo "You have union semun in <sys/sem.h>." >&4
10858 val="$define"
10859else
10860 echo "You do not have union semun in <sys/sem.h>." >&4
10861 val="$undef"
10862fi
10863$rm -f try try.c try.h
10864set d_union_semun
10865eval $setvar
10866
10867: see how to do semctl IPC_STAT
10868case "$d_sem" in
10869$define)
10870 : see whether semctl IPC_STAT can use union semun
10871 echo " "
10872 $cat > try.h <<END
10873#ifndef S_IRUSR
10874# ifdef S_IREAD
10875# define S_IRUSR S_IREAD
10876# define S_IWUSR S_IWRITE
10877# define S_IXUSR S_IEXEC
10878# else
10879# define S_IRUSR 0400
10880# define S_IWUSR 0200
10881# define S_IXUSR 0100
10882# endif
10883# define S_IRGRP (S_IRUSR>>3)
10884# define S_IWGRP (S_IWUSR>>3)
10885# define S_IXGRP (S_IXUSR>>3)
10886# define S_IROTH (S_IRUSR>>6)
10887# define S_IWOTH (S_IWUSR>>6)
10888# define S_IXOTH (S_IXUSR>>6)
10889#endif
10890#ifndef S_IRWXU
10891# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10892# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10893# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10894#endif
10895END
10896
10897 $cat > try.c <<END
10898#include <sys/types.h>
10899#include <sys/ipc.h>
10900#include <sys/sem.h>
10901#include <sys/stat.h>
10902#include <stdio.h>
10903#include <errno.h>
10904#include "try.h"
10905#ifndef errno
10906extern int errno;
10907#endif
10908#$d_union_semun HAS_UNION_SEMUN
10909int main() {
10910 union semun
10911#ifndef HAS_UNION_SEMUN
10912 {
10913 int val;
10914 struct semid_ds *buf;
10915 unsigned short *array;
10916 }
10917#endif
10918 arg;
10919 int sem, st;
10920
10921#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10922 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10923 if (sem > -1) {
10924 struct semid_ds argbuf;
10925 arg.buf = &argbuf;
10926# ifdef IPC_STAT
10927 st = semctl(sem, 0, IPC_STAT, arg);
10928 if (st == 0)
10929 printf("semun\n");
10930 else
10931# endif /* IPC_STAT */
10932 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10933# ifdef IPC_RMID
10934 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10935# endif /* IPC_RMID */
10936 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10937 } else
10938#endif /* IPC_PRIVATE && ... */
10939 printf("semget failed: errno = %d\n", errno);
10940 return 0;
10941}
10942END
10943 val="$undef"
10944 set try
10945 if eval $compile; then
10946 xxx=`./try`
10947 case "$xxx" in
10948 semun) val="$define" ;;
10949 esac
10950 fi
10951 $rm -f try try.c
10952 set d_semctl_semun
10953 eval $setvar
10954 case "$d_semctl_semun" in
10955 $define)
10956 echo "You can use union semun for semctl IPC_STAT." >&4
10957 also='also'
10958 ;;
10959 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10960 also=''
10961 ;;
10962 esac
10963
10964 : see whether semctl IPC_STAT can use struct semid_ds pointer
10965 $cat > try.c <<'END'
10966#include <sys/types.h>
10967#include <sys/ipc.h>
10968#include <sys/sem.h>
10969#include <sys/stat.h>
10970#include "try.h"
10971#include <stdio.h>
10972#include <errno.h>
10973#ifndef errno
10974extern int errno;
10975#endif
10976int main() {
10977 struct semid_ds arg;
10978 int sem, st;
10979
10980#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10981 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10982 if (sem > -1) {
10983# ifdef IPC_STAT
10984 st = semctl(sem, 0, IPC_STAT, &arg);
10985 if (st == 0)
10986 printf("semid_ds\n");
10987 else
10988# endif /* IPC_STAT */
10989 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10990# ifdef IPC_RMID
10991 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10992# endif /* IPC_RMID */
10993 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10994 } else
10995#endif /* IPC_PRIVATE && ... */
10996 printf("semget failed: errno = %d\n", errno);
10997
10998 return 0;
10999}
11000END
11001 val="$undef"
11002 set try
11003 if eval $compile; then
11004 xxx=`./try`
11005 case "$xxx" in
11006 semid_ds) val="$define" ;;
11007 esac
11008 fi
11009 $rm -f try try.c
11010 set d_semctl_semid_ds
11011 eval $setvar
11012 case "$d_semctl_semid_ds" in
11013 $define)
11014 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11015 ;;
11016 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11017 ;;
11018 esac
11019 $rm -f try.h
11020 ;;
11021*) val="$undef"
11022
11023 # We do not have the full sem*(2) library, so assume we can not
11024 # use either.
11025
11026 set d_semctl_semun
11027 eval $setvar
11028
11029 set d_semctl_semid_ds
11030 eval $setvar
11031 ;;
11032esac
11033
11034: see if setegid exists
11035set setegid d_setegid
11036eval $inlibc
11037
11038: see if seteuid exists
11039set seteuid d_seteuid
11040eval $inlibc
11041
11042: see if setgrent exists
11043set setgrent d_setgrent
11044eval $inlibc
11045
11046: see if sethostent exists
11047set sethostent d_sethent
11048eval $inlibc
11049
11050: see if setlinebuf exists
11051set setlinebuf d_setlinebuf
11052eval $inlibc
11053
11054: see if setlocale exists
11055set setlocale d_setlocale
11056eval $inlibc
11057
11058: see if setnetent exists
11059set setnetent d_setnent
11060eval $inlibc
11061
11062: see if setprotoent exists
11063set setprotoent d_setpent
11064eval $inlibc
11065
11066: see if setpgid exists
11067set setpgid d_setpgid
11068eval $inlibc
11069
11070: see if setpgrp2 exists
11071set setpgrp2 d_setpgrp2
11072eval $inlibc
11073
11074: see if setpriority exists
11075set setpriority d_setprior
11076eval $inlibc
11077
11078: see if setproctitle exists
11079set setproctitle d_setproctitle
11080eval $inlibc
11081
11082: see if setpwent exists
11083set setpwent d_setpwent
11084eval $inlibc
11085
11086: see if setregid exists
11087set setregid d_setregid
11088eval $inlibc
11089set setresgid d_setresgid
11090eval $inlibc
11091
11092: see if setreuid exists
11093set setreuid d_setreuid
11094eval $inlibc
11095set setresuid d_setresuid
11096eval $inlibc
11097
11098: see if setrgid exists
11099set setrgid d_setrgid
11100eval $inlibc
11101
11102: see if setruid exists
11103set setruid d_setruid
11104eval $inlibc
11105
11106: see if setservent exists
11107set setservent d_setsent
11108eval $inlibc
11109
11110: see if setsid exists
11111set setsid d_setsid
11112eval $inlibc
11113
11114: see if setvbuf exists
11115set setvbuf d_setvbuf
11116eval $inlibc
11117
11118: see if sfio.h is available
11119set sfio.h i_sfio
11120eval $inhdr
11121
11122
11123: see if sfio library is available
11124case "$i_sfio" in
11125$define)
11126 val=''
11127 set sfreserve val
11128 eval $inlibc
11129 ;;
11130*)
11131 val="$undef"
11132 ;;
11133esac
11134: Ok, but do we want to use it.
11135case "$val" in
11136$define)
11137 case "$usesfio" in
11138 true|$define|[yY]*) dflt='y';;
11139 *) dflt='n';;
11140 esac
11141 echo "$package can use the sfio library, but it is experimental."
11142 case "$useperlio" in
11143 "$undef")
11144 echo "For sfio also the PerlIO abstraction layer is needed."
11145 echo "Earlier you said you wouldn't want that."
11146 ;;
11147 esac
11148 rp="You seem to have sfio available, do you want to try using it?"
11149 . ./myread
11150 case "$ans" in
11151 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11152 useperlio="$define"
11153 val="$define"
11154 ;;
11155 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11156 val="$undef"
11157 : Remove sfio from list of libraries to use
11158 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11159 shift
11160 libs="$*"
11161 echo "libs = $libs" >&4
11162 ;;
11163 esac
11164 ;;
11165*) case "$usesfio" in
11166 true|$define|[yY]*)
11167 echo "Sorry, cannot find sfio on this machine." >&4
11168 echo "Ignoring your setting of usesfio=$usesfio." >&4
11169 val="$undef"
11170 ;;
11171 esac
11172 ;;
11173esac
11174set d_sfio
11175eval $setvar
11176case "$d_sfio" in
11177$define) usesfio='true';;
11178*) usesfio='false';;
11179esac
11180
11181: see if shmctl exists
11182set shmctl d_shmctl
11183eval $inlibc
11184
11185: see if shmget exists
11186set shmget d_shmget
11187eval $inlibc
11188
11189: see if shmat exists
11190set shmat d_shmat
11191eval $inlibc
11192: see what shmat returns
11193case "$d_shmat" in
11194"$define")
11195 $cat >shmat.c <<'END'
11196#include <sys/shm.h>
11197void *shmat();
11198END
11199 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11200 shmattype='void *'
11201 else
11202 shmattype='char *'
11203 fi
11204 echo "and it returns ($shmattype)." >&4
11205 : see if a prototype for shmat is available
11206 xxx=`./findhdr sys/shm.h`
11207 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11208 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11209 val="$define"
11210 else
11211 val="$undef"
11212 fi
11213 $rm -f shmat.[co]
11214 ;;
11215*)
11216 val="$undef"
11217 ;;
11218esac
11219set d_shmatprototype
11220eval $setvar
11221
11222: see if shmdt exists
11223set shmdt d_shmdt
11224eval $inlibc
11225
11226: see how much of the 'shm*(2)' library is present.
11227h_shm=true
11228echo " "
11229case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11230*"$undef"*) h_shm=false;;
11231esac
11232case "$osname" in
11233freebsd)
11234 case "`ipcs 2>&1`" in
11235 "SVID shared memory"*"not configured"*)
11236 echo "Your $osname does not have the shm*(2) configured." >&4
11237 h_shm=false
11238 val="$undef"
11239 set shmctl d_shmctl
11240 evat $setvar
11241 set shmget d_shmget
11242 evat $setvar
11243 set shmat d_shmat
11244 evat $setvar
11245 set shmdt d_shmdt
11246 evat $setvar
11247 ;;
11248 esac
11249 ;;
11250esac
11251: we could also check for sys/ipc.h ...
11252if $h_shm && $test `./findhdr sys/shm.h`; then
11253 echo "You have the full shm*(2) library." >&4
11254 val="$define"
11255else
11256 echo "You don't have the full shm*(2) library." >&4
11257 val="$undef"
11258fi
11259set d_shm
11260eval $setvar
11261
11262echo " "
11263: see if we have sigaction
11264if set sigaction val -f d_sigaction; eval $csym; $val; then
11265 echo 'sigaction() found.' >&4
11266 $cat > try.c <<'EOP'
11267#include <stdio.h>
11268#include <sys/types.h>
11269#include <signal.h>
11270int main()
11271{
11272 struct sigaction act, oact;
11273 act.sa_flags = 0;
11274 oact.sa_handler = 0;
11275 /* so that act and oact are used */
11276 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11277}
11278EOP
11279 set try
11280 if eval $compile_ok; then
11281 val="$define"
11282 else
11283 echo "But you don't seem to have a useable struct sigaction." >&4
11284 val="$undef"
11285 fi
11286else
11287 echo 'sigaction NOT found.' >&4
11288 val="$undef"
11289fi
11290set d_sigaction; eval $setvar
11291$rm -f try try$_o try.c
11292
11293: see if sigsetjmp exists
11294echo " "
11295case "$d_sigsetjmp" in
11296'')
11297 $cat >try.c <<'EOP'
11298#include <setjmp.h>
11299sigjmp_buf env;
11300int set = 1;
11301int main()
11302{
11303 if (sigsetjmp(env,1))
11304 exit(set);
11305 set = 0;
11306 siglongjmp(env, 1);
11307 exit(1);
11308}
11309EOP
11310 set try
11311 if eval $compile; then
11312 if ./try >/dev/null 2>&1; then
11313 echo "POSIX sigsetjmp found." >&4
11314 val="$define"
11315 else
11316 $cat >&4 <<EOM
11317Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11318I'll ignore them.
11319EOM
11320 val="$undef"
11321 fi
11322 else
11323 echo "sigsetjmp not found." >&4
11324 val="$undef"
11325 fi
11326 ;;
11327*) val="$d_sigsetjmp"
11328 case "$d_sigsetjmp" in
11329 $define) echo "POSIX sigsetjmp found." >&4;;
11330 $undef) echo "sigsetjmp not found." >&4;;
11331 esac
11332 ;;
11333esac
11334set d_sigsetjmp
11335eval $setvar
11336$rm -f try.c try
11337
11338: see if socks5_init exists
11339set socks5_init d_socks5_init
11340eval $inlibc
11341
11342: see if sys/stat.h is available
11343set sys/stat.h i_sysstat
11344eval $inhdr
11345
11346
11347: see if stat knows about block sizes
11348echo " "
11349echo "Checking to see if your struct stat has st_blocks field..." >&4
11350set d_statblks stat st_blocks $i_sysstat sys/stat.h
11351eval $hasfield
11352
11353
11354: see if this is a sys/vfs.h system
11355set sys/vfs.h i_sysvfs
11356eval $inhdr
11357
11358
11359: see if this is a sys/statfs.h system
11360set sys/statfs.h i_sysstatfs
11361eval $inhdr
11362
11363
11364echo " "
11365echo "Checking to see if your system supports struct statfs..." >&4
11366set 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
11367eval $hasstruct
11368case "$d_statfs_s" in
11369"$define") echo "Yes, it does." ;;
11370*) echo "No, it doesn't." ;;
11371esac
11372
11373
11374
11375: see if struct statfs knows about f_flags
11376case "$d_statfs_s" in
11377define)
11378 echo " "
11379 echo "Checking to see if your struct statfs has f_flags field..." >&4
11380 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
11381 eval $hasfield
11382 ;;
11383*) val="$undef"
11384 set d_statfs_f_flags
11385 eval $setvar
11386 ;;
11387esac
11388case "$d_statfs_f_flags" in
11389"$define") echo "Yes, it does." ;;
11390*) echo "No, it doesn't." ;;
11391esac
11392
11393: see if _ptr and _cnt from stdio act std
11394echo " "
11395if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11396 echo "(Looks like you have stdio.h from Linux.)"
11397 case "$stdio_ptr" in
11398 '') stdio_ptr='((fp)->_IO_read_ptr)'
11399 ptr_lval=$define
11400 ;;
11401 *) ptr_lval=$d_stdio_ptr_lval;;
11402 esac
11403 case "$stdio_cnt" in
11404 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11405 cnt_lval=$undef
11406 ;;
11407 *) cnt_lval=$d_stdio_cnt_lval;;
11408 esac
11409 case "$stdio_base" in
11410 '') stdio_base='((fp)->_IO_read_base)';;
11411 esac
11412 case "$stdio_bufsiz" in
11413 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11414 esac
11415else
11416 case "$stdio_ptr" in
11417 '') stdio_ptr='((fp)->_ptr)'
11418 ptr_lval=$define
11419 ;;
11420 *) ptr_lval=$d_stdio_ptr_lval;;
11421 esac
11422 case "$stdio_cnt" in
11423 '') stdio_cnt='((fp)->_cnt)'
11424 cnt_lval=$define
11425 ;;
11426 *) cnt_lval=$d_stdio_cnt_lval;;
11427 esac
11428 case "$stdio_base" in
11429 '') stdio_base='((fp)->_base)';;
11430 esac
11431 case "$stdio_bufsiz" in
11432 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11433 esac
11434fi
11435: test whether _ptr and _cnt really work
11436echo "Checking how std your stdio is..." >&4
11437$cat >try.c <<EOP
11438#include <stdio.h>
11439#define FILE_ptr(fp) $stdio_ptr
11440#define FILE_cnt(fp) $stdio_cnt
11441int main() {
11442 FILE *fp = fopen("try.c", "r");
11443 char c = getc(fp);
11444 if (
11445 18 <= FILE_cnt(fp) &&
11446 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11447 )
11448 exit(0);
11449 exit(1);
11450}
11451EOP
11452val="$undef"
11453set try
11454if eval $compile; then
11455 if ./try; then
11456 echo "Your stdio acts pretty std."
11457 val="$define"
11458 else
11459 echo "Your stdio isn't very std."
11460 fi
11461else
11462 echo "Your stdio doesn't appear very std."
11463fi
11464$rm -f try.c try
11465set d_stdstdio
11466eval $setvar
11467
11468: Can _ptr be used as an lvalue?
11469case "$d_stdstdio$ptr_lval" in
11470$define$define) val=$define ;;
11471*) val=$undef ;;
11472esac
11473set d_stdio_ptr_lval
11474eval $setvar
11475
11476: Can _cnt be used as an lvalue?
11477case "$d_stdstdio$cnt_lval" in
11478$define$define) val=$define ;;
11479*) val=$undef ;;
11480esac
11481set d_stdio_cnt_lval
11482eval $setvar
11483
a7ffa9b9
NC
11484
11485: test whether setting _ptr sets _cnt as a side effect
11486d_stdio_ptr_lval_sets_cnt="$undef"
11487d_stdio_ptr_lval_nochange_cnt="$undef"
11488case "$d_stdio_ptr_lval$d_stdstdio" in
11489$define$define)
11490 echo "Checking to see what happens if we set the stdio ptr..." >&4
11491$cat >try.c <<EOP
11492#include <stdio.h>
11493/* Can we scream? */
11494/* Eat dust sed :-) */
11495#define FILE_ptr(fp) $stdio_ptr
11496#define FILE_cnt(fp) $stdio_cnt
11497int main() {
11498 FILE *fp = fopen("try.c", "r");
11499 char c = getc(fp);
11500 char *ptr;
11501 size_t cnt;
11502 if (!(
11503 18 <= FILE_cnt(fp) &&
11504 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11505 )) {
11506 puts("Fail even to read");
11507 exit (1);
11508 }
11509 ptr = FILE_ptr(fp);
11510 cnt = FILE_cnt(fp);
11511
11512 FILE_ptr(fp)+= 42;
11513
11514 if (FILE_ptr(fp) != (ptr + 42)) {
11515 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11516 exit (1);
11517 }
11518 if (FILE_cnt(fp) <= 20) {
11519 printf ("Fail (<20 chars to test)");
11520 exit (1);
11521 }
11522 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11523 puts("Fail compare");
11524 exit (1);
11525 }
11526 if (cnt == FILE_cnt(fp)) {
11527 puts("Pass_unchanged");
11528 exit (0);
11529 }
11530 if (FILE_cnt(fp) == (cnt - 42)) {
11531 puts("Pass_changed");
11532 exit (0);
11533 }
11534 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11535 return 1;
11536
11537}
11538EOP
11539 set try
11540 if eval $compile; then
11541 case `./try$exe_ext` in
11542 Pass_changed)
11543 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11544 d_stdio_ptr_lval_sets_cnt="$define" ;;
11545 Pass_unchanged)
11546 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11547 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11548 Fail*)
11549 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11550 *)
11551 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11552 esac
11553 else
11554 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11555 fi
11556 $rm -f try.c try
11557 ;;
11558esac
11559
b4eb6b3d
JH
11560: see if _base is also standard
11561val="$undef"
11562case "$d_stdstdio" in
11563$define)
11564 $cat >try.c <<EOP
11565#include <stdio.h>
11566#define FILE_base(fp) $stdio_base
11567#define FILE_bufsiz(fp) $stdio_bufsiz
11568int main() {
11569 FILE *fp = fopen("try.c", "r");
11570 char c = getc(fp);
11571 if (
11572 19 <= FILE_bufsiz(fp) &&
11573 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11574 )
11575 exit(0);
11576 exit(1);
11577}
11578EOP
11579 set try
11580 if eval $compile; then
11581 if ./try; then
11582 echo "And its _base field acts std."
11583 val="$define"
11584 else
11585 echo "But its _base field isn't std."
11586 fi
11587 else
11588 echo "However, it seems to be lacking the _base field."
11589 fi
11590 $rm -f try.c try
11591 ;;
11592esac
11593set d_stdiobase
11594eval $setvar
11595
11596$cat >&4 <<EOM
11597Checking how to access stdio streams by file descriptor number...
11598EOM
11599case "$stdio_stream_array" in
11600'') $cat >try.c <<EOCP
11601#include <stdio.h>
11602int main() {
11603 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11604 printf("yes\n");
11605}
11606EOCP
11607 for s in _iob __iob __sF
11608 do
11609 set try -DSTDIO_STREAM_ARRAY=$s
11610 if eval $compile; then
11611 case "`./try$exe_ext`" in
11612 yes) stdio_stream_array=$s; break ;;
11613 esac
11614 fi
11615 done
11616 $rm -f try.* try$exe_ext
11617esac
11618case "$stdio_stream_array" in
11619'') $cat >&4 <<EOM
11620I can't figure out how to access stdio streams by file descriptor number.
11621EOM
11622 d_stdio_stream_array="$undef"
11623 ;;
11624*) $cat >&4 <<EOM
11625You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11626EOM
11627 d_stdio_stream_array="$define"
11628 ;;
11629esac
11630
11631: see if strcoll exists
11632set strcoll d_strcoll
11633eval $inlibc
11634
11635: check for structure copying
11636echo " "
11637echo "Checking to see if your C compiler can copy structs..." >&4
11638$cat >try.c <<'EOCP'
11639int main()
11640{
11641 struct blurfl {
11642 int dyick;
11643 } foo, bar;
11644
11645 foo = bar;
11646}
11647EOCP
11648if $cc -c try.c >/dev/null 2>&1 ; then
11649 val="$define"
11650 echo "Yup, it can."
11651else
11652 val="$undef"
11653 echo "Nope, it can't."
11654fi
11655set d_strctcpy
11656eval $setvar
11657$rm -f try.*
11658
11659: see if strerror and/or sys_errlist[] exist
11660echo " "
11661if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11662 if set strerror val -f d_strerror; eval $csym; $val; then
11663 echo 'strerror() found.' >&4
11664 d_strerror="$define"
11665 d_strerrm='strerror(e)'
11666 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11667 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11668 d_syserrlst="$define"
11669 else
11670 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11671 d_syserrlst="$undef"
11672 fi
11673 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11674 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11675 echo 'strerror() found in string header.' >&4
11676 d_strerror="$define"
11677 d_strerrm='strerror(e)'
11678 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11679 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11680 d_syserrlst="$define"
11681 else
11682 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11683 d_syserrlst="$undef"
11684 fi
11685 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11686 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11687 d_strerror="$undef"
11688 d_syserrlst="$define"
11689 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11690 else
11691 echo 'strerror() and sys_errlist[] NOT found.' >&4
11692 d_strerror="$undef"
11693 d_syserrlst="$undef"
11694 d_strerrm='"unknown"'
11695 fi
11696fi
11697
11698: see if strtod exists
11699set strtod d_strtod
11700eval $inlibc
11701
11702: see if strtol exists
11703set strtol d_strtol
11704eval $inlibc
11705
11706: see if strtold exists
11707set strtold d_strtold
11708eval $inlibc
11709
11710: see if strtoll exists
11711set strtoll d_strtoll
11712eval $inlibc
11713
11714case "$d_longlong-$d_strtoll" in
11715"$define-$define")
11716 $cat <<EOM
11717Checking whether your strtoll() works okay...
11718EOM
11719 $cat >try.c <<'EOCP'
11720#include <errno.h>
11721#ifdef __hpux
11722#define strtoll __strtoll
11723#endif
e75931a7
YST
11724#ifdef __EMX__
11725#define strtoll _strtoll
11726#endif
b4eb6b3d
JH
11727#include <stdio.h>
11728extern long long int strtoll(char *s, char **, int);
11729static int bad = 0;
11730int check(char *s, long long ell, int een) {
11731 long long gll;
11732 errno = 0;
11733 gll = strtoll(s, 0, 10);
11734 if (!((gll == ell) && (errno == een)))
11735 bad++;
11736}
11737int main() {
11738 check(" 1", 1LL, 0);
11739 check(" 0", 0LL, 0);
11740 check("-1", -1LL, 0);
11741 check("-9223372036854775808", -9223372036854775808LL, 0);
11742 check("-9223372036854775808", -9223372036854775808LL, 0);
11743 check(" 9223372036854775807", 9223372036854775807LL, 0);
11744 check("-9223372036854775808", -9223372036854775808LL, 0);
11745 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11746 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11747 if (!bad)
11748 printf("ok\n");
11749}
11750EOCP
11751 set try
11752 if eval $compile; then
e75931a7
YST
11753 yyy=`./try`
11754 case "$yyy" in
b4eb6b3d
JH
11755 ok) echo "Your strtoll() seems to be working okay." ;;
11756 *) cat <<EOM >&4
11757Your strtoll() doesn't seem to be working okay.
11758EOM
11759 d_strtoll="$undef"
11760 ;;
69eadf66 11761 esac
e75931a7
YST
11762 else
11763 echo "(I can't seem to compile the test program--assuming it doesn't)"
11764 d_strtoll="$undef"
b4eb6b3d
JH
11765 fi
11766 ;;
11767esac
11768
11769: see if strtoul exists
11770set strtoul d_strtoul
11771eval $inlibc
11772
11773: see if strtoull exists
11774set strtoull d_strtoull
11775eval $inlibc
11776
11777case "$d_longlong-$d_strtoull" in
11778"$define-$define")
11779 $cat <<EOM
11780Checking whether your strtoull() works okay...
11781EOM
11782 $cat >try.c <<'EOCP'
11783#include <errno.h>
11784#ifdef __hpux
11785#define strtoull __strtoull
11786#endif
11787#include <stdio.h>
11788extern unsigned long long int strtoull(char *s, char **, int);
11789static int bad = 0;
11790int check(char *s, long long eull, int een) {
11791 long long gull;
11792 errno = 0;
11793 gull = strtoull(s, 0, 10);
11794 if (!((gull == eull) && (errno == een)))
11795 bad++;
11796}
11797int main() {
11798 check(" 1", 1LL, 0);
11799 check(" 0", 0LL, 0);
11800 check("18446744073709551615", 18446744073709551615ULL, 0);
11801 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11802 if (!bad)
11803 printf("ok\n");
11804}
11805EOCP
11806 set try
11807 if eval $compile; then
11808 case "`./try`" in
11809 ok) echo "Your strtoull() seems to be working okay." ;;
11810 *) cat <<EOM >&4
11811Your strtoull() doesn't seem to be working okay.
11812EOM
11813 d_strtoull="$undef"
11814 ;;
11815 esac
11816 fi
11817 ;;
11818esac
11819
11820: see if strtouq exists
11821set strtouq d_strtouq
11822eval $inlibc
11823
11824: see if strxfrm exists
11825set strxfrm d_strxfrm
11826eval $inlibc
11827
11828: see if symlink exists
11829set symlink d_symlink
11830eval $inlibc
11831
11832: see if syscall exists
11833set syscall d_syscall
11834eval $inlibc
11835
11836: see if sysconf exists
11837set sysconf d_sysconf
11838eval $inlibc
11839
11840: see if system exists
11841set system d_system
11842eval $inlibc
11843
11844: see if tcgetpgrp exists
11845set tcgetpgrp d_tcgetpgrp
11846eval $inlibc
11847
11848: see if tcsetpgrp exists
11849set tcsetpgrp d_tcsetpgrp
11850eval $inlibc
11851
11852: see if prototype for telldir is available
11853echo " "
11854set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11855eval $hasproto
11856
11857: see if this is a sys/times.h system
11858set sys/times.h i_systimes
11859eval $inhdr
11860
11861: see if times exists
11862echo " "
11863if set times val -f d_times; eval $csym; $val; then
11864 echo 'times() found.' >&4
11865 d_times="$define"
11866 inc=''
11867 case "$i_systimes" in
11868 "$define") inc='sys/times.h';;
11869 esac
11870 rp="What is the type returned by times() on this system?"
11871 set clock_t clocktype long stdio.h sys/types.h $inc
11872 eval $typedef_ask
11873else
11874 echo 'times() NOT found, hope that will do.' >&4
11875 d_times="$undef"
11876 clocktype='int'
11877fi
11878
11879: see if truncate exists
11880set truncate d_truncate
11881eval $inlibc
11882
11883: see if tzname[] exists
11884echo " "
11885if set tzname val -a d_tzname; eval $csym; $val; then
11886 val="$define"
11887 echo 'tzname[] found.' >&4
11888else
11889 val="$undef"
11890 echo 'tzname[] NOT found.' >&4
11891fi
11892set d_tzname
11893eval $setvar
11894
11895: see if umask exists
11896set umask d_umask
11897eval $inlibc
11898
11899: see if ustat exists
11900set ustat d_ustat
11901eval $inlibc
11902
11903: backward compatibility for d_hvfork
11904if test X$d_hvfork != X; then
11905 d_vfork="$d_hvfork"
11906 d_hvfork=''
11907fi
11908: see if there is a vfork
11909val=''
11910set vfork val
11911eval $inlibc
11912
11913: Ok, but do we want to use it. vfork is reportedly unreliable in
11914: perl on Solaris 2.x, and probably elsewhere.
11915case "$val" in
11916$define)
11917 echo " "
11918 case "$usevfork" in
11919 false) dflt='n';;
11920 *) dflt='y';;
11921 esac
11922 cat <<'EOM'
11923
11924Perl can only use a vfork() that doesn't suffer from strict
11925restrictions on calling functions or modifying global data in
11926the child. For example, glibc-2.1 contains such a vfork()
11927that is unsuitable. If your system provides a proper fork()
11928call, chances are that you do NOT want perl to use vfork().
11929
11930EOM
11931 rp="Do you still want to use vfork()?"
11932 . ./myread
11933 case "$ans" in
11934 y|Y) ;;
11935 *)
11936 echo "Ok, we won't use vfork()."
11937 val="$undef"
11938 ;;
11939 esac
11940 ;;
11941esac
11942set d_vfork
11943eval $setvar
11944case "$d_vfork" in
11945$define) usevfork='true';;
11946*) usevfork='false';;
11947esac
11948
11949: see if this is an sysdir system
11950set sys/dir.h i_sysdir
11951eval $inhdr
11952
11953: see if this is an sysndir system
11954set sys/ndir.h i_sysndir
11955eval $inhdr
11956
11957: see if closedir exists
11958set closedir d_closedir
11959eval $inlibc
11960
11961case "$d_closedir" in
11962"$define")
11963 echo " "
11964 echo "Checking whether closedir() returns a status..." >&4
11965 cat > closedir.c <<EOM
11966#$i_dirent I_DIRENT /**/
11967#$i_sysdir I_SYS_DIR /**/
11968#$i_sysndir I_SYS_NDIR /**/
11969#$i_systypes I_SYS_TYPES /**/
11970
11971#if defined(I_SYS_TYPES)
11972#include <sys/types.h>
11973#endif
11974#if defined(I_DIRENT)
11975#include <dirent.h>
11976#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11977#include <sys/dir.h>
11978#endif
11979#else
11980#ifdef I_SYS_NDIR
11981#include <sys/ndir.h>
11982#else
11983#ifdef I_SYS_DIR
11984#ifdef hp9000s500
11985#include <ndir.h> /* may be wrong in the future */
11986#else
11987#include <sys/dir.h>
11988#endif
11989#endif
11990#endif
11991#endif
11992int main() { return closedir(opendir(".")); }
11993EOM
11994 set closedir
11995 if eval $compile_ok; then
11996 if ./closedir > /dev/null 2>&1 ; then
11997 echo "Yes, it does."
11998 val="$undef"
11999 else
12000 echo "No, it doesn't."
12001 val="$define"
12002 fi
12003 else
12004 echo "(I can't seem to compile the test program--assuming it doesn't)"
12005 val="$define"
12006 fi
12007 ;;
12008*)
12009 val="$undef";
12010 ;;
12011esac
12012set d_void_closedir
12013eval $setvar
12014$rm -f closedir*
12015: check for volatile keyword
12016echo " "
12017echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12018$cat >try.c <<'EOCP'
12019int main()
12020{
12021 typedef struct _goo_struct goo_struct;
12022 goo_struct * volatile goo = ((goo_struct *)0);
12023 struct _goo_struct {
12024 long long_int;
12025 int reg_int;
12026 char char_var;
12027 };
12028 typedef unsigned short foo_t;
12029 char *volatile foo;
12030 volatile int bar;
12031 volatile foo_t blech;
12032 foo = foo;
12033}
12034EOCP
12035if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12036 val="$define"
12037 echo "Yup, it does."
12038else
12039 val="$undef"
12040 echo "Nope, it doesn't."
12041fi
12042set d_volatile
12043eval $setvar
12044$rm -f try.*
12045
12046: see if there is a wait4
12047set wait4 d_wait4
12048eval $inlibc
12049
12050: see if waitpid exists
12051set waitpid d_waitpid
12052eval $inlibc
12053
12054: see if wcstombs exists
12055set wcstombs d_wcstombs
12056eval $inlibc
12057
12058: see if wctomb exists
12059set wctomb d_wctomb
12060eval $inlibc
12061
12062: preserve RCS keywords in files with variable substitution, grrr
12063Date='$Date'
12064Id='$Id'
12065Log='$Log'
12066RCSfile='$RCSfile'
12067Revision='$Revision'
12068
12069case "$crosscompile" in
12070''|[nN]*) crosscompile="$undef" ;;
12071esac
12072
12073case "$osname" in
12074next|rhapsody|darwin) multiarch="$define" ;;
12075esac
12076case "$multiarch" in
12077''|[nN]*) multiarch="$undef" ;;
12078esac
12079
12080: check for alignment requirements
12081echo " "
12082case "$crosscompile$multiarch" in
12083*$define*)
12084 $cat <<EOM
12085You seem to be either cross-compiling or doing a multiarchitecture build,
12086skipping the memory alignment check.
12087
12088EOM
12089 case "$alignbytes" in
12090 '') alignbytes=8 ;;
12091 esac
12092 ;;
12093*)
12094 case "$alignbytes" in
12095 '') echo "Checking alignment constraints..." >&4
12096 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12097 $cat >try.c <<'EOCP'
12098typedef long double NV;
12099EOCP
12100 else
12101 $cat >try.c <<'EOCP'
12102typedef double NV;
12103EOCP
12104 fi
12105 $cat >>try.c <<'EOCP'
12106#include <stdio.h>
12107struct foobar {
12108 char foo;
12109 NV bar;
12110} try_algn;
12111int main()
12112{
12113 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12114 return(0);
12115}
12116EOCP
12117 set try
12118 if eval $compile_ok; then
12119 dflt=`./try`
12120 else
12121 dflt='8'
12122 echo "(I can't seem to compile the test program...)"
12123 fi
12124 ;;
12125 *) dflt="$alignbytes"
12126 ;;
12127 esac
12128 rp="Doubles must be aligned on a how-many-byte boundary?"
12129 . ./myread
12130 alignbytes="$ans"
12131 $rm -f try.c try
12132 ;;
12133esac
12134
12135
12136: set the base revision
12137baserev=5.0
12138
12139: check for ordering of bytes in a long
12140echo " "
12141case "$crosscompile$multiarch" in
12142*$define*)
12143 $cat <<EOM
12144You seem to be either cross-compiling or doing a multiarchitecture build,
12145skipping the byteorder check.
12146
12147EOM
12148 byteorder='0xffff'
12149 ;;
12150*)
12151 case "$byteorder" in
12152 '')
12153 $cat <<'EOM'
12154In the following, larger digits indicate more significance. A big-endian
12155machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12156little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12157machines may have weird orders like 3412. A Cray will report 87654321,
12158an Alpha will report 12345678. If the test program works the default is
12159probably right.
12160I'm now running the test program...
12161EOM
12162 $cat >try.c <<'EOCP'
12163#include <stdio.h>
12164int main()
12165{
12166 int i;
12167 union {
12168 unsigned long l;
12169 char c[sizeof(long)];
12170 } u;
12171
12172 if (sizeof(long) > 4)
12173 u.l = (0x08070605L << 32) | 0x04030201L;
12174 else
12175 u.l = 0x04030201L;
12176 for (i = 0; i < sizeof(long); i++)
12177 printf("%c", u.c[i]+'0');
12178 printf("\n");
12179 exit(0);
12180}
12181EOCP
12182 xxx_prompt=y
12183 set try
12184 if eval $compile && ./try > /dev/null; then
12185 dflt=`./try`
12186 case "$dflt" in
12187 [1-4][1-4][1-4][1-4]|12345678|87654321)
12188 echo "(The test program ran ok.)"
12189 echo "byteorder=$dflt"
12190 xxx_prompt=n
12191 ;;
12192 ????|????????) echo "(The test program ran ok.)" ;;
12193 *) echo "(The test program didn't run right for some reason.)" ;;
12194 esac
12195 else
12196 dflt='4321'
12197 cat <<'EOM'
12198(I can't seem to compile the test program. Guessing big-endian...)
12199EOM
12200 fi
12201 case "$xxx_prompt" in
12202 y)
12203 rp="What is the order of bytes in a long?"
12204 . ./myread
12205 byteorder="$ans"
12206 ;;
12207 *) byteorder=$dflt
12208 ;;
12209 esac
12210 ;;
12211 esac
12212 $rm -f try.c try
12213 ;;
12214esac
12215
12216
12217: how do we catenate cpp tokens here?
12218echo " "
12219echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12220$cat >cpp_stuff.c <<'EOCP'
12221#define RCAT(a,b)a/**/b
12222#define ACAT(a,b)a ## b
12223RCAT(Rei,ser)
12224ACAT(Cir,cus)
12225EOCP
12226$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12227if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12228 echo "Oh! Smells like ANSI's been here." >&4
12229 echo "We can catify or stringify, separately or together!"
12230 cpp_stuff=42
12231elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12232 echo "Ah, yes! The good old days!" >&4
12233 echo "However, in the good old days we don't know how to stringify and"
12234 echo "catify at the same time."
12235 cpp_stuff=1
12236else
12237 $cat >&4 <<EOM
12238Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12239to have to edit the values of CAT[2-5] in config.h...
12240EOM
12241 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12242fi
12243$rm -f cpp_stuff.*
12244
12245: see if this is a db.h system
12246set db.h i_db
12247eval $inhdr
12248
12249case "$i_db" in
12250$define)
12251 : Check db version.
12252 echo " "
12253 echo "Checking Berkeley DB version ..." >&4
12254 $cat >try.c <<EOCP
12255#$d_const HASCONST
12256#ifndef HASCONST
12257#define const
12258#endif
12259#include <sys/types.h>
12260#include <stdio.h>
12261#include <db.h>
12262int main()
12263{
12264#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12265 int Major, Minor, Patch ;
12266 unsigned long Version ;
12267 (void)db_version(&Major, &Minor, &Patch) ;
12268 printf("You have Berkeley DB Version 2 or greater\n");
12269
12270 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12271 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12272 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12273 Major, Minor, Patch) ;
12274
12275 /* check that db.h & libdb are compatible */
12276 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12277 printf("db.h and libdb are incompatible\n") ;
12278 exit(3);
12279 }
12280
12281 printf("db.h and libdb are compatible\n") ;
12282
12283 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12284 + DB_VERSION_PATCH ;
12285
12286 /* needs to be >= 2.3.4 */
12287 if (Version < 2003004) {
12288 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12289 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12290 exit(2);
12291 }
12292
12293 exit(0);
12294#else
12295#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12296 printf("You have Berkeley DB Version 1\n");
12297 exit(0); /* DB version < 2: the coast is clear. */
12298#else
12299 exit(1); /* <db.h> not Berkeley DB? */
12300#endif
12301#endif
12302}
12303EOCP
12304 set try
12305 if eval $compile_ok && ./try; then
12306 echo 'Looks OK.' >&4
12307 else
12308 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12309 i_db=$undef
12310 case " $libs " in
12311 *"-ldb "*)
12312 : Remove db from list of libraries to use
12313 echo "Removing unusable -ldb from library list" >&4
12314 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12315 shift
12316 libs="$*"
12317 echo "libs = $libs" >&4
12318 ;;
12319 esac
12320 fi
12321 $rm -f try.*
12322 ;;
12323esac
12324
12325case "$i_db" in
12326define)
12327 : Check the return type needed for hash
12328 echo " "
12329 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12330 $cat >try.c <<EOCP
12331#$d_const HASCONST
12332#ifndef HASCONST
12333#define const
12334#endif
12335#include <sys/types.h>
12336#include <db.h>
12337
12338#ifndef DB_VERSION_MAJOR
12339u_int32_t hash_cb (ptr, size)
12340const void *ptr;
12341size_t size;
12342{
12343}
12344HASHINFO info;
12345int main()
12346{
12347 info.hash = hash_cb;
12348}
12349#endif
12350EOCP
12351 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12352 if $contains warning try.out >>/dev/null 2>&1 ; then
12353 db_hashtype='int'
12354 else
12355 db_hashtype='u_int32_t'
12356 fi
12357 else
12358 : XXX Maybe we should just give up here.
12359 db_hashtype=u_int32_t
12360 $cat try.out >&4
12361 echo "Help: I can't seem to compile the db test program." >&4
12362 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12363 fi
12364 $rm -f try.*
12365 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12366 ;;
12367*) db_hashtype=u_int32_t
12368 ;;
12369esac
12370case "$i_db" in
12371define)
12372 : Check the return type needed for prefix
12373 echo " "
12374 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12375 cat >try.c <<EOCP
12376#$d_const HASCONST
12377#ifndef HASCONST
12378#define const
12379#endif
12380#include <sys/types.h>
12381#include <db.h>
12382
12383#ifndef DB_VERSION_MAJOR
12384size_t prefix_cb (key1, key2)
12385const DBT *key1;
12386const DBT *key2;
12387{
12388}
12389BTREEINFO info;
12390int main()
12391{
12392 info.prefix = prefix_cb;
12393}
12394#endif
12395EOCP
12396 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12397 if $contains warning try.out >>/dev/null 2>&1 ; then
12398 db_prefixtype='int'
12399 else
12400 db_prefixtype='size_t'
12401 fi
12402 else
12403 db_prefixtype='size_t'
12404 : XXX Maybe we should just give up here.
12405 $cat try.out >&4
12406 echo "Help: I can't seem to compile the db test program." >&4
12407 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12408 fi
12409 $rm -f try.*
12410 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12411 ;;
12412*) db_prefixtype='size_t'
12413 ;;
12414esac
12415
12416: check for void type
12417echo " "
12418echo "Checking to see how well your C compiler groks the void type..." >&4
12419case "$voidflags" in
12420'')
12421 $cat >try.c <<'EOCP'
12422#if TRY & 1
12423void sub() {
12424#else
12425sub() {
12426#endif
12427 extern void moo(); /* function returning void */
12428 void (*goo)(); /* ptr to func returning void */
12429#if TRY & 8
12430 void *hue; /* generic ptr */
12431#endif
12432#if TRY & 2
12433 void (*foo[10])();
12434#endif
12435
12436#if TRY & 4
12437 if(goo == moo) {
12438 exit(0);
12439 }
12440#endif
12441 exit(0);
12442}
12443int main() { sub(); }
12444EOCP
12445 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12446 voidflags=$defvoidused
12447 echo "Good. It appears to support void to the level $package wants.">&4
12448 if $contains warning .out >/dev/null 2>&1; then
12449 echo "However, you might get some warnings that look like this:"
12450 $cat .out
12451 fi
12452 else
12453echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12454 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12455 echo "It supports 1..."
12456 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12457 echo "It also supports 2..."
12458 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12459 voidflags=7
12460 echo "And it supports 4 but not 8 definitely."
12461 else
12462 echo "It doesn't support 4..."
12463 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12464 voidflags=11
12465 echo "But it supports 8."
12466 else
12467 voidflags=3
12468 echo "Neither does it support 8."
12469 fi
12470 fi
12471 else
12472 echo "It does not support 2..."
12473 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12474 voidflags=13
12475 echo "But it supports 4 and 8."
12476 else
12477 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12478 voidflags=5
12479 echo "And it supports 4 but has not heard about 8."
12480 else
12481 echo "However it supports 8 but not 4."
12482 fi
12483 fi
12484 fi
12485 else
12486 echo "There is no support at all for void."
12487 voidflags=0
12488 fi
12489 fi
12490esac
12491case "$voidflags" in
12492"$defvoidused") ;;
12493*) $cat >&4 <<'EOM'
12494 Support flag bits are:
12495 1: basic void declarations.
12496 2: arrays of pointers to functions returning void.
12497 4: operations between pointers to and addresses of void functions.
12498 8: generic void pointers.
12499EOM
12500 dflt="$voidflags";
12501 rp="Your void support flags add up to what?"
12502 . ./myread
12503 voidflags="$ans"
12504 ;;
12505esac
12506$rm -f try.* .out
12507
12508
12509: How can we generate normalized random numbers ?
12510echo " "
12511echo "Looking for a random number function..." >&4
12512case "$randfunc" in
12513'')
12514 if set drand48 val -f; eval $csym; $val; then
12515 dflt="drand48"
12516 echo "Good, found drand48()." >&4
12517 elif set random val -f; eval $csym; $val; then
12518 dflt="random"
12519 echo "OK, found random()." >&4
12520 else
12521 dflt="rand"
12522 echo "Yick, looks like I have to use rand()." >&4
12523 fi
12524 echo " "
12525 ;;
12526*)
12527 dflt="$randfunc"
12528 ;;
12529esac
12530cont=true
12531
12532case "$ccflags" in
12533*-Dmy_rand=*|*-Dmy_srand=*)
12534 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12535 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12536 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12537 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12538 ;;
12539esac
12540
12541while $test "$cont"; do
12542 rp="Use which function to generate random numbers?"
12543 . ./myread
12544 if $test "$ans" = "$dflt"; then
12545 : null
12546 else
12547 randbits=''
12548 fi
12549 randfunc="$ans"
12550 if set $ans val -f; eval $csym; $val; then
12551 cont=''
12552 else
12553 dflt=y
12554 rp="I cannot find function $ans. Use that name anyway?"
12555 . ./myread
12556 dflt=rand
12557 case "$ans" in
12558 [yY]*) cont='';;
12559 esac
12560 fi
12561 case "$cont" in
12562 '')
12563 case "$randfunc" in
12564 drand48)
12565 drand01="drand48()"
12566 seedfunc="srand48"
12567 randbits=48
12568 randseedtype=long
12569 ;;
12570 rand|random)
12571 case "$randbits" in
12572 '')
12573echo "Checking to see how many bits your $randfunc() function produces..." >&4
12574 $cat >try.c <<EOCP
12575#$i_unistd I_UNISTD
12576#$i_stdlib I_STDLIB
12577#include <stdio.h>
12578#ifdef I_UNISTD
12579# include <unistd.h>
12580#endif
12581#ifdef I_STDLIB
12582# include <stdlib.h>
12583#endif
12584int main()
12585{
12586 register int i;
12587 register unsigned long tmp;
12588 register unsigned long max = 0L;
12589
12590 for (i = 1000; i; i--) {
12591 tmp = (unsigned long) $randfunc();
12592 if (tmp > max) max = tmp;
12593 }
12594 for (i = 0; max; i++)
12595 max /= 2;
12596 printf("%d\n",i);
12597}
12598EOCP
12599 set try
12600 if eval $compile_ok; then
12601 dflt=`try`
12602 else
12603 dflt='?'
12604 echo "(I can't seem to compile the test program...)"
12605 fi
12606 ;;
12607 *)
12608 dflt="$randbits"
12609 ;;
12610 esac
12611 rp="How many bits does your $randfunc() function produce?"
12612 . ./myread
12613 randbits="$ans"
12614 $rm -f try.c try
12615 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12616 seedfunc="s$randfunc"
12617 randseedtype=unsigned
12618 ;;
12619 *)
12620 dflt="31"
12621 rp="How many bits does your $randfunc() function produce?"
12622 . ./myread
12623 randbits="$ans"
12624 seedfunc="s$randfunc"
12625 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12626 if set $seedfunc val -f; eval $csym; $val; then
12627 echo "(Using $seedfunc() to seed random generator)"
12628 else
12629 echo "(Warning: no $seedfunc() to seed random generator)"
12630 seedfunc=rand
12631 fi
12632 randseedtype=unsigned
12633 ;;
12634 esac
12635 ;;
12636 esac
12637done
12638
12639echo " "
12640echo "Determining whether or not we are on an EBCDIC system..." >&4
12641$cat >tebcdic.c <<'EOM'
12642int main()
12643{
12644 if ('M'==0xd4) return 0;
12645 return 1;
12646}
12647EOM
12648
12649val=$undef
12650set tebcdic
12651if eval $compile_ok; then
12652 if ./tebcdic; then
12653 echo "You seem to speak EBCDIC." >&4
12654 val="$define"
12655 else
12656 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12657 fi
12658else
12659 echo "I'm unable to compile the test program." >&4
12660 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12661fi
12662$rm -f tebcdic.c tebcdic
12663set ebcdic
12664eval $setvar
12665
12666echo " "
12667$cat >&4 <<EOM
12668Checking how to flush all pending stdio output...
12669EOM
12670# I only know how to find the first 32 possibly open files on SunOS.
12671# See also hints/sunos_4_1.sh and util.c --AD
12672case "$osname" in
12673sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12674esac
12675$cat >>try.c <<EOCP
12676#include <stdio.h>
12677#$i_unistd I_UNISTD
12678#ifdef I_UNISTD
12679# include <unistd.h>
12680#endif
12681#$d_sysconf HAS_SYSCONF
12682#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12683#ifdef HAS_STDIO_STREAM_ARRAY
12684# define STDIO_STREAM_ARRAY $stdio_stream_array
12685#endif
12686int main() {
12687 FILE* p = fopen("try.out", "w");
12688#ifdef TRY_FPUTC
12689 fputc('x', p);
12690#else
12691# ifdef TRY_FPRINTF
12692 fprintf(p, "x");
12693# endif
12694#endif
12695#ifdef TRY_FFLUSH_NULL
12696 fflush(NULL);
12697#endif
12698#ifdef TRY_FFLUSH_ALL
12699 {
12700 long open_max = -1;
12701# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12702 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12703# else
12704# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12705 open_max = sysconf(_SC_OPEN_MAX);
12706# else
12707# ifdef FOPEN_MAX
12708 open_max = FOPEN_MAX;
12709# else
12710# ifdef OPEN_MAX
12711 open_max = OPEN_MAX;
12712# else
12713# ifdef _NFILE
12714 open_max = _NFILE;
12715# endif
12716# endif
12717# endif
12718# endif
12719# endif
12720# ifdef HAS_STDIO_STREAM_ARRAY
12721 if (open_max > 0) {
12722 long i;
12723 for (i = 0; i < open_max; i++)
12724 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12725 STDIO_STREAM_ARRAY[i]._file < open_max &&
12726 STDIO_STREAM_ARRAY[i]._flag)
12727 fflush(&STDIO_STREAM_ARRAY[i]);
12728 }
12729 }
12730# endif
12731#endif
12732 _exit(42);
12733}
12734EOCP
12735: first we have to find out how _not_ to flush
12736if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12737 output=''
12738 set try -DTRY_FPUTC
12739 if eval $compile; then
12740 $rm -f try.out
12741 ./try$exe_ext 2>/dev/null
12742 if $test ! -s try.out -a "X$?" = X42; then
12743 output=-DTRY_FPUTC
12744 fi
12745 fi
12746 case "$output" in
12747 '')
12748 set try -DTRY_FPRINTF
12749 $rm -f try.out
12750 if eval $compile; then
12751 $rm -f try.out
12752 ./try$exe_ext 2>/dev/null
12753 if $test ! -s try.out -a "X$?" = X42; then
12754 output=-DTRY_FPRINTF
12755 fi
12756 fi
12757 ;;
12758 esac
12759fi
12760: check for fflush NULL behaviour
12761case "$fflushNULL" in
12762'') set try -DTRY_FFLUSH_NULL $output
12763 if eval $compile; then
12764 $rm -f try.out
12765 ./try$exe_ext 2>/dev/null
12766 code="$?"
12767 if $test -s try.out -a "X$code" = X42; then
12768 fflushNULL="`$cat try.out`"
12769 else
12770 if $test "X$code" != X42; then
12771 $cat >&4 <<EOM
12772(If this test failed, don't worry, we'll try another method shortly.)
12773EOM
12774 fi
12775 fi
12776 fi
12777 $rm -f core try.core core.try.*
12778 case "$fflushNULL" in
12779 x) $cat >&4 <<EOM
12780Your fflush(NULL) works okay for output streams.
12781Let's see if it clobbers input pipes...
12782EOM
12783# As of mid-March 2000 all versions of Solaris appear to have a stdio
12784# bug that improperly flushes the input end of pipes. So we avoid the
12785# autoflush on fork/system/exec support for now. :-(
12786$cat >tryp.c <<EOCP
12787#include <stdio.h>
12788int
12789main(int argc, char **argv)
12790{
12791 char buf[1024];
12792 int i;
12793 char *bp = buf;
12794 while (1) {
12795 while ((i = getc(stdin)) != -1
12796 && (*bp++ = i) != '\n'
12797 && bp < &buf[1024])
12798 /* DO NOTHING */ ;
12799 *bp = '\0';
12800 fprintf(stdout, "%s", buf);
12801 fflush(NULL);
12802 if (i == -1)
12803 return 0;
12804 bp = buf;
12805 }
12806}
12807EOCP
12808 fflushNULL="$define"
12809 set tryp
12810 if eval $compile; then
12811 $rm -f tryp.out
12812 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12813 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12814 $cat >&4 <<EOM
12815fflush(NULL) seems to behave okay with input streams.
12816EOM
12817 fflushNULL="$define"
12818 else
12819 $cat >&4 <<EOM
12820Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12821EOM
12822 fflushNULL="$undef"
12823 fi
12824 fi
12825 $rm -f core tryp.c tryp.core core.tryp.*
12826 ;;
12827 '') $cat >&4 <<EOM
12828Your fflush(NULL) isn't working (contrary to ANSI C).
12829EOM
12830 fflushNULL="$undef"
12831 ;;
12832 *) $cat >&4 <<EOM
12833Cannot figure out whether your fflush(NULL) works or not.
12834I'm assuming it doesn't (contrary to ANSI C).
12835EOM
12836 fflushNULL="$undef"
12837 ;;
12838 esac
12839 ;;
12840$define|true|[yY]*)
12841 fflushNULL="$define"
12842 ;;
12843*)
12844 fflushNULL="$undef"
12845 ;;
12846esac
12847: check explicit looping only if NULL did not work, and if the pipe
12848: bug does not show up on an explicit flush too
12849case "$fflushNULL" in
12850"$undef")
12851 $cat >tryp.c <<EOCP
12852#include <stdio.h>
12853int
12854main(int argc, char **argv)
12855{
12856 char buf[1024];
12857 int i;
12858 char *bp = buf;
12859 while (1) {
12860 while ((i = getc(stdin)) != -1
12861 && (*bp++ = i) != '\n'
12862 && bp < &buf[1024])
12863 /* DO NOTHING */ ;
12864 *bp = '\0';
12865 fprintf(stdout, "%s", buf);
12866 fflush(stdin);
12867 if (i == -1)
12868 return 0;
12869 bp = buf;
12870 }
12871}
12872EOCP
12873 set tryp
12874 if eval $compile; then
12875 $rm -f tryp.out
12876 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12877 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12878 $cat >&4 <<EOM
12879Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12880EOM
12881 : now check for fflushall behaviour
12882 case "$fflushall" in
12883 '') set try -DTRY_FFLUSH_ALL $output
12884 if eval $compile; then
12885 $cat >&4 <<EOM
12886(Now testing the other method--but note that this also may fail.)
12887EOM
12888 $rm -f try.out
12889 ./try$exe_ext 2>/dev/null
12890 if $test -s try.out -a "X$?" = X42; then
12891 fflushall="`$cat try.out`"
12892 fi
12893 fi
12894 $rm -f core try.core core.try.*
12895 case "$fflushall" in
12896 x) $cat >&4 <<EOM
12897Whew. Flushing explicitly all the stdio streams works.
12898EOM
12899 fflushall="$define"
12900 ;;
12901 '') $cat >&4 <<EOM
12902Sigh. Flushing explicitly all the stdio streams doesn't work.
12903EOM
12904 fflushall="$undef"
12905 ;;
12906 *) $cat >&4 <<EOM
12907Cannot figure out whether flushing stdio streams explicitly works or not.
12908I'm assuming it doesn't.
12909EOM
12910 fflushall="$undef"
12911 ;;
12912 esac
12913 ;;
12914 "$define"|true|[yY]*)
12915 fflushall="$define"
12916 ;;
12917 *)
12918 fflushall="$undef"
12919 ;;
12920 esac
12921 else
12922 $cat >&4 <<EOM
12923All is futile. Even fflush(stdin) clobbers input pipes!
12924EOM
12925 fflushall="$undef"
12926 fi
12927 else
12928 fflushall="$undef"
12929 fi
12930 $rm -f core tryp.c tryp.core core.tryp.*
12931 ;;
12932*) fflushall="$undef"
12933 ;;
12934esac
12935
12936case "$fflushNULL$fflushall" in
12937undefundef)
12938 $cat <<EOM
12939OK, I give up. I cannot figure out how to flush pending stdio output.
12940We won't be flushing handles at all before fork/exec/popen.
12941EOM
12942 ;;
12943esac
12944$rm -f try.* try$exe_ext
12945
12946: Store the full pathname to the ar program for use in the C program
12947: Respect a hint or command line value for full_ar.
12948case "$full_ar" in
12949'') full_ar=$ar ;;
12950esac
12951
12952: Store the full pathname to the sed program for use in the C program
12953full_sed=$sed
12954
12955: see what type gids are declared as in the kernel
12956echo " "
12957echo "Looking for the type for group ids returned by getgid()."
12958set gid_t gidtype xxx stdio.h sys/types.h
12959eval $typedef
12960case "$gidtype" in
12961xxx)
12962 xxx=`./findhdr sys/user.h`
12963 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12964 case $1 in
12965 unsigned) dflt="$1 $2" ;;
12966 *) dflt="$1" ;;
12967 esac
12968 ;;
12969*) dflt="$gidtype";;
12970esac
12971case "$gidtype" in
12972gid_t) echo "gid_t found." ;;
12973*) rp="What is the type for group ids returned by getgid()?"
12974 . ./myread
12975 gidtype="$ans"
12976 ;;
12977esac
12978
12979echo " "
12980case "$gidtype" in
12981*_t) zzz="$gidtype" ;;
12982*) zzz="gid" ;;
12983esac
12984echo "Checking the size of $zzz..." >&4
12985cat > try.c <<EOCP
12986#include <sys/types.h>
12987#include <stdio.h>
12988int main() {
12989 printf("%d\n", (int)sizeof($gidtype));
12990 exit(0);
12991}
12992EOCP
12993set try
12994if eval $compile_ok; then
12995 yyy=`./try`
12996 case "$yyy" in
12997 '') gidsize=4
12998 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12999 ;;
13000 *) gidsize=$yyy
13001 echo "Your $zzz is $gidsize bytes long."
13002 ;;
13003 esac
13004else
13005 gidsize=4
13006 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13007fi
13008
13009
13010echo " "
13011case "$gidtype" in
13012*_t) zzz="$gidtype" ;;
13013*) zzz="gid" ;;
13014esac
13015echo "Checking the sign of $zzz..." >&4
13016cat > try.c <<EOCP
13017#include <sys/types.h>
13018#include <stdio.h>
13019int main() {
13020 $gidtype foo = -1;
13021 if (foo < 0)
13022 printf("-1\n");
13023 else
13024 printf("1\n");
13025}
13026EOCP
13027set try
13028if eval $compile; then
13029 yyy=`./try`
13030 case "$yyy" in
13031 '') gidsign=1
13032 echo "(I can't execute the test program--guessing unsigned.)" >&4
13033 ;;
13034 *) gidsign=$yyy
13035 case "$gidsign" in
13036 1) echo "Your $zzz is unsigned." ;;
13037 -1) echo "Your $zzz is signed." ;;
13038 esac
13039 ;;
13040 esac
13041else
13042 gidsign=1
13043 echo "(I can't compile the test program--guessing unsigned.)" >&4
13044fi
13045
13046
13047echo " "
13048
13049if $test X"$quadtype" != X; then
13050
13051echo "Checking how to print 64-bit integers..." >&4
13052
13053if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13054 $cat >try.c <<'EOCP'
13055#include <sys/types.h>
13056#include <stdio.h>
13057int main() {
13058 int q = 12345678901;
13059 printf("%ld\n", q);
13060}
13061EOCP
13062 set try
13063 if eval $compile; then
13064 yyy=`./try$exe_ext`
13065 case "$yyy" in
13066 12345678901)
13067 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13068 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13069 echo "We will use %d."
13070 ;;
13071 esac
13072 fi
13073fi
13074
13075if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13076 $cat >try.c <<'EOCP'
13077#include <sys/types.h>
13078#include <stdio.h>
13079int main() {
13080 long q = 12345678901;
13081 printf("%ld\n", q);
13082}
13083EOCP
13084 set try
13085 if eval $compile; then
13086 yyy=`./try$exe_ext`
13087 case "$yyy" in
13088 12345678901)
13089 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13090 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13091 echo "We will use %ld."
13092 ;;
13093 esac
13094 fi
13095fi
13096
13097if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13098 $cat >try.c <<'EOCP'
13099#include <sys/types.h>
13100#include <inttypes.h>
13101#include <stdio.h>
13102int main() {
13103 int64_t q = 12345678901;
13104 printf("%" PRId64 "\n", q);
13105}
13106EOCP
13107 set try
13108 if eval $compile; then
13109 yyy=`./try$exe_ext`
13110 case "$yyy" in
13111 12345678901)
13112 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13113 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13114 echo "We will use the C9X style."
13115 ;;
13116 esac
13117 fi
13118fi
13119
13120if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13121 $cat >try.c <<'EOCP'
13122#include <sys/types.h>
13123#include <stdio.h>
13124int main() {
13125 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13126 printf("%lld\n", q);
13127}
13128EOCP
13129 set try
13130 if eval $compile; then
13131 yyy=`./try$exe_ext`
13132 case "$yyy" in
13133 12345678901)
13134 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13135 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13136 echo "We will use the %lld style."
13137 ;;
13138 esac
13139 fi
13140fi
13141
13142if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13143 $cat >try.c <<EOCP
13144#include <sys/types.h>
13145#include <stdio.h>
13146int main() {
13147 $quadtype q = 12345678901;
13148 printf("%Ld\n", q);
13149}
13150EOCP
13151 set try
13152 if eval $compile; then
13153 yyy=`./try$exe_ext`
13154 case "$yyy" in
13155 12345678901)
13156 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13157 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13158 echo "We will use %Ld."
13159 ;;
13160 esac
13161 fi
13162fi
13163
13164if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13165 $cat >try.c <<EOCP
13166#include <sys/types.h>
13167#include <stdio.h>
13168int main() {
13169 $quadtype q = 12345678901;
13170 printf("%qd\n", q);
13171}
13172EOCP
13173 set try
13174 if eval $compile; then
13175 yyy=`./try$exe_ext`
13176 case "$yyy" in
13177 12345678901)
13178 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13179 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13180 echo "We will use %qd."
13181 ;;
13182 esac
13183 fi
13184fi
13185
13186if $test X"$sPRId64" = X; then
13187 echo "Cannot figure out how to print 64-bit integers." >&4
13188fi
13189
13190$rm -f try try.*
13191
13192fi
13193
13194case "$sPRId64" in
13195'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13196 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13197 ;;
13198*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13199 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13200 ;;
13201esac
13202
13203
13204echo " "
13205$echo "Checking the format strings to be used for Perl's internal types..." >&4
13206
13207if $test X"$ivsize" = X8; then
13208 ivdformat="$sPRId64"
13209 uvuformat="$sPRIu64"
13210 uvoformat="$sPRIo64"
13211 uvxformat="$sPRIx64"
13212 uvXUformat="$sPRIXU64"
13213else
13214 if $test X"$ivsize" = X"$longsize"; then
13215 ivdformat='"ld"'
13216 uvuformat='"lu"'
13217 uvoformat='"lo"'
13218 uvxformat='"lx"'
13219 uvXUformat='"lX"'
13220 else
13221 if $test X"$ivsize" = X"$intsize"; then
13222 ivdformat='"d"'
13223 uvuformat='"u"'
13224 uvoformat='"o"'
13225 uvxformat='"x"'
13226 uvXUformat='"X"'
13227 else
13228 : far out
13229 if $test X"$ivsize" = X"$shortsize"; then
13230 ivdformat='"hd"'
13231 uvuformat='"hu"'
13232 uvoformat='"ho"'
13233 uvxformat='"hx"'
13234 uvXUformat='"hX"'
13235 fi
13236 fi
13237 fi
13238fi
13239
13240if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13241 nveformat="$sPRIeldbl"
13242 nvfformat="$sPRIfldbl"
13243 nvgformat="$sPRIgldbl"
13244 nvEUformat="$sPRIEUldbl"
13245 nvFUformat="$sPRIFUldbl"
13246 nvGUformat="$sPRIGUldbl"
13247else
13248 nveformat='"e"'
13249 nvfformat='"f"'
13250 nvgformat='"g"'
13251 nvEUformat='"E"'
13252 nvFUformat='"F"'
13253 nvGUformat='"G"'
13254fi
13255
13256case "$ivdformat" in
13257'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13258 exit 1
13259 ;;
13260esac
13261
13262
13263echo " "
13264$echo "Checking the format string to be used for gids..." >&4
13265
13266case "$gidsign" in
13267-1) if $test X"$gidsize" = X"$ivsize"; then
13268 gidformat="$ivdformat"
13269 else
13270 if $test X"$gidsize" = X"$longsize"; then
13271 gidformat='"ld"'
13272 else
13273 if $test X"$gidsize" = X"$intsize"; then
13274 gidformat='"d"'
13275 else
13276 if $test X"$gidsize" = X"$shortsize"; then
13277 gidformat='"hd"'
13278 fi
13279 fi
13280 fi
13281 fi
13282 ;;
13283*) if $test X"$gidsize" = X"$uvsize"; then
13284 gidformat="$uvuformat"
13285 else
13286 if $test X"$gidsize" = X"$longsize"; then
13287 gidformat='"lu"'
13288 else
13289 if $test X"$gidsize" = X"$intsize"; then
13290 gidformat='"u"'
13291 else
13292 if $test X"$gidsize" = X"$shortsize"; then
13293 gidformat='"hu"'
13294 fi
13295 fi
13296 fi
13297 fi
13298 ;;
13299esac
13300
13301: see if getgroups exists
13302set getgroups d_getgrps
13303eval $inlibc
13304
13305: see if setgroups exists
13306set setgroups d_setgrps
13307eval $inlibc
13308
13309
13310: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13311echo " "
13312case "$d_getgrps$d_setgrps" in
13313*define*)
13314 case "$groupstype" in
13315 '') dflt="$gidtype" ;;
13316 *) dflt="$groupstype" ;;
13317 esac
13318 $cat <<EOM
13319What type of pointer is the second argument to getgroups() and setgroups()?
13320Usually this is the same as group ids, $gidtype, but not always.
13321
13322EOM
13323 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13324 . ./myread
13325 groupstype="$ans"
13326 ;;
13327*) groupstype="$gidtype";;
13328esac
13329
13330echo " "
13331echo "Checking if your $make program sets \$(MAKE)..." >&4
13332case "$make_set_make" in
13333'')
13334 $sed 's/^X //' > testmake.mak << 'EOF'
13335Xall:
13336X @echo 'maketemp="$(MAKE)"'
13337EOF
13338 case "`$make -f testmake.mak 2>/dev/null`" in
13339 *maketemp=*) make_set_make='#' ;;
13340 *) make_set_make="MAKE=$make" ;;
13341 esac
13342 $rm -f testmake.mak
13343 ;;
13344esac
13345case "$make_set_make" in
13346'#') echo "Yup, it does.";;
13347*) echo "Nope, it doesn't.";;
13348esac
13349
13350: see what type is used for mode_t
13351rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13352set mode_t modetype int stdio.h sys/types.h
13353eval $typedef_ask
13354
13355: define a fucntion to check prototypes
13356$cat > protochk <<EOSH
13357$startsh
13358cc="$cc"
13359optimize="$optimize"
13360ccflags="$ccflags"
13361prototype="$prototype"
13362define="$define"
13363rm=$rm
13364EOSH
13365
13366$cat >> protochk <<'EOSH'
13367
13368$rm -f try.c
13369foo="$1"
13370shift
13371while test $# -ge 2; do
13372 case "$1" in
13373 $define) echo "#include <$2>" >> try.c ;;
13374 literal) echo "$2" >> try.c ;;
13375 esac
13376 shift 2
13377done
13378test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13379cat >> try.c <<'EOCP'
13380#ifdef CAN_PROTOTYPE
13381#define _(args) args
13382#else
13383#define _(args) ()
13384#endif
13385EOCP
13386echo "$foo" >> try.c
13387echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13388$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13389status=$?
13390$rm -f try.[co]
13391exit $status
13392EOSH
13393chmod +x protochk
13394$eunicefix protochk
13395
13396: see what type is used for size_t
13397rp="What is the type used for the length parameter for string functions?"
13398set size_t sizetype 'unsigned int' stdio.h sys/types.h
13399eval $typedef_ask
13400
13401: check for type of arguments to gethostbyaddr.
13402if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13403 case "$d_gethbyaddr" in
13404 $define)
13405 $cat <<EOM
13406
13407Checking to see what type of arguments are accepted by gethostbyaddr().
13408EOM
13409 hdrs="$define sys/types.h
13410 $d_socket sys/socket.h
13411 $i_niin netinet/in.h
13412 $i_netdb netdb.h
13413 $i_unistd unistd.h"
13414 : The first arg can 'char *' or 'void *'
13415 : The second arg is some of integral type
13416 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13417 for yyy in size_t long int; do
13418 case "$netdb_host_type" in
13419 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13420 if ./protochk "$try" $hdrs; then
13421 echo "Your system accepts $xxx for the first arg."
13422 echo "...and $yyy for the second arg."
13423 netdb_host_type="$xxx"
13424 netdb_hlen_type="$yyy"
13425 fi
13426 ;;
13427 esac
13428 done
13429 done
13430 : In case none of those worked, prompt the user.
13431 case "$netdb_host_type" in
13432 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13433 dflt='char *'
13434 . ./myread
13435 netdb_host_type=$ans
13436 rp='What is the type for the 2nd argument to gethostbyaddr?'
13437 dflt="$sizetype"
13438 . ./myread
13439 netdb_hlen_type=$ans
13440 ;;
13441 esac
13442 ;;
13443 *) : no gethostbyaddr, so pick harmless defaults
13444 netdb_host_type='char *'
13445 netdb_hlen_type="$sizetype"
13446 ;;
13447 esac
13448 # Remove the "const" if needed. -- but then we'll have a
13449 # prototype clash!
13450 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13451fi
13452
13453: check for type of argument to gethostbyname.
13454if test "X$netdb_name_type" = X ; then
13455 case "$d_gethbyname" in
13456 $define)
13457 $cat <<EOM
13458
13459Checking to see what type of argument is accepted by gethostbyname().
13460EOM
13461 hdrs="$define sys/types.h
13462 $d_socket sys/socket.h
13463 $i_niin netinet/in.h
13464 $i_netdb netdb.h
13465 $i_unistd unistd.h"
13466 for xxx in "const char *" "char *"; do
13467 case "$netdb_name_type" in
13468 '') try="extern struct hostent *gethostbyname($xxx);"
13469 if ./protochk "$try" $hdrs; then
13470 echo "Your system accepts $xxx."
13471 netdb_name_type="$xxx"
13472 fi
13473 ;;
13474 esac
13475 done
13476 : In case none of those worked, prompt the user.
13477 case "$netdb_name_type" in
13478 '') rp='What is the type for the 1st argument to gethostbyname?'
13479 dflt='char *'
13480 . ./myread
13481 netdb_name_type=$ans
13482 ;;
13483 esac
13484 ;;
13485 *) : no gethostbyname, so pick harmless default
13486 netdb_name_type='char *'
13487 ;;
13488 esac
13489fi
13490
13491: check for type of 1st argument to getnetbyaddr.
13492if test "X$netdb_net_type" = X ; then
13493 case "$d_getnbyaddr" in
13494 $define)
13495 $cat <<EOM
13496
13497Checking to see what type of 1st argument is accepted by getnetbyaddr().
13498EOM
13499 hdrs="$define sys/types.h
13500 $d_socket sys/socket.h
13501 $i_niin netinet/in.h
13502 $i_netdb netdb.h
13503 $i_unistd unistd.h"
13504 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13505 case "$netdb_net_type" in
13506 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13507 if ./protochk "$try" $hdrs; then
13508 echo "Your system accepts $xxx."
13509 netdb_net_type="$xxx"
13510 fi
13511 ;;
13512 esac
13513 done
13514 : In case none of those worked, prompt the user.
13515 case "$netdb_net_type" in
13516 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13517 dflt='long'
13518 . ./myread
13519 netdb_net_type=$ans
13520 ;;
13521 esac
13522 ;;
13523 *) : no getnetbyaddr, so pick harmless default
13524 netdb_net_type='long'
13525 ;;
13526 esac
13527fi
13528: locate the preferred pager for this system
13529case "$pager" in
13530'')
13531 dflt=''
13532 case "$pg" in
13533 /*) dflt=$pg;;
13534 [a-zA-Z]:/*) dflt=$pg;;
13535 esac
13536 case "$more" in
13537 /*) dflt=$more;;
13538 [a-zA-Z]:/*) dflt=$more;;
13539 esac
13540 case "$less" in
13541 /*) dflt=$less;;
13542 [a-zA-Z]:/*) dflt=$less;;
13543 esac
13544 case "$dflt" in
13545 '') dflt=/usr/ucb/more;;
13546 esac
13547 ;;
13548*) dflt="$pager";;
13549esac
13550echo " "
13551fn=f/
13552rp='What pager is used on your system?'
13553. ./getfile
13554pager="$ans"
13555
13556: see what type pids are declared as in the kernel
13557rp="What is the type of process ids on this system?"
13558set pid_t pidtype int stdio.h sys/types.h
13559eval $typedef_ask
13560
13561: Find earliest binary compatible site_perl subdirectory perl can use.
13562case "$bincompat5005" in
13563"$define") xs_apiversion='5.005' ;;
13564*) xs_apiversion=$version ;; # The current site_perl version.
13565esac
13566: Find earliest pure perl site_perl subdirectory perl can use.
13567: The versioned directories started at 5.005.
13568pm_apiversion='5.005'
13569
13570: check for length of pointer
13571echo " "
13572case "$ptrsize" in
13573'')
13574 echo "Checking to see how big your pointers are..." >&4
13575 if test "$voidflags" -gt 7; then
13576 echo '#define VOID_PTR char *' > try.c
13577 else
13578 echo '#define VOID_PTR void *' > try.c
13579 fi
13580 $cat >>try.c <<'EOCP'
13581#include <stdio.h>
13582int main()
13583{
13584 printf("%d\n", (int)sizeof(VOID_PTR));
13585 exit(0);
13586}
13587EOCP
13588 set try
13589 if eval $compile_ok; then
13590 ptrsize=`./try`
13591 echo "Your pointers are $ptrsize bytes long."
13592 else
13593 dflt='4'
13594 echo "(I can't seem to compile the test program. Guessing...)" >&4
13595 rp="What is the size of a pointer (in bytes)?"
13596 . ./myread
13597 ptrsize="$ans"
13598 fi
13599 ;;
13600esac
13601$rm -f try.c try
13602
13603: see if ar generates random libraries by itself
13604echo " "
13605echo "Checking how to generate random libraries on your machine..." >&4
13606echo 'int bar1() { return bar2(); }' > bar1.c
13607echo 'int bar2() { return 2; }' > bar2.c
13608$cat > foo.c <<'EOP'
13609int main() { printf("%d\n", bar1()); exit(0); }
13610EOP
13611$cc $ccflags -c bar1.c >/dev/null 2>&1
13612$cc $ccflags -c bar2.c >/dev/null 2>&1
13613$cc $ccflags -c foo.c >/dev/null 2>&1
13614$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 13615if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
13616 ./foobar >/dev/null 2>&1; then
13617 echo "$ar appears to generate random libraries itself."
13618 orderlib=false
13619 ranlib=":"
13620elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 13621 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
13622 ./foobar >/dev/null 2>&1; then
13623 echo "a table of contents needs to be added with '$ar ts'."
13624 orderlib=false
13625 ranlib="$ar ts"
13626else
13627 case "$ranlib" in
13628 :) ranlib='';;
13629 '')
13630 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13631 $test -f $ranlib || ranlib=''
13632 ;;
13633 esac
13634 if $test -n "$ranlib"; then
13635 echo "your system has '$ranlib'; we'll use that."
13636 orderlib=false
13637 else
13638 echo "your system doesn't seem to support random libraries"
13639 echo "so we'll use lorder and tsort to order the libraries."
13640 orderlib=true
13641 ranlib=":"
13642 fi
13643fi
13644$rm -f foo* bar*
13645
13646: check for type of arguments to select.
13647case "$selecttype" in
13648'') case "$d_select" in
13649 $define)
13650 echo " "
13651 $cat <<EOM
13652Checking to see what type of arguments are accepted by select().
13653EOM
13654 hdrs="$define sys/types.h
13655 $i_systime sys/time.h
13656 $i_sysselct sys/select.h
13657 $d_socket sys/socket.h"
13658 : The first arg can be int, unsigned, or size_t
13659 : The last arg may or may not be 'const'
13660 val=''
13661 : void pointer has been seen but using that
13662 : breaks the selectminbits test
13663 for xxx in 'fd_set *' 'int *'; do
13664 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13665 for tmo in 'struct timeval *' 'const struct timeval *'; do
13666 case "$val" in
13667 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13668 if ./protochk "$try" $hdrs; then
13669 echo "Your system accepts $xxx."
13670 val="$xxx"
13671 fi
13672 ;;
13673 esac
13674 done
13675 done
13676 done
13677 case "$val" in
13678 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13679 case "$d_fd_set" in
13680 $define) dflt="fd_set *" ;;
13681 *) dflt="int *" ;;
13682 esac
13683 . ./myread
13684 val=$ans
13685 ;;
13686 esac
13687 selecttype="$val"
13688 ;;
13689 *) : no select, so pick a harmless default
13690 selecttype='int *'
13691 ;;
13692 esac
13693 ;;
13694esac
13695
13696: check for the select 'width'
13697case "$selectminbits" in
13698'') case "$d_select" in
13699 $define)
13700 $cat <<EOM
13701
13702Checking to see on how many bits at a time your select() operates...
13703EOM
13704 $cat >try.c <<EOCP
13705#include <sys/types.h>
13706#$i_time I_TIME
13707#$i_systime I_SYS_TIME
13708#$i_systimek I_SYS_TIME_KERNEL
13709#ifdef I_TIME
13710# include <time.h>
13711#endif
13712#ifdef I_SYS_TIME
13713# ifdef I_SYS_TIME_KERNEL
13714# define KERNEL
13715# endif
13716# include <sys/time.h>
13717# ifdef I_SYS_TIME_KERNEL
13718# undef KERNEL
13719# endif
13720#endif
13721#$i_sysselct I_SYS_SELECT
13722#ifdef I_SYS_SELECT
13723#include <sys/select.h>
13724#endif
13725#$d_socket HAS_SOCKET
13726#ifdef HAS_SOCKET
13727# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13728#endif
13729#include <stdio.h>
13730$selecttype b;
13731#define S sizeof(*(b))
13732#define MINBITS 64
13733#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13734#define NBITS (NBYTES * 8)
13735int main() {
13736 char s[NBYTES];
13737 struct timeval t;
13738 int i;
13739 FILE* fp;
13740 int fd;
13741
13742 fclose(stdin);
13743 fp = fopen("try.c", "r");
13744 if (fp == 0)
13745 exit(1);
13746 fd = fileno(fp);
13747 if (fd < 0)
13748 exit(2);
13749 b = ($selecttype)s;
13750 for (i = 0; i < NBITS; i++)
13751 FD_SET(i, b);
13752 t.tv_sec = 0;
13753 t.tv_usec = 0;
13754 select(fd + 1, b, 0, 0, &t);
13755 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13756 printf("%d\n", i + 1);
13757 return 0;
13758}
13759EOCP
13760 set try
13761 if eval $compile_ok; then
13762 selectminbits=`./try`
13763 case "$selectminbits" in
13764 '') cat >&4 <<EOM
13765Cannot figure out on how many bits at a time your select() operates.
13766I'll play safe and guess it is 32 bits.
13767EOM
13768 selectminbits=32
13769 bits="32 bits"
13770 ;;
13771 1) bits="1 bit" ;;
13772 *) bits="$selectminbits bits" ;;
13773 esac
13774 echo "Your select() operates on $bits at a time." >&4
13775 else
13776 rp='What is the minimum number of bits your select() operates on?'
13777 case "$byteorder" in
13778 1234|12345678) dflt=32 ;;
13779 *) dflt=1 ;;
13780 esac
13781 . ./myread
13782 val=$ans
13783 selectminbits="$val"
13784 fi
13785 $rm -f try.* try
13786 ;;
13787 *) : no select, so pick a harmless default
13788 selectminbits='32'
13789 ;;
13790 esac
13791 ;;
13792esac
13793
13794: Trace out the files included by signal.h, then look for SIGxxx names.
13795: Remove SIGARRAYSIZE used by HPUX.
13796: Remove SIGSTKSIZE used by Linux.
13797: Remove SIGSTKSZ used by Posix.
13798: Remove SIGTYP void lines used by OS2.
13799: Some cpps, like os390, dont give the file name anywhere
13800if [ "X$fieldn" = X ]; then
13801 : Just make some guesses. We check them later.
13802 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13803else
13804 xxx=`echo '#include <signal.h>' |
13805 $cppstdin $cppminus $cppflags 2>/dev/null |
13806 $grep '^[ ]*#.*include' |
13807 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13808fi
13809: Check this list of files to be sure we have parsed the cpp output ok.
13810: This will also avoid potentially non-existent files, such
13811: as ../foo/bar.h
13812xxxfiles=''
13813for xx in $xxx /dev/null ; do
13814 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13815done
13816: If we have found no files, at least try signal.h
13817case "$xxxfiles" in
13818'') xxxfiles=`./findhdr signal.h` ;;
13819esac
13820xxx=`awk '
13821$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13822 print substr($2, 4, 20)
13823}
13824$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13825 print substr($3, 4, 20)
13826}' $xxxfiles`
13827: Append some common names just in case the awk scan failed.
13828xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13829xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13830xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13831xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13832xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13833
13834: generate a few handy files for later
13835$cat > signal.c <<'EOCP'
13836#include <sys/types.h>
13837#include <signal.h>
13838#include <stdio.h>
13839int main() {
13840
13841/* Strange style to avoid deeply-nested #if/#else/#endif */
13842#ifndef NSIG
13843# ifdef _NSIG
13844# define NSIG (_NSIG)
13845# endif
13846#endif
13847
13848#ifndef NSIG
13849# ifdef SIGMAX
13850# define NSIG (SIGMAX+1)
13851# endif
13852#endif
13853
13854#ifndef NSIG
13855# ifdef SIG_MAX
13856# define NSIG (SIG_MAX+1)
13857# endif
13858#endif
13859
13860#ifndef NSIG
13861# ifdef MAXSIG
13862# define NSIG (MAXSIG+1)
13863# endif
13864#endif
13865
13866#ifndef NSIG
13867# ifdef MAX_SIG
13868# define NSIG (MAX_SIG+1)
13869# endif
13870#endif
13871
13872#ifndef NSIG
13873# ifdef SIGARRAYSIZE
13874# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13875# endif
13876#endif
13877
13878#ifndef NSIG
13879# ifdef _sys_nsig
13880# define NSIG (_sys_nsig) /* Solaris 2.5 */
13881# endif
13882#endif
13883
13884/* Default to some arbitrary number that's big enough to get most
13885 of the common signals.
13886*/
13887#ifndef NSIG
13888# define NSIG 50
13889#endif
13890
13891printf("NSIG %d\n", NSIG);
13892
13893#ifndef JUST_NSIG
13894
13895EOCP
13896
13897echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13898{
13899 printf "#ifdef SIG"; printf $1; printf "\n"
13900 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13901 printf $1; printf ");\n"
13902 printf "#endif\n"
13903}
13904END {
13905 printf "#endif /* JUST_NSIG */\n";
13906 printf "exit(0);\n}\n";
13907}
13908' >>signal.c
13909$cat >signal.awk <<'EOP'
13910BEGIN { ndups = 0 }
13911$1 ~ /^NSIG$/ { nsig = $2 }
13912($1 !~ /^NSIG$/) && (NF == 2) {
13913 if ($2 > maxsig) { maxsig = $2 }
13914 if (sig_name[$2]) {
13915 dup_name[ndups] = $1
13916 dup_num[ndups] = $2
13917 ndups++
13918 }
13919 else {
13920 sig_name[$2] = $1
13921 sig_num[$2] = $2
13922 }
13923}
13924END {
13925 if (nsig == 0) {
13926 nsig = maxsig + 1
13927 }
13928 printf("NSIG %d\n", nsig);
13929 for (n = 1; n < nsig; n++) {
13930 if (sig_name[n]) {
13931 printf("%s %d\n", sig_name[n], sig_num[n])
13932 }
13933 else {
13934 printf("NUM%d %d\n", n, n)
13935 }
13936 }
13937 for (n = 0; n < ndups; n++) {
13938 printf("%s %d\n", dup_name[n], dup_num[n])
13939 }
13940}
13941EOP
13942$cat >signal_cmd <<EOS
13943$startsh
13944if $test -s signal.lst; then
13945 echo "Using your existing signal.lst file"
13946 exit 0
13947fi
13948xxx="$xxx"
13949EOS
13950$cat >>signal_cmd <<'EOS'
13951
13952set signal
13953if eval $compile_ok; then
13954 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13955else
13956 echo "(I can't seem be able to compile the whole test program)" >&4
13957 echo "(I'll try it in little pieces.)" >&4
13958 set signal -DJUST_NSIG
13959 if eval $compile_ok; then
13960 ./signal$_exe > signal.nsg
13961 $cat signal.nsg
13962 else
13963 echo "I can't seem to figure out how many signals you have." >&4
13964 echo "Guessing 50." >&4
13965 echo 'NSIG 50' > signal.nsg
13966 fi
13967 : Now look at all the signal names, one at a time.
13968 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13969 $cat > signal.c <<EOCP
13970#include <sys/types.h>
13971#include <signal.h>
13972#include <stdio.h>
13973int main() {
13974printf("$xx %d\n", SIG${xx});
13975return 0;
13976}
13977EOCP
13978 set signal
13979 if eval $compile; then
13980 echo "SIG${xx} found."
13981 ./signal$_exe >> signal.ls1
13982 else
13983 echo "SIG${xx} NOT found."
13984 fi
13985 done
13986 if $test -s signal.ls1; then
13987 $cat signal.nsg signal.ls1 |
13988 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13989 fi
13990
13991fi
13992if $test -s signal.lst; then
13993 :
13994else
13995 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13996 echo 'kill -l' >signal
13997 set X `csh -f <signal`
13998 $rm -f signal
13999 shift
14000 case $# in
14001 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14002 esac
14003 echo $@ | $tr ' ' $trnl | \
14004 $awk '{ printf "%s %d\n", $1, ++s; }
14005 END { printf "NSIG %d\n", ++s }' >signal.lst
14006fi
14007$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14008EOS
14009chmod a+x signal_cmd
14010$eunicefix signal_cmd
14011
14012: generate list of signal names
14013echo " "
14014case "$sig_name_init" in
14015'') doinit=yes ;;
14016*) case "$sig_num_init" in
14017 ''|*,*) doinit=yes ;;
14018 esac ;;
14019esac
14020case "$doinit" in
14021yes)
14022 echo "Generating a list of signal names and numbers..." >&4
14023 . ./signal_cmd
14024 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14025 sig_name=`$awk 'BEGIN { printf "ZERO " }
14026 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14027 sig_num=`$awk 'BEGIN { printf "0 " }
14028 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14029 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14030 !/^NSIG/ { printf "\"%s\", ", $1 }
14031 END { printf "0\n" }' signal.lst`
14032 sig_num_init=`$awk 'BEGIN { printf "0, " }
14033 !/^NSIG/ { printf "%d, ", $2}
14034 END { printf "0\n"}' signal.lst`
14035 ;;
14036esac
14037echo "The following $sig_count signals are available:"
14038echo " "
14039echo $sig_name | $awk \
14040'BEGIN { linelen = 0 }
14041{
14042 for (i = 1; i <= NF; i++) {
14043 name = "SIG" $i " "
14044 linelen = linelen + length(name)
14045 if (linelen > 70) {
14046 printf "\n"
14047 linelen = length(name)
14048 }
14049 printf "%s", name
14050 }
14051 printf "\n"
14052}'
14053$rm -f signal signal.c signal.awk signal.lst signal_cmd
14054
14055echo " "
14056case "$sizetype" in
14057*_t) zzz="$sizetype" ;;
14058*) zzz="filesize" ;;
14059esac
14060echo "Checking the size of $zzz..." >&4
14061cat > try.c <<EOCP
14062#include <sys/types.h>
14063#include <stdio.h>
14064int main() {
14065 printf("%d\n", (int)sizeof($sizetype));
14066 exit(0);
14067}
14068EOCP
14069set try
14070if eval $compile_ok; then
14071 yyy=`./try`
14072 case "$yyy" in
14073 '') sizesize=4
14074 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14075 ;;
14076 *) sizesize=$yyy
14077 echo "Your $zzz size is $sizesize bytes."
14078 ;;
14079 esac
14080else
14081 sizesize=4
14082 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14083fi
14084
14085
14086: check for socklen_t
14087echo " "
14088echo "Checking to see if you have socklen_t..." >&4
14089$cat >try.c <<EOCP
14090#include <sys/types.h>
14091#$d_socket HAS_SOCKET
14092#ifdef HAS_SOCKET
14093#include <sys/socket.h>
14094#endif
14095int main() { socklen_t x = 16; }
14096EOCP
14097set try
14098if eval $compile; then
14099 val="$define"
14100 echo "You have socklen_t."
14101else
14102 val="$undef"
14103 echo "You do not have socklen_t."
14104 case "$sizetype" in
14105 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14106 esac
14107fi
14108$rm -f try try.*
14109set d_socklen_t
14110eval $setvar
14111
14112: check for type of the size argument to socket calls
14113case "$d_socket" in
14114"$define")
14115 $cat <<EOM
14116
14117Checking to see what type is the last argument of accept().
14118EOM
14119 hdrs="$define sys/types.h $d_socket sys/socket.h"
14120 yyy=''
14121 case "$d_socklen_t" in
14122 "$define") yyy="$yyy socklen_t"
14123 esac
14124 yyy="$yyy $sizetype int long unsigned"
14125 for xxx in $yyy; do
14126 case "$socksizetype" in
14127 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14128 if ./protochk "$try" $hdrs; then
14129 echo "Your system accepts '$xxx *' for the last argument of accept()."
14130 socksizetype="$xxx"
14131 fi
14132 ;;
14133 esac
14134 done
14135: In case none of those worked, prompt the user.
14136 case "$socksizetype" in
14137 '') rp='What is the type for socket address structure sizes?'
14138 dflt='int'
14139 . ./myread
14140 socksizetype=$ans
14141 ;;
14142 esac
14143 ;;
14144*) : no sockets, so pick relatively harmless default
14145 socksizetype='int'
14146 ;;
14147esac
14148
14149: see what type is used for signed size_t
14150set ssize_t ssizetype int stdio.h sys/types.h
14151eval $typedef
14152dflt="$ssizetype"
14153$cat > ssize.c <<EOM
14154#include <stdio.h>
14155#include <sys/types.h>
14156#define Size_t $sizetype
14157#define SSize_t $dflt
14158int main()
14159{
14160 if (sizeof(Size_t) == sizeof(SSize_t))
14161 printf("$dflt\n");
14162 else if (sizeof(Size_t) == sizeof(int))
14163 printf("int\n");
14164 else
14165 printf("long\n");
14166 exit(0);
14167}
14168EOM
14169echo " "
14170set ssize
14171if eval $compile_ok && ./ssize > /dev/null; then
14172 ssizetype=`./ssize`
14173 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14174else
14175 $cat >&4 <<EOM
14176Help! I can't compile and run the ssize_t test program: please enlighten me!
14177(This is probably a misconfiguration in your system or libraries, and
14178you really ought to fix it. Still, I'll try anyway.)
14179
14180I need a type that is the same size as $sizetype, but is guaranteed to
14181be signed. Common values are ssize_t, int and long.
14182
14183EOM
14184 rp="What signed type is the same size as $sizetype?"
14185 . ./myread
14186 ssizetype="$ans"
14187fi
14188$rm -f ssize ssize.*
14189
14190: see what type of char stdio uses.
14191echo " "
14192if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14193 echo "Your stdio uses unsigned chars." >&4
14194 stdchar="unsigned char"
14195else
14196 echo "Your stdio uses signed chars." >&4
14197 stdchar="char"
14198fi
14199
14200: see if time exists
14201echo " "
14202if test "X$d_time" = X -o X"$timetype" = X; then
14203 if set time val -f d_time; eval $csym; $val; then
14204 echo 'time() found.' >&4
14205 val="$define"
14206 rp="What is the type returned by time() on this system?"
14207 set time_t timetype long stdio.h sys/types.h
14208 eval $typedef_ask
14209 else
14210 echo 'time() not found, hope that will do.' >&4
14211 val="$undef"
14212 timetype='int';
14213 fi
14214 set d_time
14215 eval $setvar
14216fi
14217
14218: see what type uids are declared as in the kernel
14219echo " "
14220echo "Looking for the type for user ids returned by getuid()."
14221set uid_t uidtype xxx stdio.h sys/types.h
14222eval $typedef
14223case "$uidtype" in
14224xxx)
14225 xxx=`./findhdr sys/user.h`
14226 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14227 case $1 in
14228 unsigned) dflt="$1 $2" ;;
14229 *) dflt="$1" ;;
14230 esac
14231 ;;
14232*) dflt="$uidtype";;
14233esac
14234case "$uidtype" in
14235uid_t) echo "uid_t found." ;;
14236*) rp="What is the type for user ids returned by getuid()?"
14237 . ./myread
14238 uidtype="$ans"
14239 ;;
14240esac
14241
14242echo " "
14243case "$uidtype" in
14244*_t) zzz="$uidtype" ;;
14245*) zzz="uid" ;;
14246esac
14247echo "Checking the size of $zzz..." >&4
14248cat > try.c <<EOCP
14249#include <sys/types.h>
14250#include <stdio.h>
14251int main() {
14252 printf("%d\n", (int)sizeof($uidtype));
14253 exit(0);
14254}
14255EOCP
14256set try
14257if eval $compile_ok; then
14258 yyy=`./try`
14259 case "$yyy" in
14260 '') uidsize=4
14261 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14262 ;;
14263 *) uidsize=$yyy
14264 echo "Your $zzz is $uidsize bytes long."
14265 ;;
14266 esac
14267else
14268 uidsize=4
14269 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14270fi
14271
14272echo " "
14273case "$uidtype" in
14274*_t) zzz="$uidtype" ;;
14275*) zzz="uid" ;;
14276esac
14277echo "Checking the sign of $zzz..." >&4
14278cat > try.c <<EOCP
14279#include <sys/types.h>
14280#include <stdio.h>
14281int main() {
14282 $uidtype foo = -1;
14283 if (foo < 0)
14284 printf("-1\n");
14285 else
14286 printf("1\n");
14287}
14288EOCP
14289set try
14290if eval $compile; then
14291 yyy=`./try`
14292 case "$yyy" in
14293 '') uidsign=1
14294 echo "(I can't execute the test program--guessing unsigned.)" >&4
14295 ;;
14296 *) uidsign=$yyy
14297 case "$uidsign" in
14298 1) echo "Your $zzz is unsigned." ;;
14299 -1) echo "Your $zzz is signed." ;;
14300 esac
14301 ;;
14302 esac
14303else
14304 uidsign=1
14305 echo "(I can't compile the test program--guessing unsigned.)" >&4
14306fi
14307
14308
14309
14310echo " "
14311$echo "Checking the format string to be used for uids..." >&4
14312
14313case "$uidsign" in
14314-1) if $test X"$uidsize" = X"$ivsize"; then
14315 uidformat="$ivdformat"
14316 else
14317 if $test X"$uidsize" = X"$longsize"; then
14318 uidformat='"ld"'
14319 else
14320 if $test X"$uidsize" = X"$intsize"; then
14321 uidformat='"d"'
14322 else
14323 if $test X"$uidsize" = X"$shortsize"; then
14324 uidformat='"hd"'
14325 fi
14326 fi
14327 fi
14328 fi
14329 ;;
14330*) if $test X"$uidsize" = X"$uvsize"; then
14331 uidformat="$uvuformat"
14332 else
14333 if $test X"$uidsize" = X"$longsize"; then
14334 uidformat='"lu"'
14335 else
14336 if $test X"$uidsize" = X"$intsize"; then
14337 uidformat='"u"'
14338 else
14339 if $test X"$uidsize" = X"$shortsize"; then
14340 uidformat='"hu"'
14341 fi
14342 fi
14343 fi
14344 fi
14345 ;;
14346esac
14347
14348: see if dbm.h is available
14349: see if dbmclose exists
14350set dbmclose d_dbmclose
14351eval $inlibc
14352
14353case "$d_dbmclose" in
14354$define)
14355 set dbm.h i_dbm
14356 eval $inhdr
14357 case "$i_dbm" in
14358 $define)
14359 val="$undef"
14360 set i_rpcsvcdbm
14361 eval $setvar
14362 ;;
14363 *) set rpcsvc/dbm.h i_rpcsvcdbm
14364 eval $inhdr
14365 ;;
14366 esac
14367 ;;
14368*) echo "We won't be including <dbm.h>"
14369 val="$undef"
14370 set i_dbm
14371 eval $setvar
14372 val="$undef"
14373 set i_rpcsvcdbm
14374 eval $setvar
14375 ;;
14376esac
14377
14378: see if this is a sys/file.h system
14379val=''
14380set sys/file.h val
14381eval $inhdr
14382
14383: do we need to include sys/file.h ?
14384case "$val" in
14385"$define")
14386 echo " "
14387 if $h_sysfile; then
14388 val="$define"
14389 echo "We'll be including <sys/file.h>." >&4
14390 else
14391 val="$undef"
14392 echo "We won't be including <sys/file.h>." >&4
14393 fi
14394 ;;
14395*)
14396 h_sysfile=false
14397 ;;
14398esac
14399set i_sysfile
14400eval $setvar
14401
14402: see if fcntl.h is there
14403val=''
14404set fcntl.h val
14405eval $inhdr
14406
14407: see if we can include fcntl.h
14408case "$val" in
14409"$define")
14410 echo " "
14411 if $h_fcntl; then
14412 val="$define"
14413 echo "We'll be including <fcntl.h>." >&4
14414 else
14415 val="$undef"
14416 if $h_sysfile; then
14417 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14418 else
14419 echo "We won't be including <fcntl.h>." >&4
14420 fi
14421 fi
14422 ;;
14423*)
14424 h_fcntl=false
14425 val="$undef"
14426 ;;
14427esac
14428set i_fcntl
14429eval $setvar
14430
14431: see if this is a iconv.h system
14432set iconv.h i_iconv
14433eval $inhdr
14434
14435: see if this is a ieeefp.h system
14436set ieeefp.h i_ieeefp
14437eval $inhdr
14438
14439: see if this is a libutil.h system
14440set libutil.h i_libutil
14441eval $inhdr
14442
14443: see if locale.h is available
14444set locale.h i_locale
14445eval $inhdr
14446
14447: see if mach cthreads are available
14448if test "X$usethreads" = "X$define"; then
14449 set mach/cthreads.h i_machcthr
14450 eval $inhdr
14451else
14452 i_machcthr="$undef"
14453fi
14454
14455
14456
14457: see if this is a math.h system
14458set math.h i_math
14459eval $inhdr
14460
14461: see if this is a mntent.h system
14462set mntent.h i_mntent
14463eval $inhdr
14464
14465: see if ndbm.h is available
14466set ndbm.h t_ndbm
14467eval $inhdr
14468case "$t_ndbm" in
14469$define)
14470 : see if dbm_open exists
14471 set dbm_open d_dbm_open
14472 eval $inlibc
14473 case "$d_dbm_open" in
14474 $undef)
14475 t_ndbm="$undef"
14476 echo "We won't be including <ndbm.h>"
14477 ;;
14478 esac
14479 ;;
14480esac
14481val="$t_ndbm"
14482set i_ndbm
14483eval $setvar
14484
14485: see if net/errno.h is available
14486val=''
14487set net/errno.h val
14488eval $inhdr
14489
14490: Unfortunately, it causes problems on some systems. Arrgh.
14491case "$val" in
14492$define)
14493 cat > try.c <<'EOM'
14494#include <stdio.h>
14495#include <errno.h>
14496#include <net/errno.h>
14497int func()
14498{
14499 return ENOTSOCK;
14500}
14501EOM
14502 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14503 echo "We'll be including <net/errno.h>." >&4
14504 else
14505 echo "We won't be including <net/errno.h>." >&4
14506 val="$undef"
14507 fi
14508 $rm -f try.* try
14509 ;;
14510esac
14511set i_neterrno
14512eval $setvar
14513
14514: see if netinet/tcp.h is available
14515set netinet/tcp.h i_netinettcp
14516eval $inhdr
14517
14518: see if this is a poll.h system
14519set poll.h i_poll
14520eval $inhdr
14521
14522: see if this is a prot.h system
14523set prot.h i_prot
14524eval $inhdr
14525
14526echo " "
14527$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14528$cat <<'EOSH' > Cppsym.know
14529a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14530AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14531alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14532ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14533BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14534BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14535bull c cadmus clipper CMU COFF COMPILER_VERSION
14536concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14537CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14538Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14539FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14540GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14541H3050R H3050RX hbullx20 hcx host_mips
14542hp200 hp300 hp700 HP700 hp800 hp9000
14543hp9000s200 hp9000s300 hp9000s400 hp9000s500
14544hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14545i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14546iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14547INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14548LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14549LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14550Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14551LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14552M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14553M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14554M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14555MATH_HAS_NO_SIDE_EFFECTS
14556mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14557mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14558mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14559MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14560mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14561NetBSD news1500 news1700 news1800 news1900 news3700
48bcfe03 14562news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
b4eb6b3d
JH
14563ns32016 ns32332 ns32k nsc32000
14564OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14565pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14566pc532 pdp11 PGC PIC plexus PORTAR posix
14567POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14568POSIX_C_SOURCE POSIX_SOURCE POWER
14569PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14570riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14571SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14572sony sony_news sonyrisc sparc sparclite spectrum
14573stardent stdc STDC_EXT stratos sun sun3 sun386
14574Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14575SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14576SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14577sysV68 sysV88 Tek4132 Tek4300 titan
14578tower tower32 tower32_200 tower32_600 tower32_700
14579tower32_800 tower32_850 tss
14580u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14581ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14582unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14583Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14584XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14585XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14586z8000
14587EOSH
14588# Maybe put other stuff here too.
14589cat <<EOSH >>Cppsym.know
14590$osname
14591EOSH
14592./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14593./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14594$cat Cppsym.know > Cppsym.c
381aa1ff 14595$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
b4eb6b3d
JH
14596$rm -f Cppsym.a Cppsym.b Cppsym.c
14597cat <<EOSH > Cppsym
14598$startsh
14599if $test \$# -gt 0; then
14600 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14601 if $test -s Cppsym.got; then
14602 $rm -f Cppsym.got
14603 exit 0
14604 fi
14605 $rm -f Cppsym.got
14606 exit 1
14607else
14608 $tr " " "$trnl" | ./Cppsym.try
14609 exit 0
14610fi
14611EOSH
14612chmod +x Cppsym
14613$eunicefix Cppsym
14614cat <<EOSH > Cppsym.try
14615$startsh
14616cat <<'EOCP' > try.c
14617#include <stdio.h>
14618int main() {
14619EOCP
14620$awk \\
14621EOSH
14622cat <<'EOSH' >> Cppsym.try
14623'length($1) > 0 {
14624 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14625 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14626 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14627 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14628}' >> try.c
14629echo '}' >> try.c
14630EOSH
14631cat <<EOSH >> Cppsym.try
14632ccflags="$ccflags"
14633case "$osname-$gccversion" in
14634irix-) ccflags="\$ccflags -woff 1178" ;;
14635os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14636esac
7a282f6d 14637$cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
b4eb6b3d
JH
14638EOSH
14639chmod +x Cppsym.try
14640$eunicefix Cppsym.try
14641./Cppsym < Cppsym.know > Cppsym.true
14642: now check the C compiler for additional symbols
14643postprocess_cc_v=''
14644case "$osname" in
14645aix) postprocess_cc_v="|$tr , ' '" ;;
14646esac
14647$cat >ccsym <<EOS
14648$startsh
14649$cat >tmp.c <<EOF
14650extern int foo;
14651EOF
14652for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14653do
14654 case "\$i" in
14655 -D*) echo "\$i" | $sed 's/^-D//';;
14656 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14657 esac
14658done
14659$rm -f try.c
14660EOS
14661postprocess_cc_v=''
14662chmod +x ccsym
14663$eunicefix ccsym
14664./ccsym > ccsym1.raw
14665if $test -s ccsym1.raw; then
14666 $sort ccsym1.raw | $uniq >ccsym.raw
14667else
14668 mv ccsym1.raw ccsym.raw
14669fi
14670
14671$awk '/\=/ { print $0; next }
14672 { print $0"=1" }' ccsym.raw >ccsym.list
14673$awk '/\=/ { print $0; next }
14674 { print $0"=1" }' Cppsym.true >ccsym.true
14675$comm -13 ccsym.true ccsym.list >ccsym.own
14676$comm -12 ccsym.true ccsym.list >ccsym.com
14677$comm -23 ccsym.true ccsym.list >ccsym.cpp
14678also=''
14679if $test -z ccsym.raw; then
14680 echo "Your C compiler doesn't seem to define any symbols!" >&4
14681 echo " "
14682 echo "However, your C preprocessor defines the following symbols:"
14683 $cat Cppsym.true
14684 ccsymbols=''
14685 cppsymbols=`$cat Cppsym.true`
14686 cppsymbols=`echo $cppsymbols`
14687 cppccsymbols="$cppsymbols"
14688else
14689 if $test -s ccsym.com; then
14690 echo "Your C compiler and pre-processor define these symbols:"
14691 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14692 also='also '
14693 symbols='ones'
14694 cppccsymbols=`$cat ccsym.com`
14695 cppccsymbols=`echo $cppccsymbols`
14696 $test "$silent" || sleep 1
14697 fi
14698 if $test -s ccsym.cpp; then
14699 $test "$also" && echo " "
14700 echo "Your C pre-processor ${also}defines the following symbols:"
14701 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14702 also='further '
14703 cppsymbols=`$cat ccsym.cpp`
14704 cppsymbols=`echo $cppsymbols`
14705 $test "$silent" || sleep 1
14706 fi
14707 if $test -s ccsym.own; then
14708 $test "$also" && echo " "
14709 echo "Your C compiler ${also}defines the following cpp symbols:"
14710 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14711 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14712 ccsymbols=`$cat ccsym.own`
14713 ccsymbols=`echo $ccsymbols`
14714 $test "$silent" || sleep 1
14715 fi
14716fi
14717$rm -f ccsym* Cppsym.*
14718
14719: see if this is a termio system
14720val="$undef"
14721val2="$undef"
14722val3="$undef"
14723if $test `./findhdr termios.h`; then
14724 set tcsetattr i_termios
14725 eval $inlibc
14726 val3="$i_termios"
14727fi
14728echo " "
14729case "$val3" in
14730"$define") echo "You have POSIX termios.h... good!" >&4;;
14731*) if ./Cppsym pyr; then
14732 case "`/bin/universe`" in
14733 ucb) if $test `./findhdr sgtty.h`; then
14734 val2="$define"
14735 echo "<sgtty.h> found." >&4
14736 else
14737 echo "System is pyramid with BSD universe."
14738 echo "<sgtty.h> not found--you could have problems." >&4
14739 fi;;
14740 *) if $test `./findhdr termio.h`; then
14741 val="$define"
14742 echo "<termio.h> found." >&4
14743 else
14744 echo "System is pyramid with USG universe."
14745 echo "<termio.h> not found--you could have problems." >&4
14746 fi;;
14747 esac
14748 elif ./usg; then
14749 if $test `./findhdr termio.h`; then
14750 echo "<termio.h> found." >&4
14751 val="$define"
14752 elif $test `./findhdr sgtty.h`; then
14753 echo "<sgtty.h> found." >&4
14754 val2="$define"
14755 else
14756echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14757 fi
14758 else
14759 if $test `./findhdr sgtty.h`; then
14760 echo "<sgtty.h> found." >&4
14761 val2="$define"
14762 elif $test `./findhdr termio.h`; then
14763 echo "<termio.h> found." >&4
14764 val="$define"
14765 else
14766echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14767 fi
14768 fi;;
14769esac
14770set i_termio; eval $setvar
14771val=$val2; set i_sgtty; eval $setvar
14772val=$val3; set i_termios; eval $setvar
14773
14774: see if this is a shadow.h system
14775set shadow.h i_shadow
14776eval $inhdr
14777
14778: see if this is a socks.h system
14779set socks.h i_socks
14780eval $inhdr
14781
14782: see if stdarg is available
14783echo " "
14784if $test `./findhdr stdarg.h`; then
14785 echo "<stdarg.h> found." >&4
14786 valstd="$define"
14787else
14788 echo "<stdarg.h> NOT found." >&4
14789 valstd="$undef"
14790fi
14791
14792: see if varags is available
14793echo " "
14794if $test `./findhdr varargs.h`; then
14795 echo "<varargs.h> found." >&4
14796else
14797 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14798fi
14799
14800: set up the varargs testing programs
14801$cat > varargs.c <<EOP
14802#ifdef I_STDARG
14803#include <stdarg.h>
14804#endif
14805#ifdef I_VARARGS
14806#include <varargs.h>
14807#endif
14808
14809#ifdef I_STDARG
14810int f(char *p, ...)
14811#else
14812int f(va_alist)
14813va_dcl
14814#endif
14815{
14816 va_list ap;
14817#ifndef I_STDARG
14818 char *p;
14819#endif
14820#ifdef I_STDARG
14821 va_start(ap,p);
14822#else
14823 va_start(ap);
14824 p = va_arg(ap, char *);
14825#endif
14826 va_end(ap);
14827}
14828EOP
14829$cat > varargs <<EOP
14830$startsh
14831if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14832 echo "true"
14833else
14834 echo "false"
14835fi
14836$rm -f varargs$_o
14837EOP
14838chmod +x varargs
14839
14840: now check which varargs header should be included
14841echo " "
14842i_varhdr=''
14843case "$valstd" in
14844"$define")
14845 if `./varargs I_STDARG`; then
14846 val='stdarg.h'
14847 elif `./varargs I_VARARGS`; then
14848 val='varargs.h'
14849 fi
14850 ;;
14851*)
14852 if `./varargs I_VARARGS`; then
14853 val='varargs.h'
14854 fi
14855 ;;
14856esac
14857case "$val" in
14858'')
14859echo "I could not find the definition for va_dcl... You have problems..." >&4
14860 val="$undef"; set i_stdarg; eval $setvar
14861 val="$undef"; set i_varargs; eval $setvar
14862 ;;
14863*)
14864 set i_varhdr
14865 eval $setvar
14866 case "$i_varhdr" in
14867 stdarg.h)
14868 val="$define"; set i_stdarg; eval $setvar
14869 val="$undef"; set i_varargs; eval $setvar
14870 ;;
14871 varargs.h)
14872 val="$undef"; set i_stdarg; eval $setvar
14873 val="$define"; set i_varargs; eval $setvar
14874 ;;
14875 esac
14876 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14877esac
14878$rm -f varargs*
5f80c64f 14879
b4eb6b3d
JH
14880: see if stddef is available
14881set stddef.h i_stddef
14882eval $inhdr
923fc586 14883
b4eb6b3d
JH
14884: see if this is a sunmath.h system
14885set sunmath.h i_sunmath
14886eval $inhdr
5f80c64f 14887
b4eb6b3d
JH
14888: see if sys/access.h is available
14889set sys/access.h i_sysaccess
14890eval $inhdr
14891
14892: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14893set sys/filio.h i_sysfilio
14894eval $inhdr
14895echo " "
14896if $test `./findhdr sys/ioctl.h`; then
14897 val="$define"
14898 echo '<sys/ioctl.h> found.' >&4
14899else
14900 val="$undef"
14901 if $test $i_sysfilio = "$define"; then
14902 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 14903 else
b4eb6b3d
JH
14904 $test $i_sgtty = "$define" && xxx="sgtty.h"
14905 $test $i_termio = "$define" && xxx="termio.h"
14906 $test $i_termios = "$define" && xxx="termios.h"
14907echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14908 fi
14909fi
14910set i_sysioctl
14911eval $setvar
14912
14913
14914: see if this is a syslog.h system
14915set syslog.h i_syslog
14916eval $inhdr
14917
14918
14919: see if this is a sys/mode.h system
14920set sys/mode.h i_sysmode
14921eval $inhdr
14922
14923: see if sys/resource.h has to be included
14924set sys/resource.h i_sysresrc
14925eval $inhdr
14926
14927: see if sys/security.h is available
14928set sys/security.h i_syssecrt
14929eval $inhdr
14930
14931: see if this is a sys/statvfs.h system
14932set sys/statvfs.h i_sysstatvfs
14933eval $inhdr
14934
14935: see if this is a sys/uio.h system
14936set sys/uio.h i_sysuio
14937eval $inhdr
14938
14939: see if this is a sys/un.h system
14940set sys/un.h i_sysun
14941eval $inhdr
14942
14943
14944: see if this is a sys/utsname.h system
14945set sys/utsname.h i_sysutsname
14946eval $inhdr
14947
14948: see if this is a syswait system
14949set sys/wait.h i_syswait
14950eval $inhdr
14951
14952: see if this is a ustat.h system
14953set ustat.h i_ustat
14954eval $inhdr
14955
14956: see if this is an utime system
14957set utime.h i_utime
14958eval $inhdr
14959
14960: see if this is a values.h system
14961set values.h i_values
14962eval $inhdr
14963
14964: see if this is a vfork system
14965case "$d_vfork" in
14966"$define")
14967 set vfork.h i_vfork
14968 eval $inhdr
14969 ;;
14970*)
14971 i_vfork="$undef"
14972 ;;
14973esac
14974
14975: see if gdbm.h is available
14976set gdbm.h t_gdbm
14977eval $inhdr
14978case "$t_gdbm" in
14979$define)
14980 : see if gdbm_open exists
14981 set gdbm_open d_gdbm_open
14982 eval $inlibc
14983 case "$d_gdbm_open" in
14984 $undef)
14985 t_gdbm="$undef"
14986 echo "We won't be including <gdbm.h>"
5f80c64f 14987 ;;
b4eb6b3d
JH
14988 esac
14989 ;;
14990esac
14991val="$t_gdbm"
14992set i_gdbm
14993eval $setvar
14994
14995echo " "
14996echo "Looking for extensions..." >&4
14997: If we are using the old config.sh, known_extensions may contain
14998: old or inaccurate or duplicate values.
14999known_extensions=''
15000nonxs_extensions=''
15001: We do not use find because it might not be available.
15002: We do not just use MANIFEST because the user may have dropped
15003: some additional extensions into the source tree and expect them
15004: to be built.
15005
15006: Function to recursively find available extensions, ignoring DynaLoader
15007: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15008find_extensions='
15009 for xxx in *; do
15010 case "$xxx" in
15011 DynaLoader|dynaload) ;;
15012 *)
15013 if $test -f $xxx/$xxx.xs; then
15014 known_extensions="$known_extensions $1$xxx";
15015 elif $test -f $xxx/Makefile.PL; then
15016 nonxs_extensions="$nonxs_extensions $1$xxx";
15017 else
15018 if $test -d $xxx -a $# -lt 10; then
15019 set $1$xxx/ $*;
15020 cd $xxx;
15021 eval $find_extensions;
15022 cd ..;
15023 shift;
15024 fi;
15025 fi
15026 ;;
15027 esac;
15028 done'
15029tdir=`pwd`
15030cd $rsrc/ext
15031set X
15032shift
15033eval $find_extensions
15034set X $nonxs_extensions
15035shift
15036nonxs_extensions="$*"
15037set X $known_extensions
15038shift
15039known_extensions="$*"
15040cd $tdir
15041
15042: Now see which are supported on this system.
15043avail_ext=''
15044for xxx in $known_extensions ; do
15045 case "$xxx" in
15046 DB_File|db_file)
15047 case "$i_db" in
15048 $define) avail_ext="$avail_ext $xxx" ;;
15049 esac
15050 ;;
15051 GDBM_File|gdbm_fil)
15052 case "$i_gdbm" in
15053 $define) avail_ext="$avail_ext $xxx" ;;
15054 esac
15055 ;;
15056 NDBM_File|ndbm_fil)
15057 case "$i_ndbm" in
15058 $define)
15059 case "$osname-$use64bitint" in
15060 hpux-define)
15061 case "$libs" in
15062 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15063 esac
15064 ;;
15065 *) avail_ext="$avail_ext $xxx" ;;
15066 esac
15067 ;;
15068 esac
15069 ;;
15070 ODBM_File|odbm_fil)
15071 case "${i_dbm}${i_rpcsvcdbm}" in
15072 *"${define}"*)
15073 case "$osname-$use64bitint" in
15074 hpux-define)
15075 case "$libs" in
15076 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15077 esac
15078 ;;
15079 *) avail_ext="$avail_ext $xxx" ;;
15080 esac
15081 ;;
15082 esac
15083 ;;
15084 POSIX|posix)
15085 case "$useposix" in
15086 true|define|y) avail_ext="$avail_ext $xxx" ;;
15087 esac
15088 ;;
15089 Opcode|opcode)
15090 case "$useopcode" in
15091 true|define|y) avail_ext="$avail_ext $xxx" ;;
15092 esac
15093 ;;
15094 Socket|socket)
15095 case "$d_socket" in
15096 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15097 esac
15098 ;;
15099 Sys/Syslog|sys/syslog)
15100 : XXX syslog requires socket
15101 case "$d_socket" in
15102 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15103 esac
15104 ;;
15105 Thread|thread)
15106 case "$usethreads" in
15107 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15108 esac
15109 ;;
15110 IPC/SysV|ipc/sysv)
15111 : XXX Do we need a useipcsysv variable here
15112 case "${d_msg}${d_sem}${d_shm}" in
15113 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15114 esac
15115 ;;
15116 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
15117 ;;
15118 esac
b4eb6b3d 15119done
5f80c64f 15120
b4eb6b3d
JH
15121set X $avail_ext
15122shift
15123avail_ext="$*"
5f80c64f 15124
b4eb6b3d
JH
15125: Now see which nonxs extensions are supported on this system.
15126: For now assume all are.
15127nonxs_ext=''
15128for xxx in $nonxs_extensions ; do
15129 case "$xxx" in
15130 *) nonxs_ext="$nonxs_ext $xxx"
15131 ;;
15132 esac
15133done
5f80c64f 15134
b4eb6b3d
JH
15135set X $nonxs_ext
15136shift
15137nonxs_ext="$*"
15138
15139case $usedl in
15140$define)
15141 $cat <<EOM
15142A number of extensions are supplied with $package. You may choose to
15143compile these extensions for dynamic loading (the default), compile
15144them into the $package executable (static loading), or not include
15145them at all. Answer "none" to include no extensions.
15146Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
15147
15148EOM
b4eb6b3d
JH
15149 case "$dynamic_ext" in
15150 '') dflt="$avail_ext" ;;
15151 *) dflt="$dynamic_ext"
15152 # Perhaps we are reusing an old out-of-date config.sh.
15153 case "$hint" in
15154 previous)
15155 if test X"$dynamic_ext" != X"$avail_ext"; then
15156 $cat <<EOM
15157NOTICE: Your previous config.sh list may be incorrect.
15158The extensions now available to you are
15159 ${avail_ext}
15160but the default list from your previous config.sh is
15161 ${dynamic_ext}
9c839522 15162
b4eb6b3d
JH
15163EOM
15164 fi
9c839522
PM
15165 ;;
15166 esac
b4eb6b3d
JH
15167 ;;
15168 esac
5f80c64f 15169 case "$dflt" in
b4eb6b3d
JH
15170 '') dflt=none;;
15171 esac
15172 rp="What extensions do you wish to load dynamically?"
15173 . ./myread
15174 case "$ans" in
15175 none) dynamic_ext=' ' ;;
15176 *) dynamic_ext="$ans" ;;
5f80c64f 15177 esac
5f80c64f 15178
b4eb6b3d
JH
15179 case "$static_ext" in
15180 '')
15181 : Exclude those already listed in dynamic linking
15182 dflt=''
15183 for xxx in $avail_ext; do
15184 case " $dynamic_ext " in
15185 *" $xxx "*) ;;
15186 *) dflt="$dflt $xxx" ;;
15187 esac
15188 done
15189 set X $dflt
15190 shift
15191 dflt="$*"
15192 ;;
15193 *) dflt="$static_ext"
15194 ;;
15195 esac
9c839522 15196
b4eb6b3d
JH
15197 case "$dflt" in
15198 '') dflt=none;;
15199 esac
15200 rp="What extensions do you wish to load statically?"
15201 . ./myread
15202 case "$ans" in
15203 none) static_ext=' ' ;;
15204 *) static_ext="$ans" ;;
15205 esac
15206 ;;
15207*)
15208 $cat <<EOM
15209A number of extensions are supplied with $package. Answer "none"
15210to include no extensions.
15211Note that DynaLoader is always built and need not be mentioned here.
9c839522 15212
b4eb6b3d
JH
15213EOM
15214 case "$static_ext" in
15215 '') dflt="$avail_ext" ;;
15216 *) dflt="$static_ext"
15217 # Perhaps we are reusing an old out-of-date config.sh.
15218 case "$hint" in
15219 previous)
15220 if test X"$static_ext" != X"$avail_ext"; then
15221 $cat <<EOM
15222NOTICE: Your previous config.sh list may be incorrect.
15223The extensions now available to you are
15224 ${avail_ext}
15225but the default list from your previous config.sh is
15226 ${static_ext}
5f80c64f
JH
15227
15228EOM
b4eb6b3d
JH
15229 fi
15230 ;;
15231 esac
15232 ;;
15233 esac
15234 : Exclude those that are not xs extensions
15235 case "$dflt" in
15236 '') dflt=none;;
15237 esac
15238 rp="What extensions do you wish to include?"
15239 . ./myread
15240 case "$ans" in
15241 none) static_ext=' ' ;;
15242 *) static_ext="$ans" ;;
15243 esac
15244 ;;
5f80c64f
JH
15245esac
15246
b4eb6b3d
JH
15247set X $dynamic_ext $static_ext $nonxs_ext
15248shift
15249extensions="$*"
15250
9c839522
PM
15251: Remove libraries needed only for extensions
15252: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
eedaba54
PM
15253: The exception is SunOS 4.x, which needs them.
15254case "${osname}X${osvers}" in
15255sunos*X4*)
15256 perllibs="$libs"
15257 ;;
15258*) case "$usedl" in
15259 $define|true|[yY]*)
15260 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15261 shift
15262 perllibs="$*"
15263 ;;
15264 *) perllibs="$libs"
15265 ;;
15266 esac
15267 ;;
9c839522 15268esac
5f80c64f
JH
15269
15270: Remove build directory name from cppstdin so it can be used from
15271: either the present location or the final installed location.
15272echo " "
15273: Get out of the UU directory to get correct path name.
15274cd ..
15275case "$cppstdin" in
15276`pwd`/cppstdin)
15277 echo "Stripping down cppstdin path name"
15278 cppstdin=cppstdin
15279 ;;
15280esac
15281cd UU
15282
15283: end of configuration questions
15284echo " "
15285echo "End of configuration questions."
15286echo " "
15287
15288: back to where it started
15289if test -d ../UU; then
15290 cd ..
15291fi
15292
15293: configuration may be patched via a 'config.over' file
15294if $test -f config.over; then
15295 echo " "
15296 dflt=y
15297 rp='I see a config.over file. Do you wish to load it?'
15298 . UU/myread
15299 case "$ans" in
15300 n*) echo "OK, I'll ignore it.";;
15301 *) . ./config.over
15302 echo "Configuration override changes have been loaded."
15303 ;;
15304 esac
15305fi
15306
15307: in case they want portability, strip down executable paths
15308case "$d_portable" in
15309"$define")
15310 echo " "
15311 echo "Stripping down executable paths..." >&4
15312 for file in $loclist $trylist; do
534ac15a
JH
15313 eval temp=\$$file
15314 eval $file=`basename $temp`
5f80c64f
JH
15315 done
15316 ;;
15317esac
15318
15319: create config.sh file
15320echo " "
15321echo "Creating config.sh..." >&4
15322$spitshell <<EOT >config.sh
15323$startsh
15324#
15325# This file was produced by running the Configure script. It holds all the
15326# definitions figured out by Configure. Should you modify one of these values,
15327# do not forget to propagate your changes by running "Configure -der". You may
15328# instead choose to run each of the .SH files by yourself, or "Configure -S".
15329#
15330
15331# Package name : $package
15332# Source directory : $src
15333# Configuration time: $cf_time
15334# Configured by : $cf_by
15335# Target system : $myuname
15336
15337Author='$Author'
15338Date='$Date'
15339Header='$Header'
15340Id='$Id'
15341Locker='$Locker'
15342Log='$Log'
15343Mcc='$Mcc'
15344RCSfile='$RCSfile'
15345Revision='$Revision'
15346Source='$Source'
15347State='$State'
15348_a='$_a'
15349_exe='$_exe'
15350_o='$_o'
b4eb6b3d
JH
15351afs='$afs'
15352alignbytes='$alignbytes'
15353ansi2knr='$ansi2knr'
15354aphostname='$aphostname'
15355api_revision='$api_revision'
15356api_subversion='$api_subversion'
15357api_version='$api_version'
15358api_versionstring='$api_versionstring'
5f80c64f 15359ar='$ar'
b4eb6b3d
JH
15360archlib='$archlib'
15361archlibexp='$archlibexp'
15362archname64='$archname64'
15363archname='$archname'
5f80c64f
JH
15364archobjs='$archobjs'
15365awk='$awk'
b4eb6b3d 15366baserev='$baserev'
5f80c64f 15367bash='$bash'
b4eb6b3d
JH
15368bin='$bin'
15369bincompat5005='$bincompat5005'
15370binexp='$binexp'
5f80c64f
JH
15371bison='$bison'
15372byacc='$byacc'
b4eb6b3d 15373byteorder='$byteorder'
5f80c64f 15374c='$c'
b4eb6b3d 15375castflags='$castflags'
5f80c64f
JH
15376cat='$cat'
15377cc='$cc'
15378cccdlflags='$cccdlflags'
15379ccdlflags='$ccdlflags'
15380ccflags='$ccflags'
b4eb6b3d 15381ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 15382ccname='$ccname'
b4eb6b3d 15383ccsymbols='$ccsymbols'
6b356c8e 15384ccversion='$ccversion'
5f80c64f 15385cf_by='$cf_by'
b4eb6b3d 15386cf_email='$cf_email'
5f80c64f 15387cf_time='$cf_time'
b4eb6b3d 15388charsize='$charsize'
5f80c64f
JH
15389chgrp='$chgrp'
15390chmod='$chmod'
15391chown='$chown'
b4eb6b3d 15392clocktype='$clocktype'
5f80c64f
JH
15393comm='$comm'
15394compress='$compress'
15395contains='$contains'
15396cp='$cp'
15397cpio='$cpio'
15398cpp='$cpp'
b4eb6b3d
JH
15399cpp_stuff='$cpp_stuff'
15400cppccsymbols='$cppccsymbols'
5f80c64f
JH
15401cppflags='$cppflags'
15402cpplast='$cpplast'
15403cppminus='$cppminus'
15404cpprun='$cpprun'
15405cppstdin='$cppstdin'
b4eb6b3d
JH
15406cppsymbols='$cppsymbols'
15407crosscompile='$crosscompile'
15408cryptlib='$cryptlib'
5f80c64f 15409csh='$csh'
b4eb6b3d
JH
15410d_Gconvert='$d_Gconvert'
15411d_PRIEUldbl='$d_PRIEUldbl'
15412d_PRIFUldbl='$d_PRIFUldbl'
15413d_PRIGUldbl='$d_PRIGUldbl'
15414d_PRIXU64='$d_PRIXU64'
15415d_PRId64='$d_PRId64'
15416d_PRIeldbl='$d_PRIeldbl'
15417d_PRIfldbl='$d_PRIfldbl'
15418d_PRIgldbl='$d_PRIgldbl'
15419d_PRIi64='$d_PRIi64'
15420d_PRIo64='$d_PRIo64'
15421d_PRIu64='$d_PRIu64'
15422d_PRIx64='$d_PRIx64'
15423d_SCNfldbl='$d_SCNfldbl'
15424d_access='$d_access'
15425d_accessx='$d_accessx'
15426d_alarm='$d_alarm'
15427d_archlib='$d_archlib'
15428d_atolf='$d_atolf'
15429d_atoll='$d_atoll'
15430d_attribut='$d_attribut'
15431d_bcmp='$d_bcmp'
15432d_bcopy='$d_bcopy'
15433d_bincompat5005='$d_bincompat5005'
5f80c64f 15434d_bsd='$d_bsd'
b4eb6b3d
JH
15435d_bsdgetpgrp='$d_bsdgetpgrp'
15436d_bsdsetpgrp='$d_bsdsetpgrp'
15437d_bzero='$d_bzero'
15438d_casti32='$d_casti32'
15439d_castneg='$d_castneg'
15440d_charvspr='$d_charvspr'
15441d_chown='$d_chown'
15442d_chroot='$d_chroot'
15443d_chsize='$d_chsize'
15444d_closedir='$d_closedir'
15445d_const='$d_const'
15446d_crypt='$d_crypt'
15447d_csh='$d_csh'
15448d_cuserid='$d_cuserid'
15449d_dbl_dig='$d_dbl_dig'
15450d_difftime='$d_difftime'
15451d_dirnamlen='$d_dirnamlen'
15452d_dlerror='$d_dlerror'
5f80c64f 15453d_dlopen='$d_dlopen'
b4eb6b3d
JH
15454d_dlsymun='$d_dlsymun'
15455d_dosuid='$d_dosuid'
15456d_drand48proto='$d_drand48proto'
15457d_dup2='$d_dup2'
15458d_eaccess='$d_eaccess'
15459d_endgrent='$d_endgrent'
15460d_endhent='$d_endhent'
15461d_endnent='$d_endnent'
15462d_endpent='$d_endpent'
15463d_endpwent='$d_endpwent'
15464d_endsent='$d_endsent'
15465d_eofnblk='$d_eofnblk'
5f80c64f 15466d_eunice='$d_eunice'
b4eb6b3d
JH
15467d_fchmod='$d_fchmod'
15468d_fchown='$d_fchown'
15469d_fcntl='$d_fcntl'
15470d_fd_macros='$d_fd_macros'
15471d_fd_set='$d_fd_set'
15472d_fds_bits='$d_fds_bits'
15473d_fgetpos='$d_fgetpos'
15474d_flexfnam='$d_flexfnam'
15475d_flock='$d_flock'
15476d_fork='$d_fork'
15477d_fpathconf='$d_fpathconf'
15478d_fpos64_t='$d_fpos64_t'
15479d_frexpl='$d_frexpl'
15480d_fs_data_s='$d_fs_data_s'
15481d_fseeko='$d_fseeko'
15482d_fsetpos='$d_fsetpos'
15483d_fstatfs='$d_fstatfs'
15484d_fstatvfs='$d_fstatvfs'
15485d_ftello='$d_ftello'
15486d_ftime='$d_ftime'
15487d_getcwd='$d_getcwd'
15488d_getespwnam='$d_getespwnam'
15489d_getfsstat='$d_getfsstat'
15490d_getgrent='$d_getgrent'
15491d_getgrps='$d_getgrps'
15492d_gethbyaddr='$d_gethbyaddr'
15493d_gethbyname='$d_gethbyname'
15494d_gethent='$d_gethent'
15495d_gethname='$d_gethname'
15496d_gethostprotos='$d_gethostprotos'
15497d_getlogin='$d_getlogin'
15498d_getmnt='$d_getmnt'
15499d_getmntent='$d_getmntent'
15500d_getnbyaddr='$d_getnbyaddr'
15501d_getnbyname='$d_getnbyname'
15502d_getnent='$d_getnent'
15503d_getnetprotos='$d_getnetprotos'
15504d_getpbyname='$d_getpbyname'
15505d_getpbynumber='$d_getpbynumber'
15506d_getpent='$d_getpent'
15507d_getpgid='$d_getpgid'
15508d_getpgrp2='$d_getpgrp2'
15509d_getpgrp='$d_getpgrp'
15510d_getppid='$d_getppid'
15511d_getprior='$d_getprior'
15512d_getprotoprotos='$d_getprotoprotos'
15513d_getprpwnam='$d_getprpwnam'
15514d_getpwent='$d_getpwent'
15515d_getsbyname='$d_getsbyname'
15516d_getsbyport='$d_getsbyport'
15517d_getsent='$d_getsent'
15518d_getservprotos='$d_getservprotos'
15519d_getspnam='$d_getspnam'
15520d_gettimeod='$d_gettimeod'
5f80c64f 15521d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
15522d_grpasswd='$d_grpasswd'
15523d_hasmntopt='$d_hasmntopt'
15524d_htonl='$d_htonl'
15525d_iconv='$d_iconv'
15526d_index='$d_index'
15527d_inetaton='$d_inetaton'
15528d_int64_t='$d_int64_t'
15529d_isascii='$d_isascii'
15530d_isnan='$d_isnan'
15531d_isnanl='$d_isnanl'
15532d_killpg='$d_killpg'
15533d_lchown='$d_lchown'
15534d_ldbl_dig='$d_ldbl_dig'
15535d_link='$d_link'
15536d_locconv='$d_locconv'
15537d_lockf='$d_lockf'
15538d_longdbl='$d_longdbl'
15539d_longlong='$d_longlong'
15540d_lseekproto='$d_lseekproto'
15541d_lstat='$d_lstat'
15542d_madvise='$d_madvise'
15543d_mblen='$d_mblen'
15544d_mbstowcs='$d_mbstowcs'
15545d_mbtowc='$d_mbtowc'
15546d_memchr='$d_memchr'
15547d_memcmp='$d_memcmp'
15548d_memcpy='$d_memcpy'
15549d_memmove='$d_memmove'
15550d_memset='$d_memset'
15551d_mkdir='$d_mkdir'
15552d_mkdtemp='$d_mkdtemp'
15553d_mkfifo='$d_mkfifo'
15554d_mkstemp='$d_mkstemp'
15555d_mkstemps='$d_mkstemps'
15556d_mktime='$d_mktime'
15557d_mmap='$d_mmap'
15558d_modfl='$d_modfl'
15559d_mprotect='$d_mprotect'
15560d_msg='$d_msg'
15561d_msg_ctrunc='$d_msg_ctrunc'
15562d_msg_dontroute='$d_msg_dontroute'
15563d_msg_oob='$d_msg_oob'
15564d_msg_peek='$d_msg_peek'
15565d_msg_proxy='$d_msg_proxy'
15566d_msgctl='$d_msgctl'
15567d_msgget='$d_msgget'
15568d_msgrcv='$d_msgrcv'
15569d_msgsnd='$d_msgsnd'
15570d_msync='$d_msync'
15571d_munmap='$d_munmap'
15572d_mymalloc='$d_mymalloc'
15573d_nice='$d_nice'
15574d_nv_preserves_uv='$d_nv_preserves_uv'
15575d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15576d_off64_t='$d_off64_t'
15577d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15578d_oldpthreads='$d_oldpthreads'
15579d_oldsock='$d_oldsock'
15580d_open3='$d_open3'
15581d_pathconf='$d_pathconf'
15582d_pause='$d_pause'
15583d_perl_otherlibdirs='$d_perl_otherlibdirs'
15584d_phostname='$d_phostname'
15585d_pipe='$d_pipe'
15586d_poll='$d_poll'
5f80c64f 15587d_portable='$d_portable'
b4eb6b3d
JH
15588d_pthread_yield='$d_pthread_yield'
15589d_pwage='$d_pwage'
15590d_pwchange='$d_pwchange'
15591d_pwclass='$d_pwclass'
15592d_pwcomment='$d_pwcomment'
15593d_pwexpire='$d_pwexpire'
15594d_pwgecos='$d_pwgecos'
15595d_pwpasswd='$d_pwpasswd'
15596d_pwquota='$d_pwquota'
15597d_qgcvt='$d_qgcvt'
15598d_quad='$d_quad'
15599d_readdir='$d_readdir'
15600d_readlink='$d_readlink'
15601d_rename='$d_rename'
15602d_rewinddir='$d_rewinddir'
15603d_rmdir='$d_rmdir'
15604d_safebcpy='$d_safebcpy'
15605d_safemcpy='$d_safemcpy'
15606d_sanemcmp='$d_sanemcmp'
15607d_sched_yield='$d_sched_yield'
15608d_scm_rights='$d_scm_rights'
15609d_seekdir='$d_seekdir'
15610d_select='$d_select'
15611d_sem='$d_sem'
15612d_semctl='$d_semctl'
15613d_semctl_semid_ds='$d_semctl_semid_ds'
15614d_semctl_semun='$d_semctl_semun'
15615d_semget='$d_semget'
15616d_semop='$d_semop'
15617d_setegid='$d_setegid'
15618d_seteuid='$d_seteuid'
15619d_setgrent='$d_setgrent'
15620d_setgrps='$d_setgrps'
15621d_sethent='$d_sethent'
15622d_setlinebuf='$d_setlinebuf'
15623d_setlocale='$d_setlocale'
15624d_setnent='$d_setnent'
15625d_setpent='$d_setpent'
15626d_setpgid='$d_setpgid'
15627d_setpgrp2='$d_setpgrp2'
15628d_setpgrp='$d_setpgrp'
15629d_setprior='$d_setprior'
15630d_setproctitle='$d_setproctitle'
15631d_setpwent='$d_setpwent'
15632d_setregid='$d_setregid'
15633d_setresgid='$d_setresgid'
15634d_setresuid='$d_setresuid'
15635d_setreuid='$d_setreuid'
15636d_setrgid='$d_setrgid'
15637d_setruid='$d_setruid'
15638d_setsent='$d_setsent'
15639d_setsid='$d_setsid'
15640d_setvbuf='$d_setvbuf'
15641d_sfio='$d_sfio'
15642d_shm='$d_shm'
15643d_shmat='$d_shmat'
15644d_shmatprototype='$d_shmatprototype'
15645d_shmctl='$d_shmctl'
15646d_shmdt='$d_shmdt'
15647d_shmget='$d_shmget'
15648d_sigaction='$d_sigaction'
15649d_sigsetjmp='$d_sigsetjmp'
15650d_socket='$d_socket'
15651d_socklen_t='$d_socklen_t'
15652d_sockpair='$d_sockpair'
15653d_socks5_init='$d_socks5_init'
15654d_sqrtl='$d_sqrtl'
15655d_statblks='$d_statblks'
15656d_statfs_f_flags='$d_statfs_f_flags'
15657d_statfs_s='$d_statfs_s'
15658d_statvfs='$d_statvfs'
15659d_stdio_cnt_lval='$d_stdio_cnt_lval'
15660d_stdio_ptr_lval='$d_stdio_ptr_lval'
a7ffa9b9
NC
15661d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15662d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
b4eb6b3d
JH
15663d_stdio_stream_array='$d_stdio_stream_array'
15664d_stdiobase='$d_stdiobase'
15665d_stdstdio='$d_stdstdio'
15666d_strchr='$d_strchr'
15667d_strcoll='$d_strcoll'
15668d_strctcpy='$d_strctcpy'
15669d_strerrm='$d_strerrm'
15670d_strerror='$d_strerror'
15671d_strtod='$d_strtod'
15672d_strtol='$d_strtol'
15673d_strtold='$d_strtold'
15674d_strtoll='$d_strtoll'
15675d_strtoul='$d_strtoul'
15676d_strtoull='$d_strtoull'
15677d_strtouq='$d_strtouq'
15678d_strxfrm='$d_strxfrm'
15679d_suidsafe='$d_suidsafe'
15680d_symlink='$d_symlink'
15681d_syscall='$d_syscall'
15682d_sysconf='$d_sysconf'
15683d_sysernlst='$d_sysernlst'
15684d_syserrlst='$d_syserrlst'
15685d_system='$d_system'
15686d_tcgetpgrp='$d_tcgetpgrp'
15687d_tcsetpgrp='$d_tcsetpgrp'
15688d_telldir='$d_telldir'
15689d_telldirproto='$d_telldirproto'
15690d_time='$d_time'
15691d_times='$d_times'
15692d_truncate='$d_truncate'
15693d_tzname='$d_tzname'
15694d_umask='$d_umask'
15695d_uname='$d_uname'
15696d_union_semun='$d_union_semun'
15697d_ustat='$d_ustat'
15698d_vendorarch='$d_vendorarch'
15699d_vendorbin='$d_vendorbin'
15700d_vendorlib='$d_vendorlib'
15701d_vfork='$d_vfork'
15702d_void_closedir='$d_void_closedir'
15703d_voidsig='$d_voidsig'
15704d_voidtty='$d_voidtty'
15705d_volatile='$d_volatile'
15706d_vprintf='$d_vprintf'
15707d_wait4='$d_wait4'
15708d_waitpid='$d_waitpid'
15709d_wcstombs='$d_wcstombs'
15710d_wctomb='$d_wctomb'
5f80c64f
JH
15711d_xenix='$d_xenix'
15712date='$date'
b4eb6b3d
JH
15713db_hashtype='$db_hashtype'
15714db_prefixtype='$db_prefixtype'
15715defvoidused='$defvoidused'
15716direntrytype='$direntrytype'
15717dlext='$dlext'
5f80c64f 15718dlsrc='$dlsrc'
b4eb6b3d
JH
15719doublesize='$doublesize'
15720drand01='$drand01'
15721dynamic_ext='$dynamic_ext'
15722eagain='$eagain'
15723ebcdic='$ebcdic'
5f80c64f
JH
15724echo='$echo'
15725egrep='$egrep'
15726emacs='$emacs'
15727eunicefix='$eunicefix'
15728exe_ext='$exe_ext'
15729expr='$expr'
b4eb6b3d
JH
15730extensions='$extensions'
15731fflushNULL='$fflushNULL'
15732fflushall='$fflushall'
5f80c64f
JH
15733find='$find'
15734firstmakefile='$firstmakefile'
15735flex='$flex'
b4eb6b3d
JH
15736fpossize='$fpossize'
15737fpostype='$fpostype'
15738freetype='$freetype'
15739full_ar='$full_ar'
15740full_csh='$full_csh'
15741full_sed='$full_sed'
5b463ca7 15742gccosandvers='$gccosandvers'
5f80c64f 15743gccversion='$gccversion'
b4eb6b3d
JH
15744gidformat='$gidformat'
15745gidsign='$gidsign'
15746gidsize='$gidsize'
15747gidtype='$gidtype'
5f80c64f
JH
15748glibpth='$glibpth'
15749grep='$grep'
b4eb6b3d
JH
15750groupcat='$groupcat'
15751groupstype='$groupstype'
5f80c64f 15752gzip='$gzip'
b4eb6b3d
JH
15753h_fcntl='$h_fcntl'
15754h_sysfile='$h_sysfile'
5f80c64f 15755hint='$hint'
b4eb6b3d
JH
15756hostcat='$hostcat'
15757i16size='$i16size'
15758i16type='$i16type'
15759i32size='$i32size'
15760i32type='$i32type'
15761i64size='$i64size'
15762i64type='$i64type'
15763i8size='$i8size'
15764i8type='$i8type'
15765i_arpainet='$i_arpainet'
15766i_bsdioctl='$i_bsdioctl'
15767i_db='$i_db'
15768i_dbm='$i_dbm'
15769i_dirent='$i_dirent'
5f80c64f 15770i_dld='$i_dld'
b4eb6b3d
JH
15771i_dlfcn='$i_dlfcn'
15772i_fcntl='$i_fcntl'
15773i_float='$i_float'
15774i_gdbm='$i_gdbm'
15775i_grp='$i_grp'
15776i_iconv='$i_iconv'
15777i_ieeefp='$i_ieeefp'
15778i_inttypes='$i_inttypes'
15779i_libutil='$i_libutil'
15780i_limits='$i_limits'
15781i_locale='$i_locale'
15782i_machcthr='$i_machcthr'
15783i_malloc='$i_malloc'
15784i_math='$i_math'
15785i_memory='$i_memory'
15786i_mntent='$i_mntent'
15787i_ndbm='$i_ndbm'
15788i_netdb='$i_netdb'
15789i_neterrno='$i_neterrno'
15790i_netinettcp='$i_netinettcp'
15791i_niin='$i_niin'
15792i_poll='$i_poll'
15793i_prot='$i_prot'
15794i_pthread='$i_pthread'
15795i_pwd='$i_pwd'
15796i_rpcsvcdbm='$i_rpcsvcdbm'
15797i_sfio='$i_sfio'
15798i_sgtty='$i_sgtty'
15799i_shadow='$i_shadow'
15800i_socks='$i_socks'
15801i_stdarg='$i_stdarg'
15802i_stddef='$i_stddef'
15803i_stdlib='$i_stdlib'
15804i_string='$i_string'
15805i_sunmath='$i_sunmath'
15806i_sysaccess='$i_sysaccess'
15807i_sysdir='$i_sysdir'
15808i_sysfile='$i_sysfile'
15809i_sysfilio='$i_sysfilio'
15810i_sysin='$i_sysin'
15811i_sysioctl='$i_sysioctl'
15812i_syslog='$i_syslog'
15813i_sysmman='$i_sysmman'
15814i_sysmode='$i_sysmode'
15815i_sysmount='$i_sysmount'
15816i_sysndir='$i_sysndir'
15817i_sysparam='$i_sysparam'
15818i_sysresrc='$i_sysresrc'
15819i_syssecrt='$i_syssecrt'
15820i_sysselct='$i_sysselct'
15821i_syssockio='$i_syssockio'
15822i_sysstat='$i_sysstat'
15823i_sysstatfs='$i_sysstatfs'
15824i_sysstatvfs='$i_sysstatvfs'
15825i_systime='$i_systime'
15826i_systimek='$i_systimek'
15827i_systimes='$i_systimes'
15828i_systypes='$i_systypes'
15829i_sysuio='$i_sysuio'
15830i_sysun='$i_sysun'
15831i_sysutsname='$i_sysutsname'
15832i_sysvfs='$i_sysvfs'
15833i_syswait='$i_syswait'
15834i_termio='$i_termio'
15835i_termios='$i_termios'
15836i_time='$i_time'
15837i_unistd='$i_unistd'
15838i_ustat='$i_ustat'
15839i_utime='$i_utime'
15840i_values='$i_values'
15841i_varargs='$i_varargs'
15842i_varhdr='$i_varhdr'
15843i_vfork='$i_vfork'
5f80c64f 15844ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
15845inc_version_list='$inc_version_list'
15846inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
15847incpath='$incpath'
15848inews='$inews'
b4eb6b3d
JH
15849installarchlib='$installarchlib'
15850installbin='$installbin'
15851installman1dir='$installman1dir'
15852installman3dir='$installman3dir'
15853installprefix='$installprefix'
15854installprefixexp='$installprefixexp'
15855installprivlib='$installprivlib'
15856installscript='$installscript'
15857installsitearch='$installsitearch'
15858installsitebin='$installsitebin'
15859installsitelib='$installsitelib'
15860installstyle='$installstyle'
15861installusrbinperl='$installusrbinperl'
15862installvendorarch='$installvendorarch'
15863installvendorbin='$installvendorbin'
15864installvendorlib='$installvendorlib'
15865intsize='$intsize'
15866ivdformat='$ivdformat'
15867ivsize='$ivsize'
15868ivtype='$ivtype'
15869known_extensions='$known_extensions'
5f80c64f 15870ksh='$ksh'
5f80c64f
JH
15871ld='$ld'
15872lddlflags='$lddlflags'
15873ldflags='$ldflags'
b4eb6b3d
JH
15874ldflags_uselargefiles='$ldflags_uselargefiles'
15875ldlibpthname='$ldlibpthname'
5f80c64f
JH
15876less='$less'
15877lib_ext='$lib_ext'
15878libc='$libc'
b4eb6b3d 15879libperl='$libperl'
5f80c64f
JH
15880libpth='$libpth'
15881libs='$libs'
43999f95
JH
15882libsdirs='$libsdirs'
15883libsfiles='$libsfiles'
15884libsfound='$libsfound'
13b3f787 15885libspath='$libspath'
5f80c64f 15886libswanted='$libswanted'
b4eb6b3d 15887libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
15888line='$line'
15889lint='$lint'
15890lkflags='$lkflags'
15891ln='$ln'
15892lns='$lns'
15893locincpth='$locincpth'
15894loclibpth='$loclibpth'
b4eb6b3d
JH
15895longdblsize='$longdblsize'
15896longlongsize='$longlongsize'
15897longsize='$longsize'
5f80c64f
JH
15898lp='$lp'
15899lpr='$lpr'
15900ls='$ls'
b4eb6b3d
JH
15901lseeksize='$lseeksize'
15902lseektype='$lseektype'
5f80c64f
JH
15903mail='$mail'
15904mailx='$mailx'
15905make='$make'
15906make_set_make='$make_set_make'
b4eb6b3d
JH
15907mallocobj='$mallocobj'
15908mallocsrc='$mallocsrc'
15909malloctype='$malloctype'
15910man1dir='$man1dir'
15911man1direxp='$man1direxp'
15912man1ext='$man1ext'
15913man3dir='$man3dir'
15914man3direxp='$man3direxp'
15915man3ext='$man3ext'
5f80c64f
JH
15916mips_type='$mips_type'
15917mkdir='$mkdir'
b4eb6b3d
JH
15918mmaptype='$mmaptype'
15919modetype='$modetype'
5f80c64f 15920more='$more'
b4eb6b3d 15921multiarch='$multiarch'
5f80c64f 15922mv='$mv'
b4eb6b3d
JH
15923myarchname='$myarchname'
15924mydomain='$mydomain'
15925myhostname='$myhostname'
5f80c64f
JH
15926myuname='$myuname'
15927n='$n'
b4eb6b3d
JH
15928netdb_hlen_type='$netdb_hlen_type'
15929netdb_host_type='$netdb_host_type'
15930netdb_name_type='$netdb_name_type'
15931netdb_net_type='$netdb_net_type'
5f80c64f
JH
15932nm='$nm'
15933nm_opt='$nm_opt'
15934nm_so_opt='$nm_so_opt'
b4eb6b3d 15935nonxs_ext='$nonxs_ext'
5f80c64f 15936nroff='$nroff'
b4eb6b3d
JH
15937nvEUformat='$nvEUformat'
15938nvFUformat='$nvFUformat'
15939nvGUformat='$nvGUformat'
15940nveformat='$nveformat'
15941nvfformat='$nvfformat'
15942nvgformat='$nvgformat'
15943nvsize='$nvsize'
15944nvtype='$nvtype'
15945o_nonblock='$o_nonblock'
5f80c64f 15946obj_ext='$obj_ext'
b4eb6b3d 15947old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 15948optimize='$optimize'
b4eb6b3d 15949orderlib='$orderlib'
5f80c64f
JH
15950osname='$osname'
15951osvers='$osvers'
b4eb6b3d 15952otherlibdirs='$otherlibdirs'
5f80c64f 15953package='$package'
b4eb6b3d
JH
15954pager='$pager'
15955passcat='$passcat'
15956patchlevel='$patchlevel'
5f80c64f 15957path_sep='$path_sep'
b4eb6b3d 15958perl5='$perl5'
5f80c64f 15959perl='$perl'
b4eb6b3d 15960perladmin='$perladmin'
9c839522 15961perllibs='$perllibs'
b4eb6b3d 15962perlpath='$perlpath'
5f80c64f 15963pg='$pg'
b4eb6b3d
JH
15964phostname='$phostname'
15965pidtype='$pidtype'
5f80c64f 15966plibpth='$plibpth'
b4eb6b3d 15967pm_apiversion='$pm_apiversion'
5f80c64f
JH
15968pmake='$pmake'
15969pr='$pr'
b4eb6b3d
JH
15970prefix='$prefix'
15971prefixexp='$prefixexp'
15972privlib='$privlib'
15973privlibexp='$privlibexp'
15974prototype='$prototype'
15975ptrsize='$ptrsize'
15976quadkind='$quadkind'
15977quadtype='$quadtype'
15978randbits='$randbits'
15979randfunc='$randfunc'
15980randseedtype='$randseedtype'
15981ranlib='$ranlib'
15982rd_nodata='$rd_nodata'
15983revision='$revision'
5f80c64f
JH
15984rm='$rm'
15985rmail='$rmail'
15986runnm='$runnm'
b4eb6b3d
JH
15987sPRIEUldbl='$sPRIEUldbl'
15988sPRIFUldbl='$sPRIFUldbl'
15989sPRIGUldbl='$sPRIGUldbl'
15990sPRIXU64='$sPRIXU64'
15991sPRId64='$sPRId64'
15992sPRIeldbl='$sPRIeldbl'
15993sPRIfldbl='$sPRIfldbl'
15994sPRIgldbl='$sPRIgldbl'
15995sPRIi64='$sPRIi64'
15996sPRIo64='$sPRIo64'
15997sPRIu64='$sPRIu64'
15998sPRIx64='$sPRIx64'
15999sSCNfldbl='$sSCNfldbl'
16000sched_yield='$sched_yield'
16001scriptdir='$scriptdir'
16002scriptdirexp='$scriptdirexp'
5f80c64f 16003sed='$sed'
b4eb6b3d
JH
16004seedfunc='$seedfunc'
16005selectminbits='$selectminbits'
16006selecttype='$selecttype'
5f80c64f
JH
16007sendmail='$sendmail'
16008sh='$sh'
16009shar='$shar'
16010sharpbang='$sharpbang'
b4eb6b3d
JH
16011shmattype='$shmattype'
16012shortsize='$shortsize'
16013shrpenv='$shrpenv'
5f80c64f 16014shsharp='$shsharp'
b4eb6b3d
JH
16015sig_count='$sig_count'
16016sig_name='$sig_name'
16017sig_name_init='$sig_name_init'
16018sig_num='$sig_num'
16019sig_num_init='$sig_num_init'
16020signal_t='$signal_t'
16021sitearch='$sitearch'
16022sitearchexp='$sitearchexp'
16023sitebin='$sitebin'
16024sitebinexp='$sitebinexp'
16025sitelib='$sitelib'
16026sitelib_stem='$sitelib_stem'
16027sitelibexp='$sitelibexp'
16028siteprefix='$siteprefix'
16029siteprefixexp='$siteprefixexp'
16030sizesize='$sizesize'
16031sizetype='$sizetype'
5f80c64f
JH
16032sleep='$sleep'
16033smail='$smail'
5f80c64f 16034so='$so'
b4eb6b3d
JH
16035sockethdr='$sockethdr'
16036socketlib='$socketlib'
16037socksizetype='$socksizetype'
5f80c64f
JH
16038sort='$sort'
16039spackage='$spackage'
16040spitshell='$spitshell'
5f80c64f 16041src='$src'
b4eb6b3d
JH
16042ssizetype='$ssizetype'
16043startperl='$startperl'
5f80c64f 16044startsh='$startsh'
b4eb6b3d
JH
16045static_ext='$static_ext'
16046stdchar='$stdchar'
16047stdio_base='$stdio_base'
16048stdio_bufsiz='$stdio_bufsiz'
16049stdio_cnt='$stdio_cnt'
16050stdio_filbuf='$stdio_filbuf'
16051stdio_ptr='$stdio_ptr'
16052stdio_stream_array='$stdio_stream_array'
16053strings='$strings'
5f80c64f 16054submit='$submit'
b4eb6b3d
JH
16055subversion='$subversion'
16056sysman='$sysman'
5f80c64f
JH
16057tail='$tail'
16058tar='$tar'
16059tbl='$tbl'
16060tee='$tee'
16061test='$test'
b4eb6b3d
JH
16062timeincl='$timeincl'
16063timetype='$timetype'
5f80c64f
JH
16064touch='$touch'
16065tr='$tr'
16066trnl='$trnl'
16067troff='$troff'
b4eb6b3d
JH
16068u16size='$u16size'
16069u16type='$u16type'
16070u32size='$u32size'
16071u32type='$u32type'
16072u64size='$u64size'
16073u64type='$u64type'
16074u8size='$u8size'
16075u8type='$u8type'
16076uidformat='$uidformat'
16077uidsign='$uidsign'
16078uidsize='$uidsize'
16079uidtype='$uidtype'
5f80c64f
JH
16080uname='$uname'
16081uniq='$uniq'
b4eb6b3d
JH
16082uquadtype='$uquadtype'
16083use5005threads='$use5005threads'
16084use64bitall='$use64bitall'
16085use64bitint='$use64bitint'
5f80c64f 16086usedl='$usedl'
b4eb6b3d
JH
16087useithreads='$useithreads'
16088uselargefiles='$uselargefiles'
16089uselongdouble='$uselongdouble'
16090usemorebits='$usemorebits'
16091usemultiplicity='$usemultiplicity'
16092usemymalloc='$usemymalloc'
5f80c64f 16093usenm='$usenm'
b4eb6b3d
JH
16094useopcode='$useopcode'
16095useperlio='$useperlio'
16096useposix='$useposix'
16097usesfio='$usesfio'
16098useshrplib='$useshrplib'
29209bc5 16099usesocks='$usesocks'
b4eb6b3d
JH
16100usethreads='$usethreads'
16101usevendorprefix='$usevendorprefix'
16102usevfork='$usevfork'
5f80c64f
JH
16103usrinc='$usrinc'
16104uuname='$uuname'
b4eb6b3d
JH
16105uvXUformat='$uvXUformat'
16106uvoformat='$uvoformat'
16107uvsize='$uvsize'
16108uvtype='$uvtype'
16109uvuformat='$uvuformat'
16110uvxformat='$uvxformat'
16111vendorarch='$vendorarch'
16112vendorarchexp='$vendorarchexp'
16113vendorbin='$vendorbin'
16114vendorbinexp='$vendorbinexp'
16115vendorlib='$vendorlib'
16116vendorlib_stem='$vendorlib_stem'
16117vendorlibexp='$vendorlibexp'
16118vendorprefix='$vendorprefix'
16119vendorprefixexp='$vendorprefixexp'
16120version='$version'
d56c5707 16121versiononly='$versiononly'
5f80c64f 16122vi='$vi'
b4eb6b3d 16123voidflags='$voidflags'
5f80c64f 16124xlibpth='$xlibpth'
b4eb6b3d 16125xs_apiversion='$xs_apiversion'
5f80c64f
JH
16126zcat='$zcat'
16127zip='$zip'
16128EOT
16129
16130: Add in command line options if available
16131$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16132
16133: add special variables
16134$test -f $src/patchlevel.h && \
d00b958f 16135awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 16136echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
16137
16138: propagate old symbols
16139if $test -f UU/config.sh; then
381aa1ff 16140 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
5f80c64f 16141 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
381aa1ff 16142 $sort | $uniq >UU/oldsyms
5f80c64f
JH
16143 set X `cat UU/oldsyms`
16144 shift
16145 case $# in
16146 0) ;;
16147 *)
16148 cat <<EOM
16149Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16150EOM
16151 echo "# Variables propagated from previous config.sh file." >>config.sh
16152 for sym in `cat UU/oldsyms`; do
16153 echo " Propagating $hint variable "'$'"$sym..."
16154 eval 'tmp="$'"${sym}"'"'
16155 echo "$tmp" | \
16156 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16157 done
16158 ;;
16159 esac
16160fi
16161
16162: Finish up by extracting the .SH files
16163case "$alldone" in
16164exit)
16165 $rm -rf UU
16166 echo "Done."
16167 exit 0
16168 ;;
16169cont)
16170 ;;
16171'')
16172 dflt=''
16173 nostick=true
16174 $cat <<EOM
16175
16176If you'd like to make any changes to the config.sh file before I begin
16177to configure things, do it as a shell escape now (e.g. !vi config.sh).
16178
16179EOM
16180 rp="Press return or use a shell escape to edit config.sh:"
16181 . UU/myread
16182 nostick=''
16183 case "$ans" in
16184 '') ;;
16185 *) : in case they cannot read
16186 sh 1>&4 -c "$ans";;
16187 esac
16188 ;;
16189esac
16190
16191: if this fails, just run all the .SH files by hand
16192. ./config.sh
16193
16194echo " "
16195exec 1>&4
16196. ./UU/extract
16197
16198if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16199 dflt=y
16200 case "$silent" in
16201 true) ;;
16202 *)
16203 $cat <<EOM
16204
16205Now you need to generate make dependencies by running "$make depend".
16206You might prefer to run it in background: "$make depend > makedepend.out &"
16207It can take a while, so you might not want to run it right now.
16208
16209EOM
16210 ;;
16211 esac
16212 rp="Run $make depend now?"
16213 . UU/myread
16214 case "$ans" in
16215 y*)
3d5d58b1 16216 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
16217 ;;
16218 *)
16219 echo "You must run '$make depend' then '$make'."
16220 ;;
16221 esac
16222elif test -f [Mm]akefile; then
16223 echo " "
16224 echo "Now you must run a $make."
16225else
16226 echo "Done."
16227fi
16228
16229if $test -f Policy.sh; then
16230 $cat <<EOM
16231
16232If you compile $package on a different machine or from a different object
16233directory, copy the Policy.sh file from this object directory to the
16234new one before you run Configure -- this will help you with most of
16235the policy defaults.
16236
16237EOM
16238fi
16239if $test -f config.msg; then
16240 echo "Hmm. I also noted the following information while running:"
16241 echo " "
16242 $cat config.msg >&4
16243 $rm -f config.msg
16244fi
16245$rm -f kit*isdone ark*isdone
16246$rm -rf UU
16247
16248: End of Configure
16249