This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Changes.
[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#
6f748670 23# Generated on Fri Oct 13 02:10:51 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=''
539d_stdiobase=''
540d_stdstdio=''
541stdio_base=''
542stdio_bufsiz=''
543stdio_cnt=''
544stdio_filbuf=''
545stdio_ptr=''
546d_index=''
547d_strchr=''
548d_strcoll=''
549d_strctcpy=''
550d_strerrm=''
551d_strerror=''
552d_sysernlst=''
553d_syserrlst=''
554d_strtod=''
555d_strtol=''
556d_strtold=''
557d_strtoll=''
558d_strtoul=''
559d_strtoull=''
560d_strtouq=''
561d_strxfrm=''
562d_symlink=''
563d_syscall=''
564d_sysconf=''
565d_system=''
566d_tcgetpgrp=''
567d_tcsetpgrp=''
568d_telldirproto=''
569d_time=''
570timetype=''
571clocktype=''
572d_times=''
573d_truncate=''
574d_tzname=''
575d_umask=''
576d_semctl_semid_ds=''
577d_semctl_semun=''
578d_union_semun=''
579d_ustat=''
580d_vfork=''
581usevfork=''
582d_voidsig=''
583signal_t=''
584d_volatile=''
585d_charvspr=''
586d_vprintf=''
587d_wait4=''
588d_waitpid=''
589d_wcstombs=''
590d_wctomb=''
591dlext=''
85e6fe83
LW
592cccdlflags=''
593ccdlflags=''
2304df62 594dlsrc=''
232e078e 595ld=''
85e6fe83 596lddlflags=''
2304df62 597usedl=''
b4eb6b3d
JH
598doublesize=''
599ebcdic=''
600fflushNULL=''
601fflushall=''
602fpossize=''
603fpostype=''
5b463ca7 604gccosandvers=''
8a27cf78 605gccversion=''
b4eb6b3d
JH
606gidformat=''
607gidsign=''
608gidsize=''
609gidtype=''
610groupstype=''
611h_fcntl=''
612h_sysfile=''
613i_arpainet=''
614db_hashtype=''
615db_prefixtype=''
616i_db=''
617i_dbm=''
618i_rpcsvcdbm=''
619d_dirnamlen=''
620direntrytype=''
621i_dirent=''
a0d0e21e 622i_dld=''
b4eb6b3d
JH
623i_dlfcn=''
624i_fcntl=''
625i_float=''
626i_gdbm=''
627d_grpasswd=''
628i_grp=''
629i_iconv=''
630i_ieeefp=''
631i_inttypes=''
632i_libutil=''
633i_limits=''
634i_locale=''
635i_machcthr=''
636i_malloc=''
637i_math=''
638i_memory=''
639i_mntent=''
640i_ndbm=''
641i_netdb=''
642i_neterrno=''
643i_netinettcp=''
644i_niin=''
645i_sysin=''
646i_poll=''
647i_prot=''
648i_pthread=''
649d_pwage=''
650d_pwchange=''
651d_pwclass=''
652d_pwcomment=''
653d_pwexpire=''
654d_pwgecos=''
655d_pwpasswd=''
656d_pwquota=''
657i_pwd=''
658i_sfio=''
659i_shadow=''
660i_socks=''
661i_stddef=''
662i_stdlib=''
663i_string=''
664strings=''
665i_sunmath=''
666i_sysaccess=''
667i_sysdir=''
668i_sysfile=''
669d_voidtty=''
670i_bsdioctl=''
671i_sysfilio=''
672i_sysioctl=''
673i_syssockio=''
674i_syslog=''
675i_sysmman=''
676i_sysmode=''
677i_sysmount=''
678i_sysndir=''
679i_sysparam=''
680i_sysresrc=''
681i_syssecrt=''
682i_sysselct=''
683i_sysstat=''
684i_sysstatfs=''
685i_sysstatvfs=''
686i_systimes=''
687i_systypes=''
688i_sysuio=''
689i_sysun=''
690i_sysutsname=''
691i_sysvfs=''
692i_syswait=''
693i_sgtty=''
694i_termio=''
695i_termios=''
696i_systime=''
697i_systimek=''
698i_time=''
699timeincl=''
700i_unistd=''
701i_ustat=''
702i_utime=''
703i_values=''
704i_stdarg=''
705i_varargs=''
706i_varhdr=''
707i_vfork=''
708inc_version_list=''
709inc_version_list_init=''
710installprefix=''
711installprefixexp=''
712installstyle=''
713installusrbinperl=''
714intsize=''
715longsize=''
716shortsize=''
2304df62 717libc=''
b4eb6b3d
JH
718ldlibpthname=''
719libperl=''
720shrpenv=''
721useshrplib=''
a0d0e21e 722glibpth=''
2304df62 723libpth=''
8e07c86e 724loclibpth=''
2304df62
AD
725plibpth=''
726xlibpth=''
1cfa4ec7 727ignore_versioned_solibs=''
2304df62 728libs=''
43999f95
JH
729libsdirs=''
730libsfiles=''
731libsfound=''
13b3f787 732libspath=''
85e6fe83 733lns=''
b4eb6b3d
JH
734d_PRIEUldbl=''
735d_PRIFUldbl=''
736d_PRIGUldbl=''
737d_PRIeldbl=''
738d_PRIfldbl=''
739d_PRIgldbl=''
740d_SCNfldbl=''
741sPRIEUldbl=''
742sPRIFUldbl=''
743sPRIGUldbl=''
744sPRIeldbl=''
745sPRIfldbl=''
746sPRIgldbl=''
747sSCNfldbl=''
748lseeksize=''
749lseektype=''
8ff267be 750make_set_make=''
b4eb6b3d
JH
751d_mymalloc=''
752freetype=''
753mallocobj=''
754mallocsrc=''
755malloctype=''
756usemymalloc=''
757installman1dir=''
758man1dir=''
759man1direxp=''
760man1ext=''
761installman3dir=''
762man3dir=''
763man3direxp=''
764man3ext=''
765modetype=''
766multiarch=''
767mydomain=''
768myhostname=''
769phostname=''
2304df62
AD
770c=''
771n=''
b4eb6b3d
JH
772d_eofnblk=''
773eagain=''
774o_nonblock=''
775rd_nodata=''
776netdb_hlen_type=''
777netdb_host_type=''
778netdb_name_type=''
779netdb_net_type=''
780groupcat=''
781hostcat=''
782passcat=''
783orderlib=''
784ranlib=''
785d_perl_otherlibdirs=''
786otherlibdirs=''
2304df62
AD
787package=''
788spackage=''
b4eb6b3d
JH
789pager=''
790api_revision=''
791api_subversion=''
792api_version=''
793api_versionstring=''
794patchlevel=''
795revision=''
796subversion=''
797version=''
798perl5=''
799perladmin=''
800perlpath=''
801d_nv_preserves_uv=''
802d_nv_preserves_uv_bits=''
803i16size=''
804i16type=''
805i32size=''
806i32type=''
807i64size=''
808i64type=''
809i8size=''
810i8type=''
811ivsize=''
812ivtype=''
813nvsize=''
814nvtype=''
815u16size=''
816u16type=''
817u32size=''
818u32type=''
819u64size=''
820u64type=''
821u8size=''
822u8type=''
823uvsize=''
824uvtype=''
825ivdformat=''
826nvEUformat=''
827nvFUformat=''
828nvGUformat=''
829nveformat=''
830nvfformat=''
831nvgformat=''
832uvXUformat=''
833uvoformat=''
834uvuformat=''
835uvxformat=''
836pidtype=''
837prefix=''
838prefixexp=''
839installprivlib=''
840privlib=''
841privlibexp=''
842prototype=''
843ptrsize=''
844d_PRIXU64=''
845d_PRId64=''
846d_PRIi64=''
847d_PRIo64=''
848d_PRIu64=''
849d_PRIx64=''
850sPRIXU64=''
851sPRId64=''
852sPRIi64=''
853sPRIo64=''
854sPRIu64=''
855sPRIx64=''
856d_quad=''
857quadkind=''
858quadtype=''
859uquadtype=''
860drand01=''
861randbits=''
862randfunc=''
863randseedtype=''
864seedfunc=''
865installscript=''
866scriptdir=''
867scriptdirexp=''
868selectminbits=''
869selecttype=''
8ff267be 870sh=''
b4eb6b3d
JH
871sig_count=''
872sig_name=''
873sig_name_init=''
874sig_num=''
875sig_num_init=''
876installsitearch=''
877sitearch=''
878sitearchexp=''
879installsitebin=''
880sitebin=''
881sitebinexp=''
882installsitelib=''
883sitelib=''
884sitelib_stem=''
885sitelibexp=''
886siteprefix=''
887siteprefixexp=''
888sizesize=''
889sizetype=''
a0d0e21e 890so=''
b4eb6b3d 891socksizetype=''
2304df62
AD
892sharpbang=''
893shsharp=''
894spitshell=''
dfe9444c 895src=''
b4eb6b3d
JH
896ssizetype=''
897startperl=''
2304df62 898startsh=''
b4eb6b3d
JH
899stdchar=''
900d_stdio_stream_array=''
901stdio_stream_array=''
902sysman=''
5ff3f7a4 903trnl=''
b4eb6b3d
JH
904uidformat=''
905uidsign=''
906uidsize=''
907uidtype=''
908archname64=''
909use64bitall=''
910use64bitint=''
911ccflags_uselargefiles=''
912ldflags_uselargefiles=''
913libswanted_uselargefiles=''
914uselargefiles=''
915uselongdouble=''
916usemorebits=''
917usemultiplicity=''
2304df62 918nm_opt=''
40a7a20a 919nm_so_opt=''
2304df62
AD
920runnm=''
921usenm=''
b4eb6b3d 922useperlio=''
29209bc5 923usesocks=''
b4eb6b3d
JH
924d_oldpthreads=''
925use5005threads=''
926useithreads=''
927usethreads=''
2304df62 928incpath=''
2304df62
AD
929mips_type=''
930usrinc=''
b4eb6b3d
JH
931d_vendorarch=''
932installvendorarch=''
933vendorarch=''
934vendorarchexp=''
935d_vendorbin=''
936installvendorbin=''
937vendorbin=''
938vendorbinexp=''
939d_vendorlib=''
940installvendorlib=''
941vendorlib=''
942vendorlib_stem=''
943vendorlibexp=''
944usevendorprefix=''
945vendorprefix=''
946vendorprefixexp=''
d56c5707 947versiononly=''
b4eb6b3d
JH
948defvoidused=''
949voidflags=''
950pm_apiversion=''
951xs_apiversion=''
2304df62
AD
952CONFIG=''
953
ecfc5424
AD
954define='define'
955undef='undef'
956smallmach='pdp11 i8086 z8000 i80286 iAPX286'
957rmlist=''
958
959: We must find out about Eunice early
960eunicefix=':'
961if test -f /etc/unixtovms; then
962 eunicefix=/etc/unixtovms
963fi
964if test -f /etc/unixtovms.exe; then
965 eunicefix=/etc/unixtovms.exe
966fi
967
b4eb6b3d 968i_whoami=''
6b356c8e
JH
969ccname=''
970ccversion=''
9c839522 971perllibs=''
b4eb6b3d
JH
972: set useposix=false in your hint file to disable the POSIX extension.
973useposix=true
974: set useopcode=false in your hint file to disable the Opcode extension.
975useopcode=true
dfe9444c 976: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 977_exe=''
dfe9444c
AD
978: Extra object files, if any, needed on this platform.
979archobjs=''
b4eb6b3d 980archname=''
ff935051
JH
981: Possible local include directories to search.
982: Set locincpth to "" in a hint file to defeat local include searches.
983locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
984locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985:
986: no include file wanted by default
987inclwanted=''
988
b4eb6b3d 989groupstype=''
732c9516
JH
990: change the next line if compiling for Xenix/286 on Xenix/386
991xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
992: Possible local library directories to search.
993loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
995
996: general looking path for locating libraries
5869b1f1 997glibpth="/lib /usr/lib $xlibpth"
732c9516 998glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
999test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1000test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1001
1002: Private path used by Configure to find libraries. Its value
1003: is prepended to libpth. This variable takes care of special
1004: machines, like the mips. Usually, it should be empty.
1005plibpth=''
1006
1cfa4ec7
GS
1007: default library list
1008libswanted=''
921b2963 1009: some systems want to use only the non-versioned libso:s
1cfa4ec7 1010ignore_versioned_solibs=''
b4eb6b3d
JH
1011archname64=''
1012ccflags_uselargefiles=''
1013ldflags_uselargefiles=''
1014libswanted_uselargefiles=''
1015: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1016: set usesocks on the Configure command line to enable socks.
b4eb6b3d
JH
1017: set usethreads on the Configure command line to enable threads.
1018: full support for void wanted by default
1019defvoidused=15
1020
ecfc5424 1021: List of libraries we want.
693762b4 1022: If anyone needs -lnet, put it in a hint file.
997d70a2 1023libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1024libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1025libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1026libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1027: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1028: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1029glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1030glibpth="/usr/shlib $glibpth"
1031: Do not use vfork unless overridden by a hint file.
1032usevfork=false
1033
8ff267be 1034: Find the basic shell for Bourne shell scripts
1035case "$sh" in
1036'')
8ff267be 1037 case "$SYSTYPE" in
1038 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1039 *) xxx='/bin/sh';;
1040 esac
1041 if test -f "$xxx"; then
1042 sh="$xxx"
1043 else
1044 : Build up a list and do a single loop so we can 'break' out.
1045 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1046 for xxx in sh bash ksh pdksh ash; do
1047 for p in $pth; do
1048 try="$try ${p}/${xxx}"
1049 done
1050 done
1051 for xxx in $try; do
1052 if test -f "$xxx"; then
1053 sh="$xxx";
8ff267be 1054 break
1055 elif test -f "$xxx.exe"; then
1056 sh="$xxx";
8ff267be 1057 break
1058 fi
1059 done
1060 fi
1061 ;;
1062esac
1063
1064case "$sh" in
1065'') cat <<EOM >&2
1066$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1067
8ff267be 1068Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1069Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1070we'll try to straighten this all out.
8ff267be 1071EOM
1072 exit 1
1073 ;;
1074esac
1075
760ac839 1076: see if sh knows # comments
8ff267be 1077if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1078 shsharp=true
1079 spitshell=cat
760ac839
LW
1080 xcat=/bin/cat
1081 test -f $xcat || xcat=/usr/bin/cat
1082 echo "#!$xcat" >try
1083 $eunicefix try
1084 chmod +x try
1085 ./try > today
1086 if test -s today; then
760ac839
LW
1087 sharpbang='#!'
1088 else
1089 echo "#! $xcat" > try
1090 $eunicefix try
1091 chmod +x try
1092 ./try > today
1093 if test -s today; then
760ac839
LW
1094 sharpbang='#! '
1095 else
760ac839
LW
1096 sharpbang=': use '
1097 fi
1098 fi
1099else
dfe9444c 1100 echo " "
8ff267be 1101 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1102 shsharp=false
1103 cd ..
1104 echo "exec grep -v '^[ ]*#'" >spitshell
1105 chmod +x spitshell
1106 $eunicefix spitshell
1107 spitshell=`pwd`/spitshell
1108 cd UU
1109 echo "I presume that if # doesn't work, #! won't work either!"
1110 sharpbang=': use '
1111fi
1112rm -f try today
1113
1114: figure out how to guarantee sh startup
8ff267be 1115case "$startsh" in
1116'') startsh=${sharpbang}${sh} ;;
1117*)
760ac839 1118esac
760ac839
LW
1119cat >try <<EOSS
1120$startsh
1121set abc
1122test "$?abc" != 1
1123EOSS
1124
1125chmod +x try
1126$eunicefix try
1127if ./try; then
8ff267be 1128 : echo "Yup, it does."
760ac839 1129else
dfe9444c
AD
1130 echo "Hmm... '$startsh' does not guarantee sh startup..."
1131 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1132fi
1133rm -f try
1134
aebf16e7
AD
1135
1136: Save command line options in file UU/cmdline.opt for later use in
1137: generating config.sh.
1138cat > cmdline.opt <<EOSH
1139# Configure command line arguments.
1140config_arg0='$0'
1141config_args='$*'
1142config_argc=$#
1143EOSH
1144argn=1
1145for arg in "$@"; do
1146 cat >>cmdline.opt <<EOSH
1147config_arg$argn='$arg'
1148EOSH
1149 argn=`expr $argn + 1`
1150done
1151
2304df62
AD
1152: produce awk script to parse command line options
1153cat >options.awk <<'EOF'
1154BEGIN {
02e93a22 1155 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1156
1157 len = length(optstr);
1158 for (i = 1; i <= len; i++) {
1159 c = substr(optstr, i, 1);
1160 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1161 if (a == ":") {
1162 arg[c] = 1;
1163 i++;
1164 }
1165 opt[c] = 1;
1166 }
1167}
1168{
1169 expect = 0;
1170 str = $0;
1171 if (substr(str, 1, 1) != "-") {
1172 printf("'%s'\n", str);
1173 next;
1174 }
1175 len = length($0);
1176 for (i = 2; i <= len; i++) {
1177 c = substr(str, i, 1);
1178 if (!opt[c]) {
1179 printf("-%s\n", substr(str, i));
1180 next;
1181 }
1182 printf("-%s\n", c);
1183 if (arg[c]) {
1184 if (i < len)
1185 printf("'%s'\n", substr(str, i + 1));
1186 else
1187 expect = 1;
1188 next;
1189 }
1190 }
1191}
1192END {
1193 if (expect)
1194 print "?";
1195}
1196EOF
1197
1198: process the command line options
4633a7c4
LW
1199set X `for arg in "$@"; do echo "X$arg"; done |
1200 sed -e s/X// | awk -f options.awk`
2304df62
AD
1201eval "set $*"
1202shift
1203rm -f options.awk
1204
1205: set up default values
1206fastread=''
1207reuseval=false
1208config_sh=''
1209alldone=''
1210error=''
1211silent=''
1212extractsh=''
ecfc5424 1213override=''
16d20bd9 1214knowitall=''
02e93a22 1215rm -f optdef.sh posthint.sh
28757baa 1216cat >optdef.sh <<EOS
1217$startsh
1218EOS
2304df62 1219
dfe9444c 1220
2304df62
AD
1221: option parsing
1222while test $# -gt 0; do
1223 case "$1" in
1224 -d) shift; fastread=yes;;
1225 -e) shift; alldone=cont;;
1226 -f)
1227 shift
1228 cd ..
1229 if test -r "$1"; then
1230 config_sh="$1"
1231 else
a0d0e21e 1232 echo "$me: cannot read config file $1." >&2
2304df62
AD
1233 error=true
1234 fi
1235 cd UU
1236 shift;;
1237 -h) shift; error=true;;
1238 -r) shift; reuseval=true;;
dfe9444c 1239 -s) shift; silent=true; realsilent=true;;
2304df62 1240 -E) shift; alldone=exit;;
16d20bd9 1241 -K) shift; knowitall=true;;
ecfc5424 1242 -O) shift; override=true;;
dfe9444c 1243 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1244 -D)
1245 shift
1246 case "$1" in
1247 *=)
1248 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1249 echo "$me: ignoring -D $1" >&2
1250 ;;
ecfc5424 1251 *=*) echo "$1" | \
1aef975c
AD
1252 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1253 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1254 esac
1255 shift
1256 ;;
1257 -U)
1258 shift
1259 case "$1" in
1aef975c 1260 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1261 *=*)
1262 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1263 echo "$me: ignoring -U $1" >&2
1264 ;;
1aef975c 1265 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1266 esac
1267 shift
1268 ;;
02e93a22
JH
1269 -A)
1270 shift
1271 xxx=''
1272 yyy="$1"
02e93a22 1273 zzz=''
5f83a3e9 1274 uuu=undef
02e93a22 1275 case "$yyy" in
5f83a3e9
JH
1276 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1277 case "$zzz" in
1278 *:*) zzz='' ;;
1279 *) xxx=append
1280 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1281 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1282 esac
1283 ;;
1284 esac
1285 case "$xxx" in
1286 '') case "$yyy" in
1287 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1288 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1289 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1290 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1291 *) xxx=`echo $yyy|sed 's!:.*!!'`
1292 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1293 esac
1294 ;;
1295 esac
02e93a22
JH
1296 case "$xxx" in
1297 append)
5f83a3e9 1298 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1299 clear)
5f83a3e9 1300 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1301 define)
1302 case "$zzz" in
1303 '') zzz=define ;;
1304 esac
5f83a3e9 1305 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1306 eval)
5f83a3e9 1307 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1308 prepend)
5f83a3e9 1309 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1310 undef)
1311 case "$zzz" in
1312 '') zzz="$uuu" ;;
1313 esac
5f83a3e9
JH
1314 echo "$yyy=$zzz" >> posthint.sh ;;
1315 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1316 esac
bde6b06b 1317 shift
02e93a22 1318 ;;
dfe9444c 1319 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1320 exit 0;;
2304df62 1321 --) break;;
a0d0e21e 1322 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1323 *) break;;
1324 esac
1325done
1326
1327case "$error" in
1328true)
1329 cat >&2 <<EOM
2afac517 1330Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1331 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1332 -d : use defaults for all answers.
1333 -e : go on without questioning past the production of config.sh.
1334 -f : specify an alternate default configuration file.
1335 -h : print this help message and exit (with an error status).
1336 -r : reuse C symbols value if possible (skips costly nm extraction).
1337 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1338 -D : define symbol to have some value:
1339 -D symbol symbol gets the value 'define'
1340 -D symbol=value symbol gets the value 'value'
2304df62 1341 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1342 -K : do not use unless you know what you are doing.
ecfc5424 1343 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1344 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1345 -U : undefine symbol:
1346 -U symbol symbol gets the value 'undef'
1347 -U symbol= symbol gets completely empty
02e93a22 1348 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1349 -A symbol=value append " "value to symbol
02e93a22
JH
1350 -A append:symbol=value append value to symbol
1351 -A define:symbol=value define symbol to have value
02e93a22
JH
1352 -A clear:symbol define symbol to be ''
1353 -A define:symbol define symbol to be 'define'
1354 -A eval:symbol=value define symbol to be eval of value
1355 -A prepend:symbol=value prepend value to symbol
1356 -A undef:symbol define symbol to be 'undef'
1357 -A undef:symbol= define symbol to be ''
2304df62
AD
1358 -V : print version number and exit (with a zero status).
1359EOM
1360 exit 1
1361 ;;
1362esac
1363
dfe9444c
AD
1364: Sanity checks
1365case "$fastread$alldone" in
1366yescont|yesexit) ;;
1367*)
aaeb8e51
GS
1368 case "$extractsh" in
1369 true) ;;
1370 *)
1371 if test ! -t 0; then
1372 echo "Say 'sh Configure', not 'sh <Configure'"
1373 exit 1
1374 fi
1375 ;;
1376 esac
dfe9444c
AD
1377 ;;
1378esac
1379
2304df62
AD
1380exec 4>&1
1381case "$silent" in
1382true) exec 1>/dev/null;;
1383esac
1384
ecfc5424 1385: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1386touch optdef.sh
1387. ./optdef.sh
02e93a22
JH
1388: create the posthint manipulation script and leave the file out there...
1389touch posthint.sh
a0d0e21e 1390
2304df62 1391: set package name
85e6fe83 1392package=perl5
b4eb6b3d
JH
1393first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1394last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1395case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1396ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1397*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1398esac
2304df62 1399
2304df62
AD
1400: Some greps do not return status, grrr.
1401echo "grimblepritz" >grimble
1402if grep blurfldyick grimble >/dev/null 2>&1 ; then
1403 contains=contains
1404elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1405 contains=grep
1406else
1407 contains=contains
1408fi
1409rm -f grimble
1410: the following should work in any shell
1411case "$contains" in
1412contains*)
1413 echo " "
1414 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1415 cat >contains <<'EOSS'
1416grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1417EOSS
1418chmod +x contains
1419esac
1420
dfe9444c
AD
1421: Find the path to the source tree
1422case "$src" in
1423'') case "$0" in
b233458b
JH
1424 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1425 case "$src" in
1426 /*) ;;
1427 *) src=`cd ../$src && pwd` ;;
1428 esac
1429 ;;
dfe9444c
AD
1430 *) src='.';;
1431 esac;;
1432esac
1433case "$src" in
1434'') src=/
1435 rsrc=/
1436 ;;
1437/*) rsrc="$src";;
1438*) rsrc="../$src";;
1439esac
1440if test -f $rsrc/Configure && \
1441 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1442then
1443 : found it, so we are ok.
1444else
1445 rsrc=''
1446 for src in . .. ../.. ../../.. ../../../..; do
1447 if test -f ../$src/Configure && \
1448 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1449 then
1450 rsrc=../$src
1451 break
1452 fi
1453 done
1454fi
1455case "$rsrc" in
1456'')
1457 cat <<EOM >&4
1458
1459Sorry, I can't seem to locate the source dir for $package. Please start
1460Configure with an explicit path -- i.e. /some/path/Configure.
1461
1462EOM
1463 exit 1
1464 ;;
1465../.) rsrc='..';;
1466*)
1467 echo " "
1468 echo "Sources for $package found in \"$src\"." >&4
1469 ;;
1470esac
1471
1472: script used to extract .SH files with variable substitutions
1473cat >extract <<'EOS'
2000072c 1474CONFIGDOTSH=true
dfe9444c
AD
1475echo "Doing variable substitutions on .SH files..."
1476if test -f $src/MANIFEST; then
f7ab18e9 1477 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1478else
1479 echo "(Looking for .SH files under the source directory.)"
1480 set x `(cd $src; find . -name "*.SH" -print)`
1481fi
1482shift
1483case $# in
14840) set x `(cd $src; echo *.SH)`; shift;;
1485esac
1486if test ! -f $src/$1; then
1487 shift
1488fi
1489mkdir_p='
1490name=$1;
1491create="";
1492while test $name; do
1493 if test ! -d "$name"; then
1494 create="$name $create";
1495 name=`echo $name | sed -e "s|^[^/]*$||"`;
1496 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1497 else
1498 name="";
1499 fi;
1500done;
1501for file in $create; do
1502 mkdir $file;
1503done
1504'
1505for file in $*; do
1506 case "$src" in
1507 ".")
1508 case "$file" in
1509 */*)
1510 dir=`expr X$file : 'X\(.*\)/'`
1511 file=`expr X$file : 'X.*/\(.*\)'`
1512 (cd $dir && . ./$file)
1513 ;;
1514 *)
1515 . ./$file
1516 ;;
1517 esac
1518 ;;
1519 *)
1520 case "$file" in
1521 */*)
1522 dir=`expr X$file : 'X\(.*\)/'`
1523 file=`expr X$file : 'X.*/\(.*\)'`
1524 (set x $dir; shift; eval $mkdir_p)
1525 sh <$src/$dir/$file
1526 ;;
1527 *)
1528 sh <$src/$file
1529 ;;
1530 esac
1531 ;;
1532 esac
1533done
1534if test -f $src/config_h.SH; then
1535 if test ! -f config.h; then
1536 : oops, they left it out of MANIFEST, probably, so do it anyway.
1537 . $src/config_h.SH
1538 fi
1539fi
1540EOS
1541
1542: extract files and exit if asked to do so
1543case "$extractsh" in
1544true)
1545 case "$realsilent" in
1546 true) ;;
1547 *) exec 1>&4;;
1548 esac
1549 case "$config_sh" in
1550 '') config_sh='config.sh';;
1551 esac
1552 echo " "
1553 echo "Fetching answers from $config_sh..."
1554 cd ..
1555 . $config_sh
1556 test "$override" && . ./optdef.sh
1557 echo " "
1558 . UU/extract
1559 rm -rf UU
1560 echo "Done."
1561 exit 0
1562 ;;
1563esac
1564
1565: Eunice requires " " instead of "", can you believe it
1566echo " "
1567: Here we go...
1568echo "Beginning of configuration questions for $package."
1569
1570trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1571
2304df62
AD
1572: first determine how to suppress newline on echo command
1573echo " "
1574echo "Checking echo to see how to suppress newlines..."
1575(echo "hi there\c" ; echo " ") >.echotmp
1576if $contains c .echotmp >/dev/null 2>&1 ; then
1577 echo "...using -n."
1578 n='-n'
1579 c=''
1580else
1581 cat <<'EOM'
1582...using \c
1583EOM
1584 n=''
1585 c='\c'
1586fi
1587echo $n "The star should be here-->$c"
1588echo '*'
1589rm -f .echotmp
1590
1591: Now test for existence of everything in MANIFEST
1592echo " "
dfe9444c 1593if test -f $rsrc/MANIFEST; then
2304df62 1594 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1595 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1596 rm -f missing
dfe9444c 1597 tmppwd=`pwd`
2304df62 1598 for filelist in x??; do
dfe9444c 1599 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1600 done
1601 if test -s missing; then
1602 cat missing >&4
1603 cat >&4 <<'EOM'
1604
1605THIS PACKAGE SEEMS TO BE INCOMPLETE.
1606
1607You have the option of continuing the configuration process, despite the
1608distinct possibility that your kit is damaged, by typing 'y'es. If you
1609do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1610and contact the author (perlbug@perl.org).
2304df62
AD
1611
1612EOM
1613 echo $n "Continue? [n] $c" >&4
1614 read ans
1615 case "$ans" in
1616 y*)
1617 echo "Continuing..." >&4
1618 rm -f missing
1619 ;;
1620 *)
1621 echo "ABORTING..." >&4
1622 kill $$
1623 ;;
1624 esac
1625 else
dfe9444c 1626 echo "Looks good..."
2304df62
AD
1627 fi
1628else
1629 echo "There is no MANIFEST file. I hope your kit is complete !"
1630fi
1631rm -f missing x??
1632
5ff3f7a4
GS
1633echo " "
1634: Find the appropriate value for a newline for tr
1635if test -n "$DJGPP"; then
1636 trnl='\012'
1637fi
1638if test X"$trnl" = X; then
1639 case "`echo foo|tr '\n' x 2>/dev/null`" in
1640 foox) trnl='\n' ;;
1641 esac
1642fi
1643if test X"$trnl" = X; then
1644 case "`echo foo|tr '\012' x 2>/dev/null`" in
1645 foox) trnl='\012' ;;
1646 esac
1647fi
1648if test X"$trnl" = X; then
1649 cat <<EOM >&2
1650
1651$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1652
1653EOM
1654 exit 1
1655fi
1656
2304df62
AD
1657: compute the number of columns on the terminal for proper question formatting
1658case "$COLUMNS" in
1659'') COLUMNS='80';;
1660esac
1661
1662: set up the echo used in my read
1663myecho="case \"\$xxxm\" in
1664'') echo $n \"\$rp $c\" >&4;;
1665*) case \"\$rp\" in
1666 '') echo $n \"[\$xxxm] $c\";;
1667 *)
1668 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1669 echo \"\$rp\" >&4
1670 echo $n \"[\$xxxm] $c\" >&4
1671 else
1672 echo $n \"\$rp [\$xxxm] $c\" >&4
1673 fi
1674 ;;
1675 esac;;
1676esac"
1677
1678: now set up to do reads with possible shell escape and default assignment
1679cat <<EOSC >myread
28757baa 1680$startsh
2304df62
AD
1681xxxm=\$dflt
1682$myecho
1683ans='!'
1684case "\$fastread" in
1685yes) case "\$dflt" in
1686 '') ;;
1687 *) ans='';
1688 case "\$silent-\$rp" in
1689 true-) ;;
1690 *) echo " " >&4;;
1691 esac;;
1692 esac;;
1693*) case "\$silent" in
1694 true) case "\$rp" in
1695 '') ans='';;
1696 esac;;
1697 esac;;
1698esac
1699while expr "X\$ans" : "X!" >/dev/null; do
1700 read answ
1701 set x \$xxxm
1702 shift
dfe9444c 1703 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1704 case "\$answ" in
dfe9444c
AD
1705 "!")
1706 sh 1>&4
1707 echo " "
1708 $myecho
1709 ;;
1710 !*)
1711 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1712 shift
1713 sh 1>&4 -c "\$*"
1714 echo " "
1715 $myecho
1716 ;;
2304df62
AD
1717 "\$ans")
1718 case "\$ans" in
ecfc5424
AD
1719 \\&*)
1720 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1721 shift
1722 case "\$1" in
1723 -d)
1724 fastread=yes
40a7a20a 1725 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1726 ;;
1727 -*)
40a7a20a 1728 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1729 ;;
1730 esac
1731 $myecho
1732 ans=!
1733 ;;
2304df62
AD
1734 esac;;
1735 *)
1736 case "\$aok" in
1737 y)
1738 echo "*** Substitution done -- please confirm."
1739 xxxm="\$ans"
c9795ab7 1740 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1741 xxxm="\$ans"
1742 ans=!
1743 ;;
1744 *)
1745 echo "*** Error -- try again."
1746 ans=!
1747 ;;
1748 esac
1749 $myecho
1750 ;;
1751 esac
1752 case "\$ans\$xxxm\$nostick" in
1753 '')
1754 ans=!
1755 $myecho
1756 ;;
1757 esac
1758done
1759case "\$ans" in
1760'') ans="\$xxxm";;
1761esac
1762EOSC
1763
1764: create .config dir to save info across Configure sessions
1765test -d ../.config || mkdir ../.config
1766cat >../.config/README <<EOF
1767This directory created by Configure to save information that should
dfe9444c 1768persist across sessions for $package.
2304df62
AD
1769
1770You may safely delete it if you wish.
1771EOF
1772
9507cadf 1773xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1774case "$usedevel" in
0107c034 1775$define|true|[yY]*) ;;
9507cadf 1776*) case "$xversion" in
0107c034
JH
1777 *[13579])
1778 cat >&4 <<EOH
1779*** WHOA THERE!!! ***
1780
1781 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1782 The version of this $package distribution is $xversion, that is, odd,
1783 (as opposed to even) and that signifies a development release.
3d5d58b1 1784 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1785
1786 Do ***NOT*** install this into production use.
1787 Data corruption and crashes are possible.
1788
1789 It is most seriously suggested that you do not continue any further
1790 unless you want to help in developing and debugging Perl.
1791
1792EOH
1793 rp='Do you really want to continue?'
1794 dflt='n'
1795 . ./myread
1796 case "$ans" in
1797 [yY]) echo >&4 "Okay, continuing." ;;
1798 *) echo >&4 "Okay, bye."
1799 exit 1
1800 ;;
1801 esac
1802 ;;
1803 esac
1804 ;;
1805esac
1806
2304df62
AD
1807: general instructions
1808needman=true
1809firsttime=true
760ac839 1810user=`(logname) 2>/dev/null`
dfe9444c
AD
1811case "$user" in
1812'') user=`whoami 2>&1`;;
760ac839 1813esac
2304df62
AD
1814if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1815 firsttime=false
1816 echo " "
1817 rp='Would you like to see the instructions?'
1818 dflt=n
1819 . ./myread
1820 case "$ans" in
1821 [yY]*) ;;
1822 *) needman=false;;
1823 esac
1824fi
1825if $needman; then
1826 cat <<EOH
4e2a5f63 1827
2304df62 1828This installation shell script will examine your system and ask you questions
a0d0e21e 1829to determine how the perl5 package should be installed. If you get
2304df62
AD
1830stuck on a question, you may use a ! shell escape to start a subshell or
1831execute a command. Many of the questions will have default answers in square
1832brackets; typing carriage return will give you the default.
1833
1834On some of the questions which ask for file or directory names you are allowed
1835to use the ~name construct to specify the login directory belonging to "name",
1836even if you don't have a shell which knows about that. Questions where this is
1837allowed will be marked "(~name ok)".
1838
1839EOH
1840 rp=''
1841 dflt='Type carriage return to continue'
1842 . ./myread
1843 cat <<'EOH'
1844
1845The prompter used in this script allows you to use shell variables and
1846backticks in your answers. You may use $1, $2, etc... to refer to the words
1847in the default answer, as if the default line was a set of arguments given to a
1848script shell. This means you may also use $* to repeat the whole default line,
1849so you do not have to re-type everything to add something to the default.
1850
1851Everytime there is a substitution, you will have to confirm. If there is an
1852error (e.g. an unmatched backtick), the default answer will remain unchanged
1853and you will be prompted again.
1854
1855If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1856the questions and use the computed defaults (or the previous answers if there
1857was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1858You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1859on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1860
1861EOH
1862 . ./myread
1863 cat <<EOH
1864
1865Much effort has been expended to ensure that this shell script will run on any
1866Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1867Configure and run it again. If you can't run Configure for some reason,
1868you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1869have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1870
1871This installation script affects things in two ways:
1872
18731) it may do direct variable substitutions on some of the files included
1874 in this kit.
18752) it builds a config.h file for inclusion in C programs. You may edit
1876 any of these files as the need arises after running this script.
1877
1878If you make a mistake on a question, there is no easy way to back up to it
1879currently. The easiest thing to do is to edit config.sh and rerun all the SH
1880files. Configure will offer to let you do this before it runs the SH files.
1881
1882EOH
1883 dflt='Type carriage return to continue'
1884 . ./myread
1885 case "$firsttime" in
1886 true) echo $user >>../.config/instruct;;
1887 esac
1888fi
1889
2304df62
AD
1890: find out where common programs are
1891echo " "
1892echo "Locating common programs..." >&4
1893cat <<EOSC >loc
1894$startsh
1895case \$# in
18960) exit 1;;
1897esac
1898thing=\$1
1899shift
1900dflt=\$1
1901shift
1902for dir in \$*; do
1903 case "\$thing" in
1904 .)
1905 if test -d \$dir/\$thing; then
1906 echo \$dir
1907 exit 0
1908 fi
1909 ;;
1910 *)
a0d0e21e 1911 for thisthing in \$dir/\$thing; do
ecfc5424 1912 : just loop through to pick last item
a0d0e21e 1913 done
25f94b33 1914 if test -f \$thisthing; then
a0d0e21e 1915 echo \$thisthing
2304df62
AD
1916 exit 0
1917 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1918 if test -n "$DJGPP"; then
1919 echo \$dir/\$thing.exe
1920 else
1921 : on Eunice apparently
1922 echo \$dir/\$thing
1923 fi
2304df62
AD
1924 exit 0
1925 fi
1926 ;;
1927 esac
1928done
1929echo \$dflt
1930exit 1
1931EOSC
1932chmod +x loc
1933$eunicefix loc
1934loclist="
1935awk
1936cat
b4eb6b3d
JH
1937comm
1938cp
2304df62
AD
1939echo
1940expr
1941grep
a0d0e21e 1942ls
dfe9444c 1943make
b4eb6b3d 1944mkdir
2304df62
AD
1945rm
1946sed
b4eb6b3d 1947sort
85e6fe83 1948touch
2304df62 1949tr
b4eb6b3d 1950uniq
2304df62
AD
1951"
1952trylist="
1953Mcc
dfe9444c 1954ar
b4eb6b3d 1955byacc
2304df62 1956cpp
b4eb6b3d 1957csh
2304df62
AD
1958date
1959egrep
8ff267be 1960gzip
b4eb6b3d 1961less
8ff267be 1962ln
b4eb6b3d 1963more
693762b4 1964nm
b4eb6b3d
JH
1965nroff
1966pg
2304df62
AD
1967test
1968uname
8ff267be 1969zip
2304df62 1970"
8e07c86e 1971pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1972pth="$pth /lib /usr/lib"
1973for file in $loclist; do
dfe9444c
AD
1974 eval xxx=\$$file
1975 case "$xxx" in
1976 /*|?:[\\/]*)
1977 if test -f "$xxx"; then
1978 : ok
1979 else
1980 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1981 xxx=`./loc $file $file $pth`
1982 fi
1983 ;;
1984 '') xxx=`./loc $file $file $pth`;;
1985 *) xxx=`./loc $xxx $xxx $pth`;;
1986 esac
2304df62
AD
1987 eval $file=$xxx
1988 eval _$file=$xxx
1989 case "$xxx" in
1990 /*)
1991 echo $file is in $xxx.
1992 ;;
8e07c86e
AD
1993 ?:[\\/]*)
1994 echo $file is in $xxx.
1995 ;;
2304df62 1996 *)
25f94b33
AD
1997 echo "I don't know where '$file' is, and my life depends on it." >&4
1998 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1999 exit 1
2304df62
AD
2000 ;;
2001 esac
2002done
2003echo " "
2004echo "Don't worry if any of the following aren't found..."
2005say=offhand
2006for file in $trylist; do
dfe9444c
AD
2007 eval xxx=\$$file
2008 case "$xxx" in
2009 /*|?:[\\/]*)
2010 if test -f "$xxx"; then
2011 : ok
2012 else
2013 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2014 xxx=`./loc $file $file $pth`
2015 fi
2016 ;;
2017 '') xxx=`./loc $file $file $pth`;;
2018 *) xxx=`./loc $xxx $xxx $pth`;;
2019 esac
2304df62
AD
2020 eval $file=$xxx
2021 eval _$file=$xxx
2022 case "$xxx" in
2023 /*)
2024 echo $file is in $xxx.
2025 ;;
8e07c86e
AD
2026 ?:[\\/]*)
2027 echo $file is in $xxx.
2028 ;;
2304df62
AD
2029 *)
2030 echo "I don't see $file out there, $say."
2031 say=either
2032 ;;
2033 esac
2034done
2035case "$egrep" in
2036egrep)
2037 echo "Substituting grep for egrep."
2038 egrep=$grep
2039 ;;
2040esac
8ff267be 2041case "$ln" in
2042ln)
2043 echo "Substituting cp for ln."
2044 ln=$cp
2045 ;;
2046esac
2304df62
AD
2047case "$test" in
2048test)
2049 echo "Hopefully test is built into your sh."
2050 ;;
2051*)
ecfc5424 2052 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
2053 echo "Using the test built into your sh."
2054 test=test
2055 _test=test
2056 fi
2057 ;;
2058esac
2059case "$echo" in
2060echo)
2061 echo "Hopefully echo is built into your sh."
2062 ;;
2063'') ;;
2064*)
2065 echo " "
2066echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2067 $echo $n "hi there$c" >foo1
2068 echo $n "hi there$c" >foo2
2069 if cmp foo1 foo2 >/dev/null 2>&1; then
2070 echo "They are compatible. In fact, they may be identical."
2071 else
2072 case "$n" in
2073 '-n') n='' c='\c';;
2074 *) n='-n' c='';;
2075 esac
2076 cat <<FOO
2077They are not compatible! You are probably running ksh on a non-USG system.
2078I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2079have echo built in and we may have to run some Bourne shell scripts. That
2080means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2081
2082FOO
2083 $echo $n "The star should be here-->$c"
2084 $echo "*"
2085 fi
2086 $rm -f foo1 foo2
2087 ;;
2088esac
2089
2573c5f9
JH
2090cat <<EOS >checkcc
2091$startsh
2092EOS
2093cat <<'EOSC' >>checkcc
2094case "$cc" in
2095'') ;;
2096*) $rm -f try try.*
2097 $cat >try.c <<EOM
2098int main(int argc, char *argv[]) {
2099 return 0;
2100}
2101EOM
7a282f6d 2102 if $cc -o try $ccflags try.c; then
2573c5f9
JH
2103 :
2104 else
2105 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2106 despair=yes
2107 trygcc=yes
2108 case "$cc" in
2109 *gcc*) trygcc=no ;;
2110 esac
2111 case "`$cc -v -c try.c 2>&1`" in
2112 *gcc*) trygcc=no ;;
2113 esac
2114 if $test X"$trygcc" = Xyes; then
2115 if gcc -o try -c try.c; then
2116 echo " "
2117 echo "You seem to have a working gcc, though." >&4
2118 rp="Would you like to use it?"
2119 dflt=y
2120 if $test -f myread; then
2121 . ./myread
2122 else
2123 if $test -f UU/myread; then
2124 . ./UU/myread
2125 else
2126 echo "Cannot find myread, sorry. Aborting." >&2
2127 exit 1
2128 fi
2129 fi
2130 case "$ans" in
e723fc21 2131 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2132 esac
2133 fi
2134 fi
2135 if $test X"$despair" = Xyes; then
5dd4fbdf
MB
2136 $cat >&4 <<EOM
2137You need to find a working C compiler.
2138Either (purchase and) install the C compiler supplied by your OS vendor,
2139or for a free C compiler try http://gcc.gnu.org/
2140I cannot continue any further, aborting.
2141EOM
2573c5f9
JH
2142 exit 1
2143 fi
2144 fi
2145 $rm -f try try.*
2146 ;;
2147esac
2148EOSC
2149
a0d0e21e
LW
2150: determine whether symbolic links are supported
2151echo " "
2152$touch blurfl
2153if $ln -s blurfl sym > /dev/null 2>&1 ; then
2154 echo "Symbolic links are supported." >&4
2155 lns="$ln -s"
2156else
2157 echo "Symbolic links are NOT supported." >&4
2158 lns="$ln"
2159fi
2160$rm -f blurfl sym
2161
ecfc5424
AD
2162: see whether [:lower:] and [:upper:] are supported character classes
2163echo " "
ecfc5424
AD
2164case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2165ABYZ)
2166 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2167 up='[:upper:]'
2168 low='[:lower:]'
2169 ;;
28e8609d
JH
2170*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2171 # (0xc9 and 0xd1), therefore that is a nice testing point.
2172 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2173 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2174 ij) up='[A-Z]'
2175 low='[a-z]'
2176 ;;
2177 esac
2178 fi
2179 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2180 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2181 ij) up='A-Z'
2182 low='a-z'
2183 ;;
2184 esac
2185 fi
2186 if test "X$up" = X -o "X$low" = X; then
2187 case "`echo IJ | od -x 2>/dev/null`" in
2188 *C9D1*|*c9d1*)
2189 echo "Hey, this might be EBCDIC." >&4
2190 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2191 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2192 ij) up='[A-IJ-RS-Z]'
2193 low='[a-ij-rs-z]'
2194 ;;
2195 esac
2196 fi
2197 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2198 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2199 ij) up='A-IJ-RS-Z'
2200 low='a-ij-rs-z'
2201 ;;
2202 esac
2203 fi
2204 ;;
2205 esac
2206 fi
2207esac
3eaeeeae 2208case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2209ij)
2210 echo "Using $up and $low to convert case." >&4
2211 ;;
ecfc5424 2212*)
28e8609d
JH
2213 echo "I don't know how to translate letters from upper to lower case." >&4
2214 echo "Your tr is not acting any way I know of." >&4
2215 exit 1
2216 ;;
ecfc5424
AD
2217esac
2218: set up the translation script tr, must be called with ./tr of course
2219cat >tr <<EOSC
2220$startsh
2221case "\$1\$2" in
2222'[A-Z][a-z]') exec $tr '$up' '$low';;
2223'[a-z][A-Z]') exec $tr '$low' '$up';;
2224esac
2225exec $tr "\$@"
2226EOSC
2227chmod +x tr
2228$eunicefix tr
2229
2304df62
AD
2230: Try to determine whether config.sh was made on this system
2231case "$config_sh" in
2232'')
43999f95
JH
2233myuname=`$uname -a 2>/dev/null`
2234$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2235# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2236# because the A-Z/a-z are not consecutive.
a0d0e21e 2237myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2238 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2239newmyuname="$myuname"
2304df62 2240dflt=n
16d20bd9
AD
2241case "$knowitall" in
2242'')
2243 if test -f ../config.sh; then
2244 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2245 eval "`grep myuname= ../config.sh`"
2246 fi
2247 if test "X$myuname" = "X$newmyuname"; then
2248 dflt=y
2249 fi
2304df62 2250 fi
16d20bd9
AD
2251 ;;
2252*) dflt=y;;
2253esac
2304df62
AD
2254
2255: Get old answers from old config file if Configure was run on the
2256: same system, otherwise use the hints.
2257hint=default
2258cd ..
2259if test -f config.sh; then
16d20bd9
AD
2260 echo " "
2261 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2262 . UU/myread
2263 case "$ans" in
2264 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2265 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2266 tmp_n="$n"
2267 tmp_c="$c"
85cad39c 2268 tmp_sh="$sh"
2304df62
AD
2269 . ./config.sh
2270 cp config.sh UU
ecfc5424
AD
2271 n="$tmp_n"
2272 c="$tmp_c"
85cad39c 2273 : Older versions did not always set $sh. Catch re-use of such
2274 : an old config.sh.
2275 case "$sh" in
2276 '') sh="$tmp_sh" ;;
2277 esac
2304df62
AD
2278 hint=previous
2279 ;;
2280 esac
2281fi
2573c5f9 2282. ./UU/checkcc
2304df62
AD
2283if test ! -f config.sh; then
2284 $cat <<EOM
2285
4e2a5f63
AD
2286First time through, eh? I have some defaults handy for some systems
2287that need some extra help getting the Configure answers right:
2304df62
AD
2288
2289EOM
dfe9444c 2290 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2291 dflt=''
2292 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2293 : tests or hints, please send them to perlbug@perl.org
2304df62 2294 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2295 $test -f /irix && osname=irix
85e6fe83
LW
2296 $test -f /xenix && osname=sco_xenix
2297 $test -f /dynix && osname=dynix
2298 $test -f /dnix && osname=dnix
5f05dabc 2299 $test -f /lynx.os && osname=lynxos
2300 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2301 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2302 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2303 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2304 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2305 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2306 $test -d /usr/apollo/bin && osname=apollo
2307 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2308 $test -d /usr/include/minix && osname=minix
e060872b 2309 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2310 osname=machten
4633a7c4 2311 if $test -x /sbin/version; then
dfe9444c 2312 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2313 $sed -e 's/[A-Za-z]$//'`
2314 elif $test -x /usr/etc/version; then
dfe9444c 2315 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2316 $sed -e 's/[A-Za-z]$//'`
2317 else
2318 osvers="$2.$3"
2319 fi
2320 fi
aaacdc8b
GS
2321
2322 $test -f /sys/posix.dll &&
2323 $test -f /usr/bin/what &&
2324 set X `/usr/bin/what /sys/posix.dll` &&
2325 $test "$3" = UWIN &&
2326 osname=uwin &&
2327 osvers="$5"
2328
2304df62
AD
2329 if $test -f $uname; then
2330 set X $myuname
2331 shift
2332
2304df62 2333 case "$5" in
85e6fe83 2334 fps*) osname=fps ;;
2304df62
AD
2335 mips*)
2336 case "$4" in
85e6fe83
LW
2337 umips) osname=umips ;;
2338 *) osname=mips ;;
2304df62 2339 esac;;
85e6fe83
LW
2340 [23]100) osname=mips ;;
2341 next*) osname=next ;;
ecfc5424 2342 i386*)
c6912327
JH
2343 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2344 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2345 osname='sco'
2346 osvers=$tmp
2347 elif $test -f /etc/kconfig; then
ecfc5424 2348 osname=isc
bd628c73 2349 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2350 osvers=4
2351 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2352 osvers=3
2304df62 2353 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2354 osvers=2
ecfc5424
AD
2355 fi
2356 fi
2000072c 2357 tmp=''
ecfc5424 2358 ;;
c4f23d77
AD
2359 pc*)
2360 if test -n "$DJGPP"; then
2361 osname=dos
2362 osvers=djgpp
2363 fi
2364 ;;
2304df62
AD
2365 esac
2366
2367 case "$1" in
a0d0e21e
LW
2368 aix) osname=aix
2369 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2370 case "$tmp" in
1aef975c 2371 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2372 '<3240'|'<>3240') osvers=3.2.0 ;;
2373 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2374 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2375 *) osvers=$tmp;;
a0d0e21e
LW
2376 esac
2377 ;;
aaacdc8b
GS
2378 bsd386) osname=bsd386
2379 osvers=`$uname -r`
2380 ;;
2381 cygwin*) osname=cygwin
2382 osvers="$3"
2383 ;;
23f87696
SZ
2384 *dc.osx) osname=dcosx
2385 osvers="$3"
2386 ;;
a0d0e21e
LW
2387 dnix) osname=dnix
2388 osvers="$3"
2389 ;;
2390 domainos) osname=apollo
2391 osvers="$3"
2392 ;;
2393 dgux) osname=dgux
2394 osvers="$3"
2395 ;;
760ac839 2396 dynixptx*) osname=dynixptx
e58e581d 2397 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2398 ;;
a0d0e21e
LW
2399 freebsd) osname=freebsd
2400 osvers="$3" ;;
2401 genix) osname=genix ;;
2402 hp*) osname=hpux
bfb7748a 2403 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2404 ;;
a78b0d02 2405 irix*) osname=irix
a0d0e21e
LW
2406 case "$3" in
2407 4*) osvers=4 ;;
2408 5*) osvers=5 ;;
ecfc5424 2409 *) osvers="$3" ;;
a0d0e21e
LW
2410 esac
2411 ;;
2412 linux) osname=linux
2413 case "$3" in
a0d0e21e
LW
2414 *) osvers="$3" ;;
2415 esac
2416 ;;
28e8609d
JH
2417 MiNT) osname=mint
2418 ;;
2419 netbsd*) osname=netbsd
ecfc5424
AD
2420 osvers="$3"
2421 ;;
4e81affe
MM
2422 news-os) osvers="$3"
2423 case "$3" in
2424 4*) osname=newsos4 ;;
2425 *) osname=newsos ;;
2426 esac
2427 ;;
aaacdc8b
GS
2428 next*) osname=next ;;
2429 POSIX-BC | posix-bc ) osname=posix-bc
2430 osvers="$3"
a0d0e21e 2431 ;;
ae3afa4e
TH
2432 powerux | power_ux | powermax_os | powermaxos | \
2433 powerunix | power_unix) osname=powerux
2434 osvers="$3"
2435 ;;
aaacdc8b
GS
2436 qnx) osname=qnx
2437 osvers="$4"
2438 ;;
a0d0e21e
LW
2439 solaris) osname=solaris
2440 case "$3" in
2441 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2442 *) osvers="$3" ;;
a0d0e21e
LW
2443 esac
2444 ;;
85e6fe83
LW
2445 sunos) osname=sunos
2446 case "$3" in
85e6fe83
LW
2447 5*) osname=solaris
2448 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2449 *) osvers="$3" ;;
2304df62
AD
2450 esac
2451 ;;
a0d0e21e 2452 titanos) osname=titanos
85e6fe83 2453 case "$3" in
a0d0e21e
LW
2454 1*) osvers=1 ;;
2455 2*) osvers=2 ;;
2456 3*) osvers=3 ;;
2457 4*) osvers=4 ;;
ecfc5424 2458 *) osvers="$3" ;;
2304df62
AD
2459 esac
2460 ;;
85e6fe83 2461 ultrix) osname=ultrix
ecfc5424 2462 osvers="$3"
2304df62 2463 ;;
28757baa 2464 osf1|mls+) case "$5" in
fed7345c
AD
2465 alpha)
2466 osname=dec_osf
2aa76180
JH
2467 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2468 case "$osvers" in
2469 [1-9].[0-9]*) ;;
2470 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2471 esac
ecfc5424
AD
2472 ;;
2473 hp*) osname=hp_osf1 ;;
2474 mips) osname=mips_osf1 ;;
85e6fe83
LW
2475 esac
2476 ;;
0337d152
BG
2477 unixware) osname=svr5
2478 osvers="$4"
2479 ;;
2480 uts) osname=uts
a0d0e21e
LW
2481 osvers="$3"
2482 ;;
85e6fe83 2483 $2) case "$osname" in
2304df62 2484 *isc*) ;;
a0d0e21e 2485 *freebsd*) ;;
5f05dabc 2486 svr*)
a0d0e21e
LW
2487 : svr4.x or possibly later
2488 case "svr$3" in
2489 ${osname}*)
2490 osname=svr$3
2491 osvers=$4
2492 ;;
2493 esac
2494 case "$osname" in
2495 svr4.0)
2496 : Check for ESIX
2497 if test -f /stand/boot ; then
2498 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2499 if test -n "$INITPROG" -a -f "$INITPROG"; then
2500 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2501 if test -n "$isesix"; then
a0d0e21e
LW
2502 osname=esix4
2503 fi
2504 fi
2505 fi
2506 ;;
2507 esac
2508 ;;
2304df62 2509 *) if test -f /etc/systemid; then
a0d0e21e
LW
2510 osname=sco
2511 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2512 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2513 osvers=$1.$2.$3
c4f23d77 2514 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2515 osvers=$1.$2
c4f23d77 2516 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2517 osvers=$1
2304df62 2518 fi
a0d0e21e
LW
2519 else
2520 case "$osname" in
2521 '') : Still unknown. Probably a generic Sys V.
2522 osname="sysv"
2523 osvers="$3"
2524 ;;
2525 esac
2304df62
AD
2526 fi
2527 ;;
2528 esac
2529 ;;
a0d0e21e
LW
2530 *) case "$osname" in
2531 '') : Still unknown. Probably a generic BSD.
2532 osname="$1"
2533 osvers="$3"
2534 ;;
2535 esac
2536 ;;
2304df62
AD
2537 esac
2538 else
dfe9444c
AD
2539 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2540 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2541 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2542 osname=news_os
2304df62 2543 fi
dfe9444c 2544 $rm -f UU/kernel.what
8e07c86e
AD
2545 elif test -d c:/.; then
2546 set X $myuname
2547 osname=os2
2548 osvers="$5"
2304df62
AD
2549 fi
2550 fi
85e6fe83 2551
a0d0e21e
LW
2552 : Now look for a hint file osname_osvers, unless one has been
2553 : specified already.
2554 case "$hintfile" in
2555 ''|' ')
1e127011 2556 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2557 : Also try without trailing minor version numbers.
1e127011
DD
2558 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2559 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2560 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2561 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2562 case "$file" in
2563 '') dflt=none ;;
2564 *) case "$osvers" in
2565 '') dflt=$file
2566 ;;
dfe9444c 2567 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2568 dflt=$file
dfe9444c 2569 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2570 dflt=$xfile
dfe9444c 2571 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2572 dflt=$xxfile
dfe9444c 2573 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2574 dflt=$xxxfile
dfe9444c 2575 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2576 dflt=$xxxxfile
dfe9444c 2577 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2578 dflt="${osname}"
2579 else
2580 dflt=none
2581 fi
2582 ;;
2583 esac
85e6fe83
LW
2584 ;;
2585 esac
4e2a5f63
AD
2586 if $test -f Policy.sh ; then
2587 case "$dflt" in
2588 *Policy*) ;;
2589 none) dflt="Policy" ;;
2590 *) dflt="Policy $dflt" ;;
2591 esac
2592 fi
85e6fe83 2593 ;;
a0d0e21e 2594 *)
ecfc5424 2595 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2596 ;;
2304df62 2597 esac
1aef975c 2598
4e2a5f63
AD
2599 if $test -f Policy.sh ; then
2600 $cat <<EOM
2601
2602There's also a Policy hint file available, which should make the
2603site-specific (policy) questions easier to answer.
2604EOM
2605
2606 fi
2607
2304df62
AD
2608 $cat <<EOM
2609
2610You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2611A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2612is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2613
2614EOM
4e2a5f63 2615
2304df62 2616 rp="Which of these apply, if any?"
dfe9444c 2617 . UU/myread
85e6fe83
LW
2618 tans=$ans
2619 for file in $tans; do
4e2a5f63
AD
2620 if $test X$file = XPolicy -a -f Policy.sh; then
2621 . Policy.sh
2622 $cat Policy.sh >> UU/config.sh
2623 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2624 . $src/hints/$file.sh
2625 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2626 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2627 : nothing
2628 else
85e6fe83
LW
2629 : Give one chance to correct a possible typo.
2630 echo "$file.sh does not exist"
2631 dflt=$file
2632 rp="hint to use instead?"
dfe9444c 2633 . UU/myread
85e6fe83 2634 for file in $ans; do
dfe9444c
AD
2635 if $test -f "$src/hints/$file.sh"; then
2636 . $src/hints/$file.sh
2637 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2638 elif $test X$ans = X -o X$ans = Xnone ; then
2639 : nothing
2640 else
2641 echo "$file.sh does not exist -- ignored."
2642 fi
2643 done
2304df62
AD
2644 fi
2645 done
85e6fe83 2646
2304df62 2647 hint=recommended
85e6fe83 2648 : Remember our hint file for later.
dfe9444c 2649 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2650 hintfile="$file"
85e6fe83 2651 else
a0d0e21e 2652 hintfile=''
85e6fe83 2653 fi
2304df62
AD
2654fi
2655cd UU
2656;;
2657*)
2658 echo " "
2659 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2660 tmp_n="$n"
2661 tmp_c="$c"
2304df62
AD
2662 cd ..
2663 cp $config_sh config.sh 2>/dev/null
a78b0d02 2664 chmod +w config.sh
2304df62
AD
2665 . ./config.sh
2666 cd UU
2667 cp ../config.sh .
ecfc5424
AD
2668 n="$tmp_n"
2669 c="$tmp_c"
2304df62
AD
2670 hint=previous
2671 ;;
2672esac
1aef975c
AD
2673test "$override" && . ./optdef.sh
2674myuname="$newmyuname"
2304df62
AD
2675
2676: Restore computed paths
2677for file in $loclist $trylist; do
2678 eval $file="\$_$file"
2679done
2680
85e6fe83 2681cat << EOM
a0d0e21e 2682
85e6fe83 2683Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2684The default value is probably right if the name rings a bell. Otherwise,
2685since spelling matters for me, either accept the default or answer "none"
2686to leave it blank.
a0d0e21e 2687
85e6fe83 2688EOM
85e6fe83 2689case "$osname" in
a0d0e21e 2690 ''|' ')
85e6fe83 2691 case "$hintfile" in
a0d0e21e 2692 ''|' '|none) dflt=none ;;
ecfc5424 2693 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2694 esac
2695 ;;
2696 *) dflt="$osname" ;;
2697esac
2698rp="Operating system name?"
2699. ./myread
2700case "$ans" in
ecfc5424
AD
2701none) osname='' ;;
2702*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2703esac
8ff267be 2704echo " "
2705case "$osvers" in
2706 ''|' ')
2707 case "$hintfile" in
2708 ''|' '|none) dflt=none ;;
2709 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2710 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2711 case "$dflt" in
2712 ''|' ') dflt=none ;;
2713 esac
2714 ;;
2715 esac
2716 ;;
2717 *) dflt="$osvers" ;;
2718esac
2719rp="Operating system version?"
2720. ./myread
2721case "$ans" in
2722none) osvers='' ;;
2723*) osvers="$ans" ;;
2724esac
2725
02e93a22
JH
2726
2727. ./posthint.sh
2728
2304df62 2729: who configured the system
59b83a6f 2730cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2731cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2732case "$cf_by" in
2733"")
8ff267be 2734 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2735 case "$cf_by" in
2736 "") cf_by=unknown ;;
8ff267be 2737 esac ;;
2738esac
2304df62 2739
b4eb6b3d
JH
2740: set up the script used to warn in case of inconsistency
2741cat <<EOS >whoa
2742$startsh
2743EOS
2744cat <<'EOSC' >>whoa
2745dflt=y
2746echo " "
2747echo "*** WHOA THERE!!! ***" >&4
2748echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2749rp=" Keep the $hint value?"
2750. ./myread
2751case "$ans" in
2752y) td=$was; tu=$was;;
2753esac
2754EOSC
2755
2756: function used to set $1 to $val
2757setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2758case "$val$was" in
2759$define$undef) . ./whoa; eval "$var=\$td";;
2760$undef$define) . ./whoa; eval "$var=\$tu";;
2761*) eval "$var=$val";;
2762esac'
2763
2764case "$usethreads" in
2765$define|true|[yY]*) dflt='y';;
2766*) dflt='n';;
2767esac
2768cat <<EOM
2769
2770Perl can be built to take advantage of threads on some systems.
2771To do so, Configure can be run with -Dusethreads.
2772
2773Note that threading is a highly experimental feature, and
2774some known race conditions still remain. If you choose to try
2775it, be very sure to not actually deploy it for production
2776purposes. README.threads has more details, and is required
2777reading if you enable threads.
2778
2779If this doesn't make any sense to you, just accept the default '$dflt'.
2780EOM
2781rp='Build a threading Perl?'
2782. ./myread
2783case "$ans" in
2784y|Y) val="$define" ;;
2785*) val="$undef" ;;
2786esac
2787set usethreads
2788eval $setvar
2789
2790case "$usethreads" in
2791$define)
2792 $cat <<EOM
2793
2794As of 5.5.640, Perl has two different internal threading implementations,
2795the 5.005 version (5005threads) and an interpreter-based version
2796(ithreads) that has one interpreter per thread. Both are very
2797experimental. This arrangement exists to help developers work out
2798which one is better.
2799
2800If you're a casual user, you probably don't want interpreter-threads
2801at this time. There doesn't yet exist a way to create threads from
2802within Perl in this model, i.e., "use Thread;" will NOT work.
2803EOM
2804 : Default to ithreads unless overridden on command line or with
2805 : old config.sh
2806 dflt='y'
2807 case "$use5005threads" in
2808 $define|true|[yY]*) dflt='n';;
2809 esac
2810 case "$useithreads" in
2811 $undef|false|[nN]*) dflt='n';;
2812 esac
2813 rp='Use interpreter-based ithreads?'
2814 . ./myread
2815 case "$ans" in
2816 y|Y) val="$define" ;;
2817 *) val="$undef" ;;
2818 esac
2819 set useithreads
2820 eval $setvar
2821 : Now set use5005threads to the opposite value.
2822 case "$useithreads" in
2823 $define) val="$undef" ;;
2824 *) val="$define" ;;
2825 esac
2826 set use5005threads
2827 eval $setvar
2828 ;;
2829*)
2830 useithreads="$undef"
2831 use5005threads="$undef"
2832 ;;
2833esac
2834
2835case "$d_oldpthreads" in
2836'') : Configure tests would be welcome here. For now, assume undef.
2837 val="$undef" ;;
2838*) val="$d_oldpthreads" ;;
2839esac
2840set d_oldpthreads
2841eval $setvar
2842
2843
2844case "$usethreads" in
2845"$define"|true|[yY]*)
2846: Look for a hint-file generated 'call-back-unit'. If the
2847: user has specified that a threading perl is to be built,
2848: we may need to set or change some other defaults.
2849 if $test -f usethreads.cbu; then
2850 echo "Your platform has some specific hints for threaded builds, using them..."
2851 . ./usethreads.cbu
2852 else
2853 $cat <<EOM
2854(Your platform doesn't have any specific hints for threaded builds.
2855 Assuming POSIX threads, then.)
2856EOM
2857 fi
2858 ;;
2859esac
2860
2861cat <<EOM
2862
2863Perl can be built so that multiple Perl interpreters can coexist
2864within the same Perl executable.
2865EOM
2866
2867case "$useithreads" in
2868$define)
2869 cat <<EOM
2870This multiple interpreter support is required for interpreter-based threads.
2871EOM
2872 val="$define"
2873 ;;
2874*) case "$usemultiplicity" in
2875 $define|true|[yY]*) dflt='y';;
2876 *) dflt='n';;
2877 esac
2878 echo " "
2879 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2880 rp='Build Perl for multiplicity?'
2881 . ./myread
2882 case "$ans" in
2883 y|Y) val="$define" ;;
2884 *) val="$undef" ;;
2885 esac
2886 ;;
2887esac
2888set usemultiplicity
2889eval $setvar
2890
e5e20432
JH
2891: make some quick guesses about what we are up against
2892echo " "
2893$echo $n "Hmm... $c"
2894echo exit 1 >bsd
2895echo exit 1 >usg
2896echo exit 1 >v7
2897echo exit 1 >osf1
2898echo exit 1 >eunice
2899echo exit 1 >xenix
2900echo exit 1 >venix
2901echo exit 1 >os2
2902d_bsd="$undef"
2903$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2904if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2905then
2906 echo "Looks kind of like an OSF/1 system, but we'll see..."
2907 echo exit 0 >osf1
2908elif test `echo abc | tr a-z A-Z` = Abc ; then
2909 xxx=`./loc addbib blurfl $pth`
2910 if $test -f $xxx; then
2911 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2912 echo exit 0 >bsd
2913 echo exit 0 >usg
2914 else
2915 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2916 echo "Looks kind of like an extended USG system, but we'll see..."
2917 else
2918 echo "Looks kind of like a USG system, but we'll see..."
2919 fi
2920 echo exit 0 >usg
2921 fi
2922elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2923 echo "Looks kind of like a BSD system, but we'll see..."
2924 d_bsd="$define"
2925 echo exit 0 >bsd
2926else
2927 echo "Looks kind of like a Version 7 system, but we'll see..."
2928 echo exit 0 >v7
2929fi
2930case "$eunicefix" in
2931*unixtovms*)
2932 $cat <<'EOI'
2933There is, however, a strange, musty smell in the air that reminds me of
2934something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2935EOI
2936 echo exit 0 >eunice
2937 d_eunice="$define"
2938: it so happens the Eunice I know will not run shell scripts in Unix format
2939 ;;
2940*)
2941 echo " "
2942 echo "Congratulations. You aren't running Eunice."
2943 d_eunice="$undef"
2944 ;;
2945esac
2946: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
2947: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2948: semicolon as a patch separator
e5e20432
JH
2949case "$p_" in
2950:) ;;
2951*)
2952 $cat <<'EOI'
2953I have the feeling something is not exactly right, however...don't tell me...
2954lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 2955(Or you may be running DOS with DJGPP.)
e5e20432
JH
2956EOI
2957 echo exit 0 >os2
2958 ;;
2959esac
2960if test -f /xenix; then
2961 echo "Actually, this looks more like a XENIX system..."
2962 echo exit 0 >xenix
2963 d_xenix="$define"
2964else
2965 echo " "
2966 echo "It's not Xenix..."
2967 d_xenix="$undef"
2968fi
2969chmod +x xenix
2970$eunicefix xenix
2971if test -f /venix; then
2972 echo "Actually, this looks more like a VENIX system..."
2973 echo exit 0 >venix
2974else
2975 echo " "
2976 if ./xenix; then
2977 : null
2978 else
2979 echo "Nor is it Venix..."
2980 fi
2981fi
2982chmod +x bsd usg v7 osf1 eunice xenix venix os2
2983$eunicefix bsd usg v7 osf1 eunice xenix venix os2
2984$rm -f foo
2985
5869b1f1
JH
2986case "$cc" in
2987'') dflt=cc;;
2988*) dflt="$cc";;
2989esac
2990rp="Use which C compiler?"
2991. ./myread
2992cc="$ans"
e5e20432
JH
2993: Look for a hint-file generated 'call-back-unit'. Now that the
2994: user has specified the compiler, we may need to set or change some
2995: other defaults.
2996if $test -f cc.cbu; then
2997 . ./cc.cbu
2998fi
2573c5f9 2999. ./checkcc
8a27cf78 3000
e5e20432
JH
3001echo " "
3002echo "Checking for GNU cc in disguise and/or its version number..." >&4
3003$cat >gccvers.c <<EOM
3004#include <stdio.h>
3005int main() {
3006#ifdef __GNUC__
3007#ifdef __VERSION__
3008 printf("%s\n", __VERSION__);
3009#else
3010 printf("%s\n", "1");
3011#endif
3012#endif
3013 exit(0);
3014}
3015EOM
7a282f6d 3016if $cc -o gccvers $ldflags gccvers.c; then
e5e20432
JH
3017 gccversion=`./gccvers`
3018 case "$gccversion" in
3019 '') echo "You are not using GNU cc." ;;
fc68435e 3020 *) echo "You are using GNU cc $gccversion."
e723fc21 3021 ccname=gcc
fc68435e 3022 ;;
e5e20432
JH
3023 esac
3024else
3025 echo " "
3026 echo "*** WHOA THERE!!! ***" >&4
3027 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3028 case "$knowitall" in
3029 '')
3030 echo " You'd better start hunting for one and let me know about it." >&4
3031 exit 1
3032 ;;
3033 esac
3034fi
3035$rm -f gccvers*
3036case "$gccversion" in
30371*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3038esac
5b463ca7
KS
3039case "$gccversion" in
3040'') gccosandvers='' ;;
10b4ebb5
JH
3041*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3042 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3043 gccshortvers=''
5b463ca7 3044 case "$gccosandvers" in
02903077
JH
3045 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3046 $osname$osvers) ;; # looking good
5b463ca7
KS
3047 $osname*) cat <<EOM >&4
3048
3049*** WHOA THERE!!! ***
3050
3051 Your gcc has not been compiled for the exact release of
3052 your operating system ($gccosandvers versus $osname$osvers).
3053
3054 In general it is a good idea to keep gcc synchronized with
3055 the operating system because otherwise serious problems
3056 may ensue when trying to compile software, like Perl.
3057
3058 I'm trying to be optimistic here, though, and will continue.
3059 If later during the configuration and build icky compilation
02903077
JH
3060 problems appear (headerfile conflicts being the most common
3061 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3062 your operating system release.
3063
3064EOM
3065 ;;
81575342 3066 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3067 esac
3068 ;;
3069esac
e723fc21
JH
3070case "$ccname" in
3071'') ccname="$cc" ;;
3072esac
e5e20432 3073
8a27cf78
JH
3074: see how we invoke the C preprocessor
3075echo " "
3076echo "Now, how can we feed standard input to your C preprocessor..." >&4
3077cat <<'EOT' >testcpp.c
3078#define ABC abc
3079#define XYZ xyz
3080ABC.XYZ
3081EOT
3082cd ..
3083if test ! -f cppstdin; then
3084 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3085 # AIX cc -E doesn't show the absolute headerfile
3086 # locations but we'll cheat by using the -M flag.
3087 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
3088 else
3089 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3090 fi
3091else
3092 echo "Keeping your $hint cppstdin wrapper."
3093fi
3094chmod 755 cppstdin
3095wrapper=`pwd`/cppstdin
3096ok='false'
3097cd UU
3098
3099if $test "X$cppstdin" != "X" && \
3100 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3101 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3102then
3103 echo "You used to use $cppstdin $cppminus so we'll use that again."
3104 case "$cpprun" in
3105 '') echo "But let's see if we can live without a wrapper..." ;;
3106 *)
3107 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3108 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3109 then
3110 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3111 ok='true'
3112 else
3113 echo "(However, $cpprun $cpplast does not work, let's see...)"
3114 fi
3115 ;;
3116 esac
3117else
3118 case "$cppstdin" in
3119 '') ;;
3120 *)
3121 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3122 ;;
3123 esac
3124fi
3125
3126if $ok; then
3127 : nothing
3128elif echo 'Maybe "'"$cc"' -E" will work...'; \
3129 $cc -E <testcpp.c >testcpp.out 2>&1; \
3130 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3131 echo "Yup, it does."
3132 x_cpp="$cc -E"
3133 x_minus='';
3134elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3135 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3136 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3137 echo "Yup, it does."
3138 x_cpp="$cc -E"
3139 x_minus='-';
3140elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3141 $cc -P <testcpp.c >testcpp.out 2>&1; \
3142 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3143 echo "Yipee, that works!"
3144 x_cpp="$cc -P"
3145 x_minus='';
3146elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3147 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3148 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3149 echo "At long last!"
3150 x_cpp="$cc -P"
3151 x_minus='-';
3152elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3153 $cpp <testcpp.c >testcpp.out 2>&1; \
3154 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3155 echo "It works!"
3156 x_cpp="$cpp"
3157 x_minus='';
3158elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3159 $cpp - <testcpp.c >testcpp.out 2>&1; \
3160 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3161 echo "Hooray, it works! I was beginning to wonder."
3162 x_cpp="$cpp"
3163 x_minus='-';
3164elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3165 $wrapper <testcpp.c >testcpp.out 2>&1; \
3166 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3167 x_cpp="$wrapper"
3168 x_minus=''
3169 echo "Eureka!"
3170else
3171 dflt=''
3172 rp="No dice. I can't find a C preprocessor. Name one:"
3173 . ./myread
3174 x_cpp="$ans"
3175 x_minus=''
3176 $x_cpp <testcpp.c >testcpp.out 2>&1
3177 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3178 echo "OK, that will do." >&4
3179 else
3180echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3181 exit 1
3182 fi
3183fi
3184
3185case "$ok" in
3186false)
3187 cppstdin="$x_cpp"
3188 cppminus="$x_minus"
3189 cpprun="$x_cpp"
3190 cpplast="$x_minus"
3191 set X $x_cpp
3192 shift
3193 case "$1" in
3194 "$cpp")
3195 echo "Perhaps can we force $cc -E using a wrapper..."
3196 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3197 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3198 then
3199 echo "Yup, we can."
3200 cppstdin="$wrapper"
3201 cppminus='';
3202 else
3203 echo "Nope, we'll have to live without it..."
3204 fi
3205 ;;
3206 esac
3207 case "$cpprun" in
3208 "$wrapper")
3209 cpprun=''
3210 cpplast=''
3211 ;;
3212 esac
3213 ;;
3214esac
3215
3216case "$cppstdin" in
3217"$wrapper"|'cppstdin') ;;
3218*) $rm -f $wrapper;;
3219esac
3220$rm -f testcpp.c testcpp.out
3221
bd9b35c9
JH
3222: decide how portable to be. Allow command line overrides.
3223case "$d_portable" in
3224"$undef") ;;
3225*) d_portable="$define" ;;
104d25b7 3226esac
85ab1d1d 3227
bd9b35c9
JH
3228: set up shell script to do ~ expansion
3229cat >filexp <<EOSS
3230$startsh
3231: expand filename
3232case "\$1" in
3233 ~/*|~)
3234 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3235 ;;
3236 ~*)
3237 if $test -f /bin/csh; then
3238 /bin/csh -f -c "glob \$1"
3239 failed=\$?
3240 echo ""
3241 exit \$failed
e5e20432 3242 else
bd9b35c9
JH
3243 name=\`$expr x\$1 : '..\([^/]*\)'\`
3244 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3245 if $test ! -d "\$dir"; then
3246 me=\`basename \$0\`
3247 echo "\$me: can't locate home directory for: \$name" >&2
3248 exit 1
3249 fi
3250 case "\$1" in
3251 */*)
3252 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3253 ;;
3254 *)
3255 echo \$dir
e5e20432
JH
3256 ;;
3257 esac
3258 fi
b691c02f 3259 ;;
4633a7c4 3260*)
bd9b35c9 3261 echo \$1
2304df62
AD
3262 ;;
3263esac
4633a7c4
LW
3264EOSS
3265chmod +x filexp
3266$eunicefix filexp
2304df62
AD
3267
3268: now set up to get a file name
28757baa 3269cat <<EOS >getfile
3270$startsh
3271EOS
3272cat <<'EOSC' >>getfile
2304df62
AD
3273tilde=''
3274fullpath=''
3275already=''
3276skip=''
3277none_ok=''
3278exp_file=''
a0d0e21e 3279nopath_ok=''
2304df62
AD
3280orig_rp="$rp"
3281orig_dflt="$dflt"
b233458b
JH
3282case "$gfpth" in
3283'') gfpth='.' ;;
3284esac
2304df62
AD
3285
3286case "$fn" in
ecfc5424 3287*\(*)
28e8609d 3288 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
3289 fn=`echo $fn | sed 's/(.*)//'`
3290 ;;
3291esac
3292
3293case "$fn" in
a0d0e21e
LW
3294*:*)
3295 loc_file=`expr $fn : '.*:\(.*\)'`
3296 fn=`expr $fn : '\(.*\):.*'`
3297 ;;
3298esac
3299
3300case "$fn" in
2304df62
AD
3301*~*) tilde=true;;
3302esac
3303case "$fn" in
3304*/*) fullpath=true;;
3305esac
3306case "$fn" in
3307*+*) skip=true;;
3308esac
3309case "$fn" in
3310*n*) none_ok=true;;
3311esac
3312case "$fn" in
3313*e*) exp_file=true;;
3314esac
a0d0e21e
LW
3315case "$fn" in
3316*p*) nopath_ok=true;;
3317esac
2304df62
AD
3318
3319case "$fn" in
3320*f*) type='File';;
3321*d*) type='Directory';;
a0d0e21e 3322*l*) type='Locate';;
2304df62
AD
3323esac
3324
3325what="$type"
3326case "$what" in
3327Locate) what='File';;
3328esac
3329
3330case "$exp_file" in
3331'')
3332 case "$d_portable" in
3333 "$define") ;;
3334 *) exp_file=true;;
3335 esac
3336 ;;
3337esac
3338
3339cd ..
3340while test "$type"; do
3341 redo=''
3342 rp="$orig_rp"
3343 dflt="$orig_dflt"
3344 case "$tilde" in
3345 true) rp="$rp (~name ok)";;
3346 esac
3347 . UU/myread
ecfc5424
AD
3348 if test -f UU/getfile.ok && \
3349 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3350 then
3351 value="$ans"
3352 ansexp="$ans"
3353 break
3354 fi
2304df62
AD
3355 case "$ans" in
3356 none)
3357 value=''
3358 ansexp=''
3359 case "$none_ok" in
3360 true) type='';;
3361 esac
3362 ;;
3363 *)
3364 case "$tilde" in
3365 '') value="$ans"
3366 ansexp="$ans";;
3367 *)
3368 value=`UU/filexp $ans`
3369 case $? in
3370 0)
3371 if test "$ans" != "$value"; then
ecfc5424 3372 echo "(That expands to $value on this system.)"
2304df62
AD
3373 fi
3374 ;;
3375 *) value="$ans";;
3376 esac
3377 ansexp="$value"
3378 case "$exp_file" in
3379 '') value="$ans";;
3380 esac
3381 ;;
3382 esac
3383 case "$fullpath" in
3384 true)
3385 case "$ansexp" in
3386 /*) value="$ansexp" ;;
23da6c43 3387 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3388 *)
3389 redo=true
3390 case "$already" in
3391 true)
3392 echo "I shall only accept a full path name, as in /bin/ls." >&4
3393 echo "Use a ! shell escape if you wish to check pathnames." >&4
3394 ;;
3395 *)
3396 echo "Please give a full path name, starting with slash." >&4
3397 case "$tilde" in
3398 true)
3399 echo "Note that using ~name is ok provided it expands well." >&4
3400 already=true
3401 ;;
3402 esac
3403 esac
3404 ;;
3405 esac
3406 ;;
3407 esac
3408 case "$redo" in
3409 '')
3410 case "$type" in
3411 File)
b233458b
JH
3412 for fp in $gfpth; do
3413 if test "X$fp" = X.; then
3414 pf="$ansexp"
3415 else
3416 pf="$fp/$ansexp"
3417 fi
3418 if test -f "$pf"; then
3419 type=''
3420 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3421 then
3422 echo "($value is not a plain file, but that's ok.)"
3423 type=''
3424 fi
3425 if test X"$type" = X; then
3426 value="$pf"
3427 break
3428 fi
3429 done
2304df62
AD
3430 ;;
3431 Directory)
b233458b
JH
3432 for fp in $gfpth; do
3433 if test "X$fp" = X.; then
f78bfc9c
JH
3434 dir="$ans"
3435 direxp="$ansexp"
b233458b 3436 else
dd858076 3437 dir="$fp/$ansexp"
f78bfc9c 3438 direxp="$fp/$ansexp"
b233458b 3439 fi
f78bfc9c 3440 if test -d "$direxp"; then
b233458b 3441 type=''
f78bfc9c 3442 value="$dir"
b233458b
JH
3443 break
3444 fi
3445 done
2304df62
AD
3446 ;;
3447 Locate)
40000a8c 3448 if test -d "$ansexp"; then
a0d0e21e
LW
3449 echo "(Looking for $loc_file in directory $value.)"
3450 value="$value/$loc_file"
40000a8c 3451 ansexp="$ansexp/$loc_file"
2304df62 3452 fi
40000a8c 3453 if test -f "$ansexp"; then
2304df62
AD
3454 type=''
3455 fi
a0d0e21e
LW
3456 case "$nopath_ok" in
3457 true) case "$value" in
3458 */*) ;;
3459 *) echo "Assuming $value will be in people's path."
3460 type=''
3461 ;;
3462 esac
3463 ;;
3464 esac
2304df62
AD
3465 ;;
3466 esac
3467
3468 case "$skip" in
3469 true) type='';
3470 esac
3471
3472 case "$type" in
3473 '') ;;
3474 *)
3475 if test "$fastread" = yes; then
3476 dflt=y
3477 else
3478 dflt=n
3479 fi
3480 rp="$what $value doesn't exist. Use that name anyway?"
3481 . UU/myread
3482 dflt=''
3483 case "$ans" in
3484 y*) type='';;
3485 *) echo " ";;
3486 esac
3487 ;;
3488 esac
3489 ;;
3490 esac
3491 ;;
3492 esac
3493done
3494cd UU
3495ans="$value"
3496rp="$orig_rp"
3497dflt="$orig_dflt"
ecfc5424 3498rm -f getfile.ok
b233458b 3499test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3500EOSC
3501
bd9b35c9
JH
3502: What should the include directory be ?
3503echo " "
3504$echo $n "Hmm... $c"
3505dflt='/usr/include'
3506incpath=''
3507mips_type=''
3508if $test -f /bin/mips && /bin/mips; then
3509 echo "Looks like a MIPS system..."
3510 $cat >usr.c <<'EOCP'
3511#ifdef SYSTYPE_BSD43
3512/bsd43
3513#endif
3514EOCP
8a27cf78 3515 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3516 dflt='/bsd43/usr/include'
3517 incpath='/bsd43'
3518 mips_type='BSD 4.3'
3519 else
3520 mips_type='System V'
3521 fi
3522 $rm -f usr.c usr.out
3523 echo "and you're compiling with the $mips_type compiler and libraries."
3524 xxx_prompt=y
3525 echo "exit 0" >mips
3526else
3527 echo "Doesn't look like a MIPS system."
3528 xxx_prompt=n
3529 echo "exit 1" >mips
3530fi
3531chmod +x mips
3532$eunicefix mips
3533case "$usrinc" in
3534'') ;;
3535*) dflt="$usrinc";;
3536esac
3537case "$xxx_prompt" in
3538y) fn=d/
3539 echo " "
3540 rp='Where are the include files you want to use?'
3541 . ./getfile
3542 usrinc="$ans"
8e07c86e 3543 ;;
bd9b35c9 3544*) usrinc="$dflt"
8e07c86e
AD
3545 ;;
3546esac
2304df62 3547
bd9b35c9
JH
3548: Set private lib path
3549case "$plibpth" in
3550'') if ./mips; then
3551 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3552 fi;;
3553esac
3554case "$libpth" in
3555' ') dlist='';;
3556'') dlist="$loclibpth $plibpth $glibpth";;
3557*) dlist="$libpth";;
3558esac
3559
3560: Now check and see which directories actually exist, avoiding duplicates
3561libpth=''
3562for xxx in $dlist
3563do
3564 if $test -d $xxx; then
3565 case " $libpth " in
3566 *" $xxx "*) ;;
3567 *) libpth="$libpth $xxx";;
3568 esac
3569 fi
3570done
3571$cat <<'EOM'
3572
3573Some systems have incompatible or broken versions of libraries. Among
3574the directories listed in the question below, please remove any you
3575know not to be holding relevant libraries, and add any that are needed.
3576Say "none" for none.
8e07c86e
AD
3577
3578EOM
bd9b35c9
JH
3579case "$libpth" in
3580'') dflt='none';;
8e07c86e 3581*)
bd9b35c9
JH
3582 set X $libpth
3583 shift
3584 dflt=${1+"$@"}
8e07c86e 3585 ;;
a0d0e21e 3586esac
bd9b35c9
JH
3587rp="Directories to use for library searches?"
3588. ./myread
3589case "$ans" in
3590none) libpth=' ';;
3591*) libpth="$ans";;
3592esac
a0d0e21e 3593
bd9b35c9
JH
3594: compute shared library extension
3595case "$so" in
3596'')
3597 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3598 dflt='sl'
dd4e71fd 3599 else
bd9b35c9 3600 dflt='so'
dd4e71fd
JH
3601 fi
3602 ;;
bd9b35c9 3603*) dflt="$so";;
dd4e71fd 3604esac
dd4e71fd
JH
3605$cat <<EOM
3606
bd9b35c9 3607On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3608you want to suppress searching of shared libraries for the remainder
bd9b35c9 3609of this configuration.
dd4e71fd
JH
3610
3611EOM
bd9b35c9
JH
3612rp='What is the file extension used for shared libraries?'
3613. ./myread
3614so="$ans"
dd4e71fd 3615
bd9b35c9
JH
3616: Define several unixisms.
3617: Hints files or command line option can be used to override them.
3618: The convoluted testing is in case hints files set either the old
3619: or the new name.
3620case "$_exe" in
3621'') case "$exe_ext" in
3622 '') ;;
3623 *) _exe="$exe_ext" ;;
dd4e71fd 3624 esac
bd9b35c9 3625 ;;
bfb7748a 3626esac
bd9b35c9
JH
3627case "$_a" in
3628'') case "$lib_ext" in
3629 '') _a='.a';;
3630 *) _a="$lib_ext" ;;
dd4e71fd
JH
3631 esac
3632 ;;
dd4e71fd 3633esac
bd9b35c9
JH
3634case "$_o" in
3635'') case "$obj_ext" in
3636 '') _o='.o';;
3637 *) _o="$obj_ext";;
3638 esac
3639 ;;
3640esac
3641case "$p_" in
3642'') case "$path_sep" in
3643 '') p_=':';;
3644 *) p_="$path_sep";;
3645 esac
3646 ;;
3647esac
3648exe_ext=$_exe
3649lib_ext=$_a
3650obj_ext=$_o
3651path_sep=$p_
dd4e71fd 3652
b4eb6b3d
JH
3653: Which makefile gets called first. This is used by make depend.
3654case "$firstmakefile" in
3655'') firstmakefile='makefile';;
4633a7c4 3656esac
4633a7c4 3657
0f0995ae
JH
3658case "$usesocks" in
3659$define|true|[yY]*) dflt='y';;
3660*) dflt='n';;
3661esac
bd9b35c9 3662cat <<EOM
4633a7c4 3663
bd9b35c9
JH
3664Perl can be built to use the SOCKS proxy protocol library. To do so,
3665Configure must be run with -Dusesocks.
4633a7c4 3666
0f0995ae 3667If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3668EOM
bd9b35c9
JH
3669rp='Build Perl for SOCKS?'
3670. ./myread
3671case "$ans" in
3672y|Y) val="$define" ;;
3673*) val="$undef" ;;
3674esac
3675set usesocks
3676eval $setvar
3677
3678: Looking for optional libraries
3679echo " "
3680echo "Checking for optional libraries..." >&4
3681case "$libs" in
3682' '|'') dflt='';;
3683*) dflt="$libs";;
3684esac
3685case "$libswanted" in
3686'') libswanted='c_s';;
3687esac
3688case "$usesocks" in
923fc586 3689"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3690esac
68435ea7
JH
3691libsfound=''
3692libsfiles=''
3693libsdirs=''
13b3f787
JH
3694libspath=''
3695for thisdir in $libpth $xlibpth; do
3696 test -d $thisdir && libspath="$libspath $thisdir"
3697done
bd9b35c9 3698for thislib in $libswanted; do
13b3f787 3699 for thisdir in $libspath; do
f7dd4e7f
JH
3700 xxx=''
3701 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3702 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3703 $test -f "$xxx" && eval $libscheck
3704 $test -f "$xxx" && libstyle=shared
3705 fi
3706 if test ! -f "$xxx"; then
3707 xxx=$thisdir/lib$thislib.$so
3708 $test -f "$xxx" && eval $libscheck
3709 $test -f "$xxx" && libstyle=shared
3710 fi
3711 if test ! -f "$xxx"; then
3712 xxx=$thisdir/lib$thislib$_a
3713 $test -f "$xxx" && eval $libscheck
3714 $test -f "$xxx" && libstyle=static
3715 fi
3716 if test ! -f "$xxx"; then
3717 xxx=$thisdir/$thislib$_a
3718 $test -f "$xxx" && eval $libscheck
3719 $test -f "$xxx" && libstyle=static
3720 fi
3721 if test ! -f "$xxx"; then
3722 xxx=$thisdir/lib${thislib}_s$_a
3723 $test -f "$xxx" && eval $libscheck
3724 $test -f "$xxx" && libstyle=static
09ea5ba9 3725 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3726 fi
3727 if test ! -f "$xxx"; then
3728 xxx=$thisdir/Slib$thislib$_a
3729 $test -f "$xxx" && eval $libscheck
3730 $test -f "$xxx" && libstyle=static
3731 fi
3732 if $test -f "$xxx"; then
43999f95 3733 case "$libstyle" in
f7dd4e7f
JH
3734 shared) echo "Found -l$thislib (shared)." ;;
3735 static) echo "Found -l$thislib." ;;
3736 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3737 esac
bd9b35c9
JH
3738 case " $dflt " in
3739 *"-l$thislib "*);;
f7dd4e7f 3740 *) dflt="$dflt -l$thislib"
43999f95
JH
3741 libsfound="$libsfound $xxx"
3742 yyy=`basename $xxx`
3743 libsfiles="$libsfiles $yyy"
1e127011 3744 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3745 case " $libsdirs " in
3746 *" $yyy "*) ;;
3747 *) libsdirs="$libsdirs $yyy" ;;
3748 esac
3749 ;;
bd9b35c9 3750 esac
f7dd4e7f
JH
3751 break
3752 fi
3753 done
3754 if $test ! -f "$xxx"; then
3755 echo "No -l$thislib."
bd9b35c9
JH
3756 fi
3757done
3758set X $dflt
3759shift
3760dflt="$*"
3761case "$libs" in
3762'') dflt="$dflt";;
3763*) dflt="$libs";;
3764esac
3765case "$dflt" in
3766' '|'') dflt='none';;
3767esac
4633a7c4 3768
bd9b35c9 3769$cat <<EOM
4633a7c4 3770
bd9b35c9
JH
3771In order to compile $package on your machine, a number of libraries
3772are usually needed. Include any other special libraries here as well.
3773Say "none" for none. The default list is almost always right.
8e07c86e 3774EOM
8e07c86e 3775
bd9b35c9
JH
3776echo " "
3777rp="What libraries to use?"
3778. ./myread
3779case "$ans" in
3780none) libs=' ';;
3781*) libs="$ans";;
3782esac
d71b2b6b 3783
bd9b35c9
JH
3784: determine optimization, if desired, or use for debug flag also
3785case "$optimize" in
3786' '|$undef) dflt='none';;
3787'') dflt='-O';;
3788*) dflt="$optimize";;
3789esac
3790$cat <<EOH
d71b2b6b 3791
bd9b35c9
JH
3792By default, $package compiles with the -O flag to use the optimizer.
3793Alternately, you might want to use the symbolic debugger, which uses
3794the -g flag (on traditional Unix systems). Either flag can be
3795specified here. To use neither flag, specify the word "none".
d71b2b6b 3796
bd9b35c9
JH
3797EOH
3798rp="What optimizer/debugger flag should be used?"
3799. ./myread
3800optimize="$ans"
3801case "$optimize" in
3802'none') optimize=" ";;
3803esac
3804
3805dflt=''
3806: We will not override a previous value, but we might want to
3807: augment a hint file
3808case "$hint" in
3809default|recommended)
3810 case "$gccversion" in
3811 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 3812 esac
bd9b35c9
JH
3813 case "$optimize" in
3814 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 3815 esac
bd9b35c9
JH
3816 case "$gccversion" in
3817 2*) if test -d /etc/conf/kconfig.d &&
3818 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3819 then
3820 dflt="$dflt -posix"
3821 fi
f0d04425 3822 ;;
bd9b35c9
JH
3823 esac
3824 case "$gccversion" in
3825 1*) ;;
3826 2.[0-8]*) ;;
3827 ?*) echo " "
3828 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3829 echo 'int main(void) { return 0; }' > gcctest.c
3830 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3831 echo "Yes, it does." 2>&1
3832 case "$ccflags" in
3833 *strict-aliasing*)
3834 echo "Leaving current flags $ccflags alone." 2>&1
3835 ;;
3836 *) dflt="$dflt -fno-strict-aliasing" ;;
3837 esac
3838 else
3839 echo "Nope, it doesn't, but that's ok." 2>&1
3840 fi
f0d04425 3841 ;;
e5e20432
JH
3842 esac
3843 ;;
3844esac
3845
bd9b35c9
JH
3846case "$mips_type" in
3847*BSD*|'') inclwanted="$locincpth $usrinc";;
3848*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3849esac
3850for thisincl in $inclwanted; do
3851 if $test -d $thisincl; then
3852 if $test x$thisincl != x$usrinc; then
3853 case "$dflt" in
422af00a
LC
3854 *" -I$thisincl "*);;
3855 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
3856 esac
3857 fi
3858 fi
3859done
40a7a20a 3860
bd9b35c9
JH
3861inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3862 xxx=true;
3863elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3864 xxx=true;
3865else
3866 xxx=false;
3867fi;
3868if $xxx; then
3869 case "$dflt" in
3870 *$2*);;
3871 *) dflt="$dflt -D$2";;
3872 esac;
3873fi'
40a7a20a 3874
bd9b35c9 3875set signal.h LANGUAGE_C; eval $inctest
40a7a20a 3876
bd9b35c9
JH
3877case "$usesocks" in
3878$define)
3879 ccflags="$ccflags -DSOCKS"
3880 ;;
3881esac
40a7a20a 3882
bd9b35c9
JH
3883case "$hint" in
3884default|recommended) dflt="$ccflags $dflt" ;;
3885*) dflt="$ccflags";;
3886esac
40a7a20a 3887
bd9b35c9
JH
3888case "$dflt" in
3889''|' ') dflt=none;;
3890esac
422af00a 3891
bd9b35c9 3892$cat <<EOH
40a7a20a 3893
bd9b35c9
JH
3894Your C compiler may want other flags. For this question you should include
3895-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3896but you should NOT include libraries or ld flags like -lwhatever. If you
3897want $package to honor its debug switch, you should include -DDEBUGGING here.
3898Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 3899
bd9b35c9 3900To use no flags, specify the word "none".
40a7a20a 3901
bd9b35c9
JH
3902EOH
3903set X $dflt
3904shift
3905dflt=${1+"$@"}
3906rp="Any additional cc flags?"
3907. ./myread
3908case "$ans" in
3909none) ccflags='';;
3910*) ccflags="$ans";;
3911esac
8e07c86e 3912
bd9b35c9
JH
3913: the following weeds options from ccflags that are of no interest to cpp
3914cppflags="$ccflags"
3915case "$gccversion" in
39161*) cppflags="$cppflags -D__GNUC__"
4633a7c4 3917esac
bd9b35c9
JH
3918case "$mips_type" in
3919'');;
3920*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3921esac
3922case "$cppflags" in
3923'');;
3924*)
3925 echo " "
3926 echo "Let me guess what the preprocessor flags are..." >&4
3927 set X $cppflags
3928 shift
3929 cppflags=''
3930 $cat >cpp.c <<'EOM'
3931#define BLURFL foo
8e07c86e 3932
bd9b35c9
JH
3933BLURFL xx LFRULB
3934EOM
3935 previous=''
3936 for flag in $*
3937 do
3938 case "$flag" in
3939 -*) ftry="$flag";;
3940 *) ftry="$previous $flag";;
3941 esac
3942 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3943 >cpp1.out 2>/dev/null && \
3944 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3945 >cpp2.out 2>/dev/null && \
3946 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3947 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3948 then
3949 cppflags="$cppflags $ftry"
3950 previous=''
3951 else
3952 previous="$flag"
3953 fi
3954 done
3955 set X $cppflags
3956 shift
3957 cppflags=${1+"$@"}
3958 case "$cppflags" in
3959 *-*) echo "They appear to be: $cppflags";;
3960 esac
3961 $rm -f cpp.c cpp?.out
2afac517 3962 ;;
3963esac
8e07c86e 3964
bd9b35c9
JH
3965: flags used in final linking phase
3966case "$ldflags" in
3967'') if ./venix; then
3968 dflt='-i -z'
10a23457 3969 else
bd9b35c9 3970 dflt=''
10a23457 3971 fi
bd9b35c9
JH
3972 case "$ccflags" in
3973 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 3974 esac
bd9b35c9
JH
3975 ;;
3976*) dflt="$ldflags";;
3977esac
3978
3979: Try to guess additional flags to pick up local libraries.
3980for thislibdir in $libpth; do
3981 case " $loclibpth " in
3982 *" $thislibdir "*)
3983 case "$dflt " in
3984 *"-L$thislibdir "*) ;;
3985 *) dflt="$dflt -L$thislibdir" ;;
3986 esac
c4f23d77
AD
3987 ;;
3988 esac
bd9b35c9 3989done
c4f23d77 3990
bd9b35c9
JH
3991case "$dflt" in
3992'') dflt='none' ;;
3993esac
c4f23d77 3994
bd9b35c9
JH
3995$cat <<EOH
3996
3997Your C linker may need flags. For this question you should
3998include -L/whatever and any other flags used by the C linker, but you
3999should NOT include libraries like -lwhatever.
4000
4001Make sure you include the appropriate -L/path flags if your C linker
4002does not normally search all of the directories you specified above,
4003namely
4004 $libpth
4005To use no flags, specify the word "none".
4006
4007EOH
4008
4009rp="Any additional ld flags (NOT including libraries)?"
4010. ./myread
4011case "$ans" in
4012none) ldflags='';;
4013*) ldflags="$ans";;
4014esac
4015rmlist="$rmlist pdp11"
4016
4017: coherency check
4018echo " "
4019echo "Checking your choice of C compiler and flags for coherency..." >&4
4020$cat > try.c <<'EOF'
4021#include <stdio.h>
4022int main() { printf("Ok\n"); exit(0); }
4023EOF
7a282f6d 4024set X $cc -o try $optimize $ccflags $ldflags try.c $libs
bd9b35c9
JH
4025shift
4026$cat >try.msg <<'EOM'
4027I've tried to compile and run the following simple program:
4028
4029EOM
4030$cat try.c >> try.msg
4031
4032$cat >> try.msg <<EOM
4033
4034I used the command:
4035
4036 $*
4037 ./try
4038
4039and I got the following output:
4040
4041EOM
4042dflt=y
7a282f6d 4043if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
bd9b35c9
JH
4044 if sh -c './try' >>try.msg 2>&1; then
4045 xxx=`./try`
4046 case "$xxx" in
4047 "Ok") dflt=n ;;
4048 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4049 case " $libs " in
4050 *" -lsfio "*)
4051 cat >> try.msg <<'EOQS'
4052If $libs contains -lsfio, and sfio is mis-configured, then it
4053sometimes (apparently) runs and exits with a 0 status, but with no
4054output! It may have to do with sfio's use of _exit vs. exit.
4055
4056EOQS
4057 rp="You have a big problem. Shall I abort Configure"
4058 dflt=y
4059 ;;
4060 esac
4061 ;;
4062 esac
4063 else
4064 echo "The program compiled OK, but exited with status $?." >>try.msg
4065 rp="You have a problem. Shall I abort Configure"
4066 dflt=y
4067 fi
4068else
4069 echo "I can't compile the test program." >>try.msg
4070 rp="You have a BIG problem. Shall I abort Configure"
4071 dflt=y
4072fi
4073case "$dflt" in
4074y)
4075 $cat try.msg >&4
4076 case "$knowitall" in
4077 '')
4078 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4079 ;;
bd9b35c9 4080 *) dflt=n;;
c4f23d77 4081 esac
bd9b35c9
JH
4082 echo " "
4083 . ./myread
4084 case "$ans" in
4085 n*|N*) ;;
4086 *) echo "Ok. Stopping Configure." >&4
4087 exit 1
c4f23d77
AD
4088 ;;
4089 esac
4090 ;;
bd9b35c9 4091n) echo "OK, that should do.";;
c4f23d77 4092esac
bd9b35c9 4093$rm -f try try.* core
c4f23d77 4094
b4eb6b3d
JH
4095: define an is-a-typedef? function
4096typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4097case "$inclist" in
4098"") inclist="sys/types.h";;
4099esac;
4100eval "varval=\$$var";
4101case "$varval" in
4102"")
4103 $rm -f temp.c;
4104 for inc in $inclist; do
4105 echo "#include <$inc>" >>temp.c;
4106 done;
4107 echo "#ifdef $type" >> temp.c;
4108 echo "printf(\"We have $type\");" >> temp.c;
4109 echo "#endif" >> temp.c;
4110 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4111 if $contains $type temp.E >/dev/null 2>&1; then
4112 eval "$var=\$type";
4113 else
4114 eval "$var=\$def";
4115 fi;
4116 $rm -f temp.?;;
4117*) eval "$var=\$varval";;
4118esac'
4119
4120: define an is-a-typedef? function that prompts if the type is not available.
4121typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4122case "$inclist" in
4123"") inclist="sys/types.h";;
4124esac;
4125eval "varval=\$$var";
4126case "$varval" in
4127"")
4128 $rm -f temp.c;
4129 for inc in $inclist; do
4130 echo "#include <$inc>" >>temp.c;
4131 done;
4132 echo "#ifdef $type" >> temp.c;
4133 echo "printf(\"We have $type\");" >> temp.c;
4134 echo "#endif" >> temp.c;
4135 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4136 echo " " ;
4137 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4138 if $contains $type temp.E >/dev/null 2>&1; then
4139 echo "$type found." >&4;
4140 eval "$var=\$type";
4141 else
4142 echo "$type NOT found." >&4;
4143 dflt="$def";
4144 . ./myread ;
4145 eval "$var=\$ans";
4146 fi;
4147 $rm -f temp.?;;
4148*) eval "$var=\$varval";;
4149esac'
4150
bd9b35c9
JH
4151: define a shorthand compile call
4152compile='
4153mc_file=$1;
4154shift;
08413ebc 4155$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
bd9b35c9
JH
4156: define a shorthand compile call for compilations that should be ok.
4157compile_ok='
4158mc_file=$1;
4159shift;
7a282f6d 4160$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
8e07c86e 4161
b4eb6b3d 4162: check for lengths of integral types
bd9b35c9 4163echo " "
b4eb6b3d
JH
4164case "$intsize" in
4165'')
4166 echo "Checking to see how big your integers are..." >&4
4167 $cat >intsize.c <<'EOCP'
bd9b35c9
JH
4168#include <stdio.h>
4169int main()
4170{
b4eb6b3d
JH
4171 printf("intsize=%d;\n", (int)sizeof(int));
4172 printf("longsize=%d;\n", (int)sizeof(long));
4173 printf("shortsize=%d;\n", (int)sizeof(short));
4174 exit(0);
bd9b35c9 4175}
b4eb6b3d
JH
4176EOCP
4177 set intsize
4178 if eval $compile_ok && ./intsize > /dev/null; then
4179 eval `./intsize`
4180 echo "Your integers are $intsize bytes long."
4181 echo "Your long integers are $longsize bytes long."
4182 echo "Your short integers are $shortsize bytes long."
4183 else
4184 $cat >&4 <<EOM
4185!
4186Help! I can't compile and run the intsize test program: please enlighten me!
4187(This is probably a misconfiguration in your system or libraries, and
4188you really ought to fix it. Still, I'll try anyway.)
4189!
bd9b35c9 4190EOM
b4eb6b3d
JH
4191 dflt=4
4192 rp="What is the size of an integer (in bytes)?"
4193 . ./myread
4194 intsize="$ans"
4195 dflt=$intsize
4196 rp="What is the size of a long integer (in bytes)?"
4197 . ./myread
4198 longsize="$ans"
4199 dflt=2
4200 rp="What is the size of a short integer (in bytes)?"
4201 . ./myread
4202 shortsize="$ans"
4203 fi
4204 ;;
4205esac
4206$rm -f intsize intsize.*
c1a7f87b 4207
b4eb6b3d
JH
4208: see what type lseek is declared as in the kernel
4209rp="What is the type used for lseek's offset on this system?"
4210set off_t lseektype long stdio.h sys/types.h
4211eval $typedef_ask
4212
4213echo " "
4214echo "Checking to see how big your file offsets are..." >&4
4215$cat >try.c <<EOCP
4216#include <sys/types.h>
4217#include <stdio.h>
4218int main()
4219{
4220 printf("%d\n", (int)sizeof($lseektype));
4221 return(0);
4222}
4223EOCP
4224set try
4225if eval $compile_ok; then
4226 lseeksize=`./try`
4227 echo "Your file offsets are $lseeksize bytes long."
4228else
4229 dflt=$longsize
4230 echo " "
4231 echo "(I can't seem to compile the test program. Guessing...)"
4232 rp="What is the size of your file offsets (in bytes)?"
4233 . ./myread
4234 lseeksize="$ans"
4235fi
4236$rm -f try.c try
4237
4238: see what type file positions are declared as in the library
4239rp="What is the type for file position used by fsetpos()?"
4240set fpos_t fpostype long stdio.h sys/types.h
4241eval $typedef_ask
4242
4243echo " "
4244case "$fpostype" in
4245*_t) zzz="$fpostype" ;;
4246*) zzz="fpos_t" ;;
4247esac
4248echo "Checking the size of $zzz..." >&4
4249cat > try.c <<EOCP
4250#include <sys/types.h>
4251#include <stdio.h>
4252int main() {
4253 printf("%d\n", (int)sizeof($fpostype));
4254 exit(0);
4255}
4256EOCP
4257set try
4258if eval $compile_ok; then
4259 yyy=`./try`
4260 case "$yyy" in
4261 '') fpossize=4
4262 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4263 ;;
4264 *) fpossize=$yyy
4265 echo "Your $zzz is $fpossize bytes long."
4266 ;;
4267 esac
4268else
4269 dflt="$longsize"
4270 echo " " >&4
4271 echo "(I can't compile the test program. Guessing...)" >&4
4272 rp="What is the size of your file positions (in bytes)?"
4273 . ./myread
4274 fpossize="$ans"
4275fi
4276
4277
4278
4279# Backward compatibility (uselfs is deprecated).
4280case "$uselfs" in
4281"$define"|true|[yY]*)
4282 cat <<EOM >&4
4283
4284*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4285EOM
4286 uselargefiles="$define"
4287 ;;
4288esac
4289
4290case "$lseeksize:$fpossize" in
42918:8) cat <<EOM
4292
4293You can have files larger than 2 gigabytes.
4294EOM
4295 val="$define" ;;
4296*) case "$uselargefiles" in
4297 "$undef"|false|[nN]*) dflt='n' ;;
4298 *) dflt='y' ;;
4299 esac
4300 cat <<EOM
4301
4302Perl can be built to understand large files (files larger than 2 gigabytes)
4303on some systems. To do so, Configure can be run with -Duselargefiles.
4304
4305If this doesn't make any sense to you, just accept the default '$dflt'.
4306EOM
4307 rp='Try to understand large files, if available?'
4308 . ./myread
4309 case "$ans" in
4310 y|Y) val="$define" ;;
4311 *) val="$undef" ;;
4312 esac
4313 ;;
4314esac
4315set uselargefiles
4316eval $setvar
4317case "$uselargefiles" in
4318"$define")
4319: Look for a hint-file generated 'call-back-unit'. If the
4320: user has specified that a large files perl is to be built,
4321: we may need to set or change some other defaults.
4322 if $test -f uselargefiles.cbu; then
4323 echo "Your platform has some specific hints for large file builds, using them..."
4324 . ./uselargefiles.cbu
4325 echo " "
4326 echo "Rechecking to see how big your file offsets are..." >&4
4327 $cat >try.c <<EOCP
4328#include <sys/types.h>
4329#include <stdio.h>
4330int main()
4331{
4332 printf("%d\n", (int)sizeof($lseektype));
4333 return(0);
4334}
4335EOCP
4336 set try
4337 if eval $compile_ok; then
4338 lseeksize=`./try`
4339 $echo "Your file offsets are now $lseeksize bytes long."
4340 else
4341 dflt="$lseeksize"
4342 echo " "
4343 echo "(I can't seem to compile the test program. Guessing...)"
4344 rp="What is the size of your file offsets (in bytes)?"
4345 . ./myread
4346 lseeksize="$ans"
4347 fi
4348 case "$fpostype" in
4349 *_t) zzz="$fpostype" ;;
4350 *) zzz="fpos_t" ;;
4351 esac
4352 $echo $n "Rechecking the size of $zzz...$c" >&4
4353 $cat > try.c <<EOCP
4354#include <sys/types.h>
4355#include <stdio.h>
4356int main() {
4357 printf("%d\n", (int)sizeof($fpostype));
4358 exit(0);
4359}
4360EOCP
4361 set try
4362 if eval $compile_ok; then
4363 yyy=`./try`
4364 dflt="$lseeksize"
4365 case "$yyy" in
4366 '') echo " "
4367 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4368 ;;
4369 *) fpossize=$yyy
4370 echo " $fpossize bytes." >&4
4371 ;;
4372 esac
4373 else
4374 dflt="$fpossize"
4375 echo " "
4376 echo "(I can't compile the test program. Guessing...)" >&4
4377 rp="What is the size of your file positions (in bytes)?"
4378 . ./myread
4379 fpossize="$ans"
4380 fi
4381 $rm -f try.c try
4382 fi
4383 ;;
4384esac
4385
4386
4387case "$usemorebits" in
4388"$define"|true|[yY]*)
4389 use64bitint="$define"
4390 uselongdouble="$define"
4391 usemorebits="$define"
4392 ;;
4393*) usemorebits="$undef"
4394 ;;
4395esac
4396
4397
4398case "$uselonglong" in
4399"$define"|true|[yY]*)
4400 cat <<EOM >&4
4401
4402*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4403EOM
4404 use64bitint="$define"
4405 ;;
4406esac
4407case "$use64bits" in
4408"$define"|true|[yY]*)
4409 cat <<EOM >&4
4410
4411*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4412EOM
4413 use64bitint="$define"
4414 ;;
4415esac
4416case "$use64bitints" in
4417"$define"|true|[yY]*)
4418 cat <<EOM >&4
4419
4420*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4421EOM
4422 use64bitint="$define"
4423 ;;
4424esac
4425case "$use64bitsint" in
4426"$define"|true|[yY]*)
4427 cat <<EOM >&4
4428
4429*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4430EOM
4431 use64bitint="$define"
4432 ;;
4433esac
4434case "$uselonglongs" in
4435"$define"|true|[yY]*)
4436 cat <<EOM >&4
4437
4438*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4439EOM
4440 use64bitint="$define"
4441 ;;
4442esac
4443case "$use64bitsall" in
4444"$define"|true|[yY]*)
4445 cat <<EOM >&4
4446
4447*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4448EOM
4449 use64bitall="$define"
4450 ;;
4451esac
4452
4453case "$ccflags" in
4454*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4455esac
4456case "$use64bitall" in
4457"$define"|true|[yY]*) use64bitint="$define" ;;
4458esac
4459
4460case "$longsize" in
44618) cat <<EOM
4462
4463You have natively 64-bit long integers.
4464EOM
4465 val="$define"
4466 ;;
4467*) case "$use64bitint" in
4468 "$define"|true|[yY]*) dflt='y';;
4469 *) dflt='n';;
4470 esac
4471 cat <<EOM
4472
4473Perl can be built to take advantage of 64-bit integer types
4474on some systems. To do so, Configure can be run with -Duse64bitint.
4475Choosing this option will most probably introduce binary incompatibilities.
4476
4477If this doesn't make any sense to you, just accept the default '$dflt'.
4478EOM
4479 rp='Try to use 64-bit integers, if available?'
4480 . ./myread
4481 case "$ans" in
4482 [yY]*) val="$define" ;;
4483 *) val="$undef" ;;
4484 esac
4485 ;;
4486esac
4487set use64bitint
4488eval $setvar
4489
4490case "$use64bitall" in
4491"$define"|true|[yY]*) dflt='y' ;;
4492*) case "$longsize" in
4493 8) dflt='y' ;;
4494 *) dflt='n' ;;
4495 esac
4496 ;;
4497esac
4498cat <<EOM
4499
4500You may also choose to try maximal 64-bitness. It means using as much
450164-bitness as possible on the platform. This in turn means even more
4502binary incompatibilities. On the other hand, your platform may not
4503have any more 64-bitness available than what you already have chosen.
4504
4505If this doesn't make any sense to you, just accept the default '$dflt'.
4506EOM
4507rp='Try to use maximal 64-bit support, if available?'
4508. ./myread
4509case "$ans" in
4510[yY]*) val="$define" ;;
4511*) val="$undef" ;;
4512esac
4513set use64bitall
4514eval $setvar
4515case "$use64bitall" in
4516"$define")
4517 case "$use64bitint" in
4518 "$undef")
4519 cat <<EOM
4520
4521Since you have chosen a maximally 64-bit build, I'm also turning on
4522the use of 64-bit integers.
4523EOM
4524 use64bitint="$define" ;;
4525 esac
4526 ;;
4527esac
4528
4529case "$use64bitint" in
4530"$define"|true|[yY]*)
4531: Look for a hint-file generated 'call-back-unit'. If the
4532: user has specified that a 64-bit perl is to be built,
4533: we may need to set or change some other defaults.
4534 if $test -f use64bitint.cbu; then
4535 echo "Your platform has some specific hints for 64-bit integers, using them..."
4536 . ./use64bitint.cbu
4537 fi
4538 case "$longsize" in
4539 4) case "$archname64" in
4540 '') archname64=64int ;;
4541 esac
4542 ;;
4543 esac
4544 ;;
4545esac
4546
4547case "$use64bitall" in
4548"$define"|true|[yY]*)
4549: Look for a hint-file generated 'call-back-unit'. If the
4550: user has specified that a maximally 64-bit perl is to be built,
4551: we may need to set or change some other defaults.
4552 if $test -f use64bitall.cbu; then
4553 echo "Your platform has some specific hints for 64-bit builds, using them..."
4554 . ./use64bitall.cbu
4555 fi
4556 case "$longsize" in
4557 4) case "$archname64" in
4558 ''|64int) archname64=64all ;;
4559 esac
4560 ;;
4561 esac
4562 ;;
4563esac
4564
4565echo " "
4566echo "Checking for GNU C Library..." >&4
4567cat >gnulibc.c <<EOM
4568#include <stdio.h>
4569int main()
4570{
4571#ifdef __GLIBC__
4572 exit(0);
4573#else
4574 exit(1);
4575#endif
4576}
4577EOM
4578set gnulibc
4579if eval $compile_ok && ./gnulibc; then
4580 val="$define"
4581 echo "You are using the GNU C Library"
4582else
4583 val="$undef"
4584 echo "You are not using the GNU C Library"
4585fi
4586$rm -f gnulibc*
4587set d_gnulibc
4588eval $setvar
4589
4590: see if nm is to be used to determine whether a symbol is defined or not
4591case "$usenm" in
4592'')
4593 dflt=''
c1a7f87b
JH
4594 case "$d_gnulibc" in
4595 "$define")
4596 echo " "
4597 echo "nm probably won't work on the GNU C Library." >&4
4598 dflt=n
bd9b35c9 4599 ;;
c1a7f87b
JH
4600 esac
4601 case "$dflt" in
4602 '')
4603 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4604 echo " "
4605 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4606 echo "'nm' won't be sufficient on this sytem." >&4
4607 dflt=n
4608 fi
4609 ;;
4610 esac
4611 case "$dflt" in
4612 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4613 if $test $dflt -gt 20; then
4614 dflt=y
4615 else
4616 dflt=n
4617 fi
bd9b35c9
JH
4618 ;;
4619 esac
bd9b35c9
JH
4620 ;;
4621*)
c1a7f87b
JH
4622 case "$usenm" in
4623 true|$define) dflt=y;;
4624 *) dflt=n;;
4625 esac
bd9b35c9
JH
4626 ;;
4627esac
4628$cat <<EOM
4629
c1a7f87b
JH
4630I can use $nm to extract the symbols from your C libraries. This
4631is a time consuming task which may generate huge output on the disk (up
4632to 3 megabytes) but that should make the symbols extraction faster. The
4633alternative is to skip the 'nm' extraction part and to compile a small
4634test program instead to determine whether each symbol is present. If
4635you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4636this may be the best solution.
4637
4638You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
4639
4640EOM
c1a7f87b
JH
4641rp="Shall I use $nm to extract C symbols from the libraries?"
4642. ./myread
4643case "$ans" in
4644[Nn]*) usenm=false;;
4645*) usenm=true;;
bd9b35c9 4646esac
bd9b35c9 4647
c1a7f87b
JH
4648runnm=$usenm
4649case "$reuseval" in
4650true) runnm=false;;
8e07c86e 4651esac
29209bc5 4652
c1a7f87b
JH
4653: nm options which may be necessary
4654case "$nm_opt" in
4655'') if $test -f /mach_boot; then
4656 nm_opt='' # Mach
4657 elif $test -d /usr/ccs/lib; then
4658 nm_opt='-p' # Solaris (and SunOS?)
4659 elif $test -f /dgux; then
4660 nm_opt='-p' # DG-UX
4661 elif $test -f /lib64/rld; then
4662 nm_opt='-p' # 64-bit Irix
4663 else
4664 nm_opt=''
4665 fi;;
4666esac
bd9b35c9 4667
c1a7f87b
JH
4668: nm options which may be necessary for shared libraries but illegal
4669: for archive libraries. Thank you, Linux.
4670case "$nm_so_opt" in
4671'') case "$myuname" in
4672 *linux*)
4673 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4674 nm_so_opt='--dynamic'
4675 fi
4676 ;;
bd9b35c9 4677 esac
c1a7f87b
JH
4678 ;;
4679esac
8e07c86e 4680
c1a7f87b
JH
4681case "$runnm" in
4682true)
4683: get list of predefined functions in a handy place
4684echo " "
4685case "$libc" in
4686'') libc=unknown
4687 case "$libs" in
4688 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 4689 esac
ff935051
JH
4690 ;;
4691esac
c1a7f87b
JH
4692libnames='';
4693case "$libs" in
4694'') ;;
4695*) for thislib in $libs; do
4696 case "$thislib" in
4697 -lc|-lc_s)
4698 : Handle C library specially below.
4699 ;;
4700 -l*)
4701 thislib=`echo $thislib | $sed -e 's/^-l//'`
4702 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4703 :
4704 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4705 :
4706 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4707 :
4708 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4709 :
4710 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4711 :
4712 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4713 :
4714 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4715 :
4716 else
4717 try=''
4718 fi
4719 libnames="$libnames $try"
4720 ;;
4721 *) libnames="$libnames $thislib" ;;
34d1710f 4722 esac
c1a7f87b 4723 done
4633a7c4
LW
4724 ;;
4725esac
c1a7f87b
JH
4726xxx=normal
4727case "$libc" in
4728unknown)
4729 set /lib/libc.$so
4730 for xxx in $libpth; do
4731 $test -r $1 || set $xxx/libc.$so
4732 : The messy sed command sorts on library version numbers.
4733 $test -r $1 || \
4734 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4735 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4736 h
4737 s/[0-9][0-9]*/0000&/g
4738 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4739 G
4740 s/\n/ /' | \
4741 sort | $sed -e 's/^.* //'`
4742 eval set \$$#
4743 done
4744 $test -r $1 || set /usr/ccs/lib/libc.$so
4745 $test -r $1 || set /lib/libsys_s$_a
4746 ;;
4747*)
4748 set blurfl
4749 ;;
a4f3eea9 4750esac
c1a7f87b
JH
4751if $test -r "$1"; then
4752 echo "Your (shared) C library seems to be in $1."
4753 libc="$1"
4754elif $test -r /lib/libc && $test -r /lib/clib; then
4755 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4756 xxx=apollo
4757 libc='/lib/clib /lib/libc'
4758 if $test -r /lib/syslib; then
4759 echo "(Your math library is in /lib/syslib.)"
4760 libc="$libc /lib/syslib"
4761 fi
4762elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4763 echo "Your C library seems to be in $libc, as you said before."
4764elif $test -r $incpath/usr/lib/libc$_a; then
4765 libc=$incpath/usr/lib/libc$_a;
4766 echo "Your C library seems to be in $libc. That's fine."
4767elif $test -r /lib/libc$_a; then
4768 libc=/lib/libc$_a;
4769 echo "Your C library seems to be in $libc. You're normal."
4770else
4771 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4772 :
4773 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4774 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4775 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4776 :
4777 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4778 :
4779 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4780 :
4781 else
4782 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4783 fi
4784 if $test -r "$tans"; then
4785 echo "Your C library seems to be in $tans, of all places."
4786 libc=$tans
4787 else
4788 libc='blurfl'
4789 fi
4790fi
4791if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4792 dflt="$libc"
4793 cat <<EOM
a4f3eea9 4794
c1a7f87b
JH
4795If the guess above is wrong (which it might be if you're using a strange
4796compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
4797
4798EOM
a4f3eea9 4799else
c1a7f87b
JH
4800 dflt=''
4801 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4802 cat >&4 <<EOM
4803I can't seem to find your C library. I've looked in the following places:
a4f3eea9 4804
c1a7f87b
JH
4805EOM
4806 $sed 's/^/ /' libpath
4807 cat <<EOM
29209bc5 4808
c1a7f87b 4809None of these seems to contain your C library. I need to get its name...
a4f3eea9 4810
bd9b35c9 4811EOM
bd9b35c9 4812fi
c1a7f87b
JH
4813fn=f
4814rp='Where is your C library?'
4815. ./getfile
4816libc="$ans"
a4f3eea9 4817
c1a7f87b
JH
4818echo " "
4819echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4820set X `cat libnames`
4821shift
4822xxx=files
4823case $# in 1) xxx=file; esac
4824echo "Extracting names from the following $xxx for later perusal:" >&4
4825echo " "
4826$sed 's/^/ /' libnames >&4
4827echo " "
4828$echo $n "This may take a while...$c" >&4
a4f3eea9 4829
c1a7f87b
JH
4830for file in $*; do
4831 case $file in
4832 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4833 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4834 esac
c1a7f87b 4835done >libc.tmp
a4f3eea9 4836
c1a7f87b
JH
4837$echo $n ".$c"
4838$grep fprintf libc.tmp > libc.ptf
4839xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4840xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4841xxx='[ADTSIW]'
4842if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4843 eval $xscan;\
4844 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4845 eval $xrun
4846elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4847 eval $xscan;\
4848 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4849 eval $xrun
4850elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4851 eval $xscan;\
4852 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4853 eval $xrun
4854elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4855 eval $xscan;\
4856 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4857 eval $xrun
4858elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4859 eval $xscan;\
4860 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4861 eval $xrun
4862elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4863 eval $xscan;\
4864 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865 eval $xrun
4866elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4867 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4868 eval $xscan;\
4869 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870 eval $xrun
4871elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4872 eval $xscan;\
4873 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874 eval $xrun
4875elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4876 eval $xscan;\
4877 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878 eval $xrun
4879elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4880 eval $xscan;\
4881 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 eval $xrun
4883elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4884 eval $xscan;\
4885 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4886 eval $xrun
4887elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4888 eval $xscan;\
4889 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4890 eval $xrun
4891elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4892 eval $xscan;\
4893 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4894 eval $xrun
4895elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4896 eval $xscan;\
4897 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4898 eval $xrun
4899else
4900 $nm -p $* 2>/dev/null >libc.tmp
4901 $grep fprintf libc.tmp > libc.ptf
4902 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4903 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4904 then
4905 nm_opt='-p'
4906 eval $xrun
bd9b35c9 4907 else
c1a7f87b
JH
4908 echo " "
4909 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4910 com=''
4911 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4912 for thisname in $libnames $libc; do
4913 $ar t $thisname >>libc.tmp
4914 done
4915 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4916 echo "Ok." >&4
4917 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4918 # Repeat libc to extract forwarders to DLL entries too
4919 for thisname in $libnames $libc; do
4920 $ar tv $thisname >>libc.tmp
4921 # Revision 50 of EMX has bug in $ar.
4922 # it will not extract forwarders to DLL entries
4923 # Use emximp which will extract exactly them.
4924 emximp -o tmp.imp $thisname \
4925 2>/dev/null && \
4926 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4927 < tmp.imp >>libc.tmp
4928 $rm tmp.imp
4929 done
4930 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4931 echo "Ok." >&4
4932 else
4933 echo "$ar didn't seem to work right." >&4
4934 echo "Maybe this is a Cray...trying bld instead..." >&4
4935 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4936 then
4937 for thisname in $libnames; do
4938 bld t $libnames | \
4939 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4940 $ar t $thisname >>libc.tmp
4941 done
4942 echo "Ok." >&4
bd9b35c9 4943 else
c1a7f87b
JH
4944 echo "That didn't work either. Giving up." >&4
4945 exit 1
bd9b35c9 4946 fi
c1a7f87b 4947 fi
a4f3eea9 4948 fi
a4f3eea9 4949fi
c1a7f87b
JH
4950nm_extract="$com"
4951if $test -f /lib/syscalls.exp; then
4952 echo " "
4953 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4954 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4955fi
4956;;
4957esac
4958$rm -f libnames libpath
bd9b35c9 4959
c1a7f87b
JH
4960: is a C symbol defined?
4961csym='tlook=$1;
4962case "$3" in
4963-v) tf=libc.tmp; tc=""; tdc="";;
4964-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4965*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4966esac;
4967tx=yes;
4968case "$reuseval-$4" in
4969true-) ;;
4970true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4971esac;
4972case "$tx" in
4973yes)
4974 case "$runnm" in
4975 true)
4976 if $contains $tlook $tf >/dev/null 2>&1;
4977 then tval=true;
4978 else tval=false;
4979 fi;;
4980 *)
4981 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
7a282f6d 4982 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
c1a7f87b
JH
4983 then tval=true;
4984 else tval=false;
4985 fi;
4986 $rm -f t t.c;;
4987 esac;;
4988*)
4989 case "$tval" in
4990 $define) tval=true;;
4991 *) tval=false;;
4992 esac;;
4993esac;
4994eval "$2=$tval"'
bd9b35c9 4995
c1a7f87b
JH
4996: define an is-in-libc? function
4997inlibc='echo " "; td=$define; tu=$undef;
4998sym=$1; var=$2; eval "was=\$$2";
4999tx=yes;
5000case "$reuseval$was" in
5001true) ;;
5002true*) tx=no;;
5003esac;
5004case "$tx" in
5005yes)
5006 set $sym tres -f;
5007 eval $csym;
5008 case "$tres" in
5009 true)
5010 echo "$sym() found." >&4;
5011 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5012 *)
5013 echo "$sym() NOT found." >&4;
5014 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5015 esac;;
bd9b35c9 5016*)
c1a7f87b
JH
5017 case "$was" in
5018 $define) echo "$sym() found." >&4;;
5019 *) echo "$sym() NOT found." >&4;;
5020 esac;;
5021esac'
5022
b4eb6b3d
JH
5023: see if sqrtl exists
5024set sqrtl d_sqrtl
c1a7f87b
JH
5025eval $inlibc
5026
b4eb6b3d
JH
5027case "$ccflags" in
5028*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5029esac
b4eb6b3d
JH
5030
5031case "$uselongdouble" in
5032$define|true|[yY]*) dflt='y';;
5033*) dflt='n';;
5034esac
5035cat <<EOM
5036
5037Perl can be built to take advantage of long doubles which
5038(if available) may give more accuracy and range for floating point numbers.
5039
5040If this doesn't make any sense to you, just accept the default '$dflt'.
5041EOM
5042rp='Try to use long doubles if available?'
c1a7f87b
JH
5043. ./myread
5044case "$ans" in
b4eb6b3d
JH
5045y|Y) val="$define" ;;
5046*) val="$undef" ;;
5047esac
5048set uselongdouble
5049eval $setvar
bfb7748a 5050
b4eb6b3d
JH
5051case "$uselongdouble" in
5052true|[yY]*) uselongdouble="$define" ;;
5053esac
bfb7748a 5054
b4eb6b3d
JH
5055case "$uselongdouble" in
5056$define)
5057: Look for a hint-file generated 'call-back-unit'. If the
5058: user has specified that long doubles should be used,
5059: we may need to set or change some other defaults.
5060 if $test -f uselongdouble.cbu; then
5061 echo "Your platform has some specific hints for long doubles, using them..."
5062 . ./uselongdouble.cbu
5063 else
5064 $cat <<EOM
5065(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5066EOM
b4eb6b3d
JH
5067 fi
5068 ;;
5069esac
5070
5071case "$uselongdouble:$d_sqrtl" in
5072$define:$undef)
5073 $cat <<EOM >&4
5074
5075*** You requested the use of long doubles but you do not seem to have
5076*** the mathematic functions for long doubles. I'm disabling the use
5077*** of long doubles.
5078
5079EOM
5080 uselongdouble=$undef
5081 ;;
5082esac
5083
5084: check for length of double
5085echo " "
5086case "$doublesize" in
5087'')
5088 echo "Checking to see how big your double precision numbers are..." >&4
5089 $cat >try.c <<'EOCP'
5090#include <stdio.h>
5091int main()
5092{
5093 printf("%d\n", (int)sizeof(double));
5094 exit(0);
5095}
5096EOCP
5097 set try
5098 if eval $compile_ok; then
5099 doublesize=`./try`
5100 echo "Your double is $doublesize bytes long."
5101 else
5102 dflt='8'
5103 echo "(I can't seem to compile the test program. Guessing...)"
5104 rp="What is the size of a double precision number (in bytes)?"
5105 . ./myread
5106 doublesize="$ans"
5107 fi
5108 ;;
5109esac
5110$rm -f try.c try
5111
5112: check for long doubles
5113echo " "
5114echo "Checking to see if you have long double..." >&4
5115echo 'int main() { long double x = 7.0; }' > try.c
5116set try
5117if eval $compile; then
5118 val="$define"
5119 echo "You have long double."
5120else
5121 val="$undef"
5122 echo "You do not have long double."
5123fi
5124$rm try.*
5125set d_longdbl
5126eval $setvar
5127
5128: check for length of long double
5129case "${d_longdbl}${longdblsize}" in
5130$define)
5131 echo " "
5132 echo "Checking to see how big your long doubles are..." >&4
5133 $cat >try.c <<'EOCP'
5134#include <stdio.h>
5135int main()
5136{
5137 printf("%d\n", sizeof(long double));
5138}
5139EOCP
5140 set try
5141 set try
5142 if eval $compile; then
5143 longdblsize=`./try$exe_ext`
5144 echo "Your long doubles are $longdblsize bytes long."
5145 else
5146 dflt='8'
5147 echo " "
5148 echo "(I can't seem to compile the test program. Guessing...)" >&4
5149 rp="What is the size of a long double (in bytes)?"
5150 . ./myread
5151 longdblsize="$ans"
5152 fi
5153 if $test "X$doublesize" = "X$longdblsize"; then
5154 echo "(That isn't any different from an ordinary double.)"
5155 fi
5156 ;;
5157esac
5158$rm -f try.* try
5159
5160: determine the architecture name
5161echo " "
5162if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5163 tarch=`arch`"-$osname"
5164elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5165 if uname -m > tmparch 2>&1 ; then
5166 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5167 -e 's/$/'"-$osname/" tmparch`
5168 else
5169 tarch="$osname"
5170 fi
5171 $rm -f tmparch
5172else
5173 tarch="$osname"
5174fi
5175case "$myarchname" in
5176''|"$tarch") ;;
5177*)
5178 echo "(Your architecture name used to be $myarchname.)"
5179 archname=''
5180 ;;
5181esac
5182myarchname="$tarch"
5183case "$archname" in
5184'') dflt="$tarch";;
5185*) dflt="$archname";;
5186esac
5187rp='What is your architecture name'
5188. ./myread
5189archname="$ans"
5190case "$usethreads" in
5191$define)
5192 echo "Threads selected." >&4
5193 case "$archname" in
5194 *-thread*) echo "...and architecture name already has -thread." >&4
5195 ;;
5196 *) archname="$archname-thread"
5197 echo "...setting architecture name to $archname." >&4
5198 ;;
5199 esac
5200 ;;
5201esac
5202case "$usemultiplicity" in
5203$define)
5204 echo "Multiplicity selected." >&4
5205 case "$archname" in
5206 *-multi*) echo "...and architecture name already has -multi." >&4
5207 ;;
5208 *) archname="$archname-multi"
5209 echo "...setting architecture name to $archname." >&4
5210 ;;
5211 esac
5212 ;;
5213esac
5214case "$use64bitint$use64bitall" in
5215*"$define"*)
5216 case "$archname64" in
5217 '')
5218 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5219 ;;
5220 *)
5221 case "$use64bitint" in
5222 "$define") echo "64 bit integers selected." >&4 ;;
5223 esac
5224 case "$use64bitall" in
5225 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5226 esac
5227 case "$archname" in
5228 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5229 ;;
5230 *) archname="$archname-$archname64"
5231 echo "...setting architecture name to $archname." >&4
5232 ;;
5233 esac
5234 ;;
5235 esac
5236esac
5237case "$uselongdouble" in
5238$define)
5239 echo "Long doubles selected." >&4
5240 case "$longdblsize" in
5241 $doublesize)
5242 "...but long doubles are equal to doubles, not changing architecture name." >&4
5243 ;;
5244 *)
5245 case "$archname" in
5246 *-ld*) echo "...and architecture name already has -ld." >&4
5247 ;;
5248 *) archname="$archname-ld"
5249 echo "...setting architecture name to $archname." >&4
5250 ;;
5251 esac
5252 ;;
5253 esac
5254 ;;
5255esac
5256
5257: determine root of directory hierarchy where package will be installed.
5258case "$prefix" in
5259'')
5260 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5261 ;;
5262*)
5263 dflt="$prefix"
5264 ;;
5265esac
5266$cat <<EOM
5267
5268By default, $package will be installed in $dflt/bin, manual pages
5269under $dflt/man, etc..., i.e. with $dflt as prefix for all
5270installation directories. Typically this is something like /usr/local.
5271If you wish to have binaries under /usr/bin but other parts of the
5272installation under /usr/local, that's ok: you will be prompted
5273separately for each of the installation directories, the prefix being
5274only used to set the defaults.
5275
5276EOM
5277fn=d~
5278rp='Installation prefix to use?'
5279. ./getfile
5280oldprefix=''
5281case "$prefix" in
5282'') ;;
5283*)
5284 case "$ans" in
5285 "$prefix") ;;
5286 *) oldprefix="$prefix";;
5287 esac
5288 ;;
5289esac
5290prefix="$ans"
5291prefixexp="$ansexp"
5292
5293: is AFS running?
5294echo " "
5295case "$afs" in
5296$define|true) afs=true ;;
5297$undef|false) afs=false ;;
5298*) if test -d /afs; then
5299 afs=true
5300 else
5301 afs=false
5302 fi
5303 ;;
5304esac
5305if $afs; then
5306 echo "AFS may be running... I'll be extra cautious then..." >&4
5307else
5308 echo "AFS does not seem to be running..." >&4
5309fi
5310
5311: determine installation prefix for where package is to be installed.
5312if $afs; then
5313$cat <<EOM
5314
5315Since you are running AFS, I need to distinguish the directory in which
5316files will reside from the directory in which they are installed (and from
5317which they are presumably copied to the former directory by occult means).
5318
5319EOM
5320 case "$installprefix" in
5321 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5322 *) dflt="$installprefix";;
5323 esac
5324else
5325$cat <<EOM
5326
5327In some special cases, particularly when building $package for distribution,
5328it is convenient to distinguish between the directory in which files should
5329be installed from the directory ($prefix) in which they
5330will eventually reside. For most users, these two directories are the same.
5331
5332EOM
5333 case "$installprefix" in
5334 '') dflt=$prefix ;;
5335 *) dflt=$installprefix;;
5336 esac
5337fi
5338fn=d~
5339rp='What installation prefix should I use for installing files?'
5340. ./getfile
5341installprefix="$ans"
5342installprefixexp="$ansexp"
5343
5344: set the prefixit variable, to compute a suitable default value
5345prefixit='case "$3" in
5346""|none)
5347 case "$oldprefix" in
5348 "") eval "$1=\"\$$2\"";;
5349 *)
5350 case "$3" in
5351 "") eval "$1=";;
5352 none)
5353 eval "tp=\"\$$2\"";
5354 case "$tp" in
5355 ""|" ") eval "$1=\"\$$2\"";;
5356 *) eval "$1=";;
5357 esac;;
5358 esac;;
5359 esac;;
5360*)
5361 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5362 case "$tp" in
5363 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5364 /*-$oldprefix/*|\~*-$oldprefix/*)
5365 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5366 *) eval "$1=\"\$$2\"";;
5367 esac;;
5368esac'
5369
5370
5371: get the patchlevel
5372echo " "
5373echo "Getting the current patchlevel..." >&4
5374if $test -r $rsrc/patchlevel.h;then
5375 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5376 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5377 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5378 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5379 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5380 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5381else
5382 revision=0
5383 patchlevel=0
5384 subversion=0
5385 api_revision=0
5386 api_version=0
5387 api_subversion=0
5388fi
5389$echo "(You have $package version $patchlevel subversion $subversion.)"
5390case "$osname" in
5391dos|vms)
5392 : XXX Should be a Configure test for double-dots in filenames.
5393 version=`echo $revision $patchlevel $subversion | \
5394 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5395 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5396 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5397 ;;
5398*)
5399 version=`echo $revision $patchlevel $subversion | \
5400 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5401 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5402 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5403 ;;
5404esac
5405: Special case the 5.005_xx maintenance series, which used 5.005
5406: without any subversion label as a subdirectory in $sitelib
5407if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5408 api_versionstring='5.005'
5409fi
5410
5411: determine installation style
5412: For now, try to deduce it from prefix unless it is already set.
5413: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5414case "$installstyle" in
5415'') case "$prefix" in
5416 *perl*) dflt='lib';;
5417 *) dflt='lib/perl5' ;;
5418 esac
5419 ;;
5420*) dflt="$installstyle" ;;
5421esac
5422: Probably not worth prompting for this since we prompt for all
5423: the directories individually, and the prompt would be too long and
5424: confusing anyway.
5425installstyle=$dflt
5426
5427: determine where private library files go
5428: Usual default is /usr/local/lib/perl5/$version.
5429: Also allow things like /opt/perl/lib/$version, since
5430: /opt/perl/lib/perl5... would be redundant.
5431: The default "style" setting is made in installstyle.U
5432case "$installstyle" in
5433*lib/perl5*) set dflt privlib lib/$package/$version ;;
5434*) set dflt privlib lib/$version ;;
5435esac
5436eval $prefixit
5437$cat <<EOM
5438
5439There are some auxiliary files for $package that need to be put into a
5440private library directory that is accessible by everyone.
5441
5442EOM
5443fn=d~+
5444rp='Pathname where the private library files will reside?'
5445. ./getfile
5446privlib="$ans"
5447privlibexp="$ansexp"
5448: Change installation prefix, if necessary.
5449if $test X"$prefix" != X"$installprefix"; then
5450 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5451else
5452 installprivlib="$privlibexp"
5453fi
5454
5455: set the prefixup variable, to restore leading tilda escape
5456prefixup='case "$prefixexp" in
5457"$prefix") ;;
5458*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5459esac'
5460
5461: determine where public architecture dependent libraries go
5462set archlib archlib
5463eval $prefixit
5464: privlib default is /usr/local/lib/$package/$version
5465: archlib default is /usr/local/lib/$package/$version/$archname
5466: privlib may have an optional trailing /share.
5467tdflt=`echo $privlib | $sed 's,/share$,,'`
5468tdflt=$tdflt/$archname
5469case "$archlib" in
5470'') dflt=$tdflt
5471 ;;
5472*) dflt="$archlib"
5473 ;;
5474esac
5475$cat <<EOM
5476
5477$spackage contains architecture-dependent library files. If you are
5478sharing libraries in a heterogeneous environment, you might store
5479these files in a separate location. Otherwise, you can just include
5480them with the rest of the public library files.
5481
5482EOM
5483fn=d+~
5484rp='Where do you want to put the public architecture-dependent libraries?'
5485. ./getfile
5486archlib="$ans"
5487archlibexp="$ansexp"
5488if $test X"$archlib" = X"$privlib"; then
5489 d_archlib="$undef"
5490else
5491 d_archlib="$define"
5492fi
5493: Change installation prefix, if necessary.
5494if $test X"$prefix" != X"$installprefix"; then
5495 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5496else
5497 installarchlib="$archlibexp"
5498fi
5499
5500
5501: Binary compatibility with 5.005 is not possible for builds
5502: with advanced features
5503case "$usethreads$usemultiplicity" in
5504*define*)
5505 bincompat5005="$undef"
5506 d_bincompat5005="$undef"
5507 ;;
5508*) $cat <<EOM
5509
5510This version of Perl can be compiled for binary compatibility with 5.005.
5511If you decide to do so, you will be able to continue using most of the
5512extensions that were compiled for Perl 5.005.
5513
5514EOM
5515 case "$bincompat5005$d_bincompat5005" in
5516 *"$undef"*) dflt=n ;;
5517 *) dflt=y ;;
5518 esac
5519 rp='Binary compatibility with Perl 5.005?'
5520 . ./myread
5521 case "$ans" in
5522 y*) val="$define" ;;
5523 *) val="$undef" ;;
5524 esac
5525 set d_bincompat5005
5526 eval $setvar
5527 case "$d_bincompat5005" in
5528 "$define")
5529 bincompat5005="$define"
5530 ;;
5531 *) bincompat5005="$undef"
5532 d_bincompat5005="$undef"
5533 ;;
5534 esac
5535 ;;
5536esac
5537
5538
5539: see if setuid scripts can be secure
5540$cat <<EOM
5541
5542Some kernels have a bug that prevents setuid #! scripts from being
5543secure. Some sites have disabled setuid #! scripts because of this.
5544
5545First let's decide if your kernel supports secure setuid #! scripts.
5546(If setuid #! scripts would be secure but have been disabled anyway,
5547don't say that they are secure if asked.)
5548
5549EOM
5550
5551val="$undef"
5552if $test -d /dev/fd; then
5553 echo "#!$ls" >reflect
5554 chmod +x,u+s reflect
5555 ./reflect >flect 2>&1
5556 if $contains "/dev/fd" flect >/dev/null; then
5557 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5558 val="$define"
5559 else
5560 $cat <<EOM
5561If you are not sure if they are secure, I can check but I'll need a
5562username and password different from the one you are using right now.
5563If you don't have such a username or don't want me to test, simply
5564enter 'none'.
5565
5566EOM
5567 rp='Other username to test security of setuid scripts with?'
5568 dflt='none'
5569 . ./myread
5570 case "$ans" in
5571 n|none)
5572 case "$d_suidsafe" in
5573 '') echo "I'll assume setuid scripts are *not* secure." >&4
5574 dflt=n;;
5575 "$undef")
5576 echo "Well, the $hint value is *not* secure." >&4
5577 dflt=n;;
5578 *) echo "Well, the $hint value *is* secure." >&4
5579 dflt=y;;
5580 esac
c1a7f87b 5581 ;;
b4eb6b3d
JH
5582 *)
5583 $rm -f reflect flect
5584 echo "#!$ls" >reflect
5585 chmod +x,u+s reflect
5586 echo >flect
5587 chmod a+w flect
5588 echo '"su" will (probably) prompt you for '"$ans's password."
5589 su $ans -c './reflect >flect'
5590 if $contains "/dev/fd" flect >/dev/null; then
5591 echo "Okay, it looks like setuid scripts are secure." >&4
5592 dflt=y
5593 else
5594 echo "I don't think setuid scripts are secure." >&4
5595 dflt=n
5596 fi
5597 ;;
5598 esac
5599 rp='Does your kernel have *secure* setuid scripts?'
5600 . ./myread
5601 case "$ans" in
5602 [yY]*) val="$define";;
5603 *) val="$undef";;
5604 esac
5605 fi
5606else
5607 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5608 echo "(That's for file descriptors, not floppy disks.)"
5609 val="$undef"
5610fi
5611set d_suidsafe
5612eval $setvar
5613
5614$rm -f reflect flect
5615
5616: now see if they want to do setuid emulation
5617echo " "
5618val="$undef"
5619case "$d_suidsafe" in
5620"$define")
5621 val="$undef"
5622 echo "No need to emulate SUID scripts since they are secure here." >& 4
5623 ;;
5624*)
5625 $cat <<EOM
5626Some systems have disabled setuid scripts, especially systems where
5627setuid scripts cannot be secure. On systems where setuid scripts have
5628been disabled, the setuid/setgid bits on scripts are currently
5629useless. It is possible for $package to detect those bits and emulate
5630setuid/setgid in a secure fashion. This emulation will only work if
5631setuid scripts have been disabled in your kernel.
5632
5633EOM
5634 case "$d_dosuid" in
5635 "$define") dflt=y ;;
5636 *) dflt=n ;;
5637 esac
5638 rp="Do you want to do setuid/setgid emulation?"
5639 . ./myread
5640 case "$ans" in
5641 [yY]*) val="$define";;
5642 *) val="$undef";;
5643 esac
5644 ;;
5645esac
5646set d_dosuid
5647eval $setvar
5648
5649: determine filename position in cpp output
5650echo " "
5651echo "Computing filename position in cpp output for #include directives..." >&4
5652echo '#include <stdio.h>' > foo.c
5653$cat >fieldn <<EOF
5654$startsh
5655$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5656$grep '^[ ]*#.*stdio\.h' | \
5657while read cline; do
5658 pos=1
5659 set \$cline
5660 while $test \$# -gt 0; do
5661 if $test -r \`echo \$1 | $tr -d '"'\`; then
5662 echo "\$pos"
5663 exit 0
5664 fi
5665 shift
5666 pos=\`expr \$pos + 1\`
5667 done
5668done
5669EOF
5670chmod +x fieldn
5671fieldn=`./fieldn`
5672$rm -f foo.c fieldn
5673case $fieldn in
5674'') pos='???';;
56751) pos=first;;
56762) pos=second;;
56773) pos=third;;
5678*) pos="${fieldn}th";;
5679esac
5680echo "Your cpp writes the filename in the $pos field of the line."
5681
5682: locate header file
5683$cat >findhdr <<EOF
5684$startsh
5685wanted=\$1
5686name=''
5687for usrincdir in $usrinc
5688do
5689 if test -f \$usrincdir/\$wanted; then
5690 echo "\$usrincdir/\$wanted"
5691 exit 0
5692 fi
5693done
5694awkprg='{ print \$$fieldn }'
5695echo "#include <\$wanted>" > foo\$\$.c
5696$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5697$grep "^[ ]*#.*\$wanted" | \
5698while read cline; do
5699 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5700 case "\$name" in
5701 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5702 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5703 *) exit 2;;
5704 esac;
5705done;
5706#
5707# status = 0: grep returned 0 lines, case statement not executed
5708# status = 1: headerfile found
5709# status = 2: while loop executed, no headerfile found
5710#
5711status=\$?
5712$rm -f foo\$\$.c;
5713if test \$status -eq 1; then
5714 exit 0;
5715fi
5716exit 1
5717EOF
5718chmod +x findhdr
5719
5720: define an alternate in-header-list? function
5721inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5722cont=true; xxf="echo \"<\$1> found.\" >&4";
5723case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5724*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5725esac;
5726case $# in 4) instead=instead;; *) instead="at last";; esac;
5727while $test "$cont"; do
5728 xxx=`./findhdr $1`
5729 var=$2; eval "was=\$$2";
5730 if $test "$xxx" && $test -r "$xxx";
5731 then eval $xxf;
5732 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5733 cont="";
5734 else eval $xxnf;
5735 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5736 set $yyy; shift; shift; yyy=$@;
5737 case $# in 0) cont="";;
5738 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5739 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5740 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5741 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5742 esac;
5743done;
5744while $test "$yyy";
5745do set $yyy; var=$2; eval "was=\$$2";
5746 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5747 set $yyy; shift; shift; yyy=$@;
5748done'
5749
5750: see if this is a malloc.h system
5751set malloc.h i_malloc
5752eval $inhdr
5753
5754: see if stdlib is available
5755set stdlib.h i_stdlib
5756eval $inhdr
5757
5758: determine which malloc to compile in
5759echo " "
5760case "$usemymalloc" in
5761''|[yY]*|true|$define) dflt='y' ;;
5762*) dflt='n' ;;
5763esac
5764rp="Do you wish to attempt to use the malloc that comes with $package?"
5765. ./myread
5766usemymalloc="$ans"
5767case "$ans" in
5768y*|true)
5769 usemymalloc='y'
5770 mallocsrc='malloc.c'
5771 mallocobj="malloc$_o"
5772 d_mymalloc="$define"
5773 case "$libs" in
5774 *-lmalloc*)
5775 : Remove malloc from list of libraries to use
5776 echo "Removing unneeded -lmalloc from library list" >&4
5777 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5778 shift
5779 libs="$*"
5780 echo "libs = $libs" >&4
5781 ;;
5782 esac
5783 ;;
5784*)
5785 usemymalloc='n'
5786 mallocsrc=''
5787 mallocobj=''
5788 d_mymalloc="$undef"
5789 ;;
5790esac
5791
5792: compute the return types of malloc and free
5793echo " "
5794$cat >malloc.c <<END
5795#$i_malloc I_MALLOC
5796#$i_stdlib I_STDLIB
5797#include <stdio.h>
5798#include <sys/types.h>
5799#ifdef I_MALLOC
5800#include <malloc.h>
5801#endif
5802#ifdef I_STDLIB
5803#include <stdlib.h>
5804#endif
5805#ifdef TRY_MALLOC
5806void *malloc();
5807#endif
5808#ifdef TRY_FREE
5809void free();
5810#endif
5811END
5812case "$malloctype" in
5813'')
5814 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5815 malloctype='void *'
5816 else
5817 malloctype='char *'
5818 fi
5819 ;;
5820esac
5821echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5822
5823case "$freetype" in
5824'')
5825 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5826 freetype='void'
5827 else
5828 freetype='int'
5829 fi
5830 ;;
5831esac
5832echo "Your system uses $freetype free(), it would seem." >&4
5833$rm -f malloc.[co]
5834$cat <<EOM
5835
5836After $package is installed, you may wish to install various
5837add-on modules and utilities. Typically, these add-ons will
5838be installed under $prefix with the rest
5839of this package. However, you may wish to install such add-ons
5840elsewhere under a different prefix.
5841
5842If you do not wish to put everything under a single prefix, that's
5843ok. You will be prompted for the individual locations; this siteprefix
5844is only used to suggest the defaults.
5845
5846The default should be fine for most people.
5847
5848EOM
5849fn=d~+
5850rp='Installation prefix to use for add-on modules and utilities?'
5851: XXX Here might be another good place for an installstyle setting.
5852case "$siteprefix" in
5853'') dflt=$prefix ;;
5854*) dflt=$siteprefix ;;
5855esac
5856. ./getfile
5857: XXX Prefixit unit does not yet support siteprefix and vendorprefix
5858oldsiteprefix=''
5859case "$siteprefix" in
5860'') ;;
5861*) case "$ans" in
5862 "$prefix") ;;
5863 *) oldsiteprefix="$prefix";;
5864 esac
5865 ;;
5866esac
5867siteprefix="$ans"
5868siteprefixexp="$ansexp"
5869
5870: determine where site specific libraries go.
5871: Usual default is /usr/local/lib/perl5/site_perl/$version
5872: The default "style" setting is made in installstyle.U
5873: XXX No longer works with Prefixit stuff.
5874prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5875case "$sitelib" in
5876'') case "$installstyle" in
5877 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5878 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5879 esac
5880 ;;
5881*) dflt="$sitelib"
5882 ;;
5883esac
5884$cat <<EOM
5885
5886The installation process will create a directory for
5887site-specific extensions and modules. Most users find it convenient
5888to place all site-specific files in this directory rather than in the
5889main distribution directory.
5890
5891EOM
5892fn=d~+
5893rp='Pathname for the site-specific library files?'
5894. ./getfile
5895sitelib="$ans"
5896sitelibexp="$ansexp"
5897sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5898: Change installation prefix, if necessary.
5899if $test X"$prefix" != X"$installprefix"; then
5900 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5901else
5902 installsitelib="$sitelibexp"
5903fi
5904
5905: determine where site specific architecture-dependent libraries go.
5906: sitelib default is /usr/local/lib/perl5/site_perl/$version
5907: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5908: sitelib may have an optional trailing /share.
5909case "$sitearch" in
5910'') dflt=`echo $sitelib | $sed 's,/share$,,'`
5911 dflt="$dflt/$archname"
5912 ;;
5913*) dflt="$sitearch"
5914 ;;
5915esac
5916set sitearch sitearch none
5917eval $prefixit
5918$cat <<EOM
5919
5920The installation process will also create a directory for
5921architecture-dependent site-specific extensions and modules.
5922
5923EOM
5924fn=d~+
5925rp='Pathname for the site-specific architecture-dependent library files?'
5926. ./getfile
5927sitearch="$ans"
5928sitearchexp="$ansexp"
5929: Change installation prefix, if necessary.
5930if $test X"$prefix" != X"$installprefix"; then
5931 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5932else
5933 installsitearch="$sitearchexp"
5934fi
5935
5936$cat <<EOM
5937
5938The installation process will also create a directory for
5939vendor-supplied add-ons. Vendors who supply perl with their system
5940may find it convenient to place all vendor-supplied files in this
5941directory rather than in the main distribution directory. This will
5942ease upgrades between binary-compatible maintenance versions of perl.
5943
5944Of course you may also use these directories in whatever way you see
5945fit. For example, you might use them to access modules shared over a
5946company-wide network.
5947
5948The default answer should be fine for most people.
5949This causes further questions about vendor add-ons to be skipped
5950and no vendor-specific directories will be configured for perl.
5951
5952EOM
5953rp='Do you want to configure vendor-specific add-on directories?'
5954case "$usevendorprefix" in
5955define|true|[yY]*) dflt=y ;;
5956*) : User may have set vendorprefix directly on Configure command line.
5957 case "$vendorprefix" in
5958 ''|' ') dflt=n ;;
5959 *) dflt=y ;;
5960 esac
5961 ;;
5962esac
5963. ./myread
5964case "$ans" in
5965[yY]*) fn=d~+
5966 rp='Installation prefix to use for vendor-supplied add-ons?'
5967 case "$vendorprefix" in
5968 '') dflt='' ;;
5969 *) dflt=$vendorprefix ;;
5970 esac
5971 . ./getfile
5972 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5973 oldvendorprefix=''
5974 case "$vendorprefix" in
5975 '') ;;
5976 *) case "$ans" in
5977 "$prefix") ;;
5978 *) oldvendorprefix="$prefix";;
5979 esac
5980 ;;
5981 esac
5982 usevendorprefix="$define"
5983 vendorprefix="$ans"
5984 vendorprefixexp="$ansexp"
5985 ;;
5986*) usevendorprefix="$undef"
5987 vendorprefix=''
5988 vendorprefixexp=''
5989 ;;
5990esac
5991
5992case "$vendorprefix" in
5993'') d_vendorlib="$undef"
5994 vendorlib=''
5995 vendorlibexp=''
5996 ;;
5997*) d_vendorlib="$define"
5998 : determine where vendor-supplied modules go.
5999 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6000 case "$vendorlib" in
6001 '')
6002 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6003 case "$installstyle" in
6004 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6005 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6006 esac
6007 ;;
6008 *) dflt="$vendorlib"
6009 ;;
6010 esac
6011 fn=d~+
6012 rp='Pathname for the vendor-supplied library files?'
6013 . ./getfile
6014 vendorlib="$ans"
6015 vendorlibexp="$ansexp"
6016 ;;
6017esac
6018vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6019: Change installation prefix, if necessary.
6020if $test X"$prefix" != X"$installprefix"; then
6021 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6022else
6023 installvendorlib="$vendorlibexp"
6024fi
6025
6026case "$vendorprefix" in
6027'') d_vendorarch="$undef"
6028 vendorarch=''
6029 vendorarchexp=''
6030 ;;
6031*) d_vendorarch="$define"
6032 : determine where vendor-supplied architecture-dependent libraries go.
6033 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6034 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6035 : vendorlib may have an optional trailing /share.
6036 case "$vendorarch" in
6037 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6038 dflt="$dflt/$archname"
6039 ;;
6040 *) dflt="$vendorarch" ;;
6041 esac
6042 fn=d~+
6043 rp='Pathname for vendor-supplied architecture-dependent files?'
6044 . ./getfile
6045 vendorarch="$ans"
6046 vendorarchexp="$ansexp"
6047 ;;
6048esac
6049: Change installation prefix, if necessary.
6050if $test X"$prefix" != X"$installprefix"; then
6051 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6052else
6053 installvendorarch="$vendorarchexp"
6054fi
6055
6056: Final catch-all directories to search
6057$cat <<EOM
6058
6059Lastly, you can have perl look in other directories for extensions and
6060modules in addition to those already specified.
6061These directories will be searched after
6062 $sitearch
6063 $sitelib
6064EOM
6065test X"$vendorlib" != "X" && echo ' ' $vendorlib
6066test X"$vendorarch" != "X" && echo ' ' $vendorarch
6067echo ' '
6068case "$otherlibdirs" in
6069''|' ') dflt='none' ;;
6070*) dflt="$otherlibdirs" ;;
6071esac
6072$cat <<EOM
6073Enter a colon-separated set of extra paths to include in perl's @INC
6074search path, or enter 'none' for no extra paths.
6075
6076EOM
6077
6078rp='Colon-separated list of additional directories for perl to search?'
6079. ./myread
6080case "$ans" in
6081' '|''|none) otherlibdirs=' ' ;;
6082*) otherlibdirs="$ans" ;;
6083esac
6084case "$otherlibdirs" in
6085' ') val=$undef ;;
6086*) val=$define ;;
6087esac
6088set d_perl_otherlibdirs
6089eval $setvar
6090
6091: Cruising for prototypes
6092echo " "
6093echo "Checking out function prototypes..." >&4
6094$cat >prototype.c <<'EOCP'
6095int main(int argc, char *argv[]) {
6096 exit(0);}
6097EOCP
6098if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6099 echo "Your C compiler appears to support function prototypes."
6100 val="$define"
6101else
6102 echo "Your C compiler doesn't seem to understand function prototypes."
6103 val="$undef"
6104fi
6105set prototype
6106eval $setvar
6107$rm -f prototype*
6108
6109case "$prototype" in
6110"$define") ;;
6111*) ansi2knr='ansi2knr'
6112 echo " "
6113 cat <<EOM >&4
6114
6115$me: FATAL ERROR:
6116This version of $package can only be compiled by a compiler that
6117understands function prototypes. Unfortunately, your C compiler
6118 $cc $ccflags
6119doesn't seem to understand them. Sorry about that.
6120
6121If GNU cc is available for your system, perhaps you could try that instead.
6122
6123Eventually, we hope to support building Perl with pre-ANSI compilers.
6124If you would like to help in that effort, please contact <perlbug@perl.org>.
6125
6126Aborting Configure now.
6127EOM
6128 exit 2
6129 ;;
6130esac
6131
6132: determine where public executables go
6133echo " "
6134set dflt bin bin
6135eval $prefixit
6136fn=d~
6137rp='Pathname where the public executables will reside?'
6138. ./getfile
6139if $test "X$ansexp" != "X$binexp"; then
6140 installbin=''
6141fi
6142bin="$ans"
6143binexp="$ansexp"
6144: Change installation prefix, if necessary.
6145: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6146if $test X"$prefix" != X"$installprefix"; then
6147 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6148else
6149 installbin="$binexp"
6150fi
6151
6152: Find perl5.005 or later.
6153echo "Looking for a previously installed perl5.005 or later... "
6154case "$perl5" in
6155'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6156 : Check if this perl is recent and can load a simple module
6157 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6158 perl5=$tdir/perl
6159 break;
6160 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6161 perl5=$tdir/perl
6162 break;
6163 fi
6164 done
6165 ;;
6166*) perl5="$perl5"
6167 ;;
6168esac
6169case "$perl5" in
6170'') echo "None found. That's ok.";;
6171*) echo "Using $perl5." ;;
6172esac
6173
6174: Determine list of previous versions to include in @INC
6175$cat > getverlist <<EOPL
6176#!$perl5 -w
6177use File::Basename;
6178\$api_versionstring = "$api_versionstring";
6179\$version = "$version";
6180\$stem = "$sitelib_stem";
6181\$archname = "$archname";
6182EOPL
6183 $cat >> getverlist <<'EOPL'
6184# Can't have leading @ because metaconfig interprets it as a command!
6185;@inc_version_list=();
6186# XXX Redo to do opendir/readdir?
6187if (-d $stem) {
6188 chdir($stem);
6189 ;@candidates = glob("5.*");
6190}
6191else {
6192 ;@candidates = ();
6193}
6194
6195# XXX ToDo: These comparisons must be reworked when two-digit
6196# subversions come along, so that 5.7.10 compares as greater than
6197# 5.7.3! By that time, hope that 5.6.x is sufficiently
6198# widespread that we can use the built-in version vectors rather
6199# than reinventing them here. For 5.6.0, however, we must
6200# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6201foreach $d (@candidates) {
6202 if ($d lt $version) {
6203 if ($d ge $api_versionstring) {
6204 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6205 }
6206 elsif ($d ge "5.005") {
6207 unshift(@inc_version_list, grep { -d } $d);
6208 }
6209 }
6210 else {
6211 # Skip newer version. I.e. don't look in
6212 # 5.7.0 if we're installing 5.6.1.
6213 }
6214}
6215
6216if (@inc_version_list) {
6217 print join(' ', @inc_version_list);
6218}
6219else {
6220 # Blank space to preserve value for next Configure run.
6221 print " ";
6222}
6223EOPL
6224chmod +x getverlist
6225case "$inc_version_list" in
6226'') if test -x "$perl5"; then
6227 dflt=`$perl5 getverlist`
6228 else
6229 dflt='none'
6230 fi
6231 ;;
6232$undef) dflt='none' ;;
6233*) dflt="$inc_version_list" ;;
6234esac
6235case "$dflt" in
6236''|' ') dflt=none ;;
6237esac
6238case "$dflt" in
62395.005) case "$bincompat5005" in
6240 $define|true|[yY]*) ;;
6241 *) dflt=none ;;
6242 esac
6243 ;;
6244esac
6245$cat <<'EOM'
6246
6247In order to ease the process of upgrading, this version of perl
6248can be configured to use modules built and installed with earlier
6249versions of perl that were installed under $prefix. Specify here
6250the list of earlier versions that this version of perl should check.
6251If Configure detected no earlier versions of perl installed under
6252$prefix, then the list will be empty. Answer 'none' to tell perl
6253to not search earlier versions.
6254
6255The default should almost always be sensible, so if you're not sure,
6256just accept the default.
6257EOM
6258
6259rp='List of earlier versions to include in @INC?'
6260. ./myread
6261case "$ans" in
6262[Nn]one|''|' ') inc_version_list=' ' ;;
6263*) inc_version_list="$ans" ;;
6264esac
6265case "$inc_version_list" in
6266''|' ')
6267 inc_version_list_init='0';;
6268*) inc_version_list_init=`echo $inc_version_list |
6269 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6270 ;;
6271esac
6272$rm -f getverlist
6273
6274: determine whether to install perl also as /usr/bin/perl
6275
6276echo " "
6277if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6278 $cat <<EOM
6279Many scripts expect perl to be installed as /usr/bin/perl.
6280I can install the perl you are about to compile also as /usr/bin/perl
6281(in addition to $installbin/perl).
6282EOM
6283 case "$installusrbinperl" in
6284 "$undef"|[nN]*) dflt='n';;
6285 *) dflt='y';;
6286 esac
6287 rp="Do you want to install perl as /usr/bin/perl?"
6288 . ./myread
6289 case "$ans" in
6290 [yY]*) val="$define";;
6291 *) val="$undef" ;;
6292 esac
6293else
6294 val="$undef"
6295fi
6296set installusrbinperl
6297eval $setvar
6298
6299: see if dld is available
6300set dld.h i_dld
6301eval $inhdr
6302
6303: see if dlopen exists
6304xxx_runnm="$runnm"
6305runnm=false
6306set dlopen d_dlopen
6307eval $inlibc
6308runnm="$xxx_runnm"
6309
6310: determine which dynamic loading, if any, to compile in
6311echo " "
6312dldir="ext/DynaLoader"
6313case "$usedl" in
6314$define|y|true)
6315 dflt='y'
6316 usedl="$define"
6317 ;;
6318$undef|n|false)
6319 dflt='n'
6320 usedl="$undef"
6321 ;;
6322*)
6323 dflt='n'
6324 case "$d_dlopen" in
6325 $define) dflt='y' ;;
6326 esac
6327 case "$i_dld" in
6328 $define) dflt='y' ;;
6329 esac
6330 : Does a dl_xxx.xs file exist for this operating system
6331 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6332 ;;
6333esac
6334rp="Do you wish to use dynamic loading?"
6335. ./myread
6336usedl="$ans"
6337case "$ans" in
6338y*) usedl="$define"
6339 case "$dlsrc" in
6340 '')
6341 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6342 dflt="$dldir/dl_${osname}.xs"
6343 elif $test "$d_dlopen" = "$define" ; then
6344 dflt="$dldir/dl_dlopen.xs"
6345 elif $test "$i_dld" = "$define" ; then
6346 dflt="$dldir/dl_dld.xs"
6347 else
6348 dflt=''
6349 fi
6350 ;;
6351 *) dflt="$dldir/$dlsrc"
6352 ;;
6353 esac
6354 echo "The following dynamic loading files are available:"
6355 : Can not go over to $dldir because getfile has path hard-coded in.
6356 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6357 rp="Source file to use for dynamic loading"
6358 fn="fne"
6359 gfpth="$src"
6360 . ./getfile
6361 usedl="$define"
6362 : emulate basename
6363 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6364
6365 $cat << EOM
6366
6367Some systems may require passing special flags to $cc -c to
6368compile modules that will be used to create a shared library.
6369To use no flags, say "none".
6370
6371EOM
6372 case "$cccdlflags" in
6373 '') case "$gccversion" in
6374 '') case "$osname" in
6375 hpux) dflt='+z' ;;
6376 next) dflt='none' ;;
6377 irix*) dflt='-KPIC' ;;
6378 svr4*|esix*|solaris) dflt='-KPIC' ;;
6379 sunos) dflt='-pic' ;;
6380 *) dflt='none' ;;
6381 esac
6382 ;;
6383 *) case "$osname" in
6384 svr4*|esix*|solaris) dflt='-fPIC' ;;
6385 *) dflt='-fpic' ;;
6386 esac ;;
6387 esac ;;
6388 ' ') dflt='none' ;;
6389 *) dflt="$cccdlflags" ;;
6390 esac
6391 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6392 . ./myread
6393 case "$ans" in
6394 none) cccdlflags=' ' ;;
6395 *) cccdlflags="$ans" ;;
6396 esac
6397
6398 cat << EOM
6399
6400Some systems use ld to create libraries that can be dynamically loaded,
6401while other systems (such as those using ELF) use $cc.
6402
6403EOM
6404 case "$ld" in
6405 '') $cat >try.c <<'EOM'
6406/* Test for whether ELF binaries are produced */
6407#include <fcntl.h>
6408#include <stdlib.h>
6409int main() {
6410 char b[4];
6411 int i = open("a.out",O_RDONLY);
6412 if(i == -1)
6413 exit(1); /* fail */
6414 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6415 exit(0); /* succeed (yes, it's ELF) */
6416 else
6417 exit(1); /* fail */
6418}
6419EOM
6420 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6421 cat <<EOM
6422You appear to have ELF support. I'll use $cc to build dynamic libraries.
6423EOM
6424 dflt="$cc"
6425 else
6426 echo "I'll use ld to build dynamic libraries."
6427 dflt='ld'
6428 fi
6429 rm -f try.c a.out
6430 ;;
6431 *) dflt="$ld"
6432 ;;
6433 esac
6434
6435 rp="What command should be used to create dynamic libraries?"
6436 . ./myread
6437 ld="$ans"
6438
6439 cat << EOM
6440
6441Some systems may require passing special flags to $ld to create a
6442library that can be dynamically loaded. If your ld flags include
6443-L/other/path options to locate libraries outside your loader's normal
6444search path, you may need to specify those -L options here as well. To
6445use no flags, say "none".
6446
6447EOM
6448 case "$lddlflags" in
6449 '') case "$osname" in
6450 beos) dflt='-nostart' ;;
6451 hpux) dflt='-b';
6452 case "$gccversion" in
6453 '') dflt="$dflt +vnocompatwarnings" ;;
6454 esac
6455 ;;
6456 linux|irix*) dflt='-shared' ;;
6457 next) dflt='none' ;;
6458 solaris) dflt='-G' ;;
6459 sunos) dflt='-assert nodefinitions' ;;
6460 svr4*|esix*) dflt="-G $ldflags" ;;
6461 *) dflt='none' ;;
6462 esac
6463 ;;
6464 *) dflt="$lddlflags" ;;
6465 esac
6466
6467 : Try to guess additional flags to pick up local libraries.
6468 : Be careful not to append to a plain 'none'
6469 case "$dflt" in
6470 none) dflt='' ;;
6471 esac
6472 for thisflag in $ldflags; do
6473 case "$thisflag" in
6474 -L*|-R*)
6475 case " $dflt " in
6476 *" $thisflag "*) ;;
6477 *) dflt="$dflt $thisflag" ;;
6478 esac
6479 ;;
6480 esac
6481 done
6482
6483 case "$dflt" in
6484 ''|' ') dflt='none' ;;
6485 esac
6486
6487 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6488 . ./myread
6489 case "$ans" in
6490 none) lddlflags=' ' ;;
6491 *) lddlflags="$ans" ;;
6492 esac
6493
6494 cat <<EOM
6495
6496Some systems may require passing special flags to $cc to indicate that
6497the resulting executable will use dynamic linking. To use no flags,
6498say "none".
6499
6500EOM
6501 case "$ccdlflags" in
6502 '') case "$osname" in
6503 hpux) dflt='-Wl,-E' ;;
6504 linux) dflt='-rdynamic' ;;
6505 next) dflt='none' ;;
6506 sunos) dflt='none' ;;
6507 *) dflt='none' ;;
6508 esac ;;
6509 ' ') dflt='none' ;;
6510 *) dflt="$ccdlflags" ;;
6511 esac
6512 rp="Any special flags to pass to $cc to use dynamic linking?"
6513 . ./myread
6514 case "$ans" in
6515 none) ccdlflags=' ' ;;
6516 *) ccdlflags="$ans" ;;
6517 esac
6518 ;;
6519*) usedl="$undef"
6520 ld='ld'
6521 dlsrc='dl_none.xs'
6522 lddlflags=''
6523 ccdlflags=''
6524 ;;
6525esac
6526
6527also=''
6528case "$usedl" in
6529$undef)
6530 # No dynamic loading being used, so don't bother even to prompt.
6531 useshrplib='false'
6532 ;;
6533*) case "$useshrplib" in
6534 '') case "$osname" in
6535 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6536 dflt=y
6537 also='Building a shared libperl is required for dynamic loading to work on your system.'
6538 ;;
6539 next*)
6540 case "$osvers" in
6541 4*) dflt=y
6542 also='Building a shared libperl is needed for MAB support.'
6543 ;;
6544 *) dflt=n
6545 ;;
6546 esac
6547 ;;
6548 *) dflt=n
6549 ;;
6550 esac
6551 ;;
6552 $define|true|[Yy]*)
6553 dflt=y
6554 ;;
6555 *) dflt=n
6556 ;;
6557 esac
6558 $cat << EOM
6559
6560The perl executable is normally obtained by linking perlmain.c with
6561libperl${_a}, any static extensions (usually just DynaLoader), and
6562any other libraries needed on this system (such as -lm, etc.). Since
6563your system supports dynamic loading, it is probably possible to build
6564a shared libperl.$so. If you will have more than one executable linked
6565to libperl.$so, this will significantly reduce the size of each
6566executable, but it may have a noticeable affect on performance. The
6567default is probably sensible for your system.
6568$also
6569
6570EOM
6571 rp="Build a shared libperl.$so (y/n)"
6572 . ./myread
6573 case "$ans" in
6574 true|$define|[Yy]*)
6575 useshrplib='true' ;;
6576 *) useshrplib='false' ;;
6577 esac
6578 ;;
6579esac
6580
6581case "$useshrplib" in
6582true)
6583 case "$libperl" in
6584 '')
6585 # Figure out a good name for libperl.so. Since it gets stored in
6586 # a version-specific architecture-dependent library, the version
6587 # number isn't really that important, except for making cc/ld happy.
6588 #
6589 # A name such as libperl.so.3.1
6590 majmin="libperl.$so.$patchlevel.$subversion"
6591 # A name such as libperl.so.301
6592 majonly=`echo $patchlevel $subversion |
6593 $awk '{printf "%d%02d", $1, $2}'`
6594 majonly=libperl.$so.$majonly
6595 # I'd prefer to keep the os-specific stuff here to a minimum, and
6596 # rely on figuring it out from the naming of libc.
6597 case "${osname}${osvers}" in
6598 next4*)
6599 dflt=libperl.5.$so
6600 # XXX How handle the --version stuff for MAB?
6601 ;;
6602 linux*) # ld won't link with a bare -lperl otherwise.
6603 dflt=libperl.$so
6604 ;;
6605 cygwin*) # include version
6606 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6607 ;;
6608 *) # Try to guess based on whether libc has major.minor.
6609 case "$libc" in
6610 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6611 *libc.$so.[0-9]*) dflt=$majonly ;;
6612 *) dflt=libperl.$so ;;
6613 esac
6614 ;;
6615 esac
6616 ;;
6617 *) dflt=$libperl
6618 ;;
6619 esac
6620 cat << EOM
6621
6622I need to select a good name for the shared libperl. If your system uses
6623library names with major and minor numbers, then you might want something
6624like $majmin. Alternatively, if your system uses a single version
6625number for shared libraries, then you might want to use $majonly.
6626Or, your system might be quite happy with a simple libperl.$so.
6627
6628Since the shared libperl will get installed into a version-specific
6629architecture-dependent directory, the version number of the shared perl
6630library probably isn't important, so the default should be o.k.
6631
6632EOM
6633 rp='What name do you want to give to the shared libperl?'
6634 . ./myread
6635 libperl=$ans
6636 echo "Ok, I'll use $libperl"
6637 ;;
6638*)
6639 libperl="libperl${_a}"
6640 ;;
6641esac
6642
6643# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6644case "$shrpdir" in
6645'') ;;
6646*) $cat >&4 <<EOM
6647WARNING: Use of the shrpdir variable for the installation location of
6648the shared $libperl is not supported. It was never documented and
6649will not work in this version. Let me (perlbug@perl.org)
6650know of any problems this may cause.
6651
6652EOM
6653 case "$shrpdir" in
6654 "$archlibexp/CORE")
6655 $cat >&4 <<EOM
6656But your current setting of $shrpdir is
6657the default anyway, so it's harmless.
6658EOM
6659 ;;
6660 *)
6661 $cat >&4 <<EOM
6662Further, your current attempted setting of $shrpdir
6663conflicts with the value of $archlibexp/CORE
6664that installperl will use.
6665EOM
6666 ;;
6667 esac
6668 ;;
6669esac
6670
6671# How will the perl executable find the installed shared $libperl?
6672# Add $xxx to ccdlflags.
6673# If we can't figure out a command-line option, use $shrpenv to
6674# set env LD_RUN_PATH. The main perl makefile uses this.
6675shrpdir=$archlibexp/CORE
6676xxx=''
6677tmp_shrpenv=''
6678if "$useshrplib"; then
6679 case "$osname" in
6680 aix)
6681 # We'll set it in Makefile.SH...
6682 ;;
6683 solaris|netbsd)
6684 xxx="-R $shrpdir"
6685 ;;
6686 freebsd)
6687 xxx="-Wl,-R$shrpdir"
6688 ;;
6689 linux|irix*|dec_osf)
6690 xxx="-Wl,-rpath,$shrpdir"
6691 ;;
6692 next)
6693 # next doesn't like the default...
6694 ;;
6695 beos)
6696 # beos doesn't like the default, either.
6697 ;;
6698 hpux*)
6699 # hpux doesn't like the default, either.
6700 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6701 ;;
6702 *)
6703 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6704 ;;
6705 esac
6706 case "$xxx" in
6707 '') ;;
6708 *)
6709 # Only add $xxx if it isn't already in ccdlflags.
6710 case " $ccdlflags " in
6711 *" $xxx "*) ;;
6712 *) ccdlflags="$ccdlflags $xxx"
6713 cat <<EOM >&4
6714
6715Adding $xxx to the flags
6716passed to $ld so that the perl executable will find the
6717installed shared $libperl.
6718
6719EOM
6720 ;;
6721 esac
6722 ;;
6723 esac
6724fi
6725# Fix ccdlflags in AIX for building external extensions.
6726# (For building Perl itself bare -bE:perl.exp is needed,
6727# Makefile.SH takes care of this.)
6728case "$osname" in
6729aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6730esac
6731# Respect a hint or command-line value.
6732case "$shrpenv" in
6733'') shrpenv="$tmp_shrpenv" ;;
6734esac
6735case "$ldlibpthname" in
6736'') ldlibpthname=LD_LIBRARY_PATH ;;
6737none) ldlibpthname='' ;;
6738esac
6739
6740: determine where manual pages are on this system
6741echo " "
6742case "$sysman" in
6743'')
6744 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6745 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6746 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6747 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6748 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6749 sysman=`./loc . /usr/man/man1 $syspath`
6750 ;;
6751esac
6752if $test -d "$sysman"; then
6753 echo "System manual is in $sysman." >&4
6754else
6755 echo "Could not find manual pages in source form." >&4
6756fi
6757
6758: determine where manual pages go
6759set man1dir man1dir none
6760eval $prefixit
6761$cat <<EOM
6762
6763$spackage has manual pages available in source form.
6764EOM
6765case "$nroff" in
6766nroff)
6767 echo "However, you don't have nroff, so they're probably useless to you."
6768 case "$man1dir" in
6769 '') man1dir="none";;
6770 esac;;
6771esac
6772echo "If you don't want the manual sources installed, answer 'none'."
6773case "$man1dir" in
6774' ') dflt=none
6775 ;;
6776'')
6777 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6778 lookpath="$lookpath $prefixexp/man/p_man/man1"
6779 lookpath="$lookpath $prefixexp/man/u_man/man1"
6780 lookpath="$lookpath $prefixexp/man/man.1"
6781 case "$sysman" in
6782 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6783 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6784 esac
6785 set dflt
6786 eval $prefixup
6787 ;;
6788*) dflt="$man1dir"
6789 ;;
6790esac
6791echo " "
6792fn=dn+~
6793rp="Where do the main $spackage manual pages (source) go?"
6794. ./getfile
6795if $test "X$man1direxp" != "X$ansexp"; then
6796 installman1dir=''
6797fi
6798man1dir="$ans"
6799man1direxp="$ansexp"
6800case "$man1dir" in
6801'') man1dir=' '
6802 installman1dir='';;
6803esac
6804
6805: Change installation prefix, if necessary.
6806if $test X"$prefix" != X"$installprefix"; then
6807 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6808else
6809 installman1dir="$man1direxp"
6810fi
6811
6812: What suffix to use on installed man pages
6813
6814case "$man1dir" in
6815' ')
6816 man1ext='0'
6817 ;;
6818*)
6819 rp="What suffix should be used for the main $spackage man pages?"
6820 case "$man1ext" in
6821 '') case "$man1dir" in
6822 *1) dflt=1 ;;
6823 *1p) dflt=1p ;;
6824 *1pm) dflt=1pm ;;
6825 *l) dflt=l;;
6826 *n) dflt=n;;
6827 *o) dflt=o;;
6828 *p) dflt=p;;
6829 *C) dflt=C;;
6830 *L) dflt=L;;
6831 *L1) dflt=L1;;
6832 *) dflt=1;;
6833 esac
6834 ;;
6835 *) dflt="$man1ext";;
6836 esac
6837 . ./myread
6838 man1ext="$ans"
6839 ;;
6840esac
6841
6842: see if we can have long filenames
6843echo " "
6844first=123456789abcdef
6845$rm -f $first
6846if (echo hi >$first) 2>/dev/null; then
6847 if $test -f 123456789abcde; then
6848 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6849 val="$undef"
6850 else
6851 echo 'You can have filenames longer than 14 characters.'>&4
6852 val="$define"
6853 fi
6854else
6855 $cat <<'EOM'
6856You can't have filenames longer than 14 chars.
6857You can't even think about them!
6858EOM
6859 val="$undef"
6860fi
6861set d_flexfnam
6862eval $setvar
6863$rm -rf 123456789abcde*
6864
6865: determine where library module manual pages go
6866set man3dir man3dir none
6867eval $prefixit
6868$cat <<EOM
6869
6870$spackage has manual pages for many of the library modules.
6871EOM
6872
6873case "$nroff" in
6874nroff)
6875 $cat <<'EOM'
6876However, you don't have nroff, so they're probably useless to you.
6877EOM
6878 case "$man3dir" in
6879 '') man3dir="none";;
6880 esac;;
6881esac
6882
6883case "$d_flexfnam" in
6884undef)
6885 $cat <<'EOM'
6886However, your system can't handle the long file names like File::Basename.3.
6887EOM
6888 case "$man3dir" in
6889 '') man3dir="none";;
6890 esac;;
6891esac
6892
6893echo "If you don't want the manual sources installed, answer 'none'."
6894prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6895case "$man3dir" in
6896'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6897 if $test -d "$privlib/man/man3"; then
6898 cat <<EOM >&4
6899
6900WARNING: Previous versions of perl installed man3 pages into
6901$privlib/man/man3. This version will suggest a
6902new default of $dflt.
6903EOM
6904 tdflt=$dflt
6905 dflt='n'
6906 rp='Do you wish to preserve the old behavior?(y/n)'
6907 . ./myread
6908 case "$ans" in
6909 y*) dflt="$privlib/man/man3" ;;
6910 *) dflt=$tdflt ;;
6911 esac
6912 fi
6913 ;;
6914*) dflt="$man3dir" ;;
6915esac
6916case "$dflt" in
6917' ') dflt=none ;;
6918esac
6919echo " "
6920fn=dn+~
6921rp="Where do the $package library man pages (source) go?"
6922. ./getfile
6923man3dir="$ans"
6924man3direxp="$ansexp"
6925case "$man3dir" in
6926'') man3dir=' '
6927 installman3dir='';;
6928esac
6929
6930: Change installation prefix, if necessary.
6931if $test X"$prefix" != X"$installprefix"; then
6932 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6933else
6934 installman3dir="$man3direxp"
6935fi
6936
6937: What suffix to use on installed man pages
6938case "$man3dir" in
6939' ')
6940 man3ext='0'
6941 ;;
6942*)
6943 rp="What suffix should be used for the $package library man pages?"
6944 case "$man3ext" in
6945 '') case "$man3dir" in
6946 *3) dflt=3 ;;
6947 *3p) dflt=3p ;;
6948 *3pm) dflt=3pm ;;
6949 *l) dflt=l;;
6950 *n) dflt=n;;
6951 *o) dflt=o;;
6952 *p) dflt=p;;
6953 *C) dflt=C;;
6954 *L) dflt=L;;
6955 *L3) dflt=L3;;
6956 *) dflt=3;;
6957 esac
6958 ;;
6959 *) dflt="$man3ext";;
6960 esac
6961 . ./myread
6962 man3ext="$ans"
6963 ;;
6964esac
6965
6966: see if we have to deal with yellow pages, now NIS.
6967if $test -d /usr/etc/yp || $test -d /etc/yp; then
6968 if $test -f /usr/etc/nibindd; then
6969 echo " "
6970 echo "I'm fairly confident you're on a NeXT."
6971 echo " "
6972 rp='Do you get the hosts file via NetInfo?'
6973 dflt=y
6974 case "$hostcat" in
6975 nidump*) ;;
6976 '') ;;
6977 *) dflt=n;;
6978 esac
6979 . ./myread
6980 case "$ans" in
6981 y*) hostcat='nidump hosts .';;
6982 *) case "$hostcat" in
6983 nidump*) hostcat='';;
6984 esac
6985 ;;
6986 esac
6987 fi
6988 case "$hostcat" in
6989 nidump*) ;;
6990 *)
6991 case "$hostcat" in
6992 *ypcat*) dflt=y;;
6993 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6994 dflt=y
6995 else
6996 dflt=n
6997 fi;;
6998 *) dflt=n;;
6999 esac
7000 echo " "
7001 rp='Are you getting the hosts file via yellow pages?'
7002 . ./myread
7003 case "$ans" in
7004 y*) hostcat='ypcat hosts';;
7005 *) hostcat='cat /etc/hosts';;
7006 esac
7007 ;;
7008 esac
7009fi
7010case "$hostcat" in
7011'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7012esac
7013case "$groupcat" in
7014'') test -f /etc/group && groupcat='cat /etc/group';;
7015esac
7016case "$passcat" in
7017'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7018esac
7019
7020: now get the host name
7021echo " "
7022echo "Figuring out host name..." >&4
7023case "$myhostname" in
7024'') cont=true
7025 echo 'Maybe "hostname" will work...'
7026 if tans=`sh -c hostname 2>&1` ; then
7027 myhostname=$tans
7028 phostname=hostname
7029 cont=''
7030 fi
7031 ;;
7032*) cont='';;
7033esac
7034if $test "$cont"; then
7035 if ./xenix; then
7036 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7037 if tans=`cat /etc/systemid 2>&1` ; then
7038 myhostname=$tans
7039 phostname='cat /etc/systemid'
7040 echo "Whadyaknow. Xenix always was a bit strange..."
7041 cont=''
7042 fi
7043 elif $test -r /etc/systemid; then
7044 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7045 fi
7046fi
7047if $test "$cont"; then
7048 echo 'No, maybe "uuname -l" will work...'
7049 if tans=`sh -c 'uuname -l' 2>&1` ; then
7050 myhostname=$tans
7051 phostname='uuname -l'
7052 else
7053 echo 'Strange. Maybe "uname -n" will work...'
7054 if tans=`sh -c 'uname -n' 2>&1` ; then
7055 myhostname=$tans
7056 phostname='uname -n'
7057 else
7058 echo 'Oh well, maybe I can mine it out of whoami.h...'
7059 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7060 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7061 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7062 else
7063 case "$myhostname" in
7064 '') echo "Does this machine have an identity crisis or something?"
7065 phostname='';;
7066 *)
7067 echo "Well, you said $myhostname before..."
7068 phostname='echo $myhostname';;
7069 esac
7070 fi
7071 fi
7072 fi
7073fi
7074: you do not want to know about this
7075set $myhostname
7076myhostname=$1
7077
7078: verify guess
7079if $test "$myhostname" ; then
7080 dflt=y
7081 rp='Your host name appears to be "'$myhostname'".'" Right?"
7082 . ./myread
7083 case "$ans" in
7084 y*) ;;
7085 *) myhostname='';;
7086 esac
7087fi
7088
7089: bad guess or no guess
7090while $test "X$myhostname" = X ; do
7091 dflt=''
7092 rp="Please type the (one word) name of your host:"
7093 . ./myread
7094 myhostname="$ans"
7095done
7096
7097: translate upper to lower if necessary
7098case "$myhostname" in
7099*[A-Z]*)
7100 echo "(Normalizing case in your host name)"
7101 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7102 ;;
7103esac
7104
7105case "$myhostname" in
7106*.*)
7107 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7108 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7109 echo "(Trimming domain name from host name--host name is now $myhostname)"
7110 ;;
7111*) case "$mydomain" in
7112 '')
7113 {
7114 test "X$hostcat" = "Xypcat hosts" &&
7115 ypmatch "$myhostname" hosts 2>/dev/null |\
7116 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7117 $test -s hosts
7118 } || {
7119 test "X$hostcat" != "X" &&
7120 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7121 /[ ]$myhostname[ . ]/p" > hosts
7122 }
7123 tmp_re="[ . ]"
f08cbdd1
PP
7124 if $test -f hosts; then
7125 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
b4eb6b3d 7126 END { print sum }" hosts` = x1 || tmp_re="[ ]"
f08cbdd1
PP
7127 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7128 hosts | $sort | $uniq | \
7129 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7130 case `$echo X$dflt` in
7131 X*\ *) echo "(Several hosts in the database matched hostname)"
7132 dflt=.
7133 ;;
7134 X.) echo "(You do not have fully-qualified names in the hosts database)"
7135 ;;
7136 esac
7137 else
7138 echo "(I cannot locate a hosts database anywhere)"
b4eb6b3d 7139 dflt=.
f08cbdd1 7140 fi
b4eb6b3d
JH
7141 case "$dflt" in
7142 .)
7143 tans=`./loc resolv.conf X /etc /usr/etc`
7144 if $test -f "$tans"; then
7145 echo "(Attempting domain name extraction from $tans)"
7146 dflt=.`$sed -n -e 's/ / /g' \
7147 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7148 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7149 case "$dflt" in
7150 .) dflt=.`$sed -n -e 's/ / /g' \
7151 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7152 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7153 ;;
7154 esac
7155 fi
7156 ;;
7157 esac
7158 case "$dflt" in
7159 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7160 dflt=.`sh -c domainname 2>/dev/null`
7161 case "$dflt" in
7162 '') dflt='.';;
7163 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7164 esac
7165 ;;
7166 esac
7167 case "$dflt" in
7168 .) echo "(Lost all hope -- silly guess then)"
7169 dflt='.uucp'
7170 ;;
7171 esac
7172 $rm -f hosts
7173 ;;
7174 *) dflt="$mydomain";;
7175 esac;;
7176esac
7177echo " "
7178rp="What is your domain name?"
7179. ./myread
7180tans="$ans"
7181case "$ans" in
7182'') ;;
7183.*) ;;
7184*) tans=".$tans";;
7185esac
7186mydomain="$tans"
7187
7188: translate upper to lower if necessary
7189case "$mydomain" in
7190*[A-Z]*)
7191 echo "(Normalizing case in your domain name)"
7192 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7193 ;;
7194esac
7195
7196: a little sanity check here
7197case "$phostname" in
7198'') ;;
7199*)
7200 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7201 $myhostname$mydomain|$myhostname) ;;
7202 *)
7203 case "$phostname" in
7204 sed*)
7205 echo "(That doesn't agree with your whoami.h file, by the way.)"
7206 ;;
7207 *)
7208 echo "(That doesn't agree with your $phostname command, by the way.)"
7209 ;;
7210 esac
7211 ;;
7212 esac
7213 ;;
7214esac
7215
7216$cat <<EOM
7217
7218I need to get your e-mail address in Internet format if possible, i.e.
7219something like user@host.domain. Please answer accurately since I have
7220no easy means to double check it. The default value provided below
7221is most probably close to reality but may not be valid from outside
7222your organization...
7223
7224EOM
7225cont=x
7226while test "$cont"; do
7227 case "$cf_email" in
7228 '') dflt="$cf_by@$myhostname$mydomain";;
7229 *) dflt="$cf_email";;
7230 esac
7231 rp='What is your e-mail address?'
7232 . ./myread
7233 cf_email="$ans"
7234 case "$cf_email" in
7235 *@*.*) cont='' ;;
7236 *)
7237 rp='Address does not look like an Internet one. Use it anyway?'
7238 case "$fastread" in
7239 yes) dflt=y ;;
7240 *) dflt=n ;;
7241 esac
7242 . ./myread
7243 case "$ans" in
7244 y*) cont='' ;;
7245 *) echo " " ;;
7246 esac
7247 ;;
7248 esac
7249done
7250
7251$cat <<EOM
7252
7253If you or somebody else will be maintaining perl at your site, please
7254fill in the correct e-mail address here so that they may be contacted
7255if necessary. Currently, the "perlbug" program included with perl
7256will send mail to this address in addition to perlbug@perl.org. You may
7257enter "none" for no administrator.
7258
7259EOM
7260case "$perladmin" in
7261'') dflt="$cf_email";;
7262*) dflt="$perladmin";;
7263esac
7264rp='Perl administrator e-mail address'
7265. ./myread
7266perladmin="$ans"
7267
7268: figure out how to guarantee perl startup
7269case "$startperl" in
7270'')
7271 case "$sharpbang" in
7272 *!)
7273 $cat <<EOH
7274
7275I can use the #! construct to start perl on your system. This will
7276make startup of perl scripts faster, but may cause problems if you
7277want to share those scripts and perl is not in a standard place
7278($binexp/perl) on all your platforms. The alternative is to force
7279a shell by starting the script with a single ':' character.
7280
7281EOH
7282 dflt="$binexp/perl"
7283 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7284 . ./myread
7285 case "$ans" in
7286 none) startperl=": # use perl";;
7287 *) startperl="#!$ans"
7288 if $test 30 -lt `echo "$ans" | wc -c`; then
7289 $cat >&4 <<EOM
7290
7291WARNING: Some systems limit the #! command to 32 characters.
7292If you experience difficulty running Perl scripts with #!, try
7293installing Perl in a directory with a shorter pathname.
7294
7295EOM
7296 fi ;;
7297 esac
7298 ;;
7299 *) startperl=": # use perl"
7300 ;;
7301 esac
7302 ;;
7303esac
7304echo "I'll use $startperl to start perl scripts."
7305
7306: figure best path for perl in scripts
7307case "$perlpath" in
7308'')
7309 perlpath="$binexp/perl"
7310 case "$startperl" in
7311 *!*) ;;
7312 *)
7313 $cat <<EOH
7314
7315I will use the "eval 'exec'" idiom to start Perl on your system.
7316I can use the full path of your Perl binary for this purpose, but
7317doing so may cause problems if you want to share those scripts and
7318Perl is not always in a standard place ($binexp/perl).
7319
7320EOH
7321 dflt="$binexp/perl"
7322 rp="What path shall I use in \"eval 'exec'\"?"
7323 . ./myread
7324 perlpath="$ans"
7325 ;;
7326 esac
7327 ;;
7328esac
7329case "$startperl" in
7330*!*) ;;
7331*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7332esac
7333
7334: determine where public executable scripts go
7335set scriptdir scriptdir
7336eval $prefixit
7337case "$scriptdir" in
7338'')
7339 dflt="$bin"
7340 : guess some guesses
7341 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7342 $test -d /usr/share/bin && dflt=/usr/share/bin
7343 $test -d /usr/local/script && dflt=/usr/local/script
7344 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7345 $test -d $prefixexp/script && dflt=$prefixexp/script
7346 set dflt
7347 eval $prefixup
7348 ;;
7349*) dflt="$scriptdir"
7350 ;;
7351esac
7352$cat <<EOM
7353
7354Some installations have a separate directory just for executable scripts so
7355that they can mount it across multiple architectures but keep the scripts in
7356one spot. You might, for example, have a subdirectory of /usr/share for this.
7357Or you might just lump your scripts in with all your other executables.
7358
7359EOM
7360fn=d~
7361rp='Where do you keep publicly executable scripts?'
7362. ./getfile
7363if $test "X$ansexp" != "X$scriptdirexp"; then
7364 installscript=''
7365fi
7366scriptdir="$ans"
7367scriptdirexp="$ansexp"
7368: Change installation prefix, if necessary.
7369if $test X"$prefix" != X"$installprefix"; then
7370 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7371else
7372 installscript="$scriptdirexp"
7373fi
7374
7375: determine where add-on public executables go
7376case "$sitebin" in
7377'') dflt=$siteprefix/bin ;;
7378*) dflt=$sitebin ;;
7379esac
7380fn=d~
7381rp='Pathname where the add-on public executables should be installed?'
7382. ./getfile
7383sitebin="$ans"
7384sitebinexp="$ansexp"
7385: Change installation prefix, if necessary.
7386if $test X"$prefix" != X"$installprefix"; then
7387 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7388else
7389 installsitebin="$sitebinexp"
7390fi
7391
7392case "$useperlio" in
7393$define|true|[yY]*) dflt='y';;
7394*) dflt='n';;
7395esac
7396cat <<EOM
7397
7398Previous version of $package used the standard IO mechanisms as defined
7399in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7400mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7401the default. This abstraction layer can use AT&T's sfio (if you already
7402have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7403problems with some extension modules. Using PerlIO with stdio is safe,
7404but it is slower than plain stdio and therefore is not the default.
7405
7406If this doesn't make any sense to you, just accept the default '$dflt'.
7407EOM
7408rp='Use the experimental PerlIO abstraction layer?'
7409. ./myread
7410case "$ans" in
7411y|Y)
7412 val="$define"
7413 ;;
7414*)
7415 echo "Ok, doing things the stdio way"
7416 val="$undef"
7417 ;;
7418esac
7419set useperlio
7420eval $setvar
7421
7422case "$vendorprefix" in
7423'') d_vendorbin="$undef"
7424 vendorbin=''
7425 vendorbinexp=''
7426 ;;
7427*) d_vendorbin="$define"
7428 : determine where vendor-supplied executables go.
7429 case "$vendorbin" in
7430 '') dflt=$vendorprefix/bin ;;
7431 *) dflt="$vendorbin" ;;
7432 esac
7433 fn=d~+
7434 rp='Pathname for the vendor-supplied executables directory?'
7435 . ./getfile
7436 vendorbin="$ans"
7437 vendorbinexp="$ansexp"
7438 ;;
7439esac
7440: Change installation prefix, if necessary.
7441if $test X"$prefix" != X"$installprefix"; then
7442 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7443else
7444 installvendorbin="$vendorbinexp"
7445fi
7446
d56c5707
JH
7447: determine whether to only install version-specific parts.
7448echo " "
7449$cat <<EOM
7450Do you want to install only the version-specific parts of the perl
7451distribution? Usually you do *not* want to do this.
7452EOM
7453case "$versiononly" in
7454"$define"|[Yy]*|true) dflt='y' ;;
7455*) dflt='n';
7456esac
7457rp="Do you want to install only the version-specific parts of perl?"
7458. ./myread
7459case "$ans" in
7460[yY]*) val="$define";;
7461*) val="$undef" ;;
7462esac
7463set versiononly
7464eval $setvar
7465
b4eb6b3d
JH
7466: see if qgcvt exists
7467set qgcvt d_qgcvt
7468eval $inlibc
7469
7470echo " "
7471
7472if $test X"$d_longdbl" = X"$define"; then
7473
7474echo "Checking how to print long doubles..." >&4
7475
7476if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7477 $cat >try.c <<'EOCP'
7478#include <sys/types.h>
7479#include <stdio.h>
7480int main() {
7481 double d = 123.456;
7482 printf("%.3f\n", d);
7483}
7484EOCP
7485 set try
7486 if eval $compile; then
7487 yyy=`./try$exe_ext`
7488 case "$yyy" in
7489 123.456)
7490 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7491 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7492 echo "We will use %f."
7493 ;;
7494 esac
7495 fi
7496fi
7497
7498if $test X"$sPRIfldbl" = X; then
7499 $cat >try.c <<'EOCP'
7500#include <sys/types.h>
7501#include <stdio.h>
7502int main() {
7503 long double d = 123.456;
7504 printf("%.3llf\n", d);
7505}
7506EOCP
7507 set try
7508 if eval $compile; then
7509 yyy=`./try$exe_ext`
7510 case "$yyy" in
7511 123.456)
7512 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7513 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7514 echo "We will use %llf."
7515 ;;
7516 esac
7517 fi
7518fi
7519
7520if $test X"$sPRIfldbl" = X; then
7521 $cat >try.c <<'EOCP'
7522#include <sys/types.h>
7523#include <stdio.h>
7524int main() {
7525 long double d = 123.456;
7526 printf("%.3Lf\n", d);
7527}
7528EOCP
7529 set try
7530 if eval $compile; then
7531 yyy=`./try$exe_ext`
7532 case "$yyy" in
7533 123.456)
7534 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7535 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7536 echo "We will use %Lf."
7537 ;;
7538 esac
7539 fi
7540fi
7541
7542if $test X"$sPRIfldbl" = X; then
7543 $cat >try.c <<'EOCP'
7544#include <sys/types.h>
7545#include <stdio.h>
7546int main() {
7547 long double d = 123.456;
7548 printf("%.3lf\n", d);
7549}
7550EOCP
7551 set try
7552 if eval $compile; then
7553 yyy=`./try$exe_ext`
7554 case "$yyy" in
7555 123.456)
7556 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7557 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7558 echo "We will use %lf."
7559 ;;
7560 esac
7561 fi
7562fi
7563
7564if $test X"$sPRIfldbl" = X; then
7565 echo "Cannot figure out how to print long doubles." >&4
7566else
7567 sSCNfldbl=$sPRIfldbl # expect consistency
7568fi
7569
7570$rm -f try try.*
7571
7572fi # d_longdbl
7573
7574case "$sPRIfldbl" in
7575'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7576 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7577 d_SCNfldbl="$undef";
7578 ;;
7579*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7580 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7581 d_SCNfldbl="$define";
7582 ;;
7583esac
7584
7585: Check how to convert floats to strings.
7586echo " "
7587echo "Checking for an efficient way to convert floats to strings."
7588echo " " > try.c
7589case "$uselongdouble" in
7590"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7591esac
7592case "$d_longdbl" in
7593"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7594esac
7595case "$d_PRIgldbl" in
7596"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7597esac
7598$cat >>try.c <<EOP
7599#ifdef TRY_gconvert
7600#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7601char *myname = "gconvert";
7602#endif
7603#ifdef TRY_gcvt
7604#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7605char *myname = "gcvt";
7606#endif
7607#ifdef TRY_qgcvt
7608#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7609char *myname = "qgcvt";
7610#define DOUBLETYPE long double
7611#endif
7612#ifdef TRY_sprintf
7613#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7614#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7615#else
7616#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7617#endif
7618char *myname = "sprintf";
7619#endif
7620
7621#ifndef DOUBLETYPE
7622#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7623#define DOUBLETYPE long double
7624#else
7625#define DOUBLETYPE double
7626#endif
7627#endif
7628
7629#include <stdio.h>
7630
7631#define I_STDLIB $i_stdlib
7632#ifdef I_STDLIB
7633#include <stdlib.h>
7634#endif
7635
7636int
7637checkit(expect, got)
7638char *expect;
7639char *got;
7640{
7641 if (strcmp(expect, got)) {
7642 printf("%s oddity: Expected %s, got %s\n",
7643 myname, expect, got);
7644 exit(1);
7645 }
7646}
7647
7648int main()
7649{
7650 char buf[64];
7651 buf[63] = '\0';
7652
7653 /* This must be 1st test on (which?) platform */
7654 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7655 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7656 checkit("0.1", buf);
7657
7658 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7659 checkit("1", buf);
7660
7661 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7662 checkit("1.1", buf);
7663
7664 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7665 checkit("1.01", buf);
7666
7667 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7668 checkit("1.001", buf);
7669
7670 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7671 checkit("1.0001", buf);
7672
7673 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7674 checkit("1.00001", buf);
7675
7676 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7677 checkit("1.000001", buf);
7678
7679 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7680 checkit("0", buf);
7681
7682 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7683 checkit("-1", buf);
7684
7685 /* Some Linux gcvt's give 1.e+5 here. */
7686 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7687 checkit("100000", buf);
7688
7689 /* Some Linux gcvt's give -1.e+5 here. */
7690 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7691 checkit("-100000", buf);
7692
7693 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7694 checkit("123.456", buf);
7695
7696 exit(0);
7697}
7698EOP
7699case "$d_Gconvert" in
7700gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7701gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7702sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7703*) xxx_list='gconvert gcvt sprintf' ;;
7704esac
7705
7706case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7707"$define$define$define")
7708 # for long doubles prefer first qgcvt, then sprintf
7709 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7710 xxx_list="sprintf $xxx_list"
7711 case "$d_qgcvt" in
7712 "$define") xxx_list="qgcvt $xxx_list" ;;
7713 esac
7714 ;;
7715esac
7716
7717for xxx_convert in $xxx_list; do
7718 echo "Trying $xxx_convert..."
7719 $rm -f try try$_o
7720 set try -DTRY_$xxx_convert
7721 if eval $compile; then
7722 echo "$xxx_convert() found." >&4
7723 if ./try; then
7724 echo "I'll use $xxx_convert to convert floats into a string." >&4
7725 break;
7726 else
7727 echo "...But $xxx_convert didn't work as I expected."
7728 fi
7729 else
7730 echo "$xxx_convert NOT found." >&4
7731 fi
7732done
7733
7734case "$xxx_convert" in
7735gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7736gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7737qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7738*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7739 "$define$define$define")
7740 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7741 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7742 esac
7743 ;;
7744esac
7745
7746: Initialize h_fcntl
7747h_fcntl=false
7748
7749: Initialize h_sysfile
7750h_sysfile=false
7751
7752: access call always available on UNIX
7753set access d_access
7754eval $inlibc
7755
7756: locate the flags for 'access()'
7757case "$d_access" in
7758"$define")
7759 echo " "
7760 $cat >access.c <<'EOCP'
7761#include <sys/types.h>
7762#ifdef I_FCNTL
7763#include <fcntl.h>
7764#endif
7765#ifdef I_SYS_FILE
7766#include <sys/file.h>
7767#endif
7768#ifdef I_UNISTD
7769#include <unistd.h>
7770#endif
7771int main() {
7772 exit(R_OK);
7773}
7774EOCP
7775 : check sys/file.h first, no particular reason here
7776 if $test `./findhdr sys/file.h` && \
7a282f6d 7777 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7778 h_sysfile=true;
7779 echo "<sys/file.h> defines the *_OK access constants." >&4
7780 elif $test `./findhdr fcntl.h` && \
7a282f6d 7781 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7782 h_fcntl=true;
7783 echo "<fcntl.h> defines the *_OK access constants." >&4
7784 elif $test `./findhdr unistd.h` && \
7a282f6d 7785 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
b4eb6b3d
JH
7786 echo "<unistd.h> defines the *_OK access constants." >&4
7787 else
7788 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7789 fi
7790 ;;
7791esac
7792$rm -f access*
7793
7794: see if accessx exists
7795set accessx d_accessx
7796eval $inlibc
7797
7798: see if alarm exists
7799set alarm d_alarm
7800eval $inlibc
7801
7802: see if atolf exists
7803set atolf d_atolf
7804eval $inlibc
7805
7806: see if atoll exists
7807set atoll d_atoll
7808eval $inlibc
7809
7810: Look for GNU-cc style attribute checking
7811echo " "
7812echo "Checking whether your compiler can handle __attribute__ ..." >&4
7813$cat >attrib.c <<'EOCP'
7814#include <stdio.h>
7815void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7816EOCP
7817if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7818 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7819 echo "Your C compiler doesn't fully support __attribute__."
7820 val="$undef"
7821 else
7822 echo "Your C compiler supports __attribute__."
7823 val="$define"
7824 fi
7825else
7826 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7827 val="$undef"
7828fi
7829set d_attribut
7830eval $setvar
7831$rm -f attrib*
7832
7833: see if bcmp exists
7834set bcmp d_bcmp
7835eval $inlibc
7836
7837: see if bcopy exists
7838set bcopy d_bcopy
7839eval $inlibc
7840
7841: see if this is a unistd.h system
7842set unistd.h i_unistd
7843eval $inhdr
7844
7845: see if getpgrp exists
7846set getpgrp d_getpgrp
7847eval $inlibc
7848
7849case "$d_getpgrp" in
7850"$define")
7851 echo " "
7852 echo "Checking to see which flavor of getpgrp is in use..."
7853 $cat >set.c <<EOP
7854#$i_unistd I_UNISTD
7855#include <sys/types.h>
7856#ifdef I_UNISTD
7857# include <unistd.h>
7858#endif
7859int main()
7860{
7861 if (getuid() == 0) {
7862 printf("(I see you are running Configure as super-user...)\n");
7863 setuid(1);
7864 }
7865#ifdef TRY_BSD_PGRP
7866 if (getpgrp(1) == 0)
7867 exit(0);
7868#else
7869 if (getpgrp() > 0)
7870 exit(0);
7871#endif
7872 exit(1);
7873}
7874EOP
7a282f6d 7875 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7876 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7877 val="$define"
7a282f6d 7878 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7879 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7880 val="$undef"
7881 else
7882 echo "I can't seem to compile and run the test program."
7883 if ./usg; then
7884 xxx="a USG one, i.e. you use getpgrp()."
7885 else
7886 # SVR4 systems can appear rather BSD-ish.
7887 case "$i_unistd" in
7888 $undef)
7889 xxx="a BSD one, i.e. you use getpgrp(pid)."
7890 val="$define"
7891 ;;
7892 $define)
7893 xxx="probably a USG one, i.e. you use getpgrp()."
7894 val="$undef"
7895 ;;
7896 esac
7897 fi
7898 echo "Assuming your getpgrp is $xxx" >&4
7899 fi
7900 ;;
7901*) val="$undef";;
7902esac
7903set d_bsdgetpgrp
7904eval $setvar
7905$rm -f set set.c
7906
7907: see if setpgrp exists
7908set setpgrp d_setpgrp
7909eval $inlibc
7910
7911case "$d_setpgrp" in
7912"$define")
7913 echo " "
7914 echo "Checking to see which flavor of setpgrp is in use..."
7915 $cat >set.c <<EOP
7916#$i_unistd I_UNISTD
7917#include <sys/types.h>
7918#ifdef I_UNISTD
7919# include <unistd.h>
7920#endif
7921int main()
7922{
7923 if (getuid() == 0) {
7924 printf("(I see you are running Configure as super-user...)\n");
7925 setuid(1);
7926 }
7927#ifdef TRY_BSD_PGRP
7928 if (-1 == setpgrp(1, 1))
7929 exit(0);
7930#else
7931 if (setpgrp() != -1)
7932 exit(0);
7933#endif
7934 exit(1);
7935}
7936EOP
7a282f6d 7937 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7938 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7939 val="$define"
7a282f6d 7940 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
b4eb6b3d
JH
7941 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7942 val="$undef"
7943 else
7944 echo "(I can't seem to compile and run the test program.)"
7945 if ./usg; then
7946 xxx="a USG one, i.e. you use setpgrp()."
7947 else
7948 # SVR4 systems can appear rather BSD-ish.
7949 case "$i_unistd" in
7950 $undef)
7951 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7952 val="$define"
7953 ;;
7954 $define)
7955 xxx="probably a USG one, i.e. you use setpgrp()."
7956 val="$undef"
7957 ;;
7958 esac
7959 fi
7960 echo "Assuming your setpgrp is $xxx" >&4
7961 fi
7962 ;;
7963*) val="$undef";;
7964esac
7965set d_bsdsetpgrp
7966eval $setvar
7967$rm -f set set.c
7968: see if bzero exists
7969set bzero d_bzero
7970eval $inlibc
7971
7972: see if signal is declared as pointer to function returning int or void
7973echo " "
7974xxx=`./findhdr signal.h`
7975$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7976if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7977 echo "You have int (*signal())() instead of void." >&4
7978 val="$undef"
7979elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7980 echo "You have void (*signal())()." >&4
7981 val="$define"
7982elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7983 echo "You have int (*signal())() instead of void." >&4
7984 val="$undef"
7985elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7986 echo "You have void (*signal())()." >&4
7987 val="$define"
7988else
7989 case "$d_voidsig" in
7990 '')
7991 echo "I can't determine whether signal handler returns void or int..." >&4
7992 dflt=void
7993 rp="What type does your signal handler return?"
7994 . ./myread
7995 case "$ans" in
7996 v*) val="$define";;
7997 *) val="$undef";;
7998 esac;;
7999 "$define")
8000 echo "As you already told me, signal handler returns void." >&4
8001 val="$define"
8002 ;;
8003 *) echo "As you already told me, signal handler returns int." >&4
8004 val="$undef"
8005 ;;
8006 esac
8007fi
8008set d_voidsig
8009eval $setvar
8010case "$d_voidsig" in
8011"$define") signal_t="void";;
8012*) signal_t="int";;
8013esac
8014$rm -f $$.tmp
8015
8016: check for ability to cast large floats to 32-bit ints.
8017echo " "
8018echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8019if $test "$intsize" -ge 4; then
8020 xxx=int
8021else
8022 xxx=long
8023fi
8024$cat >try.c <<EOCP
8025#include <stdio.h>
8026#include <sys/types.h>
8027#include <signal.h>
8028$signal_t blech(s) int s; { exit(3); }
8029int main()
8030{
8031 $xxx i32;
8032 double f, g;
8033 int result = 0;
8034 char str[16];
8035 signal(SIGFPE, blech);
8036
8037 /* Don't let compiler optimize the test away. Store the number
8038 in a writable string for gcc to pass to sscanf under HP/UX.
8039 */
8040 sprintf(str, "2147483647");
8041 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8042 g = 10 * f;
8043 i32 = ($xxx) g;
8044
8045 /* x86 processors will probably give 0x8000 0000, which is a
8046 sign change. We don't want that. We want to mimic SPARC
8047 behavior here, which is to preserve the sign and give
8048 back 0x7fff ffff.
8049 */
8050 if (i32 != ($xxx) f)
8051 result |= 1;
8052 exit(result);
8053}
8054EOCP
8055set try
8056if eval $compile_ok; then
8057 ./try
8058 yyy=$?
8059else
8060 echo "(I can't seem to compile the test program--assuming it can't)"
8061 yyy=1
8062fi
8063case "$yyy" in
80640) val="$define"
8065 echo "Yup, it can."
8066 ;;
8067*) val="$undef"
8068 echo "Nope, it can't."
8069 ;;
8070esac
8071set d_casti32
8072eval $setvar
8073$rm -f try try.*
8074
8075: check for ability to cast negative floats to unsigned
8076echo " "
8077echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8078$cat >try.c <<EOCP
8079#include <stdio.h>
8080#include <sys/types.h>
8081#include <signal.h>
8082$signal_t blech(s) int s; { exit(7); }
8083$signal_t blech_in_list(s) int s; { exit(4); }
8084unsigned long dummy_long(p) unsigned long p; { return p; }
8085unsigned int dummy_int(p) unsigned int p; { return p; }
8086unsigned short dummy_short(p) unsigned short p; { return p; }
8087int main()
8088{
8089 double f;
8090 unsigned long along;
8091 unsigned int aint;
8092 unsigned short ashort;
8093 int result = 0;
8094 char str[16];
8095
8096 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8097 a direct f = -123. assignment. gcc-2.8.0 reportedly
8098 optimized the whole file away
8099 */
8100 /* Store the number in a writable string for gcc to pass to
8101 sscanf under HP/UX.
8102 */
8103 sprintf(str, "-123");
8104 sscanf(str, "%lf", &f); /* f = -123.; */
8105
8106 signal(SIGFPE, blech);
8107 along = (unsigned long)f;
8108 aint = (unsigned int)f;
8109 ashort = (unsigned short)f;
8110 if (along != (unsigned long)-123)
8111 result |= 1;
8112 if (aint != (unsigned int)-123)
8113 result |= 1;
8114 if (ashort != (unsigned short)-123)
8115 result |= 1;
8116 sprintf(str, "1073741824.");
8117 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8118 f = f + f;
8119 along = 0;
8120 along = (unsigned long)f;
8121 if (along != 0x80000000)
8122 result |= 2;
8123 f -= 1.;
8124 along = 0;
8125 along = (unsigned long)f;
8126 if (along != 0x7fffffff)
8127 result |= 1;
8128 f += 2.;
8129 along = 0;
8130 along = (unsigned long)f;
8131 if (along != 0x80000001)
8132 result |= 2;
8133 if (result)
8134 exit(result);
8135 signal(SIGFPE, blech_in_list);
8136 sprintf(str, "123.");
8137 sscanf(str, "%lf", &f); /* f = 123.; */
8138 along = dummy_long((unsigned long)f);
8139 aint = dummy_int((unsigned int)f);
8140 ashort = dummy_short((unsigned short)f);
8141 if (along != (unsigned long)123)
8142 result |= 4;
8143 if (aint != (unsigned int)123)
8144 result |= 4;
8145 if (ashort != (unsigned short)123)
8146 result |= 4;
8147 exit(result);
8148
8149}
8150EOCP
8151set try
8152if eval $compile_ok; then
8153 ./try
8154 castflags=$?
8155else
8156 echo "(I can't seem to compile the test program--assuming it can't)"
8157 castflags=7
8158fi
8159case "$castflags" in
81600) val="$define"
8161 echo "Yup, it can."
8162 ;;
8163*) val="$undef"
8164 echo "Nope, it can't."
8165 ;;
8166esac
8167set d_castneg
8168eval $setvar
8169$rm -f try.*
8170
8171: see if vprintf exists
8172echo " "
8173if set vprintf val -f d_vprintf; eval $csym; $val; then
8174 echo 'vprintf() found.' >&4
8175 val="$define"
8176 $cat >vprintf.c <<'EOF'
8177#include <varargs.h>
8178
8179int main() { xxx("foo"); }
8180
8181xxx(va_alist)
8182va_dcl
8183{
8184 va_list args;
8185 char buf[10];
8186
8187 va_start(args);
8188 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8189}
8190EOF
8191 set vprintf
8192 if eval $compile && ./vprintf; then
8193 echo "Your vsprintf() returns (int)." >&4
8194 val2="$undef"
8195 else
8196 echo "Your vsprintf() returns (char*)." >&4
8197 val2="$define"
8198 fi
8199else
8200 echo 'vprintf() NOT found.' >&4
8201 val="$undef"
8202 val2="$undef"
8203fi
8204set d_vprintf
8205eval $setvar
8206val=$val2
8207set d_charvspr
8208eval $setvar
8209
8210: see if chown exists
8211set chown d_chown
8212eval $inlibc
8213
8214: see if chroot exists
8215set chroot d_chroot
8216eval $inlibc
8217
8218: see if chsize exists
8219set chsize d_chsize
8220eval $inlibc
8221
8222: check for const keyword
8223echo " "
8224echo 'Checking to see if your C compiler knows about "const"...' >&4
8225$cat >const.c <<'EOCP'
8226typedef struct spug { int drokk; } spug;
8227int main()
8228{
8229 const char *foo;
8230 const spug y;
8231}
8232EOCP
8233if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8234 val="$define"
8235 echo "Yup, it does."
8236else
8237 val="$undef"
8238 echo "Nope, it doesn't."
8239fi
8240set d_const
8241eval $setvar
8242
8243: see if crypt exists
8244echo " "
8245if set crypt val -f d_crypt; eval $csym; $val; then
8246 echo 'crypt() found.' >&4
8247 val="$define"
8248 cryptlib=''
8249else
8250 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8251 if $test -z "$cryptlib"; then
8252 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8253 else
8254 cryptlib=-lcrypt
8255 fi
8256 if $test -z "$cryptlib"; then
8257 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8258 else
8259 cryptlib=-lcrypt
8260 fi
8261 if $test -z "$cryptlib"; then
8262 cryptlib=`./loc libcrypt$_a "" $libpth`
8263 else
8264 cryptlib=-lcrypt
8265 fi
8266 if $test -z "$cryptlib"; then
8267 echo 'crypt() NOT found.' >&4
8268 val="$undef"
8269 else
8270 val="$define"
8271 fi
8272fi
8273set d_crypt
8274eval $setvar
8275
8276: get csh whereabouts
8277case "$csh" in
8278'csh') val="$undef" ;;
8279*) val="$define" ;;
8280esac
8281set d_csh
8282eval $setvar
8283: Respect a hint or command line value for full_csh.
8284case "$full_csh" in
8285'') full_csh=$csh ;;
8286esac
8287
8288: see if cuserid exists
8289set cuserid d_cuserid
8290eval $inlibc
8291
8292: see if this is a limits.h system
8293set limits.h i_limits
8294eval $inhdr
8295
8296: see if this is a float.h system
8297set float.h i_float
8298eval $inhdr
8299
8300: See if number of significant digits in a double precision number is known
8301echo " "
8302$cat >dbl_dig.c <<EOM
8303#$i_limits I_LIMITS
8304#$i_float I_FLOAT
8305#ifdef I_LIMITS
8306#include <limits.h>
8307#endif
8308#ifdef I_FLOAT
8309#include <float.h>
8310#endif
8311#ifdef DBL_DIG
8312printf("Contains DBL_DIG");
8313#endif
8314EOM
8315$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8316if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8317 echo "DBL_DIG found." >&4
8318 val="$define"
8319else
8320 echo "DBL_DIG NOT found." >&4
8321 val="$undef"
8322fi
8323$rm -f dbl_dig.?
8324set d_dbl_dig
8325eval $setvar
8326
8327: see if difftime exists
8328set difftime d_difftime
8329eval $inlibc
8330
8331: see if this is a dirent system
8332echo " "
8333if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8334 val="$define"
8335 echo "<dirent.h> found." >&4
8336else
8337 val="$undef"
8338 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8339 echo "<sys/dir.h> found." >&4
8340 echo " "
8341 else
8342 xinc=`./findhdr sys/ndir.h`
8343 fi
8344 echo "<dirent.h> NOT found." >&4
8345fi
8346set i_dirent
8347eval $setvar
8348
8349: Look for type of directory structure.
8350echo " "
8351$cppstdin $cppflags $cppminus < "$xinc" > try.c
8352
8353case "$direntrytype" in
8354''|' ')
8355 case "$i_dirent" in
8356 $define) guess1='struct dirent' ;;
8357 *) guess1='struct direct' ;;
8358 esac
8359 ;;
8360*) guess1="$direntrytype"
8361 ;;
8362esac
8363
8364case "$guess1" in
8365'struct dirent') guess2='struct direct' ;;
8366*) guess2='struct dirent' ;;
8367esac
8368
8369if $contains "$guess1" try.c >/dev/null 2>&1; then
8370 direntrytype="$guess1"
8371 echo "Your directory entries are $direntrytype." >&4
8372elif $contains "$guess2" try.c >/dev/null 2>&1; then
8373 direntrytype="$guess2"
8374 echo "Your directory entries seem to be $direntrytype." >&4
8375else
8376 echo "I don't recognize your system's directory entries." >&4
8377 rp="What type is used for directory entries on this system?"
8378 dflt="$guess1"
8379 . ./myread
8380 direntrytype="$ans"
8381fi
8382$rm -f try.c
8383
8384
8385: see if the directory entry stores field length
8386echo " "
8387$cppstdin $cppflags $cppminus < "$xinc" > try.c
8388if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8389 echo "Good, your directory entry keeps length information in d_namlen." >&4
8390 val="$define"
8391else
8392 echo "Your directory entry does not know about the d_namlen field." >&4
8393 val="$undef"
8394fi
8395set d_dirnamlen
8396eval $setvar
8397$rm -f try.c
8398
8399: see if dlerror exists
8400xxx_runnm="$runnm"
8401runnm=false
8402set dlerror d_dlerror
8403eval $inlibc
8404runnm="$xxx_runnm"
8405
8406: see if dlfcn is available
8407set dlfcn.h i_dlfcn
8408eval $inhdr
8409
8410case "$usedl" in
8411$define|y|true)
8412 $cat << EOM
8413
8414On a few systems, the dynamically loaded modules that perl generates and uses
8415will need a different extension than shared libs. The default will probably
8416be appropriate.
8417
8418EOM
8419 case "$dlext" in
8420 '') dflt="$so" ;;
8421 *) dflt="$dlext" ;;
8422 esac
8423 rp='What is the extension of dynamically loaded modules'
8424 . ./myread
8425 dlext="$ans"
8426 ;;
8427*)
8428 dlext="none"
8429 ;;
8430esac
8431
8432: Check if dlsym need a leading underscore
8433echo " "
8434val="$undef"
8435
8436case "$dlsrc" in
8437dl_dlopen.xs)
8438 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8439 $cat >dyna.c <<'EOM'
8440fred () { }
8441EOM
8442
8443$cat >fred.c<<EOM
8444
8445#include <stdio.h>
8446#$i_dlfcn I_DLFCN
8447#ifdef I_DLFCN
8448#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8449#else
8450#include <sys/types.h>
8451#include <nlist.h>
8452#include <link.h>
8453#endif
8454
8455extern int fred() ;
8456
8457int main()
8458{
8459 void * handle ;
8460 void * symbol ;
8461#ifndef RTLD_LAZY
8462 int mode = 1 ;
8463#else
8464 int mode = RTLD_LAZY ;
8465#endif
8466 handle = dlopen("./dyna.$dlext", mode) ;
8467 if (handle == NULL) {
8468 printf ("1\n") ;
8469 fflush (stdout) ;
8470 exit(0);
8471 }
8472 symbol = dlsym(handle, "fred") ;
8473 if (symbol == NULL) {
8474 /* try putting a leading underscore */
8475 symbol = dlsym(handle, "_fred") ;
8476 if (symbol == NULL) {
8477 printf ("2\n") ;
8478 fflush (stdout) ;
8479 exit(0);
8480 }
8481 printf ("3\n") ;
8482 }
8483 else
8484 printf ("4\n") ;
8485 fflush (stdout) ;
8486 exit(0);
8487}
8488EOM
8489 : Call the object file tmp-dyna.o in case dlext=o.
8490 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8491 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7a282f6d
JH
8492 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8493 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
b4eb6b3d
JH
8494 xxx=`./fred`
8495 case $xxx in
8496 1) echo "Test program failed using dlopen." >&4
8497 echo "Perhaps you should not use dynamic loading." >&4;;
8498 2) echo "Test program failed using dlsym." >&4
8499 echo "Perhaps you should not use dynamic loading." >&4;;
8500 3) echo "dlsym needs a leading underscore" >&4
8501 val="$define" ;;
8502 4) echo "dlsym doesn't need a leading underscore." >&4;;
8503 esac
8504 else
8505 echo "I can't compile and run the test program." >&4
8506 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8507 fi
8508 ;;
8509esac
8510
8511$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8512
8513set d_dlsymun
8514eval $setvar
8515
8516hasproto='varname=$1; func=$2; shift; shift;
8517while $test $# -ge 2; do
8518 case "$1" in
8519 $define) echo "#include <$2>";;
8520 esac ;
8521 shift 2;
8522done > try.c;
8523$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8524if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8525 echo "$func() prototype found.";
8526 val="$define";
8527else
8528 echo "$func() prototype NOT found.";
8529 val="$undef";
8530fi;
8531set $varname;
8532eval $setvar;
8533$rm -f try.c tryout.c'
8534
8535: see if prototype for drand48 is available
8536echo " "
8537set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8538eval $hasproto
8539
8540: see if dup2 exists
8541set dup2 d_dup2
8542eval $inlibc
8543
8544: see if eaccess exists
8545set eaccess d_eaccess
8546eval $inlibc
8547
8548: see if endgrent exists
8549set endgrent d_endgrent
8550eval $inlibc
8551
8552: see if endhostent exists
8553set endhostent d_endhent
8554eval $inlibc
8555
8556: see if endnetent exists
8557set endnetent d_endnent
8558eval $inlibc
8559
8560: see if endprotoent exists
8561set endprotoent d_endpent
8562eval $inlibc
8563
8564: see if endpwent exists
8565set endpwent d_endpwent
8566eval $inlibc
8567
8568: see if endservent exists
8569set endservent d_endsent
8570eval $inlibc
8571
8572: Locate the flags for 'open()'
8573echo " "
8574$cat >open3.c <<'EOCP'
8575#include <sys/types.h>
8576#ifdef I_FCNTL
8577#include <fcntl.h>
8578#endif
8579#ifdef I_SYS_FILE
8580#include <sys/file.h>
8581#endif
8582int main() {
8583 if(O_RDONLY);
8584#ifdef O_TRUNC
8585 exit(0);
8586#else
8587 exit(1);
8588#endif
8589}
8590EOCP
8591: check sys/file.h first to get FREAD on Sun
8592if $test `./findhdr sys/file.h` && \
8593 set open3 -DI_SYS_FILE && eval $compile; then
8594 h_sysfile=true;
8595 echo "<sys/file.h> defines the O_* constants..." >&4
8596 if ./open3; then
8597 echo "and you have the 3 argument form of open()." >&4
8598 val="$define"
8599 else
8600 echo "but not the 3 argument form of open(). Oh, well." >&4
8601 val="$undef"
8602 fi
8603elif $test `./findhdr fcntl.h` && \
8604 set open3 -DI_FCNTL && eval $compile; then
8605 h_fcntl=true;
8606 echo "<fcntl.h> defines the O_* constants..." >&4
8607 if ./open3; then
8608 echo "and you have the 3 argument form of open()." >&4
8609 val="$define"
8610 else
8611 echo "but not the 3 argument form of open(). Oh, well." >&4
8612 val="$undef"
8613 fi
8614else
8615 val="$undef"
8616 echo "I can't find the O_* constant definitions! You got problems." >&4
8617fi
8618set d_open3
8619eval $setvar
8620$rm -f open3*
8621
8622: see which of string.h or strings.h is needed
8623echo " "
8624strings=`./findhdr string.h`
8625if $test "$strings" && $test -r "$strings"; then
8626 echo "Using <string.h> instead of <strings.h>." >&4
8627 val="$define"
8628else
8629 val="$undef"
8630 strings=`./findhdr strings.h`
8631 if $test "$strings" && $test -r "$strings"; then
8632 echo "Using <strings.h> instead of <string.h>." >&4
8633 else
8634 echo "No string header found -- You'll surely have problems." >&4
8635 fi
8636fi
8637set i_string
8638eval $setvar
8639case "$i_string" in
8640"$undef") strings=`./findhdr strings.h`;;
8641*) strings=`./findhdr string.h`;;
8642esac
8643
8644: check for non-blocking I/O stuff
8645case "$h_sysfile" in
8646true) echo "#include <sys/file.h>" > head.c;;
8647*)
8648 case "$h_fcntl" in
8649 true) echo "#include <fcntl.h>" > head.c;;
8650 *) echo "#include <sys/fcntl.h>" > head.c;;
8651 esac
8652 ;;
8653esac
8654echo " "
8655echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8656case "$o_nonblock" in
8657'')
8658 $cat head.c > try.c
8659 $cat >>try.c <<'EOCP'
8660#include <stdio.h>
8661int main() {
8662#ifdef O_NONBLOCK
8663 printf("O_NONBLOCK\n");
8664 exit(0);
8665#endif
8666#ifdef O_NDELAY
8667 printf("O_NDELAY\n");
8668 exit(0);
8669#endif
8670#ifdef FNDELAY
8671 printf("FNDELAY\n");
8672 exit(0);
8673#endif
8674 exit(0);
8675}
8676EOCP
8677 set try
8678 if eval $compile_ok; then
8679 o_nonblock=`./try`
8680 case "$o_nonblock" in
8681 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8682 *) echo "Seems like we can use $o_nonblock.";;
8683 esac
8684 else
8685 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8686 fi
8687 ;;
8688*) echo "Using $hint value $o_nonblock.";;
8689esac
8690$rm -f try try.* .out core
8691
8692echo " "
8693echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8694case "$eagain" in
8695'')
8696 $cat head.c > try.c
8697 $cat >>try.c <<EOCP
8698#include <errno.h>
8699#include <sys/types.h>
8700#include <signal.h>
8701#include <stdio.h>
8702#define MY_O_NONBLOCK $o_nonblock
8703#ifndef errno /* XXX need better Configure test */
8704extern int errno;
8705#endif
8706#$i_unistd I_UNISTD
8707#ifdef I_UNISTD
8708#include <unistd.h>
8709#endif
8710#$i_string I_STRING
8711#ifdef I_STRING
8712#include <string.h>
8713#else
8714#include <strings.h>
8715#endif
8716$signal_t blech(x) int x; { exit(3); }
8717EOCP
8718 $cat >> try.c <<'EOCP'
8719int main()
8720{
8721 int pd[2];
8722 int pu[2];
8723 char buf[1];
8724 char string[100];
8725
8726 pipe(pd); /* Down: child -> parent */
8727 pipe(pu); /* Up: parent -> child */
8728 if (0 != fork()) {
8729 int ret;
8730 close(pd[1]); /* Parent reads from pd[0] */
8731 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8732 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8733 exit(1);
8734 signal(SIGALRM, blech);
8735 alarm(5);
8736 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8737 exit(2);
8738 sprintf(string, "%d\n", ret);
8739 write(2, string, strlen(string));
8740 alarm(0);
8741#ifdef EAGAIN
8742 if (errno == EAGAIN) {
8743 printf("EAGAIN\n");
8744 goto ok;
8745 }
8746#endif
8747#ifdef EWOULDBLOCK
8748 if (errno == EWOULDBLOCK)
8749 printf("EWOULDBLOCK\n");
8750#endif
8751 ok:
8752 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8753 sleep(2); /* Give it time to close our pipe */
8754 alarm(5);
8755 ret = read(pd[0], buf, 1); /* Should read EOF */
8756 alarm(0);
8757 sprintf(string, "%d\n", ret);
8758 write(3, string, strlen(string));
8759 exit(0);
8760 }
8761
8762 close(pd[0]); /* We write to pd[1] */
8763 close(pu[1]); /* We read from pu[0] */
8764 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8765 close(pd[1]); /* Pipe pd is now fully closed! */
8766 exit(0); /* Bye bye, thank you for playing! */
8767}
8768EOCP
8769 set try
8770 if eval $compile_ok; then
8771 echo "$startsh" >mtry
8772 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8773 chmod +x mtry
8774 ./mtry >/dev/null 2>&1
8775 case $? in
8776 0) eagain=`$cat try.out`;;
8777 1) echo "Could not perform non-blocking setting!";;
8778 2) echo "I did a successful read() for something that was not there!";;
8779 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8780 *) echo "Something terribly wrong happened during testing.";;
8781 esac
8782 rd_nodata=`$cat try.ret`
8783 echo "A read() system call with no data present returns $rd_nodata."
8784 case "$rd_nodata" in
8785 0|-1) ;;
8786 *)
8787 echo "(That's peculiar, fixing that to be -1.)"
8788 rd_nodata=-1
8789 ;;
8790 esac
8791 case "$eagain" in
8792 '')
8793 echo "Forcing errno EAGAIN on read() with no data available."
8794 eagain=EAGAIN
8795 ;;
8796 *)
8797 echo "Your read() sets errno to $eagain when no data is available."
8798 ;;
8799 esac
8800 status=`$cat try.err`
8801 case "$status" in
8802 0) echo "And it correctly returns 0 to signal EOF.";;
8803 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8804 *) echo "However, your read() returns '$status' on EOF??";;
8805 esac
8806 val="$define"
8807 if test "$status" = "$rd_nodata"; then
8808 echo "WARNING: you can't distinguish between EOF and no data!"
8809 val="$undef"
8810 fi
8811 else
8812 echo "I can't compile the test program--assuming errno EAGAIN will do."
8813 eagain=EAGAIN
8814 fi
8815 set d_eofnblk
8816 eval $setvar
8817 ;;
8818*)
8819 echo "Using $hint value $eagain."
8820 echo "Your read() returns $rd_nodata when no data is present."
8821 case "$d_eofnblk" in
8822 "$define") echo "And you can see EOF because read() returns 0.";;
8823 "$undef") echo "But you can't see EOF status from read() returned value.";;
8824 *)
8825 echo "(Assuming you can't see EOF status from read anyway.)"
8826 d_eofnblk=$undef
8827 ;;
8828 esac
8829 ;;
8830esac
8831$rm -f try try.* .out core head.c mtry
8832
8833: see if fchmod exists
8834set fchmod d_fchmod
8835eval $inlibc
8836
8837: see if fchown exists
8838set fchown d_fchown
8839eval $inlibc
8840
8841: see if this is an fcntl system
8842set fcntl d_fcntl
8843eval $inlibc
8844
8845hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8846while $test $# -ge 2; do
8847 case "$1" in
8848 $define) echo "#include <$2>";;
8849 esac ;
8850 shift 2;
8851done > try.c;
8852echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8853set try;
8854if eval $compile; then
8855 val="$define";
8856else
8857 val="$undef";
8858fi;
8859set $varname;
8860eval $setvar;
8861$rm -f try.c try.o'
8862
8863socketlib=''
8864sockethdr=''
8865: see whether socket exists
8866echo " "
8867$echo $n "Hmm... $c" >&4
8868if set socket val -f d_socket; eval $csym; $val; then
8869 echo "Looks like you have Berkeley networking support." >&4
8870 d_socket="$define"
8871 if set setsockopt val -f; eval $csym; $val; then
8872 d_oldsock="$undef"
8873 else
8874 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8875 d_oldsock="$define"
8876 fi
8877else
8878 if $contains socklib libc.list >/dev/null 2>&1; then
8879 echo "Looks like you have Berkeley networking support." >&4
8880 d_socket="$define"
8881 : we will have to assume that it supports the 4.2 BSD interface
8882 d_oldsock="$undef"
8883 else
8884 echo "You don't have Berkeley networking in libc$_a..." >&4
8885 if test "X$d_socket" = "X$define"; then
8886 echo "...but you seem to believe that you have sockets." >&4
8887 else
8888 for net in net socket
8889 do
8890 if test -f /usr/lib/lib$net$_a; then
8891 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8892 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8893 if $contains socket libc.list >/dev/null 2>&1; then
8894 d_socket="$define"
8895 socketlib="-l$net"
8896 case "$net" in
8897 net)
8898 echo "...but the Wollongong group seems to have hacked it in." >&4
8899 sockethdr="-I/usr/netinclude"
8900 ;;
8901 esac
8902 echo "Found Berkeley sockets interface in lib$net." >& 4
8903 if $contains setsockopt libc.list >/dev/null 2>&1; then
8904 d_oldsock="$undef"
8905 else
8906 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8907 d_oldsock="$define"
8908 fi
8909 break
8910 fi
8911 fi
8912 done
8913 if test "X$d_socket" != "X$define"; then
8914 echo "or anywhere else I see." >&4
8915 d_socket="$undef"
8916 d_oldsock="$undef"
8917 fi
8918 fi
8919 fi
8920fi
8921
8922: see if socketpair exists
8923set socketpair d_sockpair
8924eval $inlibc
8925
8926
8927echo " "
8928echo "Checking the availability of certain socket constants..." >& 4
8929for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8930 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8931 $cat >try.c <<EOF
8932#include <sys/types.h>
8933#include <sys/socket.h>
8934int main() {
8935 int i = $ENUM;
8936}
8937EOF
8938 val="$undef"
8939 set try; if eval $compile; then
8940 val="$define"
8941 fi
8942 set d_${enum}; eval $setvar
8943 $rm -f try.c try
8944done
8945
8946: see if sys/select.h has to be included
8947set sys/select.h i_sysselct
8948eval $inhdr
8949
8950: see if we should include time.h, sys/time.h, or both
8951echo " "
8952if test "X$timeincl" = X; then
8953 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8954 $echo $n "I'm now running the test program...$c"
8955 $cat >try.c <<'EOCP'
8956#include <sys/types.h>
8957#ifdef I_TIME
8958#include <time.h>
8959#endif
8960#ifdef I_SYSTIME
8961#ifdef SYSTIMEKERNEL
8962#define KERNEL
8963#endif
8964#include <sys/time.h>
8965#endif
8966#ifdef I_SYSSELECT
8967#include <sys/select.h>
8968#endif
8969int main()
8970{
8971 struct tm foo;
8972#ifdef S_TIMEVAL
8973 struct timeval bar;
8974#endif
8975#ifdef S_TIMEZONE
8976 struct timezone tzp;
8977#endif
8978 if (foo.tm_sec == foo.tm_sec)
8979 exit(0);
8980#ifdef S_TIMEVAL
8981 if (bar.tv_sec == bar.tv_sec)
8982 exit(0);
8983#endif
8984 exit(1);
8985}
8986EOCP
8987 flags=''
8988 for s_timezone in '-DS_TIMEZONE' ''; do
8989 sysselect=''
8990 for s_timeval in '-DS_TIMEVAL' ''; do
8991 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8992 for i_time in '' '-DI_TIME'; do
8993 for i_systime in '-DI_SYSTIME' ''; do
8994 case "$flags" in
8995 '') $echo $n ".$c"
8996 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8997 if eval $compile; then
8998 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8999 shift
9000 flags="$*"
9001 echo " "
9002 $echo $n "Succeeded with $flags$c"
9003 fi
9004 ;;
9005 esac
9006 done
9007 done
9008 done
9009 done
9010 done
9011 timeincl=''
9012 echo " "
9013 case "$flags" in
9014 *SYSTIMEKERNEL*) i_systimek="$define"
9015 timeincl=`./findhdr sys/time.h`
9016 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9017 *) i_systimek="$undef";;
9018 esac
9019 case "$flags" in
9020 *I_TIME*) i_time="$define"
9021 timeincl=`./findhdr time.h`" $timeincl"
9022 echo "We'll include <time.h>." >&4;;
9023 *) i_time="$undef";;
9024 esac
9025 case "$flags" in
9026 *I_SYSTIME*) i_systime="$define"
9027 timeincl=`./findhdr sys/time.h`" $timeincl"
9028 echo "We'll include <sys/time.h>." >&4;;
9029 *) i_systime="$undef";;
9030 esac
9031 $rm -f try.c try
9032fi
9033
9034: check for fd_set items
9035$cat <<EOM
9036
9037Checking to see how well your C compiler handles fd_set and friends ...
9038EOM
9039$cat >fd_set.c <<EOCP
9040#$i_systime I_SYS_TIME
9041#$i_sysselct I_SYS_SELECT
9042#$d_socket HAS_SOCKET
9043#include <sys/types.h>
9044#ifdef HAS_SOCKET
9045#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9046#endif
9047#ifdef I_SYS_TIME
9048#include <sys/time.h>
9049#endif
9050#ifdef I_SYS_SELECT
9051#include <sys/select.h>
9052#endif
9053int main() {
9054 fd_set fds;
9055
9056#ifdef TRYBITS
9057 if(fds.fds_bits);
9058#endif
9059
9060#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9061 exit(0);
9062#else
9063 exit(1);
9064#endif
9065}
9066EOCP
9067set fd_set -DTRYBITS
9068if eval $compile; then
9069 d_fds_bits="$define"
9070 d_fd_set="$define"
9071 echo "Well, your system knows about the normal fd_set typedef..." >&4
9072 if ./fd_set; then
9073 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9074 d_fd_macros="$define"
9075 else
9076 $cat >&4 <<'EOM'
9077but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9078EOM
9079 d_fd_macros="$undef"
9080 fi
9081else
9082 $cat <<'EOM'
9083Hmm, your compiler has some difficulty with fd_set. Checking further...
9084EOM
9085 set fd_set
9086 if eval $compile; then
9087 d_fds_bits="$undef"
9088 d_fd_set="$define"
9089 echo "Well, your system has some sort of fd_set available..." >&4
9090 if ./fd_set; then
9091 echo "and you have the normal fd_set macros." >&4
9092 d_fd_macros="$define"
9093 else
9094 $cat <<'EOM'
9095but not the normal fd_set macros! Gross! More work for me...
9096EOM
9097 d_fd_macros="$undef"
9098 fi
9099 else
9100 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9101 d_fd_set="$undef"
9102 d_fds_bits="$undef"
9103 d_fd_macros="$undef"
9104 fi
9105fi
9106$rm -f fd_set*
9107
9108: see if fgetpos exists
9109set fgetpos d_fgetpos
9110eval $inlibc
9111
9112: see if flock exists
9113set flock d_flock
9114eval $inlibc
9115
9116: see if fork exists
9117set fork d_fork
9118eval $inlibc
9119
9120: see if pathconf exists
9121set pathconf d_pathconf
9122eval $inlibc
9123
9124: see if fpathconf exists
9125set fpathconf d_fpathconf
9126eval $inlibc
9127
9128
9129: check for fpos64_t
9130echo " "
9131echo "Checking to see if you have fpos64_t..." >&4
9132$cat >try.c <<EOCP
9133#include <stdio.h>
9134int main() { fpos64_t x = 7; }
9135EOCP
9136set try
9137if eval $compile; then
9138 val="$define"
9139 echo "You have fpos64_t."
9140else
9141 val="$undef"
9142 echo "You do not have fpos64_t."
9143 case "$fpossize" in
9144 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9145 esac
9146fi
9147$rm -f try.* try
9148set d_fpos64_t
9149eval $setvar
9150
9151: see if frexpl exists
9152set frexpl d_frexpl
9153eval $inlibc
9154
9155hasstruct='varname=$1; struct=$2; shift; shift;
9156while $test $# -ge 2; do
9157 case "$1" in
9158 $define) echo "#include <$2>";;
9159 esac ;
9160 shift 2;
9161done > try.c;
9162echo "int main () { struct $struct foo; }" >> try.c;
9163set try;
9164if eval $compile; then
9165 val="$define";
9166else
9167 val="$undef";
9168fi;
9169set $varname;
9170eval $setvar;
9171$rm -f try.c try.o'
9172
9173: see if this is a sys/param system
9174set sys/param.h i_sysparam
9175eval $inhdr
9176
9177: see if this is a sys/mount.h system
9178set sys/mount.h i_sysmount
9179eval $inhdr
9180
9181: see if sys/types.h has to be included
9182set sys/types.h i_systypes
9183eval $inhdr
9184
9185
9186echo " "
9187echo "Checking to see if your system supports struct fs_data..." >&4
9188set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9189eval $hasstruct
9190case "$d_fs_data_s" in
9191"$define") echo "Yes, it does." ;;
9192*) echo "No, it doesn't." ;;
9193esac
9194
9195: see if fseeko exists
9196set fseeko d_fseeko
9197eval $inlibc
9198case "$longsize" in
91998) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9200esac
9201
9202: see if fsetpos exists
9203set fsetpos d_fsetpos
9204eval $inlibc
9205
9206
9207: see if fstatfs exists
9208set fstatfs d_fstatfs
9209eval $inlibc
9210
9211
9212: see if statvfs exists
9213set statvfs d_statvfs
9214eval $inlibc
9215
9216: see if fstatvfs exists
9217set fstatvfs d_fstatvfs
9218eval $inlibc
9219
9220
9221: see if ftello exists
9222set ftello d_ftello
9223eval $inlibc
9224case "$longsize" in
92258) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9226esac
9227
9228: see if getcwd exists
9229set getcwd d_getcwd
9230eval $inlibc
9231
9232: see if getespwnam exists
9233set getespwnam d_getespwnam
9234eval $inlibc
9235
9236
9237: see if getfsstat exists
9238set getfsstat d_getfsstat
9239eval $inlibc
9240
9241: see if getgrent exists
9242set getgrent d_getgrent
9243eval $inlibc
9244
9245: see if gethostbyaddr exists
9246set gethostbyaddr d_gethbyaddr
9247eval $inlibc
9248
9249: see if gethostbyname exists
9250set gethostbyname d_gethbyname
9251eval $inlibc
9252
9253: see if gethostent exists
9254set gethostent d_gethent
9255eval $inlibc
9256
9257: see how we will look up host name
9258echo " "
9259call=''
9260if set gethostname val -f d_gethname; eval $csym; $val; then
9261 echo 'gethostname() found.' >&4
9262 d_gethname="$define"
9263 call=gethostname
9264fi
9265if set uname val -f d_uname; eval $csym; $val; then
9266 if ./xenix; then
9267 $cat <<'EOM'
9268uname() was found, but you're running xenix, and older versions of xenix
9269have a broken uname(). If you don't really know whether your xenix is old
9270enough to have a broken system call, use the default answer.
9271
9272EOM
9273 dflt=y
9274 case "$d_uname" in
9275 "$define") dflt=n;;
9276 esac
9277 rp='Is your uname() broken?'
9278 . ./myread
9279 case "$ans" in
9280 n*) d_uname="$define"; call=uname;;
9281 esac
9282 else
9283 echo 'uname() found.' >&4
9284 d_uname="$define"
9285 case "$call" in
9286 '') call=uname ;;
9287 esac
9288 fi
9289fi
9290case "$d_gethname" in
9291'') d_gethname="$undef";;
9292esac
9293case "$d_uname" in
9294'') d_uname="$undef";;
9295esac
9296case "$d_uname$d_gethname" in
9297*define*)
9298 dflt=n
9299 cat <<EOM
9300
9301Every now and then someone has a $call() that lies about the hostname
9302but can't be fixed for political or economic reasons. If you wish, I can
9303pretend $call() isn't there and maybe compute hostname at run-time
9304thanks to the '$phostname' command.
9305
9306EOM
9307 rp="Shall I ignore $call() from now on?"
9308 . ./myread
9309 case "$ans" in
9310 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9311 esac;;
9312esac
9313case "$phostname" in
9314'') aphostname='';;
9315*) case "$aphostname" in
9316 /*) ;;
9317 *) set X $phostname
9318 shift
9319 file=$1
9320 shift
9321 file=`./loc $file $file $pth`
9322 aphostname=`echo $file $*`
9323 ;;
9324 esac
9325 ;;
9326esac
9327case "$d_uname$d_gethname" in
9328*define*) ;;
9329*)
9330 case "$phostname" in
9331 '')
9332 echo "There will be no way for $package to get your hostname." >&4;;
9333 *)
9334 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9335 ;;
9336 esac;;
9337esac
9338case "$d_phostname" in
9339'') d_phostname="$undef";;
9340esac
9341
9342: see if this is a netdb.h system
9343set netdb.h i_netdb
9344eval $inhdr
9345
9346: see if prototypes for various gethostxxx netdb.h functions are available
9347echo " "
9348set d_gethostprotos gethostent $i_netdb netdb.h
9349eval $hasproto
9350
9351: see if getlogin exists
9352set getlogin d_getlogin
9353eval $inlibc
9354
9355: see if getmnt exists
9356set getmnt d_getmnt
9357eval $inlibc
9358
9359: see if getmntent exists
9360set getmntent d_getmntent
9361eval $inlibc
9362
9363: see if getnetbyaddr exists
9364set getnetbyaddr d_getnbyaddr
9365eval $inlibc
9366
9367: see if getnetbyname exists
9368set getnetbyname d_getnbyname
9369eval $inlibc
9370
9371: see if getnetent exists
9372set getnetent d_getnent
9373eval $inlibc
9374
9375: see if prototypes for various getnetxxx netdb.h functions are available
9376echo " "
9377set d_getnetprotos getnetent $i_netdb netdb.h
9378eval $hasproto
9379
9380
9381: see if getprotobyname exists
9382set getprotobyname d_getpbyname
9383eval $inlibc
9384
9385: see if getprotobynumber exists
9386set getprotobynumber d_getpbynumber
9387eval $inlibc
9388
9389: see if getprotoent exists
9390set getprotoent d_getpent
9391eval $inlibc
9392
9393: see if getpgid exists
9394set getpgid d_getpgid
9395eval $inlibc
9396
9397: see if getpgrp2 exists
9398set getpgrp2 d_getpgrp2
9399eval $inlibc
9400
9401: see if getppid exists
9402set getppid d_getppid
9403eval $inlibc
9404
9405: see if getpriority exists
9406set getpriority d_getprior
9407eval $inlibc
9408
9409: see if prototypes for various getprotoxxx netdb.h functions are available
9410echo " "
9411set d_getprotoprotos getprotoent $i_netdb netdb.h
9412eval $hasproto
9413
9414: see if getprpwnam exists
9415set getprpwnam d_getprpwnam
9416eval $inlibc
9417
9418: see if getpwent exists
9419set getpwent d_getpwent
9420eval $inlibc
9421
9422
9423: see if getservbyname exists
9424set getservbyname d_getsbyname
9425eval $inlibc
9426
9427: see if getservbyport exists
9428set getservbyport d_getsbyport
9429eval $inlibc
9430
9431: see if getservent exists
9432set getservent d_getsent
9433eval $inlibc
9434
9435: see if prototypes for various getservxxx netdb.h functions are available
9436echo " "
9437set d_getservprotos getservent $i_netdb netdb.h
9438eval $hasproto
9439
9440: see if getspnam exists
9441set getspnam d_getspnam
9442eval $inlibc
9443
9444: see if gettimeofday or ftime exists
9445set gettimeofday d_gettimeod
9446eval $inlibc
9447case "$d_gettimeod" in
9448"$undef")
9449 set ftime d_ftime
9450 eval $inlibc
9451 ;;
9452*)
9453 val="$undef"; set d_ftime; eval $setvar
9454 ;;
9455esac
9456case "$d_gettimeod$d_ftime" in
9457"$undef$undef")
9458 echo " "
9459 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9460 ;;
9461esac
9462
9463: see if this is an grp system
9464set grp.h i_grp
9465eval $inhdr
9466
9467case "$i_grp" in
9468$define)
9469 xxx=`./findhdr grp.h`
9470 $cppstdin $cppflags $cppminus < $xxx >$$.h
9471
9472 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9473 val="$define"
9474 else
9475 val="$undef"
9476 fi
9477 set d_grpasswd
9478 eval $setvar
9479
9480 $rm -f $$.h
9481 ;;
9482*)
9483 val="$undef";
9484 set d_grpasswd; eval $setvar
9485 ;;
9486esac
9487
9488: see if hasmntopt exists
9489set hasmntopt d_hasmntopt
9490eval $inlibc
9491
9492: see if this is a netinet/in.h or sys/in.h system
9493set netinet/in.h i_niin sys/in.h i_sysin
9494eval $inhdr
9495
9496: see if arpa/inet.h has to be included
9497set arpa/inet.h i_arpainet
9498eval $inhdr
9499
9500: see if htonl --and friends-- exists
9501val=''
9502set htonl val
9503eval $inlibc
9504
9505: Maybe they are macros.
9506case "$val" in
9507$undef)
9508 $cat >htonl.c <<EOM
9509#include <stdio.h>
9510#include <sys/types.h>
9511#$i_niin I_NETINET_IN
9512#$i_sysin I_SYS_IN
9513#$i_arpainet I_ARPA_INET
9514#ifdef I_NETINET_IN
9515#include <netinet/in.h>
9516#endif
9517#ifdef I_SYS_IN
9518#include <sys/in.h>
9519#endif
9520#ifdef I_ARPA_INET
9521#include <arpa/inet.h>
9522#endif
9523#ifdef htonl
9524printf("Defined as a macro.");
9525#endif
9526EOM
9527 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9528 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9529 val="$define"
9530 echo "But it seems to be defined as a macro." >&4
9531 fi
9532 $rm -f htonl.?
9533 ;;
9534esac
9535set d_htonl
9536eval $setvar
9537
9538: see if iconv exists
9539set iconv d_iconv
9540eval $inlibc
9541
9542: index or strchr
9543echo " "
9544if set index val -f; eval $csym; $val; then
9545 if set strchr val -f d_strchr; eval $csym; $val; then
9546 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9547 val="$define"
9548 vali="$undef"
9549 echo "strchr() found." >&4
9550 else
9551 val="$undef"
9552 vali="$define"
9553 echo "index() found." >&4
9554 fi
9555 else
9556 val="$undef"
9557 vali="$define"
9558 echo "index() found." >&4
9559 fi
9560else
9561 if set strchr val -f d_strchr; eval $csym; $val; then
9562 val="$define"
9563 vali="$undef"
9564 echo "strchr() found." >&4
9565 else
9566 echo "No index() or strchr() found!" >&4
9567 val="$undef"
9568 vali="$undef"
9569 fi
9570fi
9571set d_strchr; eval $setvar
9572val="$vali"
9573set d_index; eval $setvar
9574
9575: check whether inet_aton exists
9576set inet_aton d_inetaton
9577eval $inlibc
9578
9579: see if inttypes.h is available
9580: we want a real compile instead of Inhdr because some systems
9581: have an inttypes.h which includes non-existent headers
9582echo " "
9583$cat >try.c <<EOCP
9584#include <inttypes.h>
9585int main() {
9586 static int32_t foo32 = 0x12345678;
9587}
9588EOCP
9589set try
9590if eval $compile; then
9591 echo "<inttypes.h> found." >&4
9592 val="$define"
9593else
9594 echo "<inttypes.h> NOT found." >&4
9595 val="$undef"
9596fi
9597$rm -f try.c try
9598set i_inttypes
9599eval $setvar
9600
9601: check for int64_t
9602echo " "
9603echo "Checking to see if you have int64_t..." >&4
9604$cat >try.c <<EOCP
9605#include <sys/types.h>
9606#$i_inttypes I_INTTYPES
9607#ifdef I_INTTYPES
9608#include <inttypes.h>
9609#endif
9610int main() { int64_t x = 7; }
9611EOCP
9612set try
9613if eval $compile; then
9614 val="$define"
9615 echo "You have int64_t."
9616else
9617 val="$undef"
9618 echo "You do not have int64_t."
9619fi
9620$rm -f try try.*
9621set d_int64_t
9622eval $setvar
9623
9624: Look for isascii
9625echo " "
9626$cat >isascii.c <<'EOCP'
9627#include <stdio.h>
9628#include <ctype.h>
9629int main() {
9630 int c = 'A';
9631 if (isascii(c))
9632 exit(0);
9633 else
9634 exit(1);
9635}
9636EOCP
9637set isascii
9638if eval $compile; then
9639 echo "isascii() found." >&4
9640 val="$define"
9641else
9642 echo "isascii() NOT found." >&4
9643 val="$undef"
9644fi
9645set d_isascii
9646eval $setvar
9647$rm -f isascii*
9648
9649: see if isnan exists
9650set isnan d_isnan
9651eval $inlibc
9652
9653: see if isnanl exists
9654set isnanl d_isnanl
9655eval $inlibc
9656
9657: see if killpg exists
9658set killpg d_killpg
9659eval $inlibc
9660
9661: see if lchown exists
9662echo " "
9663$cat > try.c <<'EOCP'
9664/* System header to define __stub macros and hopefully few prototypes,
9665 which can conflict with char lchown(); below. */
9666#include <assert.h>
9667/* Override any gcc2 internal prototype to avoid an error. */
9668/* We use char because int might match the return type of a gcc2
9669 builtin and then its argument prototype would still apply. */
9670char lchown();
9671int main() {
9672 /* The GNU C library defines this for functions which it implements
9673 to always fail with ENOSYS. Some functions are actually named
9674 something starting with __ and the normal name is an alias. */
9675#if defined (__stub_lchown) || defined (__stub___lchown)
9676choke me
9677#else
9678lchown();
9679#endif
9680; return 0; }
9681EOCP
9682set try
9683if eval $compile; then
9684 $echo "lchown() found." >&4
9685 val="$define"
9686else
9687 $echo "lchown() NOT found." >&4
9688 val="$undef"
9689fi
9690set d_lchown
9691eval $setvar
9692
9693: See if number of significant digits in a double precision number is known
9694echo " "
9695$cat >ldbl_dig.c <<EOM
9696#$i_limits I_LIMITS
9697#$i_float I_FLOAT
9698#ifdef I_LIMITS
9699#include <limits.h>
9700#endif
9701#ifdef I_FLOAT
9702#include <float.h>
9703#endif
9704#ifdef LDBL_DIG
9705printf("Contains LDBL_DIG");
9706#endif
9707EOM
9708$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9709if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9710 echo "LDBL_DIG found." >&4
9711 val="$define"
9712else
9713 echo "LDBL_DIG NOT found." >&4
9714 val="$undef"
9715fi
9716$rm -f ldbl_dig.?
9717set d_ldbl_dig
9718eval $setvar
9719
9720: see if link exists
9721set link d_link
9722eval $inlibc
9723
9724: see if localeconv exists
9725set localeconv d_locconv
9726eval $inlibc
9727
9728: see if lockf exists
9729set lockf d_lockf
9730eval $inlibc
9731
9732: check for long long
9733echo " "
9734echo "Checking to see if you have long long..." >&4
9735echo 'int main() { long long x = 7; return 0; }' > try.c
9736set try
9737if eval $compile; then
9738 val="$define"
9739 echo "You have long long."
9740else
9741 val="$undef"
9742 echo "You do not have long long."
9743fi
9744$rm try.*
9745set d_longlong
9746eval $setvar
9747
9748: check for length of long long
9749case "${d_longlong}${longlongsize}" in
9750$define)
9751 echo " "
9752 echo "Checking to see how big your long longs are..." >&4
9753 $cat >try.c <<'EOCP'
9754#include <stdio.h>
9755int main()
9756{
9757 printf("%d\n", (int)sizeof(long long));
9758 return(0);
9759}
9760EOCP
9761 set try
9762 if eval $compile_ok; then
9763 longlongsize=`./try$exe_ext`
9764 echo "Your long longs are $longlongsize bytes long."
9765 else
9766 dflt='8'
9767 echo " "
9768 echo "(I can't seem to compile the test program. Guessing...)"
9769 rp="What is the size of a long long (in bytes)?"
9770 . ./myread
9771 longlongsize="$ans"
9772 fi
9773 if $test "X$longsize" = "X$longlongsize"; then
9774 echo "(That isn't any different from an ordinary long.)"
9775 fi
9776 ;;
9777esac
9778$rm -f try.* try
9779
9780: see if prototype for lseek is available
9781echo " "
9782set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9783eval $hasproto
9784
9785: see if lstat exists
9786set lstat d_lstat
9787eval $inlibc
9788
9789: see if madvise exists
9790set madvise d_madvise
9791eval $inlibc
9792
9793: see if mblen exists
9794set mblen d_mblen
9795eval $inlibc
9796
9797: see if mbstowcs exists
9798set mbstowcs d_mbstowcs
9799eval $inlibc
9800
9801: see if mbtowc exists
9802set mbtowc d_mbtowc
9803eval $inlibc
9804
9805: see if memchr exists
9806set memchr d_memchr
9807eval $inlibc
9808
9809: see if memcmp exists
9810set memcmp d_memcmp
9811eval $inlibc
9812
9813: see if memcpy exists
9814set memcpy d_memcpy
9815eval $inlibc
9816
9817: see if memmove exists
9818set memmove d_memmove
9819eval $inlibc
9820
9821: see if memset exists
9822set memset d_memset
9823eval $inlibc
9824
9825: see if mkdir exists
9826set mkdir d_mkdir
9827eval $inlibc
9828
9829: see if mkdtemp exists
9830set mkdtemp d_mkdtemp
9831eval $inlibc
9832
9833: see if mkfifo exists
9834set mkfifo d_mkfifo
9835eval $inlibc
9836
9837: see if mkstemp exists
9838set mkstemp d_mkstemp
9839eval $inlibc
9840
9841: see if mkstemps exists
9842set mkstemps d_mkstemps
9843eval $inlibc
9844
9845: see if mktime exists
9846set mktime d_mktime
9847eval $inlibc
9848
9849: see if this is a sys/mman.h system
9850set sys/mman.h i_sysmman
9851eval $inhdr
9852
9853: see if mmap exists
9854set mmap d_mmap
9855eval $inlibc
9856: see what shmat returns
9857: default to something harmless
9858mmaptype='void *'
9859case "$i_sysmman$d_mmap" in
9860"$define$define")
9861 $cat >mmap.c <<'END'
9862#include <sys/mman.h>
9863void *mmap();
9864END
9865 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9866 mmaptype='void *'
9867 else
9868 mmaptype='caddr_t'
9869 fi
9870 echo "and it returns ($mmaptype)." >&4
9871 ;;
9872esac
9873
9874
9875
9876: see if modfl exists
9877set modfl d_modfl
9878eval $inlibc
9879
9880: see if mprotect exists
9881set mprotect d_mprotect
9882eval $inlibc
9883
9884: see if msgctl exists
9885set msgctl d_msgctl
9886eval $inlibc
9887
9888: see if msgget exists
9889set msgget d_msgget
9890eval $inlibc
9891
9892: see if msgsnd exists
9893set msgsnd d_msgsnd
9894eval $inlibc
9895
9896: see if msgrcv exists
9897set msgrcv d_msgrcv
9898eval $inlibc
9899
9900: see how much of the 'msg*(2)' library is present.
9901h_msg=true
9902echo " "
9903case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9904*"$undef"*) h_msg=false;;
9905esac
9906case "$osname" in
9907freebsd)
9908 case "`ipcs 2>&1`" in
9909 "SVID messages"*"not configured"*)
9910 echo "Your $osname does not have the msg*(2) configured." >&4
9911 h_msg=false
9912 val="$undef"
9913 set msgctl d_msgctl
9914 eval $setvar
9915 set msgget d_msgget
9916 eval $setvar
9917 set msgsnd d_msgsnd
9918 eval $setvar
9919 set msgrcv d_msgrcv
9920 eval $setvar
9921 ;;
9922 esac
9923 ;;
9924esac
9925: we could also check for sys/ipc.h ...
9926if $h_msg && $test `./findhdr sys/msg.h`; then
9927 echo "You have the full msg*(2) library." >&4
9928 val="$define"
9929else
9930 echo "You don't have the full msg*(2) library." >&4
9931 val="$undef"
9932fi
9933set d_msg
9934eval $setvar
9935
9936: see if msync exists
9937set msync d_msync
9938eval $inlibc
9939
9940: see if munmap exists
9941set munmap d_munmap
9942eval $inlibc
9943
9944: see if nice exists
9945set nice d_nice
9946eval $inlibc
9947
9948
9949echo " "
9950echo "Checking which 64-bit integer type we could use..." >&4
9951
9952case "$intsize" in
99538) val=int
9954 set quadtype
9955 eval $setvar
9956 val='"unsigned int"'
9957 set uquadtype
9958 eval $setvar
9959 quadkind=1
9960 ;;
9961*) case "$longsize" in
9962 8) val=long
9963 set quadtype
9964 eval $setvar
9965 val='"unsigned long"'
9966 set uquadtype
9967 eval $setvar
9968 quadkind=2
9969 ;;
9970 *) case "$d_longlong:$longlongsize" in
9971 define:8)
9972 val='"long long"'
9973 set quadtype
9974 eval $setvar
9975 val='"unsigned long long"'
9976 set uquadtype
9977 eval $setvar
9978 quadkind=3
9979 ;;
9980 *) case "$d_int64_t" in
9981 define)
9982 val=int64_t
9983 set quadtype
9984 eval $setvar
9985 val=uint64_t
9986 set uquadtype
9987 eval $setvar
9988 quadkind=4
9989 ;;
9990 esac
9991 ;;
9992 esac
9993 ;;
9994 esac
9995 ;;
9996esac
9997
9998case "$quadtype" in
9999'') echo "Alas, no 64-bit integer types in sight." >&4
10000 d_quad="$undef"
10001 ;;
10002*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10003 verb="will"
10004 else
10005 verb="could"
10006 fi
10007 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10008 d_quad="$define"
10009 ;;
10010esac
10011
10012: check for length of character
10013echo " "
10014case "$charsize" in
10015'')
10016 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10017 $cat >try.c <<'EOCP'
10018#include <stdio.h>
10019int main()
10020{
10021 printf("%d\n", (int)sizeof(char));
10022 exit(0);
10023}
10024EOCP
10025 set try
10026 if eval $compile_ok; then
10027 dflt=`./try`
10028 else
10029 dflt='1'
10030 echo "(I can't seem to compile the test program. Guessing...)"
10031 fi
10032 ;;
10033*)
10034 dflt="$charsize"
10035 ;;
10036esac
10037rp="What is the size of a character (in bytes)?"
10038. ./myread
10039charsize="$ans"
10040$rm -f try.c try
10041
10042
10043echo " "
10044$echo "Choosing the C types to be used for Perl's internal types..." >&4
10045
10046case "$use64bitint:$d_quad:$quadtype" in
10047define:define:?*)
10048 ivtype="$quadtype"
10049 uvtype="$uquadtype"
10050 ivsize=8
10051 uvsize=8
10052 ;;
10053*) ivtype="long"
10054 uvtype="unsigned long"
10055 ivsize=$longsize
10056 uvsize=$longsize
10057 ;;
10058esac
10059
10060case "$uselongdouble:$d_longdbl" in
10061define:define)
10062 nvtype="long double"
10063 nvsize=$longdblsize
10064 ;;
10065*) nvtype=double
10066 nvsize=$doublesize
10067 ;;
10068esac
10069
10070$echo "(IV will be "$ivtype", $ivsize bytes)"
10071$echo "(UV will be "$uvtype", $uvsize bytes)"
10072$echo "(NV will be "$nvtype", $nvsize bytes)"
10073
10074$cat >try.c <<EOCP
10075#$i_inttypes I_INTTYPES
10076#ifdef I_INTTYPES
10077#include <inttypes.h>
10078#endif
10079#include <stdio.h>
10080int main() {
10081#ifdef INT8
10082 int8_t i = INT8_MAX;
10083 uint8_t u = UINT8_MAX;
10084 printf("int8_t\n");
10085#endif
10086#ifdef INT16
10087 int16_t i = INT16_MAX;
10088 uint16_t i = UINT16_MAX;
10089 printf("int16_t\n");
10090#endif
10091#ifdef INT32
10092 int32_t i = INT32_MAX;
10093 uint32_t u = UINT32_MAX;
10094 printf("int32_t\n");
10095#endif
10096}
10097EOCP
10098
10099case "$i8type" in
10100'') case "$charsize" in
10101 1) i8type=char
10102 u8type="unsigned char"
10103 i8size=$charsize
10104 u8size=$charsize
10105 ;;
10106 esac
10107 ;;
10108esac
10109case "$i8type" in
10110'') set try -DINT8
10111 if eval $compile; then
10112 case "`./try$exe_ext`" in
10113 int8_t) i8type=int8_t
10114 u8type=uint8_t
10115 i8size=1
10116 u8size=1
10117 ;;
10118 esac
10119 fi
10120 ;;
10121esac
10122case "$i8type" in
10123'') if $test $charsize -ge 1; then
10124 i8type=char
10125 u8type="unsigned char"
10126 i8size=$charsize
10127 u8size=$charsize
10128 fi
10129 ;;
10130esac
10131
10132case "$i16type" in
10133'') case "$shortsize" in
10134 2) i16type=short
10135 u16type="unsigned short"
10136 i16size=$shortsize
10137 u16size=$shortsize
10138 ;;
10139 esac
10140 ;;
10141esac
10142case "$i16type" in
10143'') set try -DINT16
10144 if eval $compile; then
10145 case "`./try$exe_ext`" in
10146 int16_t)
10147 i16type=int16_t
10148 u16type=uint16_t
10149 i16size=2
10150 u16size=2
10151 ;;
10152 esac
10153 fi
10154 ;;
10155esac
10156case "$i16type" in
10157'') if $test $shortsize -ge 2; then
10158 i16type=short
10159 u16type="unsigned short"
10160 i16size=$shortsize
10161 u16size=$shortsize
10162 fi
10163 ;;
10164esac
10165
10166case "$i32type" in
10167'') case "$longsize" in
10168 4) i32type=long
10169 u32type="unsigned long"
10170 i32size=$longsize
10171 u32size=$longsize
10172 ;;
10173 *) case "$intsize" in
10174 4) i32type=int
10175 u32type="unsigned int"
10176 i32size=$intsize
10177 u32size=$intsize
10178 ;;
10179 esac
10180 ;;
10181 esac
10182 ;;
10183esac
10184case "$i32type" in
10185'') set try -DINT32
10186 if eval $compile; then
10187 case "`./try$exe_ext`" in
10188 int32_t)
10189 i32type=int32_t
10190 u32type=uint32_t
10191 i32size=4
10192 u32size=4
10193 ;;
10194 esac
10195 fi
10196 ;;
10197esac
10198case "$i32type" in
10199'') if $test $intsize -ge 4; then
10200 i32type=int
10201 u32type="unsigned int"
10202 i32size=$intsize
10203 u32size=$intsize
10204 fi
10205 ;;
10206esac
10207
10208case "$i64type" in
10209'') case "$d_quad:$quadtype" in
10210 define:?*)
10211 i64type="$quadtype"
10212 u64type="$uquadtype"
10213 i64size=8
10214 u64size=8
10215 ;;
10216 esac
10217 ;;
10218esac
10219
10220$echo "Checking whether your NVs can preserve your UVs..." >&4
10221$cat <<EOP >try.c
10222#include <stdio.h>
10223int main() {
10224 $uvtype k = ($uvtype)~0, l;
10225 $nvtype d;
10226 l = k;
10227 d = ($nvtype)l;
10228 l = ($uvtype)d;
10229 if (l == k)
10230 printf("preserve\n");
10231 exit(0);
10232}
10233EOP
10234set try
10235if eval $compile; then
10236 case "`./try$exe_ext`" in
10237 preserve) d_nv_preserves_uv="$define" ;;
10238 esac
10239fi
10240case "$d_nv_preserves_uv" in
10241$define) $echo "Yes, they can." 2>&1 ;;
10242*) $echo "No, they can't." 2>&1
10243 d_nv_preserves_uv="$undef"
10244 ;;
10245esac
10246
10247$rm -f try.* try
10248
10249case "$d_nv_preserves_uv" in
10250"$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10251*) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10252 $cat <<EOP >try.c
10253#include <stdio.h>
10254int main() {
10255 $uvtype u = 0;
10256 int n = 8 * $uvsize;
10257 int i;
10258 for (i = 0; i < n; i++) {
10259 u = u << 1 | ($uvtype)1;
10260 if (($uvtype)($nvtype)u != u)
10261 break;
10262 }
10263 printf("%d\n", i);
10264 exit(0);
10265}
10266EOP
10267 set try
10268 if eval $compile; then
10269 d_nv_preserves_uv_bits="`./try$exe_ext`"
10270 fi
10271 case "$d_nv_preserves_uv_bits" in
10272 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10273 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10274 d_nv_preserves_uv_bits="$undef"
10275 ;;
10276 esac
10277 $rm -f try.* try
10278 ;;
10279esac
10280
10281
10282: check for off64_t
10283echo " "
10284echo "Checking to see if you have off64_t..." >&4
10285$cat >try.c <<EOCP
10286#include <sys/types.h>
10287#include <unistd.h>
10288int main() { off64_t x = 7; }
10289EOCP
10290set try
10291if eval $compile; then
10292 val="$define"
10293 echo "You have off64_t."
10294else
10295 val="$undef"
10296 echo "You do not have off64_t."
10297 case "$lseeksize" in
10298 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10299 esac
10300fi
10301$rm -f try.* try
10302set d_off64_t
10303eval $setvar
10304
10305: see if POSIX threads are available
10306set pthread.h i_pthread
10307eval $inhdr
10308
10309
10310
10311
10312: how to create joinable pthreads
10313if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10314 echo " "
10315 echo "Checking what constant to use for creating joinable pthreads..." >&4
10316 $cat >try.c <<'EOCP'
10317#include <pthread.h>
10318int main() {
10319 int detachstate = JOINABLE;
10320}
10321EOCP
10322 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10323 if eval $compile; then
10324 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10325 val="$undef" # Yes, undef.
10326 set d_old_pthread_create_joinable
10327 eval $setvar
10328 val=""
10329 set old_pthread_create_joinable
10330 eval $setvar
10331 else
10332 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10333 if eval $compile; then
10334 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10335 val="$define"
10336 set d_old_pthread_create_joinable
10337 eval $setvar
10338 val=PTHREAD_CREATE_UNDETACHED
10339 set old_pthread_create_joinable
10340 eval $setvar
10341 else
10342 set try -DJOINABLE=__UNDETACHED
10343 if eval $compile; then
10344 echo "You seem to use __UNDETACHED." >&4
10345 val="$define"
10346 set d_old_pthread_create_joinable
10347 eval $setvar
10348 val=__UNDETACHED
10349 set old_pthread_create_joinable
10350 eval $setvar
10351 else
10352 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10353 val="$define"
10354 set d_old_pthread_create_joinable
10355 eval $setvar
10356 val=0
10357 set old_pthread_create_joinable
10358 eval $setvar
10359 fi
10360 fi
10361 fi
10362 $rm -f try try.*
10363else
10364 d_old_pthread_create_joinable="$undef"
10365 old_pthread_create_joinable=""
10366fi
10367
10368: see if pause exists
10369set pause d_pause
10370eval $inlibc
10371
10372: see if pipe exists
10373set pipe d_pipe
10374eval $inlibc
10375
10376: see if poll exists
10377set poll d_poll
10378eval $inlibc
10379
10380
10381: see whether the various POSIXish _yields exist
10382$cat >try.c <<EOP
10383#include <pthread.h>
10384#include <stdio.h>
10385int main() {
10386#ifdef SCHED_YIELD
10387 sched_yield();
10388#else
10389#ifdef PTHREAD_YIELD
10390 pthread_yield();
10391#else
10392#ifdef PTHREAD_YIELD_NULL
10393 pthread_yield(NULL);
10394#endif
10395#endif
10396#endif
10397}
10398EOP
10399: see if sched_yield exists
10400set try -DSCHED_YIELD
10401if eval $compile; then
10402 val="$define"
10403 sched_yield='sched_yield()'
10404else
10405 val="$undef"
10406fi
10407case "$usethreads" in
10408$define)
10409 case "$val" in
10410 $define) echo 'sched_yield() found.' >&4 ;;
10411 *) echo 'sched_yield() NOT found.' >&4 ;;
10412 esac
10413esac
10414set d_sched_yield
10415eval $setvar
10416
10417: see if pthread_yield exists
10418set try -DPTHREAD_YIELD
10419if eval $compile; then
10420 val="$define"
10421 case "$sched_yield" in
10422 '') sched_yield='pthread_yield()' ;;
10423 esac
10424else
10425 set try -DPTHREAD_YIELD_NULL
10426 if eval $compile; then
10427 val="$define"
10428 case "$sched_yield" in
10429 '') sched_yield='pthread_yield(NULL)' ;;
10430 esac
10431 else
10432 val="$undef"
10433 fi
10434fi
10435case "$usethreads" in
10436$define)
10437 case "$val" in
10438 $define) echo 'pthread_yield() found.' >&4 ;;
10439 *) echo 'pthread_yield() NOT found.' >&4 ;;
10440 esac
10441 ;;
10442esac
10443set d_pthread_yield
10444eval $setvar
10445
10446case "$sched_yield" in
10447'') sched_yield=undef ;;
10448esac
10449
10450$rm -f try try.*
10451
10452: see if this is a pwd.h system
10453set pwd.h i_pwd
10454eval $inhdr
10455
10456case "$i_pwd" in
10457$define)
10458 xxx=`./findhdr pwd.h`
10459 $cppstdin $cppflags $cppminus < $xxx >$$.h
10460
10461 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10462 val="$define"
10463 else
10464 val="$undef"
10465 fi
10466 set d_pwquota
10467 eval $setvar
10468
10469 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10470 val="$define"
10471 else
10472 val="$undef"
10473 fi
10474 set d_pwage
10475 eval $setvar
10476
10477 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10478 val="$define"
10479 else
10480 val="$undef"
10481 fi
10482 set d_pwchange
10483 eval $setvar
10484
10485 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10486 val="$define"
10487 else
10488 val="$undef"
10489 fi
10490 set d_pwclass
10491 eval $setvar
10492
10493 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10494 val="$define"
10495 else
10496 val="$undef"
10497 fi
10498 set d_pwexpire
10499 eval $setvar
10500
10501 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10502 val="$define"
10503 else
10504 val="$undef"
10505 fi
10506 set d_pwcomment
10507 eval $setvar
10508
10509 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10510 val="$define"
10511 else
10512 val="$undef"
10513 fi
10514 set d_pwgecos
10515 eval $setvar
10516
10517 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10518 val="$define"
10519 else
10520 val="$undef"
10521 fi
10522 set d_pwpasswd
10523 eval $setvar
10524
10525 $rm -f $$.h
10526 ;;
10527*)
10528 val="$undef";
10529 set d_pwquota; eval $setvar
10530 set d_pwage; eval $setvar
10531 set d_pwchange; eval $setvar
10532 set d_pwclass; eval $setvar
10533 set d_pwexpire; eval $setvar
10534 set d_pwcomment; eval $setvar
10535 set d_pwgecos; eval $setvar
10536 set d_pwpasswd; eval $setvar
10537 ;;
10538esac
10539
10540: see if readdir and friends exist
10541set readdir d_readdir
10542eval $inlibc
10543set seekdir d_seekdir
10544eval $inlibc
10545set telldir d_telldir
10546eval $inlibc
10547set rewinddir d_rewinddir
10548eval $inlibc
10549
10550: see if readlink exists
10551set readlink d_readlink
10552eval $inlibc
10553
10554: see if rename exists
10555set rename d_rename
10556eval $inlibc
10557
10558: see if rmdir exists
10559set rmdir d_rmdir
10560eval $inlibc
10561
10562: see if memory.h is available.
10563val=''
10564set memory.h val
10565eval $inhdr
10566
10567: See if it conflicts with string.h
10568case "$val" in
10569$define)
10570 case "$strings" in
10571 '') ;;
10572 *)
10573 $cppstdin $cppflags $cppminus < $strings > mem.h
10574 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10575 echo " "
10576 echo "We won't be including <memory.h>."
10577 val="$undef"
10578 fi
10579 $rm -f mem.h
10580 ;;
10581 esac
10582esac
10583set i_memory
10584eval $setvar
10585
10586: can bcopy handle overlapping blocks?
10587val="$undef"
10588case "$d_bcopy" in
10589"$define")
10590 echo " "
10591 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10592 $cat >try.c <<EOCP
10593#$i_memory I_MEMORY
10594#$i_stdlib I_STDLIB
10595#$i_string I_STRING
10596#$i_unistd I_UNISTD
10597EOCP
10598 $cat >>try.c <<'EOCP'
10599#include <stdio.h>
10600#ifdef I_MEMORY
10601# include <memory.h>
10602#endif
10603#ifdef I_STDLIB
10604# include <stdlib.h>
10605#endif
10606#ifdef I_STRING
10607# include <string.h>
10608#else
10609# include <strings.h>
10610#endif
10611#ifdef I_UNISTD
10612# include <unistd.h> /* Needed for NetBSD */
10613#endif
10614int main()
10615{
10616char buf[128], abc[128];
10617char *b;
10618int len;
10619int off;
10620int align;
10621
10622bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10623
10624for (align = 7; align >= 0; align--) {
10625 for (len = 36; len; len--) {
10626 b = buf+align;
10627 bcopy(abc, b, len);
10628 for (off = 1; off <= len; off++) {
10629 bcopy(b, b+off, len);
10630 bcopy(b+off, b, len);
10631 if (bcmp(b, abc, len))
10632 exit(1);
10633 }
10634 }
10635}
10636exit(0);
10637}
10638EOCP
10639 set try
10640 if eval $compile_ok; then
10641 if ./try 2>/dev/null; then
10642 echo "Yes, it can."
10643 val="$define"
10644 else
10645 echo "It can't, sorry."
10646 case "$d_memmove" in
10647 "$define") echo "But that's Ok since you have memmove()." ;;
10648 esac
10649 fi
10650 else
10651 echo "(I can't compile the test program, so we'll assume not...)"
10652 case "$d_memmove" in
10653 "$define") echo "But that's Ok since you have memmove()." ;;
10654 esac
10655 fi
10656 ;;
10657esac
10658$rm -f try.* try core
10659set d_safebcpy
10660eval $setvar
10661
10662: can memcpy handle overlapping blocks?
10663val="$undef"
10664case "$d_memcpy" in
10665"$define")
10666 echo " "
10667 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10668 $cat >try.c <<EOCP
10669#$i_memory I_MEMORY
10670#$i_stdlib I_STDLIB
10671#$i_string I_STRING
10672#$i_unistd I_UNISTD
10673EOCP
10674 $cat >>try.c <<'EOCP'
10675#include <stdio.h>
10676#ifdef I_MEMORY
10677# include <memory.h>
10678#endif
10679#ifdef I_STDLIB
10680# include <stdlib.h>
10681#endif
10682#ifdef I_STRING
10683# include <string.h>
10684#else
10685# include <strings.h>
10686#endif
10687#ifdef I_UNISTD
10688# include <unistd.h> /* Needed for NetBSD */
10689#endif
10690int main()
10691{
10692char buf[128], abc[128];
10693char *b;
10694int len;
10695int off;
10696int align;
10697
10698/* Copy "abcde..." string to char abc[] so that gcc doesn't
10699 try to store the string in read-only memory. */
10700memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10701
10702for (align = 7; align >= 0; align--) {
10703 for (len = 36; len; len--) {
10704 b = buf+align;
10705 memcpy(b, abc, len);
10706 for (off = 1; off <= len; off++) {
10707 memcpy(b+off, b, len);
10708 memcpy(b, b+off, len);
10709 if (memcmp(b, abc, len))
10710 exit(1);
10711 }
10712 }
10713}
10714exit(0);
10715}
10716EOCP
10717 set try
10718 if eval $compile_ok; then
10719 if ./try 2>/dev/null; then
10720 echo "Yes, it can."
10721 val="$define"
10722 else
10723 echo "It can't, sorry."
10724 case "$d_memmove" in
10725 "$define") echo "But that's Ok since you have memmove()." ;;
10726 esac
10727 fi
10728 else
10729 echo "(I can't compile the test program, so we'll assume not...)"
10730 case "$d_memmove" in
10731 "$define") echo "But that's Ok since you have memmove()." ;;
10732 esac
10733 fi
10734 ;;
10735esac
10736$rm -f try.* try core
10737set d_safemcpy
10738eval $setvar
10739
10740: can memcmp be trusted to compare relative magnitude?
10741val="$undef"
10742case "$d_memcmp" in
10743"$define")
10744 echo " "
10745 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10746 $cat >try.c <<EOCP
10747#$i_memory I_MEMORY
10748#$i_stdlib I_STDLIB
10749#$i_string I_STRING
10750#$i_unistd I_UNISTD
10751EOCP
10752 $cat >>try.c <<'EOCP'
10753#include <stdio.h>
10754#ifdef I_MEMORY
10755# include <memory.h>
10756#endif
10757#ifdef I_STDLIB
10758# include <stdlib.h>
10759#endif
10760#ifdef I_STRING
10761# include <string.h>
10762#else
10763# include <strings.h>
10764#endif
10765#ifdef I_UNISTD
10766# include <unistd.h> /* Needed for NetBSD */
10767#endif
10768int main()
10769{
10770char a = -1;
10771char b = 0;
10772if ((a < b) && memcmp(&a, &b, 1) < 0)
10773 exit(1);
10774exit(0);
10775}
10776EOCP
10777 set try
10778 if eval $compile_ok; then
10779 if ./try 2>/dev/null; then
10780 echo "Yes, it can."
10781 val="$define"
10782 else
10783 echo "No, it can't (it uses signed chars)."
10784 fi
10785 else
10786 echo "(I can't compile the test program, so we'll assume not...)"
10787 fi
10788 ;;
10789esac
10790$rm -f try.* try core
10791set d_sanemcmp
10792eval $setvar
10793
10794: see if select exists
10795set select d_select
10796eval $inlibc
10797
10798: see if semctl exists
10799set semctl d_semctl
10800eval $inlibc
10801
10802: see if semget exists
10803set semget d_semget
10804eval $inlibc
10805
10806: see if semop exists
10807set semop d_semop
10808eval $inlibc
10809
10810: see how much of the 'sem*(2)' library is present.
10811h_sem=true
10812echo " "
10813case "$d_semctl$d_semget$d_semop" in
10814*"$undef"*) h_sem=false;;
10815esac
10816case "$osname" in
10817freebsd)
10818 case "`ipcs 2>&1`" in
10819 "SVID messages"*"not configured"*)
10820 echo "Your $osname does not have the sem*(2) configured." >&4
10821 h_sem=false
10822 val="$undef"
10823 set semctl d_semctl
10824 eval $setvar
10825 set semget d_semget
10826 eval $setvar
10827 set semop d_semop
10828 eval $setvar
10829 ;;
10830 esac
10831 ;;
10832esac
10833: we could also check for sys/ipc.h ...
10834if $h_sem && $test `./findhdr sys/sem.h`; then
10835 echo "You have the full sem*(2) library." >&4
10836 val="$define"
10837else
10838 echo "You don't have the full sem*(2) library." >&4
10839 val="$undef"
10840fi
10841set d_sem
10842eval $setvar
10843
10844: see whether sys/sem.h defines union semun
10845echo " "
10846$cat > try.c <<'END'
10847#include <sys/types.h>
10848#include <sys/ipc.h>
10849#include <sys/sem.h>
10850int main () { union semun semun; semun.buf = 0; }
10851END
10852set try
10853if eval $compile; then
10854 echo "You have union semun in <sys/sem.h>." >&4
10855 val="$define"
10856else
10857 echo "You do not have union semun in <sys/sem.h>." >&4
10858 val="$undef"
10859fi
10860$rm -f try try.c try.h
10861set d_union_semun
10862eval $setvar
10863
10864: see how to do semctl IPC_STAT
10865case "$d_sem" in
10866$define)
10867 : see whether semctl IPC_STAT can use union semun
10868 echo " "
10869 $cat > try.h <<END
10870#ifndef S_IRUSR
10871# ifdef S_IREAD
10872# define S_IRUSR S_IREAD
10873# define S_IWUSR S_IWRITE
10874# define S_IXUSR S_IEXEC
10875# else
10876# define S_IRUSR 0400
10877# define S_IWUSR 0200
10878# define S_IXUSR 0100
10879# endif
10880# define S_IRGRP (S_IRUSR>>3)
10881# define S_IWGRP (S_IWUSR>>3)
10882# define S_IXGRP (S_IXUSR>>3)
10883# define S_IROTH (S_IRUSR>>6)
10884# define S_IWOTH (S_IWUSR>>6)
10885# define S_IXOTH (S_IXUSR>>6)
10886#endif
10887#ifndef S_IRWXU
10888# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10889# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10890# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10891#endif
10892END
10893
10894 $cat > try.c <<END
10895#include <sys/types.h>
10896#include <sys/ipc.h>
10897#include <sys/sem.h>
10898#include <sys/stat.h>
10899#include <stdio.h>
10900#include <errno.h>
10901#include "try.h"
10902#ifndef errno
10903extern int errno;
10904#endif
10905#$d_union_semun HAS_UNION_SEMUN
10906int main() {
10907 union semun
10908#ifndef HAS_UNION_SEMUN
10909 {
10910 int val;
10911 struct semid_ds *buf;
10912 unsigned short *array;
10913 }
10914#endif
10915 arg;
10916 int sem, st;
10917
10918#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10919 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10920 if (sem > -1) {
10921 struct semid_ds argbuf;
10922 arg.buf = &argbuf;
10923# ifdef IPC_STAT
10924 st = semctl(sem, 0, IPC_STAT, arg);
10925 if (st == 0)
10926 printf("semun\n");
10927 else
10928# endif /* IPC_STAT */
10929 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10930# ifdef IPC_RMID
10931 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10932# endif /* IPC_RMID */
10933 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10934 } else
10935#endif /* IPC_PRIVATE && ... */
10936 printf("semget failed: errno = %d\n", errno);
10937 return 0;
10938}
10939END
10940 val="$undef"
10941 set try
10942 if eval $compile; then
10943 xxx=`./try`
10944 case "$xxx" in
10945 semun) val="$define" ;;
10946 esac
10947 fi
10948 $rm -f try try.c
10949 set d_semctl_semun
10950 eval $setvar
10951 case "$d_semctl_semun" in
10952 $define)
10953 echo "You can use union semun for semctl IPC_STAT." >&4
10954 also='also'
10955 ;;
10956 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10957 also=''
10958 ;;
10959 esac
10960
10961 : see whether semctl IPC_STAT can use struct semid_ds pointer
10962 $cat > try.c <<'END'
10963#include <sys/types.h>
10964#include <sys/ipc.h>
10965#include <sys/sem.h>
10966#include <sys/stat.h>
10967#include "try.h"
10968#include <stdio.h>
10969#include <errno.h>
10970#ifndef errno
10971extern int errno;
10972#endif
10973int main() {
10974 struct semid_ds arg;
10975 int sem, st;
10976
10977#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10978 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10979 if (sem > -1) {
10980# ifdef IPC_STAT
10981 st = semctl(sem, 0, IPC_STAT, &arg);
10982 if (st == 0)
10983 printf("semid_ds\n");
10984 else
10985# endif /* IPC_STAT */
10986 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10987# ifdef IPC_RMID
10988 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10989# endif /* IPC_RMID */
10990 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10991 } else
10992#endif /* IPC_PRIVATE && ... */
10993 printf("semget failed: errno = %d\n", errno);
10994
10995 return 0;
10996}
10997END
10998 val="$undef"
10999 set try
11000 if eval $compile; then
11001 xxx=`./try`
11002 case "$xxx" in
11003 semid_ds) val="$define" ;;
11004 esac
11005 fi
11006 $rm -f try try.c
11007 set d_semctl_semid_ds
11008 eval $setvar
11009 case "$d_semctl_semid_ds" in
11010 $define)
11011 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11012 ;;
11013 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11014 ;;
11015 esac
11016 $rm -f try.h
11017 ;;
11018*) val="$undef"
11019
11020 # We do not have the full sem*(2) library, so assume we can not
11021 # use either.
11022
11023 set d_semctl_semun
11024 eval $setvar
11025
11026 set d_semctl_semid_ds
11027 eval $setvar
11028 ;;
11029esac
11030
11031: see if setegid exists
11032set setegid d_setegid
11033eval $inlibc
11034
11035: see if seteuid exists
11036set seteuid d_seteuid
11037eval $inlibc
11038
11039: see if setgrent exists
11040set setgrent d_setgrent
11041eval $inlibc
11042
11043: see if sethostent exists
11044set sethostent d_sethent
11045eval $inlibc
11046
11047: see if setlinebuf exists
11048set setlinebuf d_setlinebuf
11049eval $inlibc
11050
11051: see if setlocale exists
11052set setlocale d_setlocale
11053eval $inlibc
11054
11055: see if setnetent exists
11056set setnetent d_setnent
11057eval $inlibc
11058
11059: see if setprotoent exists
11060set setprotoent d_setpent
11061eval $inlibc
11062
11063: see if setpgid exists
11064set setpgid d_setpgid
11065eval $inlibc
11066
11067: see if setpgrp2 exists
11068set setpgrp2 d_setpgrp2
11069eval $inlibc
11070
11071: see if setpriority exists
11072set setpriority d_setprior
11073eval $inlibc
11074
11075: see if setproctitle exists
11076set setproctitle d_setproctitle
11077eval $inlibc
11078
11079: see if setpwent exists
11080set setpwent d_setpwent
11081eval $inlibc
11082
11083: see if setregid exists
11084set setregid d_setregid
11085eval $inlibc
11086set setresgid d_setresgid
11087eval $inlibc
11088
11089: see if setreuid exists
11090set setreuid d_setreuid
11091eval $inlibc
11092set setresuid d_setresuid
11093eval $inlibc
11094
11095: see if setrgid exists
11096set setrgid d_setrgid
11097eval $inlibc
11098
11099: see if setruid exists
11100set setruid d_setruid
11101eval $inlibc
11102
11103: see if setservent exists
11104set setservent d_setsent
11105eval $inlibc
11106
11107: see if setsid exists
11108set setsid d_setsid
11109eval $inlibc
11110
11111: see if setvbuf exists
11112set setvbuf d_setvbuf
11113eval $inlibc
11114
11115: see if sfio.h is available
11116set sfio.h i_sfio
11117eval $inhdr
11118
11119
11120: see if sfio library is available
11121case "$i_sfio" in
11122$define)
11123 val=''
11124 set sfreserve val
11125 eval $inlibc
11126 ;;
11127*)
11128 val="$undef"
11129 ;;
11130esac
11131: Ok, but do we want to use it.
11132case "$val" in
11133$define)
11134 case "$usesfio" in
11135 true|$define|[yY]*) dflt='y';;
11136 *) dflt='n';;
11137 esac
11138 echo "$package can use the sfio library, but it is experimental."
11139 case "$useperlio" in
11140 "$undef")
11141 echo "For sfio also the PerlIO abstraction layer is needed."
11142 echo "Earlier you said you wouldn't want that."
11143 ;;
11144 esac
11145 rp="You seem to have sfio available, do you want to try using it?"
11146 . ./myread
11147 case "$ans" in
11148 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11149 useperlio="$define"
11150 val="$define"
11151 ;;
11152 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11153 val="$undef"
11154 : Remove sfio from list of libraries to use
11155 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11156 shift
11157 libs="$*"
11158 echo "libs = $libs" >&4
11159 ;;
11160 esac
11161 ;;
11162*) case "$usesfio" in
11163 true|$define|[yY]*)
11164 echo "Sorry, cannot find sfio on this machine." >&4
11165 echo "Ignoring your setting of usesfio=$usesfio." >&4
11166 val="$undef"
11167 ;;
11168 esac
11169 ;;
11170esac
11171set d_sfio
11172eval $setvar
11173case "$d_sfio" in
11174$define) usesfio='true';;
11175*) usesfio='false';;
11176esac
11177
11178: see if shmctl exists
11179set shmctl d_shmctl
11180eval $inlibc
11181
11182: see if shmget exists
11183set shmget d_shmget
11184eval $inlibc
11185
11186: see if shmat exists
11187set shmat d_shmat
11188eval $inlibc
11189: see what shmat returns
11190case "$d_shmat" in
11191"$define")
11192 $cat >shmat.c <<'END'
11193#include <sys/shm.h>
11194void *shmat();
11195END
11196 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11197 shmattype='void *'
11198 else
11199 shmattype='char *'
11200 fi
11201 echo "and it returns ($shmattype)." >&4
11202 : see if a prototype for shmat is available
11203 xxx=`./findhdr sys/shm.h`
11204 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11205 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11206 val="$define"
11207 else
11208 val="$undef"
11209 fi
11210 $rm -f shmat.[co]
11211 ;;
11212*)
11213 val="$undef"
11214 ;;
11215esac
11216set d_shmatprototype
11217eval $setvar
11218
11219: see if shmdt exists
11220set shmdt d_shmdt
11221eval $inlibc
11222
11223: see how much of the 'shm*(2)' library is present.
11224h_shm=true
11225echo " "
11226case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11227*"$undef"*) h_shm=false;;
11228esac
11229case "$osname" in
11230freebsd)
11231 case "`ipcs 2>&1`" in
11232 "SVID shared memory"*"not configured"*)
11233 echo "Your $osname does not have the shm*(2) configured." >&4
11234 h_shm=false
11235 val="$undef"
11236 set shmctl d_shmctl
11237 evat $setvar
11238 set shmget d_shmget
11239 evat $setvar
11240 set shmat d_shmat
11241 evat $setvar
11242 set shmdt d_shmdt
11243 evat $setvar
11244 ;;
11245 esac
11246 ;;
11247esac
11248: we could also check for sys/ipc.h ...
11249if $h_shm && $test `./findhdr sys/shm.h`; then
11250 echo "You have the full shm*(2) library." >&4
11251 val="$define"
11252else
11253 echo "You don't have the full shm*(2) library." >&4
11254 val="$undef"
11255fi
11256set d_shm
11257eval $setvar
11258
11259echo " "
11260: see if we have sigaction
11261if set sigaction val -f d_sigaction; eval $csym; $val; then
11262 echo 'sigaction() found.' >&4
11263 $cat > try.c <<'EOP'
11264#include <stdio.h>
11265#include <sys/types.h>
11266#include <signal.h>
11267int main()
11268{
11269 struct sigaction act, oact;
11270 act.sa_flags = 0;
11271 oact.sa_handler = 0;
11272 /* so that act and oact are used */
11273 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11274}
11275EOP
11276 set try
11277 if eval $compile_ok; then
11278 val="$define"
11279 else
11280 echo "But you don't seem to have a useable struct sigaction." >&4
11281 val="$undef"
11282 fi
11283else
11284 echo 'sigaction NOT found.' >&4
11285 val="$undef"
11286fi
11287set d_sigaction; eval $setvar
11288$rm -f try try$_o try.c
11289
11290: see if sigsetjmp exists
11291echo " "
11292case "$d_sigsetjmp" in
11293'')
11294 $cat >try.c <<'EOP'
11295#include <setjmp.h>
11296sigjmp_buf env;
11297int set = 1;
11298int main()
11299{
11300 if (sigsetjmp(env,1))
11301 exit(set);
11302 set = 0;
11303 siglongjmp(env, 1);
11304 exit(1);
11305}
11306EOP
11307 set try
11308 if eval $compile; then
11309 if ./try >/dev/null 2>&1; then
11310 echo "POSIX sigsetjmp found." >&4
11311 val="$define"
11312 else
11313 $cat >&4 <<EOM
11314Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11315I'll ignore them.
11316EOM
11317 val="$undef"
11318 fi
11319 else
11320 echo "sigsetjmp not found." >&4
11321 val="$undef"
11322 fi
11323 ;;
11324*) val="$d_sigsetjmp"
11325 case "$d_sigsetjmp" in
11326 $define) echo "POSIX sigsetjmp found." >&4;;
11327 $undef) echo "sigsetjmp not found." >&4;;
11328 esac
11329 ;;
11330esac
11331set d_sigsetjmp
11332eval $setvar
11333$rm -f try.c try
11334
11335: see if socks5_init exists
11336set socks5_init d_socks5_init
11337eval $inlibc
11338
11339: see if sys/stat.h is available
11340set sys/stat.h i_sysstat
11341eval $inhdr
11342
11343
11344: see if stat knows about block sizes
11345echo " "
11346echo "Checking to see if your struct stat has st_blocks field..." >&4
11347set d_statblks stat st_blocks $i_sysstat sys/stat.h
11348eval $hasfield
11349
11350
11351: see if this is a sys/vfs.h system
11352set sys/vfs.h i_sysvfs
11353eval $inhdr
11354
11355
11356: see if this is a sys/statfs.h system
11357set sys/statfs.h i_sysstatfs
11358eval $inhdr
11359
11360
11361echo " "
11362echo "Checking to see if your system supports struct statfs..." >&4
11363set 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
11364eval $hasstruct
11365case "$d_statfs_s" in
11366"$define") echo "Yes, it does." ;;
11367*) echo "No, it doesn't." ;;
11368esac
11369
11370
11371
11372: see if struct statfs knows about f_flags
11373case "$d_statfs_s" in
11374define)
11375 echo " "
11376 echo "Checking to see if your struct statfs has f_flags field..." >&4
11377 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
11378 eval $hasfield
11379 ;;
11380*) val="$undef"
11381 set d_statfs_f_flags
11382 eval $setvar
11383 ;;
11384esac
11385case "$d_statfs_f_flags" in
11386"$define") echo "Yes, it does." ;;
11387*) echo "No, it doesn't." ;;
11388esac
11389
11390: see if _ptr and _cnt from stdio act std
11391echo " "
11392if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11393 echo "(Looks like you have stdio.h from Linux.)"
11394 case "$stdio_ptr" in
11395 '') stdio_ptr='((fp)->_IO_read_ptr)'
11396 ptr_lval=$define
11397 ;;
11398 *) ptr_lval=$d_stdio_ptr_lval;;
11399 esac
11400 case "$stdio_cnt" in
11401 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11402 cnt_lval=$undef
11403 ;;
11404 *) cnt_lval=$d_stdio_cnt_lval;;
11405 esac
11406 case "$stdio_base" in
11407 '') stdio_base='((fp)->_IO_read_base)';;
11408 esac
11409 case "$stdio_bufsiz" in
11410 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11411 esac
11412else
11413 case "$stdio_ptr" in
11414 '') stdio_ptr='((fp)->_ptr)'
11415 ptr_lval=$define
11416 ;;
11417 *) ptr_lval=$d_stdio_ptr_lval;;
11418 esac
11419 case "$stdio_cnt" in
11420 '') stdio_cnt='((fp)->_cnt)'
11421 cnt_lval=$define
11422 ;;
11423 *) cnt_lval=$d_stdio_cnt_lval;;
11424 esac
11425 case "$stdio_base" in
11426 '') stdio_base='((fp)->_base)';;
11427 esac
11428 case "$stdio_bufsiz" in
11429 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11430 esac
11431fi
11432: test whether _ptr and _cnt really work
11433echo "Checking how std your stdio is..." >&4
11434$cat >try.c <<EOP
11435#include <stdio.h>
11436#define FILE_ptr(fp) $stdio_ptr
11437#define FILE_cnt(fp) $stdio_cnt
11438int main() {
11439 FILE *fp = fopen("try.c", "r");
11440 char c = getc(fp);
11441 if (
11442 18 <= FILE_cnt(fp) &&
11443 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11444 )
11445 exit(0);
11446 exit(1);
11447}
11448EOP
11449val="$undef"
11450set try
11451if eval $compile; then
11452 if ./try; then
11453 echo "Your stdio acts pretty std."
11454 val="$define"
11455 else
11456 echo "Your stdio isn't very std."
11457 fi
11458else
11459 echo "Your stdio doesn't appear very std."
11460fi
11461$rm -f try.c try
11462set d_stdstdio
11463eval $setvar
11464
11465: Can _ptr be used as an lvalue?
11466case "$d_stdstdio$ptr_lval" in
11467$define$define) val=$define ;;
11468*) val=$undef ;;
11469esac
11470set d_stdio_ptr_lval
11471eval $setvar
11472
11473: Can _cnt be used as an lvalue?
11474case "$d_stdstdio$cnt_lval" in
11475$define$define) val=$define ;;
11476*) val=$undef ;;
11477esac
11478set d_stdio_cnt_lval
11479eval $setvar
11480
11481: see if _base is also standard
11482val="$undef"
11483case "$d_stdstdio" in
11484$define)
11485 $cat >try.c <<EOP
11486#include <stdio.h>
11487#define FILE_base(fp) $stdio_base
11488#define FILE_bufsiz(fp) $stdio_bufsiz
11489int main() {
11490 FILE *fp = fopen("try.c", "r");
11491 char c = getc(fp);
11492 if (
11493 19 <= FILE_bufsiz(fp) &&
11494 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11495 )
11496 exit(0);
11497 exit(1);
11498}
11499EOP
11500 set try
11501 if eval $compile; then
11502 if ./try; then
11503 echo "And its _base field acts std."
11504 val="$define"
11505 else
11506 echo "But its _base field isn't std."
11507 fi
11508 else
11509 echo "However, it seems to be lacking the _base field."
11510 fi
11511 $rm -f try.c try
11512 ;;
11513esac
11514set d_stdiobase
11515eval $setvar
11516
11517$cat >&4 <<EOM
11518Checking how to access stdio streams by file descriptor number...
11519EOM
11520case "$stdio_stream_array" in
11521'') $cat >try.c <<EOCP
11522#include <stdio.h>
11523int main() {
11524 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11525 printf("yes\n");
11526}
11527EOCP
11528 for s in _iob __iob __sF
11529 do
11530 set try -DSTDIO_STREAM_ARRAY=$s
11531 if eval $compile; then
11532 case "`./try$exe_ext`" in
11533 yes) stdio_stream_array=$s; break ;;
11534 esac
11535 fi
11536 done
11537 $rm -f try.* try$exe_ext
11538esac
11539case "$stdio_stream_array" in
11540'') $cat >&4 <<EOM
11541I can't figure out how to access stdio streams by file descriptor number.
11542EOM
11543 d_stdio_stream_array="$undef"
11544 ;;
11545*) $cat >&4 <<EOM
11546You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11547EOM
11548 d_stdio_stream_array="$define"
11549 ;;
11550esac
11551
11552: see if strcoll exists
11553set strcoll d_strcoll
11554eval $inlibc
11555
11556: check for structure copying
11557echo " "
11558echo "Checking to see if your C compiler can copy structs..." >&4
11559$cat >try.c <<'EOCP'
11560int main()
11561{
11562 struct blurfl {
11563 int dyick;
11564 } foo, bar;
11565
11566 foo = bar;
11567}
11568EOCP
11569if $cc -c try.c >/dev/null 2>&1 ; then
11570 val="$define"
11571 echo "Yup, it can."
11572else
11573 val="$undef"
11574 echo "Nope, it can't."
11575fi
11576set d_strctcpy
11577eval $setvar
11578$rm -f try.*
11579
11580: see if strerror and/or sys_errlist[] exist
11581echo " "
11582if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11583 if set strerror val -f d_strerror; eval $csym; $val; then
11584 echo 'strerror() found.' >&4
11585 d_strerror="$define"
11586 d_strerrm='strerror(e)'
11587 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11588 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11589 d_syserrlst="$define"
11590 else
11591 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11592 d_syserrlst="$undef"
11593 fi
11594 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11595 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11596 echo 'strerror() found in string header.' >&4
11597 d_strerror="$define"
11598 d_strerrm='strerror(e)'
11599 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11600 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11601 d_syserrlst="$define"
11602 else
11603 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11604 d_syserrlst="$undef"
11605 fi
11606 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11607 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11608 d_strerror="$undef"
11609 d_syserrlst="$define"
11610 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11611 else
11612 echo 'strerror() and sys_errlist[] NOT found.' >&4
11613 d_strerror="$undef"
11614 d_syserrlst="$undef"
11615 d_strerrm='"unknown"'
11616 fi
11617fi
11618
11619: see if strtod exists
11620set strtod d_strtod
11621eval $inlibc
11622
11623: see if strtol exists
11624set strtol d_strtol
11625eval $inlibc
11626
11627: see if strtold exists
11628set strtold d_strtold
11629eval $inlibc
11630
11631: see if strtoll exists
11632set strtoll d_strtoll
11633eval $inlibc
11634
11635case "$d_longlong-$d_strtoll" in
11636"$define-$define")
11637 $cat <<EOM
11638Checking whether your strtoll() works okay...
11639EOM
11640 $cat >try.c <<'EOCP'
11641#include <errno.h>
11642#ifdef __hpux
11643#define strtoll __strtoll
11644#endif
e75931a7
YST
11645#ifdef __EMX__
11646#define strtoll _strtoll
11647#endif
b4eb6b3d
JH
11648#include <stdio.h>
11649extern long long int strtoll(char *s, char **, int);
11650static int bad = 0;
11651int check(char *s, long long ell, int een) {
11652 long long gll;
11653 errno = 0;
11654 gll = strtoll(s, 0, 10);
11655 if (!((gll == ell) && (errno == een)))
11656 bad++;
11657}
11658int main() {
11659 check(" 1", 1LL, 0);
11660 check(" 0", 0LL, 0);
11661 check("-1", -1LL, 0);
11662 check("-9223372036854775808", -9223372036854775808LL, 0);
11663 check("-9223372036854775808", -9223372036854775808LL, 0);
11664 check(" 9223372036854775807", 9223372036854775807LL, 0);
11665 check("-9223372036854775808", -9223372036854775808LL, 0);
11666 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11667 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11668 if (!bad)
11669 printf("ok\n");
11670}
11671EOCP
11672 set try
11673 if eval $compile; then
e75931a7
YST
11674 yyy=`./try`
11675 case "$yyy" in
b4eb6b3d
JH
11676 ok) echo "Your strtoll() seems to be working okay." ;;
11677 *) cat <<EOM >&4
11678Your strtoll() doesn't seem to be working okay.
11679EOM
11680 d_strtoll="$undef"
11681 ;;
69eadf66 11682 esac
e75931a7
YST
11683 else
11684 echo "(I can't seem to compile the test program--assuming it doesn't)"
11685 d_strtoll="$undef"
b4eb6b3d
JH
11686 fi
11687 ;;
11688esac
11689
11690: see if strtoul exists
11691set strtoul d_strtoul
11692eval $inlibc
11693
11694: see if strtoull exists
11695set strtoull d_strtoull
11696eval $inlibc
11697
11698case "$d_longlong-$d_strtoull" in
11699"$define-$define")
11700 $cat <<EOM
11701Checking whether your strtoull() works okay...
11702EOM
11703 $cat >try.c <<'EOCP'
11704#include <errno.h>
11705#ifdef __hpux
11706#define strtoull __strtoull
11707#endif
11708#include <stdio.h>
11709extern unsigned long long int strtoull(char *s, char **, int);
11710static int bad = 0;
11711int check(char *s, long long eull, int een) {
11712 long long gull;
11713 errno = 0;
11714 gull = strtoull(s, 0, 10);
11715 if (!((gull == eull) && (errno == een)))
11716 bad++;
11717}
11718int main() {
11719 check(" 1", 1LL, 0);
11720 check(" 0", 0LL, 0);
11721 check("18446744073709551615", 18446744073709551615ULL, 0);
11722 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11723 if (!bad)
11724 printf("ok\n");
11725}
11726EOCP
11727 set try
11728 if eval $compile; then
11729 case "`./try`" in
11730 ok) echo "Your strtoull() seems to be working okay." ;;
11731 *) cat <<EOM >&4
11732Your strtoull() doesn't seem to be working okay.
11733EOM
11734 d_strtoull="$undef"
11735 ;;
11736 esac
11737 fi
11738 ;;
11739esac
11740
11741: see if strtouq exists
11742set strtouq d_strtouq
11743eval $inlibc
11744
11745: see if strxfrm exists
11746set strxfrm d_strxfrm
11747eval $inlibc
11748
11749: see if symlink exists
11750set symlink d_symlink
11751eval $inlibc
11752
11753: see if syscall exists
11754set syscall d_syscall
11755eval $inlibc
11756
11757: see if sysconf exists
11758set sysconf d_sysconf
11759eval $inlibc
11760
11761: see if system exists
11762set system d_system
11763eval $inlibc
11764
11765: see if tcgetpgrp exists
11766set tcgetpgrp d_tcgetpgrp
11767eval $inlibc
11768
11769: see if tcsetpgrp exists
11770set tcsetpgrp d_tcsetpgrp
11771eval $inlibc
11772
11773: see if prototype for telldir is available
11774echo " "
11775set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11776eval $hasproto
11777
11778: see if this is a sys/times.h system
11779set sys/times.h i_systimes
11780eval $inhdr
11781
11782: see if times exists
11783echo " "
11784if set times val -f d_times; eval $csym; $val; then
11785 echo 'times() found.' >&4
11786 d_times="$define"
11787 inc=''
11788 case "$i_systimes" in
11789 "$define") inc='sys/times.h';;
11790 esac
11791 rp="What is the type returned by times() on this system?"
11792 set clock_t clocktype long stdio.h sys/types.h $inc
11793 eval $typedef_ask
11794else
11795 echo 'times() NOT found, hope that will do.' >&4
11796 d_times="$undef"
11797 clocktype='int'
11798fi
11799
11800: see if truncate exists
11801set truncate d_truncate
11802eval $inlibc
11803
11804: see if tzname[] exists
11805echo " "
11806if set tzname val -a d_tzname; eval $csym; $val; then
11807 val="$define"
11808 echo 'tzname[] found.' >&4
11809else
11810 val="$undef"
11811 echo 'tzname[] NOT found.' >&4
11812fi
11813set d_tzname
11814eval $setvar
11815
11816: see if umask exists
11817set umask d_umask
11818eval $inlibc
11819
11820: see if ustat exists
11821set ustat d_ustat
11822eval $inlibc
11823
11824: backward compatibility for d_hvfork
11825if test X$d_hvfork != X; then
11826 d_vfork="$d_hvfork"
11827 d_hvfork=''
11828fi
11829: see if there is a vfork
11830val=''
11831set vfork val
11832eval $inlibc
11833
11834: Ok, but do we want to use it. vfork is reportedly unreliable in
11835: perl on Solaris 2.x, and probably elsewhere.
11836case "$val" in
11837$define)
11838 echo " "
11839 case "$usevfork" in
11840 false) dflt='n';;
11841 *) dflt='y';;
11842 esac
11843 cat <<'EOM'
11844
11845Perl can only use a vfork() that doesn't suffer from strict
11846restrictions on calling functions or modifying global data in
11847the child. For example, glibc-2.1 contains such a vfork()
11848that is unsuitable. If your system provides a proper fork()
11849call, chances are that you do NOT want perl to use vfork().
11850
11851EOM
11852 rp="Do you still want to use vfork()?"
11853 . ./myread
11854 case "$ans" in
11855 y|Y) ;;
11856 *)
11857 echo "Ok, we won't use vfork()."
11858 val="$undef"
11859 ;;
11860 esac
11861 ;;
11862esac
11863set d_vfork
11864eval $setvar
11865case "$d_vfork" in
11866$define) usevfork='true';;
11867*) usevfork='false';;
11868esac
11869
11870: see if this is an sysdir system
11871set sys/dir.h i_sysdir
11872eval $inhdr
11873
11874: see if this is an sysndir system
11875set sys/ndir.h i_sysndir
11876eval $inhdr
11877
11878: see if closedir exists
11879set closedir d_closedir
11880eval $inlibc
11881
11882case "$d_closedir" in
11883"$define")
11884 echo " "
11885 echo "Checking whether closedir() returns a status..." >&4
11886 cat > closedir.c <<EOM
11887#$i_dirent I_DIRENT /**/
11888#$i_sysdir I_SYS_DIR /**/
11889#$i_sysndir I_SYS_NDIR /**/
11890#$i_systypes I_SYS_TYPES /**/
11891
11892#if defined(I_SYS_TYPES)
11893#include <sys/types.h>
11894#endif
11895#if defined(I_DIRENT)
11896#include <dirent.h>
11897#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11898#include <sys/dir.h>
11899#endif
11900#else
11901#ifdef I_SYS_NDIR
11902#include <sys/ndir.h>
11903#else
11904#ifdef I_SYS_DIR
11905#ifdef hp9000s500
11906#include <ndir.h> /* may be wrong in the future */
11907#else
11908#include <sys/dir.h>
11909#endif
11910#endif
11911#endif
11912#endif
11913int main() { return closedir(opendir(".")); }
11914EOM
11915 set closedir
11916 if eval $compile_ok; then
11917 if ./closedir > /dev/null 2>&1 ; then
11918 echo "Yes, it does."
11919 val="$undef"
11920 else
11921 echo "No, it doesn't."
11922 val="$define"
11923 fi
11924 else
11925 echo "(I can't seem to compile the test program--assuming it doesn't)"
11926 val="$define"
11927 fi
11928 ;;
11929*)
11930 val="$undef";
11931 ;;
11932esac
11933set d_void_closedir
11934eval $setvar
11935$rm -f closedir*
11936: check for volatile keyword
11937echo " "
11938echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11939$cat >try.c <<'EOCP'
11940int main()
11941{
11942 typedef struct _goo_struct goo_struct;
11943 goo_struct * volatile goo = ((goo_struct *)0);
11944 struct _goo_struct {
11945 long long_int;
11946 int reg_int;
11947 char char_var;
11948 };
11949 typedef unsigned short foo_t;
11950 char *volatile foo;
11951 volatile int bar;
11952 volatile foo_t blech;
11953 foo = foo;
11954}
11955EOCP
11956if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11957 val="$define"
11958 echo "Yup, it does."
11959else
11960 val="$undef"
11961 echo "Nope, it doesn't."
11962fi
11963set d_volatile
11964eval $setvar
11965$rm -f try.*
11966
11967: see if there is a wait4
11968set wait4 d_wait4
11969eval $inlibc
11970
11971: see if waitpid exists
11972set waitpid d_waitpid
11973eval $inlibc
11974
11975: see if wcstombs exists
11976set wcstombs d_wcstombs
11977eval $inlibc
11978
11979: see if wctomb exists
11980set wctomb d_wctomb
11981eval $inlibc
11982
11983: preserve RCS keywords in files with variable substitution, grrr
11984Date='$Date'
11985Id='$Id'
11986Log='$Log'
11987RCSfile='$RCSfile'
11988Revision='$Revision'
11989
11990case "$crosscompile" in
11991''|[nN]*) crosscompile="$undef" ;;
11992esac
11993
11994case "$osname" in
11995next|rhapsody|darwin) multiarch="$define" ;;
11996esac
11997case "$multiarch" in
11998''|[nN]*) multiarch="$undef" ;;
11999esac
12000
12001: check for alignment requirements
12002echo " "
12003case "$crosscompile$multiarch" in
12004*$define*)
12005 $cat <<EOM
12006You seem to be either cross-compiling or doing a multiarchitecture build,
12007skipping the memory alignment check.
12008
12009EOM
12010 case "$alignbytes" in
12011 '') alignbytes=8 ;;
12012 esac
12013 ;;
12014*)
12015 case "$alignbytes" in
12016 '') echo "Checking alignment constraints..." >&4
12017 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12018 $cat >try.c <<'EOCP'
12019typedef long double NV;
12020EOCP
12021 else
12022 $cat >try.c <<'EOCP'
12023typedef double NV;
12024EOCP
12025 fi
12026 $cat >>try.c <<'EOCP'
12027#include <stdio.h>
12028struct foobar {
12029 char foo;
12030 NV bar;
12031} try_algn;
12032int main()
12033{
12034 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12035 return(0);
12036}
12037EOCP
12038 set try
12039 if eval $compile_ok; then
12040 dflt=`./try`
12041 else
12042 dflt='8'
12043 echo "(I can't seem to compile the test program...)"
12044 fi
12045 ;;
12046 *) dflt="$alignbytes"
12047 ;;
12048 esac
12049 rp="Doubles must be aligned on a how-many-byte boundary?"
12050 . ./myread
12051 alignbytes="$ans"
12052 $rm -f try.c try
12053 ;;
12054esac
12055
12056
12057: set the base revision
12058baserev=5.0
12059
12060: check for ordering of bytes in a long
12061echo " "
12062case "$crosscompile$multiarch" in
12063*$define*)
12064 $cat <<EOM
12065You seem to be either cross-compiling or doing a multiarchitecture build,
12066skipping the byteorder check.
12067
12068EOM
12069 byteorder='0xffff'
12070 ;;
12071*)
12072 case "$byteorder" in
12073 '')
12074 $cat <<'EOM'
12075In the following, larger digits indicate more significance. A big-endian
12076machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12077little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12078machines may have weird orders like 3412. A Cray will report 87654321,
12079an Alpha will report 12345678. If the test program works the default is
12080probably right.
12081I'm now running the test program...
12082EOM
12083 $cat >try.c <<'EOCP'
12084#include <stdio.h>
12085int main()
12086{
12087 int i;
12088 union {
12089 unsigned long l;
12090 char c[sizeof(long)];
12091 } u;
12092
12093 if (sizeof(long) > 4)
12094 u.l = (0x08070605L << 32) | 0x04030201L;
12095 else
12096 u.l = 0x04030201L;
12097 for (i = 0; i < sizeof(long); i++)
12098 printf("%c", u.c[i]+'0');
12099 printf("\n");
12100 exit(0);
12101}
12102EOCP
12103 xxx_prompt=y
12104 set try
12105 if eval $compile && ./try > /dev/null; then
12106 dflt=`./try`
12107 case "$dflt" in
12108 [1-4][1-4][1-4][1-4]|12345678|87654321)
12109 echo "(The test program ran ok.)"
12110 echo "byteorder=$dflt"
12111 xxx_prompt=n
12112 ;;
12113 ????|????????) echo "(The test program ran ok.)" ;;
12114 *) echo "(The test program didn't run right for some reason.)" ;;
12115 esac
12116 else
12117 dflt='4321'
12118 cat <<'EOM'
12119(I can't seem to compile the test program. Guessing big-endian...)
12120EOM
12121 fi
12122 case "$xxx_prompt" in
12123 y)
12124 rp="What is the order of bytes in a long?"
12125 . ./myread
12126 byteorder="$ans"
12127 ;;
12128 *) byteorder=$dflt
12129 ;;
12130 esac
12131 ;;
12132 esac
12133 $rm -f try.c try
12134 ;;
12135esac
12136
12137
12138: how do we catenate cpp tokens here?
12139echo " "
12140echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12141$cat >cpp_stuff.c <<'EOCP'
12142#define RCAT(a,b)a/**/b
12143#define ACAT(a,b)a ## b
12144RCAT(Rei,ser)
12145ACAT(Cir,cus)
12146EOCP
12147$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12148if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12149 echo "Oh! Smells like ANSI's been here." >&4
12150 echo "We can catify or stringify, separately or together!"
12151 cpp_stuff=42
12152elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12153 echo "Ah, yes! The good old days!" >&4
12154 echo "However, in the good old days we don't know how to stringify and"
12155 echo "catify at the same time."
12156 cpp_stuff=1
12157else
12158 $cat >&4 <<EOM
12159Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12160to have to edit the values of CAT[2-5] in config.h...
12161EOM
12162 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12163fi
12164$rm -f cpp_stuff.*
12165
12166: see if this is a db.h system
12167set db.h i_db
12168eval $inhdr
12169
12170case "$i_db" in
12171$define)
12172 : Check db version.
12173 echo " "
12174 echo "Checking Berkeley DB version ..." >&4
12175 $cat >try.c <<EOCP
12176#$d_const HASCONST
12177#ifndef HASCONST
12178#define const
12179#endif
12180#include <sys/types.h>
12181#include <stdio.h>
12182#include <db.h>
12183int main()
12184{
12185#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12186 int Major, Minor, Patch ;
12187 unsigned long Version ;
12188 (void)db_version(&Major, &Minor, &Patch) ;
12189 printf("You have Berkeley DB Version 2 or greater\n");
12190
12191 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12192 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12193 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12194 Major, Minor, Patch) ;
12195
12196 /* check that db.h & libdb are compatible */
12197 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12198 printf("db.h and libdb are incompatible\n") ;
12199 exit(3);
12200 }
12201
12202 printf("db.h and libdb are compatible\n") ;
12203
12204 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12205 + DB_VERSION_PATCH ;
12206
12207 /* needs to be >= 2.3.4 */
12208 if (Version < 2003004) {
12209 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12210 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12211 exit(2);
12212 }
12213
12214 exit(0);
12215#else
12216#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12217 printf("You have Berkeley DB Version 1\n");
12218 exit(0); /* DB version < 2: the coast is clear. */
12219#else
12220 exit(1); /* <db.h> not Berkeley DB? */
12221#endif
12222#endif
12223}
12224EOCP
12225 set try
12226 if eval $compile_ok && ./try; then
12227 echo 'Looks OK.' >&4
12228 else
12229 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12230 i_db=$undef
12231 case " $libs " in
12232 *"-ldb "*)
12233 : Remove db from list of libraries to use
12234 echo "Removing unusable -ldb from library list" >&4
12235 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12236 shift
12237 libs="$*"
12238 echo "libs = $libs" >&4
12239 ;;
12240 esac
12241 fi
12242 $rm -f try.*
12243 ;;
12244esac
12245
12246case "$i_db" in
12247define)
12248 : Check the return type needed for hash
12249 echo " "
12250 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12251 $cat >try.c <<EOCP
12252#$d_const HASCONST
12253#ifndef HASCONST
12254#define const
12255#endif
12256#include <sys/types.h>
12257#include <db.h>
12258
12259#ifndef DB_VERSION_MAJOR
12260u_int32_t hash_cb (ptr, size)
12261const void *ptr;
12262size_t size;
12263{
12264}
12265HASHINFO info;
12266int main()
12267{
12268 info.hash = hash_cb;
12269}
12270#endif
12271EOCP
12272 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12273 if $contains warning try.out >>/dev/null 2>&1 ; then
12274 db_hashtype='int'
12275 else
12276 db_hashtype='u_int32_t'
12277 fi
12278 else
12279 : XXX Maybe we should just give up here.
12280 db_hashtype=u_int32_t
12281 $cat try.out >&4
12282 echo "Help: I can't seem to compile the db test program." >&4
12283 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12284 fi
12285 $rm -f try.*
12286 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12287 ;;
12288*) db_hashtype=u_int32_t
12289 ;;
12290esac
12291case "$i_db" in
12292define)
12293 : Check the return type needed for prefix
12294 echo " "
12295 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12296 cat >try.c <<EOCP
12297#$d_const HASCONST
12298#ifndef HASCONST
12299#define const
12300#endif
12301#include <sys/types.h>
12302#include <db.h>
12303
12304#ifndef DB_VERSION_MAJOR
12305size_t prefix_cb (key1, key2)
12306const DBT *key1;
12307const DBT *key2;
12308{
12309}
12310BTREEINFO info;
12311int main()
12312{
12313 info.prefix = prefix_cb;
12314}
12315#endif
12316EOCP
12317 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12318 if $contains warning try.out >>/dev/null 2>&1 ; then
12319 db_prefixtype='int'
12320 else
12321 db_prefixtype='size_t'
12322 fi
12323 else
12324 db_prefixtype='size_t'
12325 : XXX Maybe we should just give up here.
12326 $cat try.out >&4
12327 echo "Help: I can't seem to compile the db test program." >&4
12328 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12329 fi
12330 $rm -f try.*
12331 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12332 ;;
12333*) db_prefixtype='size_t'
12334 ;;
12335esac
12336
12337: check for void type
12338echo " "
12339echo "Checking to see how well your C compiler groks the void type..." >&4
12340case "$voidflags" in
12341'')
12342 $cat >try.c <<'EOCP'
12343#if TRY & 1
12344void sub() {
12345#else
12346sub() {
12347#endif
12348 extern void moo(); /* function returning void */
12349 void (*goo)(); /* ptr to func returning void */
12350#if TRY & 8
12351 void *hue; /* generic ptr */
12352#endif
12353#if TRY & 2
12354 void (*foo[10])();
12355#endif
12356
12357#if TRY & 4
12358 if(goo == moo) {
12359 exit(0);
12360 }
12361#endif
12362 exit(0);
12363}
12364int main() { sub(); }
12365EOCP
12366 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12367 voidflags=$defvoidused
12368 echo "Good. It appears to support void to the level $package wants.">&4
12369 if $contains warning .out >/dev/null 2>&1; then
12370 echo "However, you might get some warnings that look like this:"
12371 $cat .out
12372 fi
12373 else
12374echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12375 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12376 echo "It supports 1..."
12377 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12378 echo "It also supports 2..."
12379 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12380 voidflags=7
12381 echo "And it supports 4 but not 8 definitely."
12382 else
12383 echo "It doesn't support 4..."
12384 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12385 voidflags=11
12386 echo "But it supports 8."
12387 else
12388 voidflags=3
12389 echo "Neither does it support 8."
12390 fi
12391 fi
12392 else
12393 echo "It does not support 2..."
12394 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12395 voidflags=13
12396 echo "But it supports 4 and 8."
12397 else
12398 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12399 voidflags=5
12400 echo "And it supports 4 but has not heard about 8."
12401 else
12402 echo "However it supports 8 but not 4."
12403 fi
12404 fi
12405 fi
12406 else
12407 echo "There is no support at all for void."
12408 voidflags=0
12409 fi
12410 fi
12411esac
12412case "$voidflags" in
12413"$defvoidused") ;;
12414*) $cat >&4 <<'EOM'
12415 Support flag bits are:
12416 1: basic void declarations.
12417 2: arrays of pointers to functions returning void.
12418 4: operations between pointers to and addresses of void functions.
12419 8: generic void pointers.
12420EOM
12421 dflt="$voidflags";
12422 rp="Your void support flags add up to what?"
12423 . ./myread
12424 voidflags="$ans"
12425 ;;
12426esac
12427$rm -f try.* .out
12428
12429
12430: How can we generate normalized random numbers ?
12431echo " "
12432echo "Looking for a random number function..." >&4
12433case "$randfunc" in
12434'')
12435 if set drand48 val -f; eval $csym; $val; then
12436 dflt="drand48"
12437 echo "Good, found drand48()." >&4
12438 elif set random val -f; eval $csym; $val; then
12439 dflt="random"
12440 echo "OK, found random()." >&4
12441 else
12442 dflt="rand"
12443 echo "Yick, looks like I have to use rand()." >&4
12444 fi
12445 echo " "
12446 ;;
12447*)
12448 dflt="$randfunc"
12449 ;;
12450esac
12451cont=true
12452
12453case "$ccflags" in
12454*-Dmy_rand=*|*-Dmy_srand=*)
12455 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12456 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12457 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12458 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12459 ;;
12460esac
12461
12462while $test "$cont"; do
12463 rp="Use which function to generate random numbers?"
12464 . ./myread
12465 if $test "$ans" = "$dflt"; then
12466 : null
12467 else
12468 randbits=''
12469 fi
12470 randfunc="$ans"
12471 if set $ans val -f; eval $csym; $val; then
12472 cont=''
12473 else
12474 dflt=y
12475 rp="I cannot find function $ans. Use that name anyway?"
12476 . ./myread
12477 dflt=rand
12478 case "$ans" in
12479 [yY]*) cont='';;
12480 esac
12481 fi
12482 case "$cont" in
12483 '')
12484 case "$randfunc" in
12485 drand48)
12486 drand01="drand48()"
12487 seedfunc="srand48"
12488 randbits=48
12489 randseedtype=long
12490 ;;
12491 rand|random)
12492 case "$randbits" in
12493 '')
12494echo "Checking to see how many bits your $randfunc() function produces..." >&4
12495 $cat >try.c <<EOCP
12496#$i_unistd I_UNISTD
12497#$i_stdlib I_STDLIB
12498#include <stdio.h>
12499#ifdef I_UNISTD
12500# include <unistd.h>
12501#endif
12502#ifdef I_STDLIB
12503# include <stdlib.h>
12504#endif
12505int main()
12506{
12507 register int i;
12508 register unsigned long tmp;
12509 register unsigned long max = 0L;
12510
12511 for (i = 1000; i; i--) {
12512 tmp = (unsigned long) $randfunc();
12513 if (tmp > max) max = tmp;
12514 }
12515 for (i = 0; max; i++)
12516 max /= 2;
12517 printf("%d\n",i);
12518}
12519EOCP
12520 set try
12521 if eval $compile_ok; then
12522 dflt=`try`
12523 else
12524 dflt='?'
12525 echo "(I can't seem to compile the test program...)"
12526 fi
12527 ;;
12528 *)
12529 dflt="$randbits"
12530 ;;
12531 esac
12532 rp="How many bits does your $randfunc() function produce?"
12533 . ./myread
12534 randbits="$ans"
12535 $rm -f try.c try
12536 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12537 seedfunc="s$randfunc"
12538 randseedtype=unsigned
12539 ;;
12540 *)
12541 dflt="31"
12542 rp="How many bits does your $randfunc() function produce?"
12543 . ./myread
12544 randbits="$ans"
12545 seedfunc="s$randfunc"
12546 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12547 if set $seedfunc val -f; eval $csym; $val; then
12548 echo "(Using $seedfunc() to seed random generator)"
12549 else
12550 echo "(Warning: no $seedfunc() to seed random generator)"
12551 seedfunc=rand
12552 fi
12553 randseedtype=unsigned
12554 ;;
12555 esac
12556 ;;
12557 esac
12558done
12559
12560echo " "
12561echo "Determining whether or not we are on an EBCDIC system..." >&4
12562$cat >tebcdic.c <<'EOM'
12563int main()
12564{
12565 if ('M'==0xd4) return 0;
12566 return 1;
12567}
12568EOM
12569
12570val=$undef
12571set tebcdic
12572if eval $compile_ok; then
12573 if ./tebcdic; then
12574 echo "You seem to speak EBCDIC." >&4
12575 val="$define"
12576 else
12577 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12578 fi
12579else
12580 echo "I'm unable to compile the test program." >&4
12581 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12582fi
12583$rm -f tebcdic.c tebcdic
12584set ebcdic
12585eval $setvar
12586
12587echo " "
12588$cat >&4 <<EOM
12589Checking how to flush all pending stdio output...
12590EOM
12591# I only know how to find the first 32 possibly open files on SunOS.
12592# See also hints/sunos_4_1.sh and util.c --AD
12593case "$osname" in
12594sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12595esac
12596$cat >>try.c <<EOCP
12597#include <stdio.h>
12598#$i_unistd I_UNISTD
12599#ifdef I_UNISTD
12600# include <unistd.h>
12601#endif
12602#$d_sysconf HAS_SYSCONF
12603#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12604#ifdef HAS_STDIO_STREAM_ARRAY
12605# define STDIO_STREAM_ARRAY $stdio_stream_array
12606#endif
12607int main() {
12608 FILE* p = fopen("try.out", "w");
12609#ifdef TRY_FPUTC
12610 fputc('x', p);
12611#else
12612# ifdef TRY_FPRINTF
12613 fprintf(p, "x");
12614# endif
12615#endif
12616#ifdef TRY_FFLUSH_NULL
12617 fflush(NULL);
12618#endif
12619#ifdef TRY_FFLUSH_ALL
12620 {
12621 long open_max = -1;
12622# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12623 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12624# else
12625# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12626 open_max = sysconf(_SC_OPEN_MAX);
12627# else
12628# ifdef FOPEN_MAX
12629 open_max = FOPEN_MAX;
12630# else
12631# ifdef OPEN_MAX
12632 open_max = OPEN_MAX;
12633# else
12634# ifdef _NFILE
12635 open_max = _NFILE;
12636# endif
12637# endif
12638# endif
12639# endif
12640# endif
12641# ifdef HAS_STDIO_STREAM_ARRAY
12642 if (open_max > 0) {
12643 long i;
12644 for (i = 0; i < open_max; i++)
12645 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12646 STDIO_STREAM_ARRAY[i]._file < open_max &&
12647 STDIO_STREAM_ARRAY[i]._flag)
12648 fflush(&STDIO_STREAM_ARRAY[i]);
12649 }
12650 }
12651# endif
12652#endif
12653 _exit(42);
12654}
12655EOCP
12656: first we have to find out how _not_ to flush
12657if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12658 output=''
12659 set try -DTRY_FPUTC
12660 if eval $compile; then
12661 $rm -f try.out
12662 ./try$exe_ext 2>/dev/null
12663 if $test ! -s try.out -a "X$?" = X42; then
12664 output=-DTRY_FPUTC
12665 fi
12666 fi
12667 case "$output" in
12668 '')
12669 set try -DTRY_FPRINTF
12670 $rm -f try.out
12671 if eval $compile; then
12672 $rm -f try.out
12673 ./try$exe_ext 2>/dev/null
12674 if $test ! -s try.out -a "X$?" = X42; then
12675 output=-DTRY_FPRINTF
12676 fi
12677 fi
12678 ;;
12679 esac
12680fi
12681: check for fflush NULL behaviour
12682case "$fflushNULL" in
12683'') set try -DTRY_FFLUSH_NULL $output
12684 if eval $compile; then
12685 $rm -f try.out
12686 ./try$exe_ext 2>/dev/null
12687 code="$?"
12688 if $test -s try.out -a "X$code" = X42; then
12689 fflushNULL="`$cat try.out`"
12690 else
12691 if $test "X$code" != X42; then
12692 $cat >&4 <<EOM
12693(If this test failed, don't worry, we'll try another method shortly.)
12694EOM
12695 fi
12696 fi
12697 fi
12698 $rm -f core try.core core.try.*
12699 case "$fflushNULL" in
12700 x) $cat >&4 <<EOM
12701Your fflush(NULL) works okay for output streams.
12702Let's see if it clobbers input pipes...
12703EOM
12704# As of mid-March 2000 all versions of Solaris appear to have a stdio
12705# bug that improperly flushes the input end of pipes. So we avoid the
12706# autoflush on fork/system/exec support for now. :-(
12707$cat >tryp.c <<EOCP
12708#include <stdio.h>
12709int
12710main(int argc, char **argv)
12711{
12712 char buf[1024];
12713 int i;
12714 char *bp = buf;
12715 while (1) {
12716 while ((i = getc(stdin)) != -1
12717 && (*bp++ = i) != '\n'
12718 && bp < &buf[1024])
12719 /* DO NOTHING */ ;
12720 *bp = '\0';
12721 fprintf(stdout, "%s", buf);
12722 fflush(NULL);
12723 if (i == -1)
12724 return 0;
12725 bp = buf;
12726 }
12727}
12728EOCP
12729 fflushNULL="$define"
12730 set tryp
12731 if eval $compile; then
12732 $rm -f tryp.out
12733 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12734 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12735 $cat >&4 <<EOM
12736fflush(NULL) seems to behave okay with input streams.
12737EOM
12738 fflushNULL="$define"
12739 else
12740 $cat >&4 <<EOM
12741Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12742EOM
12743 fflushNULL="$undef"
12744 fi
12745 fi
12746 $rm -f core tryp.c tryp.core core.tryp.*
12747 ;;
12748 '') $cat >&4 <<EOM
12749Your fflush(NULL) isn't working (contrary to ANSI C).
12750EOM
12751 fflushNULL="$undef"
12752 ;;
12753 *) $cat >&4 <<EOM
12754Cannot figure out whether your fflush(NULL) works or not.
12755I'm assuming it doesn't (contrary to ANSI C).
12756EOM
12757 fflushNULL="$undef"
12758 ;;
12759 esac
12760 ;;
12761$define|true|[yY]*)
12762 fflushNULL="$define"
12763 ;;
12764*)
12765 fflushNULL="$undef"
12766 ;;
12767esac
12768: check explicit looping only if NULL did not work, and if the pipe
12769: bug does not show up on an explicit flush too
12770case "$fflushNULL" in
12771"$undef")
12772 $cat >tryp.c <<EOCP
12773#include <stdio.h>
12774int
12775main(int argc, char **argv)
12776{
12777 char buf[1024];
12778 int i;
12779 char *bp = buf;
12780 while (1) {
12781 while ((i = getc(stdin)) != -1
12782 && (*bp++ = i) != '\n'
12783 && bp < &buf[1024])
12784 /* DO NOTHING */ ;
12785 *bp = '\0';
12786 fprintf(stdout, "%s", buf);
12787 fflush(stdin);
12788 if (i == -1)
12789 return 0;
12790 bp = buf;
12791 }
12792}
12793EOCP
12794 set tryp
12795 if eval $compile; then
12796 $rm -f tryp.out
12797 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12798 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12799 $cat >&4 <<EOM
12800Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12801EOM
12802 : now check for fflushall behaviour
12803 case "$fflushall" in
12804 '') set try -DTRY_FFLUSH_ALL $output
12805 if eval $compile; then
12806 $cat >&4 <<EOM
12807(Now testing the other method--but note that this also may fail.)
12808EOM
12809 $rm -f try.out
12810 ./try$exe_ext 2>/dev/null
12811 if $test -s try.out -a "X$?" = X42; then
12812 fflushall="`$cat try.out`"
12813 fi
12814 fi
12815 $rm -f core try.core core.try.*
12816 case "$fflushall" in
12817 x) $cat >&4 <<EOM
12818Whew. Flushing explicitly all the stdio streams works.
12819EOM
12820 fflushall="$define"
12821 ;;
12822 '') $cat >&4 <<EOM
12823Sigh. Flushing explicitly all the stdio streams doesn't work.
12824EOM
12825 fflushall="$undef"
12826 ;;
12827 *) $cat >&4 <<EOM
12828Cannot figure out whether flushing stdio streams explicitly works or not.
12829I'm assuming it doesn't.
12830EOM
12831 fflushall="$undef"
12832 ;;
12833 esac
12834 ;;
12835 "$define"|true|[yY]*)
12836 fflushall="$define"
12837 ;;
12838 *)
12839 fflushall="$undef"
12840 ;;
12841 esac
12842 else
12843 $cat >&4 <<EOM
12844All is futile. Even fflush(stdin) clobbers input pipes!
12845EOM
12846 fflushall="$undef"
12847 fi
12848 else
12849 fflushall="$undef"
12850 fi
12851 $rm -f core tryp.c tryp.core core.tryp.*
12852 ;;
12853*) fflushall="$undef"
12854 ;;
12855esac
12856
12857case "$fflushNULL$fflushall" in
12858undefundef)
12859 $cat <<EOM
12860OK, I give up. I cannot figure out how to flush pending stdio output.
12861We won't be flushing handles at all before fork/exec/popen.
12862EOM
12863 ;;
12864esac
12865$rm -f try.* try$exe_ext
12866
12867: Store the full pathname to the ar program for use in the C program
12868: Respect a hint or command line value for full_ar.
12869case "$full_ar" in
12870'') full_ar=$ar ;;
12871esac
12872
12873: Store the full pathname to the sed program for use in the C program
12874full_sed=$sed
12875
12876: see what type gids are declared as in the kernel
12877echo " "
12878echo "Looking for the type for group ids returned by getgid()."
12879set gid_t gidtype xxx stdio.h sys/types.h
12880eval $typedef
12881case "$gidtype" in
12882xxx)
12883 xxx=`./findhdr sys/user.h`
12884 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12885 case $1 in
12886 unsigned) dflt="$1 $2" ;;
12887 *) dflt="$1" ;;
12888 esac
12889 ;;
12890*) dflt="$gidtype";;
12891esac
12892case "$gidtype" in
12893gid_t) echo "gid_t found." ;;
12894*) rp="What is the type for group ids returned by getgid()?"
12895 . ./myread
12896 gidtype="$ans"
12897 ;;
12898esac
12899
12900echo " "
12901case "$gidtype" in
12902*_t) zzz="$gidtype" ;;
12903*) zzz="gid" ;;
12904esac
12905echo "Checking the size of $zzz..." >&4
12906cat > try.c <<EOCP
12907#include <sys/types.h>
12908#include <stdio.h>
12909int main() {
12910 printf("%d\n", (int)sizeof($gidtype));
12911 exit(0);
12912}
12913EOCP
12914set try
12915if eval $compile_ok; then
12916 yyy=`./try`
12917 case "$yyy" in
12918 '') gidsize=4
12919 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12920 ;;
12921 *) gidsize=$yyy
12922 echo "Your $zzz is $gidsize bytes long."
12923 ;;
12924 esac
12925else
12926 gidsize=4
12927 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12928fi
12929
12930
12931echo " "
12932case "$gidtype" in
12933*_t) zzz="$gidtype" ;;
12934*) zzz="gid" ;;
12935esac
12936echo "Checking the sign of $zzz..." >&4
12937cat > try.c <<EOCP
12938#include <sys/types.h>
12939#include <stdio.h>
12940int main() {
12941 $gidtype foo = -1;
12942 if (foo < 0)
12943 printf("-1\n");
12944 else
12945 printf("1\n");
12946}
12947EOCP
12948set try
12949if eval $compile; then
12950 yyy=`./try`
12951 case "$yyy" in
12952 '') gidsign=1
12953 echo "(I can't execute the test program--guessing unsigned.)" >&4
12954 ;;
12955 *) gidsign=$yyy
12956 case "$gidsign" in
12957 1) echo "Your $zzz is unsigned." ;;
12958 -1) echo "Your $zzz is signed." ;;
12959 esac
12960 ;;
12961 esac
12962else
12963 gidsign=1
12964 echo "(I can't compile the test program--guessing unsigned.)" >&4
12965fi
12966
12967
12968echo " "
12969
12970if $test X"$quadtype" != X; then
12971
12972echo "Checking how to print 64-bit integers..." >&4
12973
12974if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12975 $cat >try.c <<'EOCP'
12976#include <sys/types.h>
12977#include <stdio.h>
12978int main() {
12979 int q = 12345678901;
12980 printf("%ld\n", q);
12981}
12982EOCP
12983 set try
12984 if eval $compile; then
12985 yyy=`./try$exe_ext`
12986 case "$yyy" in
12987 12345678901)
12988 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12989 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12990 echo "We will use %d."
12991 ;;
12992 esac
12993 fi
12994fi
12995
12996if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12997 $cat >try.c <<'EOCP'
12998#include <sys/types.h>
12999#include <stdio.h>
13000int main() {
13001 long q = 12345678901;
13002 printf("%ld\n", q);
13003}
13004EOCP
13005 set try
13006 if eval $compile; then
13007 yyy=`./try$exe_ext`
13008 case "$yyy" in
13009 12345678901)
13010 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13011 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13012 echo "We will use %ld."
13013 ;;
13014 esac
13015 fi
13016fi
13017
13018if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13019 $cat >try.c <<'EOCP'
13020#include <sys/types.h>
13021#include <inttypes.h>
13022#include <stdio.h>
13023int main() {
13024 int64_t q = 12345678901;
13025 printf("%" PRId64 "\n", q);
13026}
13027EOCP
13028 set try
13029 if eval $compile; then
13030 yyy=`./try$exe_ext`
13031 case "$yyy" in
13032 12345678901)
13033 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13034 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13035 echo "We will use the C9X style."
13036 ;;
13037 esac
13038 fi
13039fi
13040
13041if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13042 $cat >try.c <<'EOCP'
13043#include <sys/types.h>
13044#include <stdio.h>
13045int main() {
13046 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13047 printf("%lld\n", q);
13048}
13049EOCP
13050 set try
13051 if eval $compile; then
13052 yyy=`./try$exe_ext`
13053 case "$yyy" in
13054 12345678901)
13055 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13056 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13057 echo "We will use the %lld style."
13058 ;;
13059 esac
13060 fi
13061fi
13062
13063if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13064 $cat >try.c <<EOCP
13065#include <sys/types.h>
13066#include <stdio.h>
13067int main() {
13068 $quadtype q = 12345678901;
13069 printf("%Ld\n", q);
13070}
13071EOCP
13072 set try
13073 if eval $compile; then
13074 yyy=`./try$exe_ext`
13075 case "$yyy" in
13076 12345678901)
13077 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13078 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13079 echo "We will use %Ld."
13080 ;;
13081 esac
13082 fi
13083fi
13084
13085if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13086 $cat >try.c <<EOCP
13087#include <sys/types.h>
13088#include <stdio.h>
13089int main() {
13090 $quadtype q = 12345678901;
13091 printf("%qd\n", q);
13092}
13093EOCP
13094 set try
13095 if eval $compile; then
13096 yyy=`./try$exe_ext`
13097 case "$yyy" in
13098 12345678901)
13099 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13100 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13101 echo "We will use %qd."
13102 ;;
13103 esac
13104 fi
13105fi
13106
13107if $test X"$sPRId64" = X; then
13108 echo "Cannot figure out how to print 64-bit integers." >&4
13109fi
13110
13111$rm -f try try.*
13112
13113fi
13114
13115case "$sPRId64" in
13116'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13117 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13118 ;;
13119*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13120 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13121 ;;
13122esac
13123
13124
13125echo " "
13126$echo "Checking the format strings to be used for Perl's internal types..." >&4
13127
13128if $test X"$ivsize" = X8; then
13129 ivdformat="$sPRId64"
13130 uvuformat="$sPRIu64"
13131 uvoformat="$sPRIo64"
13132 uvxformat="$sPRIx64"
13133 uvXUformat="$sPRIXU64"
13134else
13135 if $test X"$ivsize" = X"$longsize"; then
13136 ivdformat='"ld"'
13137 uvuformat='"lu"'
13138 uvoformat='"lo"'
13139 uvxformat='"lx"'
13140 uvXUformat='"lX"'
13141 else
13142 if $test X"$ivsize" = X"$intsize"; then
13143 ivdformat='"d"'
13144 uvuformat='"u"'
13145 uvoformat='"o"'
13146 uvxformat='"x"'
13147 uvXUformat='"X"'
13148 else
13149 : far out
13150 if $test X"$ivsize" = X"$shortsize"; then
13151 ivdformat='"hd"'
13152 uvuformat='"hu"'
13153 uvoformat='"ho"'
13154 uvxformat='"hx"'
13155 uvXUformat='"hX"'
13156 fi
13157 fi
13158 fi
13159fi
13160
13161if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13162 nveformat="$sPRIeldbl"
13163 nvfformat="$sPRIfldbl"
13164 nvgformat="$sPRIgldbl"
13165 nvEUformat="$sPRIEUldbl"
13166 nvFUformat="$sPRIFUldbl"
13167 nvGUformat="$sPRIGUldbl"
13168else
13169 nveformat='"e"'
13170 nvfformat='"f"'
13171 nvgformat='"g"'
13172 nvEUformat='"E"'
13173 nvFUformat='"F"'
13174 nvGUformat='"G"'
13175fi
13176
13177case "$ivdformat" in
13178'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13179 exit 1
13180 ;;
13181esac
13182
13183
13184echo " "
13185$echo "Checking the format string to be used for gids..." >&4
13186
13187case "$gidsign" in
13188-1) if $test X"$gidsize" = X"$ivsize"; then
13189 gidformat="$ivdformat"
13190 else
13191 if $test X"$gidsize" = X"$longsize"; then
13192 gidformat='"ld"'
13193 else
13194 if $test X"$gidsize" = X"$intsize"; then
13195 gidformat='"d"'
13196 else
13197 if $test X"$gidsize" = X"$shortsize"; then
13198 gidformat='"hd"'
13199 fi
13200 fi
13201 fi
13202 fi
13203 ;;
13204*) if $test X"$gidsize" = X"$uvsize"; then
13205 gidformat="$uvuformat"
13206 else
13207 if $test X"$gidsize" = X"$longsize"; then
13208 gidformat='"lu"'
13209 else
13210 if $test X"$gidsize" = X"$intsize"; then
13211 gidformat='"u"'
13212 else
13213 if $test X"$gidsize" = X"$shortsize"; then
13214 gidformat='"hu"'
13215 fi
13216 fi
13217 fi
13218 fi
13219 ;;
13220esac
13221
13222: see if getgroups exists
13223set getgroups d_getgrps
13224eval $inlibc
13225
13226: see if setgroups exists
13227set setgroups d_setgrps
13228eval $inlibc
13229
13230
13231: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13232echo " "
13233case "$d_getgrps$d_setgrps" in
13234*define*)
13235 case "$groupstype" in
13236 '') dflt="$gidtype" ;;
13237 *) dflt="$groupstype" ;;
13238 esac
13239 $cat <<EOM
13240What type of pointer is the second argument to getgroups() and setgroups()?
13241Usually this is the same as group ids, $gidtype, but not always.
13242
13243EOM
13244 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13245 . ./myread
13246 groupstype="$ans"
13247 ;;
13248*) groupstype="$gidtype";;
13249esac
13250
13251echo " "
13252echo "Checking if your $make program sets \$(MAKE)..." >&4
13253case "$make_set_make" in
13254'')
13255 $sed 's/^X //' > testmake.mak << 'EOF'
13256Xall:
13257X @echo 'maketemp="$(MAKE)"'
13258EOF
13259 case "`$make -f testmake.mak 2>/dev/null`" in
13260 *maketemp=*) make_set_make='#' ;;
13261 *) make_set_make="MAKE=$make" ;;
13262 esac
13263 $rm -f testmake.mak
13264 ;;
13265esac
13266case "$make_set_make" in
13267'#') echo "Yup, it does.";;
13268*) echo "Nope, it doesn't.";;
13269esac
13270
13271: see what type is used for mode_t
13272rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13273set mode_t modetype int stdio.h sys/types.h
13274eval $typedef_ask
13275
13276: define a fucntion to check prototypes
13277$cat > protochk <<EOSH
13278$startsh
13279cc="$cc"
13280optimize="$optimize"
13281ccflags="$ccflags"
13282prototype="$prototype"
13283define="$define"
13284rm=$rm
13285EOSH
13286
13287$cat >> protochk <<'EOSH'
13288
13289$rm -f try.c
13290foo="$1"
13291shift
13292while test $# -ge 2; do
13293 case "$1" in
13294 $define) echo "#include <$2>" >> try.c ;;
13295 literal) echo "$2" >> try.c ;;
13296 esac
13297 shift 2
13298done
13299test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13300cat >> try.c <<'EOCP'
13301#ifdef CAN_PROTOTYPE
13302#define _(args) args
13303#else
13304#define _(args) ()
13305#endif
13306EOCP
13307echo "$foo" >> try.c
13308echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13309$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13310status=$?
13311$rm -f try.[co]
13312exit $status
13313EOSH
13314chmod +x protochk
13315$eunicefix protochk
13316
13317: see what type is used for size_t
13318rp="What is the type used for the length parameter for string functions?"
13319set size_t sizetype 'unsigned int' stdio.h sys/types.h
13320eval $typedef_ask
13321
13322: check for type of arguments to gethostbyaddr.
13323if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13324 case "$d_gethbyaddr" in
13325 $define)
13326 $cat <<EOM
13327
13328Checking to see what type of arguments are accepted by gethostbyaddr().
13329EOM
13330 hdrs="$define sys/types.h
13331 $d_socket sys/socket.h
13332 $i_niin netinet/in.h
13333 $i_netdb netdb.h
13334 $i_unistd unistd.h"
13335 : The first arg can 'char *' or 'void *'
13336 : The second arg is some of integral type
13337 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13338 for yyy in size_t long int; do
13339 case "$netdb_host_type" in
13340 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13341 if ./protochk "$try" $hdrs; then
13342 echo "Your system accepts $xxx for the first arg."
13343 echo "...and $yyy for the second arg."
13344 netdb_host_type="$xxx"
13345 netdb_hlen_type="$yyy"
13346 fi
13347 ;;
13348 esac
13349 done
13350 done
13351 : In case none of those worked, prompt the user.
13352 case "$netdb_host_type" in
13353 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13354 dflt='char *'
13355 . ./myread
13356 netdb_host_type=$ans
13357 rp='What is the type for the 2nd argument to gethostbyaddr?'
13358 dflt="$sizetype"
13359 . ./myread
13360 netdb_hlen_type=$ans
13361 ;;
13362 esac
13363 ;;
13364 *) : no gethostbyaddr, so pick harmless defaults
13365 netdb_host_type='char *'
13366 netdb_hlen_type="$sizetype"
13367 ;;
13368 esac
13369 # Remove the "const" if needed. -- but then we'll have a
13370 # prototype clash!
13371 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13372fi
13373
13374: check for type of argument to gethostbyname.
13375if test "X$netdb_name_type" = X ; then
13376 case "$d_gethbyname" in
13377 $define)
13378 $cat <<EOM
13379
13380Checking to see what type of argument is accepted by gethostbyname().
13381EOM
13382 hdrs="$define sys/types.h
13383 $d_socket sys/socket.h
13384 $i_niin netinet/in.h
13385 $i_netdb netdb.h
13386 $i_unistd unistd.h"
13387 for xxx in "const char *" "char *"; do
13388 case "$netdb_name_type" in
13389 '') try="extern struct hostent *gethostbyname($xxx);"
13390 if ./protochk "$try" $hdrs; then
13391 echo "Your system accepts $xxx."
13392 netdb_name_type="$xxx"
13393 fi
13394 ;;
13395 esac
13396 done
13397 : In case none of those worked, prompt the user.
13398 case "$netdb_name_type" in
13399 '') rp='What is the type for the 1st argument to gethostbyname?'
13400 dflt='char *'
13401 . ./myread
13402 netdb_name_type=$ans
13403 ;;
13404 esac
13405 ;;
13406 *) : no gethostbyname, so pick harmless default
13407 netdb_name_type='char *'
13408 ;;
13409 esac
13410fi
13411
13412: check for type of 1st argument to getnetbyaddr.
13413if test "X$netdb_net_type" = X ; then
13414 case "$d_getnbyaddr" in
13415 $define)
13416 $cat <<EOM
13417
13418Checking to see what type of 1st argument is accepted by getnetbyaddr().
13419EOM
13420 hdrs="$define sys/types.h
13421 $d_socket sys/socket.h
13422 $i_niin netinet/in.h
13423 $i_netdb netdb.h
13424 $i_unistd unistd.h"
13425 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13426 case "$netdb_net_type" in
13427 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13428 if ./protochk "$try" $hdrs; then
13429 echo "Your system accepts $xxx."
13430 netdb_net_type="$xxx"
13431 fi
13432 ;;
13433 esac
13434 done
13435 : In case none of those worked, prompt the user.
13436 case "$netdb_net_type" in
13437 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13438 dflt='long'
13439 . ./myread
13440 netdb_net_type=$ans
13441 ;;
13442 esac
13443 ;;
13444 *) : no getnetbyaddr, so pick harmless default
13445 netdb_net_type='long'
13446 ;;
13447 esac
13448fi
13449: locate the preferred pager for this system
13450case "$pager" in
13451'')
13452 dflt=''
13453 case "$pg" in
13454 /*) dflt=$pg;;
13455 [a-zA-Z]:/*) dflt=$pg;;
13456 esac
13457 case "$more" in
13458 /*) dflt=$more;;
13459 [a-zA-Z]:/*) dflt=$more;;
13460 esac
13461 case "$less" in
13462 /*) dflt=$less;;
13463 [a-zA-Z]:/*) dflt=$less;;
13464 esac
13465 case "$dflt" in
13466 '') dflt=/usr/ucb/more;;
13467 esac
13468 ;;
13469*) dflt="$pager";;
13470esac
13471echo " "
13472fn=f/
13473rp='What pager is used on your system?'
13474. ./getfile
13475pager="$ans"
13476
13477: see what type pids are declared as in the kernel
13478rp="What is the type of process ids on this system?"
13479set pid_t pidtype int stdio.h sys/types.h
13480eval $typedef_ask
13481
13482: Find earliest binary compatible site_perl subdirectory perl can use.
13483case "$bincompat5005" in
13484"$define") xs_apiversion='5.005' ;;
13485*) xs_apiversion=$version ;; # The current site_perl version.
13486esac
13487: Find earliest pure perl site_perl subdirectory perl can use.
13488: The versioned directories started at 5.005.
13489pm_apiversion='5.005'
13490
13491: check for length of pointer
13492echo " "
13493case "$ptrsize" in
13494'')
13495 echo "Checking to see how big your pointers are..." >&4
13496 if test "$voidflags" -gt 7; then
13497 echo '#define VOID_PTR char *' > try.c
13498 else
13499 echo '#define VOID_PTR void *' > try.c
13500 fi
13501 $cat >>try.c <<'EOCP'
13502#include <stdio.h>
13503int main()
13504{
13505 printf("%d\n", (int)sizeof(VOID_PTR));
13506 exit(0);
13507}
13508EOCP
13509 set try
13510 if eval $compile_ok; then
13511 ptrsize=`./try`
13512 echo "Your pointers are $ptrsize bytes long."
13513 else
13514 dflt='4'
13515 echo "(I can't seem to compile the test program. Guessing...)" >&4
13516 rp="What is the size of a pointer (in bytes)?"
13517 . ./myread
13518 ptrsize="$ans"
13519 fi
13520 ;;
13521esac
13522$rm -f try.c try
13523
13524: see if ar generates random libraries by itself
13525echo " "
13526echo "Checking how to generate random libraries on your machine..." >&4
13527echo 'int bar1() { return bar2(); }' > bar1.c
13528echo 'int bar2() { return 2; }' > bar2.c
13529$cat > foo.c <<'EOP'
13530int main() { printf("%d\n", bar1()); exit(0); }
13531EOP
13532$cc $ccflags -c bar1.c >/dev/null 2>&1
13533$cc $ccflags -c bar2.c >/dev/null 2>&1
13534$cc $ccflags -c foo.c >/dev/null 2>&1
13535$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
7a282f6d 13536if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
13537 ./foobar >/dev/null 2>&1; then
13538 echo "$ar appears to generate random libraries itself."
13539 orderlib=false
13540 ranlib=":"
13541elif $ar ts bar$_a >/dev/null 2>&1 &&
7a282f6d 13542 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
b4eb6b3d
JH
13543 ./foobar >/dev/null 2>&1; then
13544 echo "a table of contents needs to be added with '$ar ts'."
13545 orderlib=false
13546 ranlib="$ar ts"
13547else
13548 case "$ranlib" in
13549 :) ranlib='';;
13550 '')
13551 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13552 $test -f $ranlib || ranlib=''
13553 ;;
13554 esac
13555 if $test -n "$ranlib"; then
13556 echo "your system has '$ranlib'; we'll use that."
13557 orderlib=false
13558 else
13559 echo "your system doesn't seem to support random libraries"
13560 echo "so we'll use lorder and tsort to order the libraries."
13561 orderlib=true
13562 ranlib=":"
13563 fi
13564fi
13565$rm -f foo* bar*
13566
13567: check for type of arguments to select.
13568case "$selecttype" in
13569'') case "$d_select" in
13570 $define)
13571 echo " "
13572 $cat <<EOM
13573Checking to see what type of arguments are accepted by select().
13574EOM
13575 hdrs="$define sys/types.h
13576 $i_systime sys/time.h
13577 $i_sysselct sys/select.h
13578 $d_socket sys/socket.h"
13579 : The first arg can be int, unsigned, or size_t
13580 : The last arg may or may not be 'const'
13581 val=''
13582 : void pointer has been seen but using that
13583 : breaks the selectminbits test
13584 for xxx in 'fd_set *' 'int *'; do
13585 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13586 for tmo in 'struct timeval *' 'const struct timeval *'; do
13587 case "$val" in
13588 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13589 if ./protochk "$try" $hdrs; then
13590 echo "Your system accepts $xxx."
13591 val="$xxx"
13592 fi
13593 ;;
13594 esac
13595 done
13596 done
13597 done
13598 case "$val" in
13599 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13600 case "$d_fd_set" in
13601 $define) dflt="fd_set *" ;;
13602 *) dflt="int *" ;;
13603 esac
13604 . ./myread
13605 val=$ans
13606 ;;
13607 esac
13608 selecttype="$val"
13609 ;;
13610 *) : no select, so pick a harmless default
13611 selecttype='int *'
13612 ;;
13613 esac
13614 ;;
13615esac
13616
13617: check for the select 'width'
13618case "$selectminbits" in
13619'') case "$d_select" in
13620 $define)
13621 $cat <<EOM
13622
13623Checking to see on how many bits at a time your select() operates...
13624EOM
13625 $cat >try.c <<EOCP
13626#include <sys/types.h>
13627#$i_time I_TIME
13628#$i_systime I_SYS_TIME
13629#$i_systimek I_SYS_TIME_KERNEL
13630#ifdef I_TIME
13631# include <time.h>
13632#endif
13633#ifdef I_SYS_TIME
13634# ifdef I_SYS_TIME_KERNEL
13635# define KERNEL
13636# endif
13637# include <sys/time.h>
13638# ifdef I_SYS_TIME_KERNEL
13639# undef KERNEL
13640# endif
13641#endif
13642#$i_sysselct I_SYS_SELECT
13643#ifdef I_SYS_SELECT
13644#include <sys/select.h>
13645#endif
13646#$d_socket HAS_SOCKET
13647#ifdef HAS_SOCKET
13648# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13649#endif
13650#include <stdio.h>
13651$selecttype b;
13652#define S sizeof(*(b))
13653#define MINBITS 64
13654#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13655#define NBITS (NBYTES * 8)
13656int main() {
13657 char s[NBYTES];
13658 struct timeval t;
13659 int i;
13660 FILE* fp;
13661 int fd;
13662
13663 fclose(stdin);
13664 fp = fopen("try.c", "r");
13665 if (fp == 0)
13666 exit(1);
13667 fd = fileno(fp);
13668 if (fd < 0)
13669 exit(2);
13670 b = ($selecttype)s;
13671 for (i = 0; i < NBITS; i++)
13672 FD_SET(i, b);
13673 t.tv_sec = 0;
13674 t.tv_usec = 0;
13675 select(fd + 1, b, 0, 0, &t);
13676 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13677 printf("%d\n", i + 1);
13678 return 0;
13679}
13680EOCP
13681 set try
13682 if eval $compile_ok; then
13683 selectminbits=`./try`
13684 case "$selectminbits" in
13685 '') cat >&4 <<EOM
13686Cannot figure out on how many bits at a time your select() operates.
13687I'll play safe and guess it is 32 bits.
13688EOM
13689 selectminbits=32
13690 bits="32 bits"
13691 ;;
13692 1) bits="1 bit" ;;
13693 *) bits="$selectminbits bits" ;;
13694 esac
13695 echo "Your select() operates on $bits at a time." >&4
13696 else
13697 rp='What is the minimum number of bits your select() operates on?'
13698 case "$byteorder" in
13699 1234|12345678) dflt=32 ;;
13700 *) dflt=1 ;;
13701 esac
13702 . ./myread
13703 val=$ans
13704 selectminbits="$val"
13705 fi
13706 $rm -f try.* try
13707 ;;
13708 *) : no select, so pick a harmless default
13709 selectminbits='32'
13710 ;;
13711 esac
13712 ;;
13713esac
13714
13715: Trace out the files included by signal.h, then look for SIGxxx names.
13716: Remove SIGARRAYSIZE used by HPUX.
13717: Remove SIGSTKSIZE used by Linux.
13718: Remove SIGSTKSZ used by Posix.
13719: Remove SIGTYP void lines used by OS2.
13720: Some cpps, like os390, dont give the file name anywhere
13721if [ "X$fieldn" = X ]; then
13722 : Just make some guesses. We check them later.
13723 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13724else
13725 xxx=`echo '#include <signal.h>' |
13726 $cppstdin $cppminus $cppflags 2>/dev/null |
13727 $grep '^[ ]*#.*include' |
13728 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13729fi
13730: Check this list of files to be sure we have parsed the cpp output ok.
13731: This will also avoid potentially non-existent files, such
13732: as ../foo/bar.h
13733xxxfiles=''
13734for xx in $xxx /dev/null ; do
13735 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13736done
13737: If we have found no files, at least try signal.h
13738case "$xxxfiles" in
13739'') xxxfiles=`./findhdr signal.h` ;;
13740esac
13741xxx=`awk '
13742$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13743 print substr($2, 4, 20)
13744}
13745$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13746 print substr($3, 4, 20)
13747}' $xxxfiles`
13748: Append some common names just in case the awk scan failed.
13749xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13750xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13751xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13752xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13753xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13754
13755: generate a few handy files for later
13756$cat > signal.c <<'EOCP'
13757#include <sys/types.h>
13758#include <signal.h>
13759#include <stdio.h>
13760int main() {
13761
13762/* Strange style to avoid deeply-nested #if/#else/#endif */
13763#ifndef NSIG
13764# ifdef _NSIG
13765# define NSIG (_NSIG)
13766# endif
13767#endif
13768
13769#ifndef NSIG
13770# ifdef SIGMAX
13771# define NSIG (SIGMAX+1)
13772# endif
13773#endif
13774
13775#ifndef NSIG
13776# ifdef SIG_MAX
13777# define NSIG (SIG_MAX+1)
13778# endif
13779#endif
13780
13781#ifndef NSIG
13782# ifdef MAXSIG
13783# define NSIG (MAXSIG+1)
13784# endif
13785#endif
13786
13787#ifndef NSIG
13788# ifdef MAX_SIG
13789# define NSIG (MAX_SIG+1)
13790# endif
13791#endif
13792
13793#ifndef NSIG
13794# ifdef SIGARRAYSIZE
13795# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13796# endif
13797#endif
13798
13799#ifndef NSIG
13800# ifdef _sys_nsig
13801# define NSIG (_sys_nsig) /* Solaris 2.5 */
13802# endif
13803#endif
13804
13805/* Default to some arbitrary number that's big enough to get most
13806 of the common signals.
13807*/
13808#ifndef NSIG
13809# define NSIG 50
13810#endif
13811
13812printf("NSIG %d\n", NSIG);
13813
13814#ifndef JUST_NSIG
13815
13816EOCP
13817
13818echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13819{
13820 printf "#ifdef SIG"; printf $1; printf "\n"
13821 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13822 printf $1; printf ");\n"
13823 printf "#endif\n"
13824}
13825END {
13826 printf "#endif /* JUST_NSIG */\n";
13827 printf "exit(0);\n}\n";
13828}
13829' >>signal.c
13830$cat >signal.awk <<'EOP'
13831BEGIN { ndups = 0 }
13832$1 ~ /^NSIG$/ { nsig = $2 }
13833($1 !~ /^NSIG$/) && (NF == 2) {
13834 if ($2 > maxsig) { maxsig = $2 }
13835 if (sig_name[$2]) {
13836 dup_name[ndups] = $1
13837 dup_num[ndups] = $2
13838 ndups++
13839 }
13840 else {
13841 sig_name[$2] = $1
13842 sig_num[$2] = $2
13843 }
13844}
13845END {
13846 if (nsig == 0) {
13847 nsig = maxsig + 1
13848 }
13849 printf("NSIG %d\n", nsig);
13850 for (n = 1; n < nsig; n++) {
13851 if (sig_name[n]) {
13852 printf("%s %d\n", sig_name[n], sig_num[n])
13853 }
13854 else {
13855 printf("NUM%d %d\n", n, n)
13856 }
13857 }
13858 for (n = 0; n < ndups; n++) {
13859 printf("%s %d\n", dup_name[n], dup_num[n])
13860 }
13861}
13862EOP
13863$cat >signal_cmd <<EOS
13864$startsh
13865if $test -s signal.lst; then
13866 echo "Using your existing signal.lst file"
13867 exit 0
13868fi
13869xxx="$xxx"
13870EOS
13871$cat >>signal_cmd <<'EOS'
13872
13873set signal
13874if eval $compile_ok; then
13875 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13876else
13877 echo "(I can't seem be able to compile the whole test program)" >&4
13878 echo "(I'll try it in little pieces.)" >&4
13879 set signal -DJUST_NSIG
13880 if eval $compile_ok; then
13881 ./signal$_exe > signal.nsg
13882 $cat signal.nsg
13883 else
13884 echo "I can't seem to figure out how many signals you have." >&4
13885 echo "Guessing 50." >&4
13886 echo 'NSIG 50' > signal.nsg
13887 fi
13888 : Now look at all the signal names, one at a time.
13889 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13890 $cat > signal.c <<EOCP
13891#include <sys/types.h>
13892#include <signal.h>
13893#include <stdio.h>
13894int main() {
13895printf("$xx %d\n", SIG${xx});
13896return 0;
13897}
13898EOCP
13899 set signal
13900 if eval $compile; then
13901 echo "SIG${xx} found."
13902 ./signal$_exe >> signal.ls1
13903 else
13904 echo "SIG${xx} NOT found."
13905 fi
13906 done
13907 if $test -s signal.ls1; then
13908 $cat signal.nsg signal.ls1 |
13909 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13910 fi
13911
13912fi
13913if $test -s signal.lst; then
13914 :
13915else
13916 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13917 echo 'kill -l' >signal
13918 set X `csh -f <signal`
13919 $rm -f signal
13920 shift
13921 case $# in
13922 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13923 esac
13924 echo $@ | $tr ' ' $trnl | \
13925 $awk '{ printf "%s %d\n", $1, ++s; }
13926 END { printf "NSIG %d\n", ++s }' >signal.lst
13927fi
13928$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13929EOS
13930chmod a+x signal_cmd
13931$eunicefix signal_cmd
13932
13933: generate list of signal names
13934echo " "
13935case "$sig_name_init" in
13936'') doinit=yes ;;
13937*) case "$sig_num_init" in
13938 ''|*,*) doinit=yes ;;
13939 esac ;;
13940esac
13941case "$doinit" in
13942yes)
13943 echo "Generating a list of signal names and numbers..." >&4
13944 . ./signal_cmd
13945 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13946 sig_name=`$awk 'BEGIN { printf "ZERO " }
13947 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13948 sig_num=`$awk 'BEGIN { printf "0 " }
13949 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13950 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13951 !/^NSIG/ { printf "\"%s\", ", $1 }
13952 END { printf "0\n" }' signal.lst`
13953 sig_num_init=`$awk 'BEGIN { printf "0, " }
13954 !/^NSIG/ { printf "%d, ", $2}
13955 END { printf "0\n"}' signal.lst`
13956 ;;
13957esac
13958echo "The following $sig_count signals are available:"
13959echo " "
13960echo $sig_name | $awk \
13961'BEGIN { linelen = 0 }
13962{
13963 for (i = 1; i <= NF; i++) {
13964 name = "SIG" $i " "
13965 linelen = linelen + length(name)
13966 if (linelen > 70) {
13967 printf "\n"
13968 linelen = length(name)
13969 }
13970 printf "%s", name
13971 }
13972 printf "\n"
13973}'
13974$rm -f signal signal.c signal.awk signal.lst signal_cmd
13975
13976echo " "
13977case "$sizetype" in
13978*_t) zzz="$sizetype" ;;
13979*) zzz="filesize" ;;
13980esac
13981echo "Checking the size of $zzz..." >&4
13982cat > try.c <<EOCP
13983#include <sys/types.h>
13984#include <stdio.h>
13985int main() {
13986 printf("%d\n", (int)sizeof($sizetype));
13987 exit(0);
13988}
13989EOCP
13990set try
13991if eval $compile_ok; then
13992 yyy=`./try`
13993 case "$yyy" in
13994 '') sizesize=4
13995 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13996 ;;
13997 *) sizesize=$yyy
13998 echo "Your $zzz size is $sizesize bytes."
13999 ;;
14000 esac
14001else
14002 sizesize=4
14003 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14004fi
14005
14006
14007: check for socklen_t
14008echo " "
14009echo "Checking to see if you have socklen_t..." >&4
14010$cat >try.c <<EOCP
14011#include <sys/types.h>
14012#$d_socket HAS_SOCKET
14013#ifdef HAS_SOCKET
14014#include <sys/socket.h>
14015#endif
14016int main() { socklen_t x = 16; }
14017EOCP
14018set try
14019if eval $compile; then
14020 val="$define"
14021 echo "You have socklen_t."
14022else
14023 val="$undef"
14024 echo "You do not have socklen_t."
14025 case "$sizetype" in
14026 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14027 esac
14028fi
14029$rm -f try try.*
14030set d_socklen_t
14031eval $setvar
14032
14033: check for type of the size argument to socket calls
14034case "$d_socket" in
14035"$define")
14036 $cat <<EOM
14037
14038Checking to see what type is the last argument of accept().
14039EOM
14040 hdrs="$define sys/types.h $d_socket sys/socket.h"
14041 yyy=''
14042 case "$d_socklen_t" in
14043 "$define") yyy="$yyy socklen_t"
14044 esac
14045 yyy="$yyy $sizetype int long unsigned"
14046 for xxx in $yyy; do
14047 case "$socksizetype" in
14048 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14049 if ./protochk "$try" $hdrs; then
14050 echo "Your system accepts '$xxx *' for the last argument of accept()."
14051 socksizetype="$xxx"
14052 fi
14053 ;;
14054 esac
14055 done
14056: In case none of those worked, prompt the user.
14057 case "$socksizetype" in
14058 '') rp='What is the type for socket address structure sizes?'
14059 dflt='int'
14060 . ./myread
14061 socksizetype=$ans
14062 ;;
14063 esac
14064 ;;
14065*) : no sockets, so pick relatively harmless default
14066 socksizetype='int'
14067 ;;
14068esac
14069
14070: see what type is used for signed size_t
14071set ssize_t ssizetype int stdio.h sys/types.h
14072eval $typedef
14073dflt="$ssizetype"
14074$cat > ssize.c <<EOM
14075#include <stdio.h>
14076#include <sys/types.h>
14077#define Size_t $sizetype
14078#define SSize_t $dflt
14079int main()
14080{
14081 if (sizeof(Size_t) == sizeof(SSize_t))
14082 printf("$dflt\n");
14083 else if (sizeof(Size_t) == sizeof(int))
14084 printf("int\n");
14085 else
14086 printf("long\n");
14087 exit(0);
14088}
14089EOM
14090echo " "
14091set ssize
14092if eval $compile_ok && ./ssize > /dev/null; then
14093 ssizetype=`./ssize`
14094 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14095else
14096 $cat >&4 <<EOM
14097Help! I can't compile and run the ssize_t test program: please enlighten me!
14098(This is probably a misconfiguration in your system or libraries, and
14099you really ought to fix it. Still, I'll try anyway.)
14100
14101I need a type that is the same size as $sizetype, but is guaranteed to
14102be signed. Common values are ssize_t, int and long.
14103
14104EOM
14105 rp="What signed type is the same size as $sizetype?"
14106 . ./myread
14107 ssizetype="$ans"
14108fi
14109$rm -f ssize ssize.*
14110
14111: see what type of char stdio uses.
14112echo " "
14113if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14114 echo "Your stdio uses unsigned chars." >&4
14115 stdchar="unsigned char"
14116else
14117 echo "Your stdio uses signed chars." >&4
14118 stdchar="char"
14119fi
14120
14121: see if time exists
14122echo " "
14123if test "X$d_time" = X -o X"$timetype" = X; then
14124 if set time val -f d_time; eval $csym; $val; then
14125 echo 'time() found.' >&4
14126 val="$define"
14127 rp="What is the type returned by time() on this system?"
14128 set time_t timetype long stdio.h sys/types.h
14129 eval $typedef_ask
14130 else
14131 echo 'time() not found, hope that will do.' >&4
14132 val="$undef"
14133 timetype='int';
14134 fi
14135 set d_time
14136 eval $setvar
14137fi
14138
14139: see what type uids are declared as in the kernel
14140echo " "
14141echo "Looking for the type for user ids returned by getuid()."
14142set uid_t uidtype xxx stdio.h sys/types.h
14143eval $typedef
14144case "$uidtype" in
14145xxx)
14146 xxx=`./findhdr sys/user.h`
14147 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14148 case $1 in
14149 unsigned) dflt="$1 $2" ;;
14150 *) dflt="$1" ;;
14151 esac
14152 ;;
14153*) dflt="$uidtype";;
14154esac
14155case "$uidtype" in
14156uid_t) echo "uid_t found." ;;
14157*) rp="What is the type for user ids returned by getuid()?"
14158 . ./myread
14159 uidtype="$ans"
14160 ;;
14161esac
14162
14163echo " "
14164case "$uidtype" in
14165*_t) zzz="$uidtype" ;;
14166*) zzz="uid" ;;
14167esac
14168echo "Checking the size of $zzz..." >&4
14169cat > try.c <<EOCP
14170#include <sys/types.h>
14171#include <stdio.h>
14172int main() {
14173 printf("%d\n", (int)sizeof($uidtype));
14174 exit(0);
14175}
14176EOCP
14177set try
14178if eval $compile_ok; then
14179 yyy=`./try`
14180 case "$yyy" in
14181 '') uidsize=4
14182 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14183 ;;
14184 *) uidsize=$yyy
14185 echo "Your $zzz is $uidsize bytes long."
14186 ;;
14187 esac
14188else
14189 uidsize=4
14190 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14191fi
14192
14193echo " "
14194case "$uidtype" in
14195*_t) zzz="$uidtype" ;;
14196*) zzz="uid" ;;
14197esac
14198echo "Checking the sign of $zzz..." >&4
14199cat > try.c <<EOCP
14200#include <sys/types.h>
14201#include <stdio.h>
14202int main() {
14203 $uidtype foo = -1;
14204 if (foo < 0)
14205 printf("-1\n");
14206 else
14207 printf("1\n");
14208}
14209EOCP
14210set try
14211if eval $compile; then
14212 yyy=`./try`
14213 case "$yyy" in
14214 '') uidsign=1
14215 echo "(I can't execute the test program--guessing unsigned.)" >&4
14216 ;;
14217 *) uidsign=$yyy
14218 case "$uidsign" in
14219 1) echo "Your $zzz is unsigned." ;;
14220 -1) echo "Your $zzz is signed." ;;
14221 esac
14222 ;;
14223 esac
14224else
14225 uidsign=1
14226 echo "(I can't compile the test program--guessing unsigned.)" >&4
14227fi
14228
14229
14230
14231echo " "
14232$echo "Checking the format string to be used for uids..." >&4
14233
14234case "$uidsign" in
14235-1) if $test X"$uidsize" = X"$ivsize"; then
14236 uidformat="$ivdformat"
14237 else
14238 if $test X"$uidsize" = X"$longsize"; then
14239 uidformat='"ld"'
14240 else
14241 if $test X"$uidsize" = X"$intsize"; then
14242 uidformat='"d"'
14243 else
14244 if $test X"$uidsize" = X"$shortsize"; then
14245 uidformat='"hd"'
14246 fi
14247 fi
14248 fi
14249 fi
14250 ;;
14251*) if $test X"$uidsize" = X"$uvsize"; then
14252 uidformat="$uvuformat"
14253 else
14254 if $test X"$uidsize" = X"$longsize"; then
14255 uidformat='"lu"'
14256 else
14257 if $test X"$uidsize" = X"$intsize"; then
14258 uidformat='"u"'
14259 else
14260 if $test X"$uidsize" = X"$shortsize"; then
14261 uidformat='"hu"'
14262 fi
14263 fi
14264 fi
14265 fi
14266 ;;
14267esac
14268
14269: see if dbm.h is available
14270: see if dbmclose exists
14271set dbmclose d_dbmclose
14272eval $inlibc
14273
14274case "$d_dbmclose" in
14275$define)
14276 set dbm.h i_dbm
14277 eval $inhdr
14278 case "$i_dbm" in
14279 $define)
14280 val="$undef"
14281 set i_rpcsvcdbm
14282 eval $setvar
14283 ;;
14284 *) set rpcsvc/dbm.h i_rpcsvcdbm
14285 eval $inhdr
14286 ;;
14287 esac
14288 ;;
14289*) echo "We won't be including <dbm.h>"
14290 val="$undef"
14291 set i_dbm
14292 eval $setvar
14293 val="$undef"
14294 set i_rpcsvcdbm
14295 eval $setvar
14296 ;;
14297esac
14298
14299: see if this is a sys/file.h system
14300val=''
14301set sys/file.h val
14302eval $inhdr
14303
14304: do we need to include sys/file.h ?
14305case "$val" in
14306"$define")
14307 echo " "
14308 if $h_sysfile; then
14309 val="$define"
14310 echo "We'll be including <sys/file.h>." >&4
14311 else
14312 val="$undef"
14313 echo "We won't be including <sys/file.h>." >&4
14314 fi
14315 ;;
14316*)
14317 h_sysfile=false
14318 ;;
14319esac
14320set i_sysfile
14321eval $setvar
14322
14323: see if fcntl.h is there
14324val=''
14325set fcntl.h val
14326eval $inhdr
14327
14328: see if we can include fcntl.h
14329case "$val" in
14330"$define")
14331 echo " "
14332 if $h_fcntl; then
14333 val="$define"
14334 echo "We'll be including <fcntl.h>." >&4
14335 else
14336 val="$undef"
14337 if $h_sysfile; then
14338 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14339 else
14340 echo "We won't be including <fcntl.h>." >&4
14341 fi
14342 fi
14343 ;;
14344*)
14345 h_fcntl=false
14346 val="$undef"
14347 ;;
14348esac
14349set i_fcntl
14350eval $setvar
14351
14352: see if this is a iconv.h system
14353set iconv.h i_iconv
14354eval $inhdr
14355
14356: see if this is a ieeefp.h system
14357set ieeefp.h i_ieeefp
14358eval $inhdr
14359
14360: see if this is a libutil.h system
14361set libutil.h i_libutil
14362eval $inhdr
14363
14364: see if locale.h is available
14365set locale.h i_locale
14366eval $inhdr
14367
14368: see if mach cthreads are available
14369if test "X$usethreads" = "X$define"; then
14370 set mach/cthreads.h i_machcthr
14371 eval $inhdr
14372else
14373 i_machcthr="$undef"
14374fi
14375
14376
14377
14378: see if this is a math.h system
14379set math.h i_math
14380eval $inhdr
14381
14382: see if this is a mntent.h system
14383set mntent.h i_mntent
14384eval $inhdr
14385
14386: see if ndbm.h is available
14387set ndbm.h t_ndbm
14388eval $inhdr
14389case "$t_ndbm" in
14390$define)
14391 : see if dbm_open exists
14392 set dbm_open d_dbm_open
14393 eval $inlibc
14394 case "$d_dbm_open" in
14395 $undef)
14396 t_ndbm="$undef"
14397 echo "We won't be including <ndbm.h>"
14398 ;;
14399 esac
14400 ;;
14401esac
14402val="$t_ndbm"
14403set i_ndbm
14404eval $setvar
14405
14406: see if net/errno.h is available
14407val=''
14408set net/errno.h val
14409eval $inhdr
14410
14411: Unfortunately, it causes problems on some systems. Arrgh.
14412case "$val" in
14413$define)
14414 cat > try.c <<'EOM'
14415#include <stdio.h>
14416#include <errno.h>
14417#include <net/errno.h>
14418int func()
14419{
14420 return ENOTSOCK;
14421}
14422EOM
14423 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14424 echo "We'll be including <net/errno.h>." >&4
14425 else
14426 echo "We won't be including <net/errno.h>." >&4
14427 val="$undef"
14428 fi
14429 $rm -f try.* try
14430 ;;
14431esac
14432set i_neterrno
14433eval $setvar
14434
14435: see if netinet/tcp.h is available
14436set netinet/tcp.h i_netinettcp
14437eval $inhdr
14438
14439: see if this is a poll.h system
14440set poll.h i_poll
14441eval $inhdr
14442
14443: see if this is a prot.h system
14444set prot.h i_prot
14445eval $inhdr
14446
14447echo " "
14448$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14449$cat <<'EOSH' > Cppsym.know
14450a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14451AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14452alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14453ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14454BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14455BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14456bull c cadmus clipper CMU COFF COMPILER_VERSION
14457concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14458CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14459Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14460FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14461GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14462H3050R H3050RX hbullx20 hcx host_mips
14463hp200 hp300 hp700 HP700 hp800 hp9000
14464hp9000s200 hp9000s300 hp9000s400 hp9000s500
14465hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14466i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14467iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14468INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14469LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14470LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14471Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14472LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14473M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14474M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14475M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14476MATH_HAS_NO_SIDE_EFFECTS
14477mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14478mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14479mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14480MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14481mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14482NetBSD news1500 news1700 news1800 news1900 news3700
14483news700 news800 news900 NeXT NLS ns16000 ns32000
14484ns32016 ns32332 ns32k nsc32000
14485OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14486pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14487pc532 pdp11 PGC PIC plexus PORTAR posix
14488POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14489POSIX_C_SOURCE POSIX_SOURCE POWER
14490PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14491riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14492SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14493sony sony_news sonyrisc sparc sparclite spectrum
14494stardent stdc STDC_EXT stratos sun sun3 sun386
14495Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14496SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14497SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14498sysV68 sysV88 Tek4132 Tek4300 titan
14499tower tower32 tower32_200 tower32_600 tower32_700
14500tower32_800 tower32_850 tss
14501u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14502ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14503unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14504Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14505XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14506XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14507z8000
14508EOSH
14509# Maybe put other stuff here too.
14510cat <<EOSH >>Cppsym.know
14511$osname
14512EOSH
14513./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14514./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14515$cat Cppsym.know > Cppsym.c
14516$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14517$rm -f Cppsym.a Cppsym.b Cppsym.c
14518cat <<EOSH > Cppsym
14519$startsh
14520if $test \$# -gt 0; then
14521 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14522 if $test -s Cppsym.got; then
14523 $rm -f Cppsym.got
14524 exit 0
14525 fi
14526 $rm -f Cppsym.got
14527 exit 1
14528else
14529 $tr " " "$trnl" | ./Cppsym.try
14530 exit 0
14531fi
14532EOSH
14533chmod +x Cppsym
14534$eunicefix Cppsym
14535cat <<EOSH > Cppsym.try
14536$startsh
14537cat <<'EOCP' > try.c
14538#include <stdio.h>
14539int main() {
14540EOCP
14541$awk \\
14542EOSH
14543cat <<'EOSH' >> Cppsym.try
14544'length($1) > 0 {
14545 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
14546 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
14547 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
14548 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
14549}' >> try.c
14550echo '}' >> try.c
14551EOSH
14552cat <<EOSH >> Cppsym.try
14553ccflags="$ccflags"
14554case "$osname-$gccversion" in
14555irix-) ccflags="\$ccflags -woff 1178" ;;
14556os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14557esac
7a282f6d 14558$cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
b4eb6b3d
JH
14559EOSH
14560chmod +x Cppsym.try
14561$eunicefix Cppsym.try
14562./Cppsym < Cppsym.know > Cppsym.true
14563: now check the C compiler for additional symbols
14564postprocess_cc_v=''
14565case "$osname" in
14566aix) postprocess_cc_v="|$tr , ' '" ;;
14567esac
14568$cat >ccsym <<EOS
14569$startsh
14570$cat >tmp.c <<EOF
14571extern int foo;
14572EOF
14573for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14574do
14575 case "\$i" in
14576 -D*) echo "\$i" | $sed 's/^-D//';;
14577 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14578 esac
14579done
14580$rm -f try.c
14581EOS
14582postprocess_cc_v=''
14583chmod +x ccsym
14584$eunicefix ccsym
14585./ccsym > ccsym1.raw
14586if $test -s ccsym1.raw; then
14587 $sort ccsym1.raw | $uniq >ccsym.raw
14588else
14589 mv ccsym1.raw ccsym.raw
14590fi
14591
14592$awk '/\=/ { print $0; next }
14593 { print $0"=1" }' ccsym.raw >ccsym.list
14594$awk '/\=/ { print $0; next }
14595 { print $0"=1" }' Cppsym.true >ccsym.true
14596$comm -13 ccsym.true ccsym.list >ccsym.own
14597$comm -12 ccsym.true ccsym.list >ccsym.com
14598$comm -23 ccsym.true ccsym.list >ccsym.cpp
14599also=''
14600if $test -z ccsym.raw; then
14601 echo "Your C compiler doesn't seem to define any symbols!" >&4
14602 echo " "
14603 echo "However, your C preprocessor defines the following symbols:"
14604 $cat Cppsym.true
14605 ccsymbols=''
14606 cppsymbols=`$cat Cppsym.true`
14607 cppsymbols=`echo $cppsymbols`
14608 cppccsymbols="$cppsymbols"
14609else
14610 if $test -s ccsym.com; then
14611 echo "Your C compiler and pre-processor define these symbols:"
14612 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14613 also='also '
14614 symbols='ones'
14615 cppccsymbols=`$cat ccsym.com`
14616 cppccsymbols=`echo $cppccsymbols`
14617 $test "$silent" || sleep 1
14618 fi
14619 if $test -s ccsym.cpp; then
14620 $test "$also" && echo " "
14621 echo "Your C pre-processor ${also}defines the following symbols:"
14622 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14623 also='further '
14624 cppsymbols=`$cat ccsym.cpp`
14625 cppsymbols=`echo $cppsymbols`
14626 $test "$silent" || sleep 1
14627 fi
14628 if $test -s ccsym.own; then
14629 $test "$also" && echo " "
14630 echo "Your C compiler ${also}defines the following cpp symbols:"
14631 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14632 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14633 ccsymbols=`$cat ccsym.own`
14634 ccsymbols=`echo $ccsymbols`
14635 $test "$silent" || sleep 1
14636 fi
14637fi
14638$rm -f ccsym* Cppsym.*
14639
14640: see if this is a termio system
14641val="$undef"
14642val2="$undef"
14643val3="$undef"
14644if $test `./findhdr termios.h`; then
14645 set tcsetattr i_termios
14646 eval $inlibc
14647 val3="$i_termios"
14648fi
14649echo " "
14650case "$val3" in
14651"$define") echo "You have POSIX termios.h... good!" >&4;;
14652*) if ./Cppsym pyr; then
14653 case "`/bin/universe`" in
14654 ucb) if $test `./findhdr sgtty.h`; then
14655 val2="$define"
14656 echo "<sgtty.h> found." >&4
14657 else
14658 echo "System is pyramid with BSD universe."
14659 echo "<sgtty.h> not found--you could have problems." >&4
14660 fi;;
14661 *) if $test `./findhdr termio.h`; then
14662 val="$define"
14663 echo "<termio.h> found." >&4
14664 else
14665 echo "System is pyramid with USG universe."
14666 echo "<termio.h> not found--you could have problems." >&4
14667 fi;;
14668 esac
14669 elif ./usg; then
14670 if $test `./findhdr termio.h`; then
14671 echo "<termio.h> found." >&4
14672 val="$define"
14673 elif $test `./findhdr sgtty.h`; then
14674 echo "<sgtty.h> found." >&4
14675 val2="$define"
14676 else
14677echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14678 fi
14679 else
14680 if $test `./findhdr sgtty.h`; then
14681 echo "<sgtty.h> found." >&4
14682 val2="$define"
14683 elif $test `./findhdr termio.h`; then
14684 echo "<termio.h> found." >&4
14685 val="$define"
14686 else
14687echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14688 fi
14689 fi;;
14690esac
14691set i_termio; eval $setvar
14692val=$val2; set i_sgtty; eval $setvar
14693val=$val3; set i_termios; eval $setvar
14694
14695: see if this is a shadow.h system
14696set shadow.h i_shadow
14697eval $inhdr
14698
14699: see if this is a socks.h system
14700set socks.h i_socks
14701eval $inhdr
14702
14703: see if stdarg is available
14704echo " "
14705if $test `./findhdr stdarg.h`; then
14706 echo "<stdarg.h> found." >&4
14707 valstd="$define"
14708else
14709 echo "<stdarg.h> NOT found." >&4
14710 valstd="$undef"
14711fi
14712
14713: see if varags is available
14714echo " "
14715if $test `./findhdr varargs.h`; then
14716 echo "<varargs.h> found." >&4
14717else
14718 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14719fi
14720
14721: set up the varargs testing programs
14722$cat > varargs.c <<EOP
14723#ifdef I_STDARG
14724#include <stdarg.h>
14725#endif
14726#ifdef I_VARARGS
14727#include <varargs.h>
14728#endif
14729
14730#ifdef I_STDARG
14731int f(char *p, ...)
14732#else
14733int f(va_alist)
14734va_dcl
14735#endif
14736{
14737 va_list ap;
14738#ifndef I_STDARG
14739 char *p;
14740#endif
14741#ifdef I_STDARG
14742 va_start(ap,p);
14743#else
14744 va_start(ap);
14745 p = va_arg(ap, char *);
14746#endif
14747 va_end(ap);
14748}
14749EOP
14750$cat > varargs <<EOP
14751$startsh
14752if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14753 echo "true"
14754else
14755 echo "false"
14756fi
14757$rm -f varargs$_o
14758EOP
14759chmod +x varargs
14760
14761: now check which varargs header should be included
14762echo " "
14763i_varhdr=''
14764case "$valstd" in
14765"$define")
14766 if `./varargs I_STDARG`; then
14767 val='stdarg.h'
14768 elif `./varargs I_VARARGS`; then
14769 val='varargs.h'
14770 fi
14771 ;;
14772*)
14773 if `./varargs I_VARARGS`; then
14774 val='varargs.h'
14775 fi
14776 ;;
14777esac
14778case "$val" in
14779'')
14780echo "I could not find the definition for va_dcl... You have problems..." >&4
14781 val="$undef"; set i_stdarg; eval $setvar
14782 val="$undef"; set i_varargs; eval $setvar
14783 ;;
14784*)
14785 set i_varhdr
14786 eval $setvar
14787 case "$i_varhdr" in
14788 stdarg.h)
14789 val="$define"; set i_stdarg; eval $setvar
14790 val="$undef"; set i_varargs; eval $setvar
14791 ;;
14792 varargs.h)
14793 val="$undef"; set i_stdarg; eval $setvar
14794 val="$define"; set i_varargs; eval $setvar
14795 ;;
14796 esac
14797 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14798esac
14799$rm -f varargs*
5f80c64f 14800
b4eb6b3d
JH
14801: see if stddef is available
14802set stddef.h i_stddef
14803eval $inhdr
923fc586 14804
b4eb6b3d
JH
14805: see if this is a sunmath.h system
14806set sunmath.h i_sunmath
14807eval $inhdr
5f80c64f 14808
b4eb6b3d
JH
14809: see if sys/access.h is available
14810set sys/access.h i_sysaccess
14811eval $inhdr
14812
14813: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14814set sys/filio.h i_sysfilio
14815eval $inhdr
14816echo " "
14817if $test `./findhdr sys/ioctl.h`; then
14818 val="$define"
14819 echo '<sys/ioctl.h> found.' >&4
14820else
14821 val="$undef"
14822 if $test $i_sysfilio = "$define"; then
14823 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 14824 else
b4eb6b3d
JH
14825 $test $i_sgtty = "$define" && xxx="sgtty.h"
14826 $test $i_termio = "$define" && xxx="termio.h"
14827 $test $i_termios = "$define" && xxx="termios.h"
14828echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14829 fi
14830fi
14831set i_sysioctl
14832eval $setvar
14833
14834
14835: see if this is a syslog.h system
14836set syslog.h i_syslog
14837eval $inhdr
14838
14839
14840: see if this is a sys/mode.h system
14841set sys/mode.h i_sysmode
14842eval $inhdr
14843
14844: see if sys/resource.h has to be included
14845set sys/resource.h i_sysresrc
14846eval $inhdr
14847
14848: see if sys/security.h is available
14849set sys/security.h i_syssecrt
14850eval $inhdr
14851
14852: see if this is a sys/statvfs.h system
14853set sys/statvfs.h i_sysstatvfs
14854eval $inhdr
14855
14856: see if this is a sys/uio.h system
14857set sys/uio.h i_sysuio
14858eval $inhdr
14859
14860: see if this is a sys/un.h system
14861set sys/un.h i_sysun
14862eval $inhdr
14863
14864
14865: see if this is a sys/utsname.h system
14866set sys/utsname.h i_sysutsname
14867eval $inhdr
14868
14869: see if this is a syswait system
14870set sys/wait.h i_syswait
14871eval $inhdr
14872
14873: see if this is a ustat.h system
14874set ustat.h i_ustat
14875eval $inhdr
14876
14877: see if this is an utime system
14878set utime.h i_utime
14879eval $inhdr
14880
14881: see if this is a values.h system
14882set values.h i_values
14883eval $inhdr
14884
14885: see if this is a vfork system
14886case "$d_vfork" in
14887"$define")
14888 set vfork.h i_vfork
14889 eval $inhdr
14890 ;;
14891*)
14892 i_vfork="$undef"
14893 ;;
14894esac
14895
14896: see if gdbm.h is available
14897set gdbm.h t_gdbm
14898eval $inhdr
14899case "$t_gdbm" in
14900$define)
14901 : see if gdbm_open exists
14902 set gdbm_open d_gdbm_open
14903 eval $inlibc
14904 case "$d_gdbm_open" in
14905 $undef)
14906 t_gdbm="$undef"
14907 echo "We won't be including <gdbm.h>"
5f80c64f 14908 ;;
b4eb6b3d
JH
14909 esac
14910 ;;
14911esac
14912val="$t_gdbm"
14913set i_gdbm
14914eval $setvar
14915
14916echo " "
14917echo "Looking for extensions..." >&4
14918: If we are using the old config.sh, known_extensions may contain
14919: old or inaccurate or duplicate values.
14920known_extensions=''
14921nonxs_extensions=''
14922: We do not use find because it might not be available.
14923: We do not just use MANIFEST because the user may have dropped
14924: some additional extensions into the source tree and expect them
14925: to be built.
14926
14927: Function to recursively find available extensions, ignoring DynaLoader
14928: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14929find_extensions='
14930 for xxx in *; do
14931 case "$xxx" in
14932 DynaLoader|dynaload) ;;
14933 *)
14934 if $test -f $xxx/$xxx.xs; then
14935 known_extensions="$known_extensions $1$xxx";
14936 elif $test -f $xxx/Makefile.PL; then
14937 nonxs_extensions="$nonxs_extensions $1$xxx";
14938 else
14939 if $test -d $xxx -a $# -lt 10; then
14940 set $1$xxx/ $*;
14941 cd $xxx;
14942 eval $find_extensions;
14943 cd ..;
14944 shift;
14945 fi;
14946 fi
14947 ;;
14948 esac;
14949 done'
14950tdir=`pwd`
14951cd $rsrc/ext
14952set X
14953shift
14954eval $find_extensions
14955set X $nonxs_extensions
14956shift
14957nonxs_extensions="$*"
14958set X $known_extensions
14959shift
14960known_extensions="$*"
14961cd $tdir
14962
14963: Now see which are supported on this system.
14964avail_ext=''
14965for xxx in $known_extensions ; do
14966 case "$xxx" in
14967 DB_File|db_file)
14968 case "$i_db" in
14969 $define) avail_ext="$avail_ext $xxx" ;;
14970 esac
14971 ;;
14972 GDBM_File|gdbm_fil)
14973 case "$i_gdbm" in
14974 $define) avail_ext="$avail_ext $xxx" ;;
14975 esac
14976 ;;
14977 NDBM_File|ndbm_fil)
14978 case "$i_ndbm" in
14979 $define)
14980 case "$osname-$use64bitint" in
14981 hpux-define)
14982 case "$libs" in
14983 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14984 esac
14985 ;;
14986 *) avail_ext="$avail_ext $xxx" ;;
14987 esac
14988 ;;
14989 esac
14990 ;;
14991 ODBM_File|odbm_fil)
14992 case "${i_dbm}${i_rpcsvcdbm}" in
14993 *"${define}"*)
14994 case "$osname-$use64bitint" in
14995 hpux-define)
14996 case "$libs" in
14997 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14998 esac
14999 ;;
15000 *) avail_ext="$avail_ext $xxx" ;;
15001 esac
15002 ;;
15003 esac
15004 ;;
15005 POSIX|posix)
15006 case "$useposix" in
15007 true|define|y) avail_ext="$avail_ext $xxx" ;;
15008 esac
15009 ;;
15010 Opcode|opcode)
15011 case "$useopcode" in
15012 true|define|y) avail_ext="$avail_ext $xxx" ;;
15013 esac
15014 ;;
15015 Socket|socket)
15016 case "$d_socket" in
15017 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15018 esac
15019 ;;
15020 Sys/Syslog|sys/syslog)
15021 : XXX syslog requires socket
15022 case "$d_socket" in
15023 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15024 esac
15025 ;;
15026 Thread|thread)
15027 case "$usethreads" in
15028 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15029 esac
15030 ;;
15031 IPC/SysV|ipc/sysv)
15032 : XXX Do we need a useipcsysv variable here
15033 case "${d_msg}${d_sem}${d_shm}" in
15034 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15035 esac
15036 ;;
15037 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
15038 ;;
15039 esac
b4eb6b3d 15040done
5f80c64f 15041
b4eb6b3d
JH
15042set X $avail_ext
15043shift
15044avail_ext="$*"
5f80c64f 15045
b4eb6b3d
JH
15046: Now see which nonxs extensions are supported on this system.
15047: For now assume all are.
15048nonxs_ext=''
15049for xxx in $nonxs_extensions ; do
15050 case "$xxx" in
15051 *) nonxs_ext="$nonxs_ext $xxx"
15052 ;;
15053 esac
15054done
5f80c64f 15055
b4eb6b3d
JH
15056set X $nonxs_ext
15057shift
15058nonxs_ext="$*"
15059
15060case $usedl in
15061$define)
15062 $cat <<EOM
15063A number of extensions are supplied with $package. You may choose to
15064compile these extensions for dynamic loading (the default), compile
15065them into the $package executable (static loading), or not include
15066them at all. Answer "none" to include no extensions.
15067Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
15068
15069EOM
b4eb6b3d
JH
15070 case "$dynamic_ext" in
15071 '') dflt="$avail_ext" ;;
15072 *) dflt="$dynamic_ext"
15073 # Perhaps we are reusing an old out-of-date config.sh.
15074 case "$hint" in
15075 previous)
15076 if test X"$dynamic_ext" != X"$avail_ext"; then
15077 $cat <<EOM
15078NOTICE: Your previous config.sh list may be incorrect.
15079The extensions now available to you are
15080 ${avail_ext}
15081but the default list from your previous config.sh is
15082 ${dynamic_ext}
9c839522 15083
b4eb6b3d
JH
15084EOM
15085 fi
9c839522
PM
15086 ;;
15087 esac
b4eb6b3d
JH
15088 ;;
15089 esac
5f80c64f 15090 case "$dflt" in
b4eb6b3d
JH
15091 '') dflt=none;;
15092 esac
15093 rp="What extensions do you wish to load dynamically?"
15094 . ./myread
15095 case "$ans" in
15096 none) dynamic_ext=' ' ;;
15097 *) dynamic_ext="$ans" ;;
5f80c64f 15098 esac
5f80c64f 15099
b4eb6b3d
JH
15100 case "$static_ext" in
15101 '')
15102 : Exclude those already listed in dynamic linking
15103 dflt=''
15104 for xxx in $avail_ext; do
15105 case " $dynamic_ext " in
15106 *" $xxx "*) ;;
15107 *) dflt="$dflt $xxx" ;;
15108 esac
15109 done
15110 set X $dflt
15111 shift
15112 dflt="$*"
15113 ;;
15114 *) dflt="$static_ext"
15115 ;;
15116 esac
9c839522 15117
b4eb6b3d
JH
15118 case "$dflt" in
15119 '') dflt=none;;
15120 esac
15121 rp="What extensions do you wish to load statically?"
15122 . ./myread
15123 case "$ans" in
15124 none) static_ext=' ' ;;
15125 *) static_ext="$ans" ;;
15126 esac
15127 ;;
15128*)
15129 $cat <<EOM
15130A number of extensions are supplied with $package. Answer "none"
15131to include no extensions.
15132Note that DynaLoader is always built and need not be mentioned here.
9c839522 15133
b4eb6b3d
JH
15134EOM
15135 case "$static_ext" in
15136 '') dflt="$avail_ext" ;;
15137 *) dflt="$static_ext"
15138 # Perhaps we are reusing an old out-of-date config.sh.
15139 case "$hint" in
15140 previous)
15141 if test X"$static_ext" != X"$avail_ext"; then
15142 $cat <<EOM
15143NOTICE: Your previous config.sh list may be incorrect.
15144The extensions now available to you are
15145 ${avail_ext}
15146but the default list from your previous config.sh is
15147 ${static_ext}
5f80c64f
JH
15148
15149EOM
b4eb6b3d
JH
15150 fi
15151 ;;
15152 esac
15153 ;;
15154 esac
15155 : Exclude those that are not xs extensions
15156 case "$dflt" in
15157 '') dflt=none;;
15158 esac
15159 rp="What extensions do you wish to include?"
15160 . ./myread
15161 case "$ans" in
15162 none) static_ext=' ' ;;
15163 *) static_ext="$ans" ;;
15164 esac
15165 ;;
5f80c64f
JH
15166esac
15167
b4eb6b3d
JH
15168set X $dynamic_ext $static_ext $nonxs_ext
15169shift
15170extensions="$*"
15171
9c839522
PM
15172: Remove libraries needed only for extensions
15173: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15174case "$usedl" in
15175$define|true|[yY]*)
15176 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15177 shift
15178 perllibs="$*"
15179 ;;
15180*) perllibs="$libs"
15181 ;;
15182esac
5f80c64f
JH
15183
15184: Remove build directory name from cppstdin so it can be used from
15185: either the present location or the final installed location.
15186echo " "
15187: Get out of the UU directory to get correct path name.
15188cd ..
15189case "$cppstdin" in
15190`pwd`/cppstdin)
15191 echo "Stripping down cppstdin path name"
15192 cppstdin=cppstdin
15193 ;;
15194esac
15195cd UU
15196
15197: end of configuration questions
15198echo " "
15199echo "End of configuration questions."
15200echo " "
15201
15202: back to where it started
15203if test -d ../UU; then
15204 cd ..
15205fi
15206
15207: configuration may be patched via a 'config.over' file
15208if $test -f config.over; then
15209 echo " "
15210 dflt=y
15211 rp='I see a config.over file. Do you wish to load it?'
15212 . UU/myread
15213 case "$ans" in
15214 n*) echo "OK, I'll ignore it.";;
15215 *) . ./config.over
15216 echo "Configuration override changes have been loaded."
15217 ;;
15218 esac
15219fi
15220
15221: in case they want portability, strip down executable paths
15222case "$d_portable" in
15223"$define")
15224 echo " "
15225 echo "Stripping down executable paths..." >&4
15226 for file in $loclist $trylist; do
534ac15a
JH
15227 eval temp=\$$file
15228 eval $file=`basename $temp`
5f80c64f
JH
15229 done
15230 ;;
15231esac
15232
15233: create config.sh file
15234echo " "
15235echo "Creating config.sh..." >&4
15236$spitshell <<EOT >config.sh
15237$startsh
15238#
15239# This file was produced by running the Configure script. It holds all the
15240# definitions figured out by Configure. Should you modify one of these values,
15241# do not forget to propagate your changes by running "Configure -der". You may
15242# instead choose to run each of the .SH files by yourself, or "Configure -S".
15243#
15244
15245# Package name : $package
15246# Source directory : $src
15247# Configuration time: $cf_time
15248# Configured by : $cf_by
15249# Target system : $myuname
15250
15251Author='$Author'
15252Date='$Date'
15253Header='$Header'
15254Id='$Id'
15255Locker='$Locker'
15256Log='$Log'
15257Mcc='$Mcc'
15258RCSfile='$RCSfile'
15259Revision='$Revision'
15260Source='$Source'
15261State='$State'
15262_a='$_a'
15263_exe='$_exe'
15264_o='$_o'
b4eb6b3d
JH
15265afs='$afs'
15266alignbytes='$alignbytes'
15267ansi2knr='$ansi2knr'
15268aphostname='$aphostname'
15269api_revision='$api_revision'
15270api_subversion='$api_subversion'
15271api_version='$api_version'
15272api_versionstring='$api_versionstring'
5f80c64f 15273ar='$ar'
b4eb6b3d
JH
15274archlib='$archlib'
15275archlibexp='$archlibexp'
15276archname64='$archname64'
15277archname='$archname'
5f80c64f
JH
15278archobjs='$archobjs'
15279awk='$awk'
b4eb6b3d 15280baserev='$baserev'
5f80c64f 15281bash='$bash'
b4eb6b3d
JH
15282bin='$bin'
15283bincompat5005='$bincompat5005'
15284binexp='$binexp'
5f80c64f
JH
15285bison='$bison'
15286byacc='$byacc'
b4eb6b3d 15287byteorder='$byteorder'
5f80c64f 15288c='$c'
b4eb6b3d 15289castflags='$castflags'
5f80c64f
JH
15290cat='$cat'
15291cc='$cc'
15292cccdlflags='$cccdlflags'
15293ccdlflags='$ccdlflags'
15294ccflags='$ccflags'
b4eb6b3d 15295ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 15296ccname='$ccname'
b4eb6b3d 15297ccsymbols='$ccsymbols'
6b356c8e 15298ccversion='$ccversion'
5f80c64f 15299cf_by='$cf_by'
b4eb6b3d 15300cf_email='$cf_email'
5f80c64f 15301cf_time='$cf_time'
b4eb6b3d 15302charsize='$charsize'
5f80c64f
JH
15303chgrp='$chgrp'
15304chmod='$chmod'
15305chown='$chown'
b4eb6b3d 15306clocktype='$clocktype'
5f80c64f
JH
15307comm='$comm'
15308compress='$compress'
15309contains='$contains'
15310cp='$cp'
15311cpio='$cpio'
15312cpp='$cpp'
b4eb6b3d
JH
15313cpp_stuff='$cpp_stuff'
15314cppccsymbols='$cppccsymbols'
5f80c64f
JH
15315cppflags='$cppflags'
15316cpplast='$cpplast'
15317cppminus='$cppminus'
15318cpprun='$cpprun'
15319cppstdin='$cppstdin'
b4eb6b3d
JH
15320cppsymbols='$cppsymbols'
15321crosscompile='$crosscompile'
15322cryptlib='$cryptlib'
5f80c64f 15323csh='$csh'
b4eb6b3d
JH
15324d_Gconvert='$d_Gconvert'
15325d_PRIEUldbl='$d_PRIEUldbl'
15326d_PRIFUldbl='$d_PRIFUldbl'
15327d_PRIGUldbl='$d_PRIGUldbl'
15328d_PRIXU64='$d_PRIXU64'
15329d_PRId64='$d_PRId64'
15330d_PRIeldbl='$d_PRIeldbl'
15331d_PRIfldbl='$d_PRIfldbl'
15332d_PRIgldbl='$d_PRIgldbl'
15333d_PRIi64='$d_PRIi64'
15334d_PRIo64='$d_PRIo64'
15335d_PRIu64='$d_PRIu64'
15336d_PRIx64='$d_PRIx64'
15337d_SCNfldbl='$d_SCNfldbl'
15338d_access='$d_access'
15339d_accessx='$d_accessx'
15340d_alarm='$d_alarm'
15341d_archlib='$d_archlib'
15342d_atolf='$d_atolf'
15343d_atoll='$d_atoll'
15344d_attribut='$d_attribut'
15345d_bcmp='$d_bcmp'
15346d_bcopy='$d_bcopy'
15347d_bincompat5005='$d_bincompat5005'
5f80c64f 15348d_bsd='$d_bsd'
b4eb6b3d
JH
15349d_bsdgetpgrp='$d_bsdgetpgrp'
15350d_bsdsetpgrp='$d_bsdsetpgrp'
15351d_bzero='$d_bzero'
15352d_casti32='$d_casti32'
15353d_castneg='$d_castneg'
15354d_charvspr='$d_charvspr'
15355d_chown='$d_chown'
15356d_chroot='$d_chroot'
15357d_chsize='$d_chsize'
15358d_closedir='$d_closedir'
15359d_const='$d_const'
15360d_crypt='$d_crypt'
15361d_csh='$d_csh'
15362d_cuserid='$d_cuserid'
15363d_dbl_dig='$d_dbl_dig'
15364d_difftime='$d_difftime'
15365d_dirnamlen='$d_dirnamlen'
15366d_dlerror='$d_dlerror'
5f80c64f 15367d_dlopen='$d_dlopen'
b4eb6b3d
JH
15368d_dlsymun='$d_dlsymun'
15369d_dosuid='$d_dosuid'
15370d_drand48proto='$d_drand48proto'
15371d_dup2='$d_dup2'
15372d_eaccess='$d_eaccess'
15373d_endgrent='$d_endgrent'
15374d_endhent='$d_endhent'
15375d_endnent='$d_endnent'
15376d_endpent='$d_endpent'
15377d_endpwent='$d_endpwent'
15378d_endsent='$d_endsent'
15379d_eofnblk='$d_eofnblk'
5f80c64f 15380d_eunice='$d_eunice'
b4eb6b3d
JH
15381d_fchmod='$d_fchmod'
15382d_fchown='$d_fchown'
15383d_fcntl='$d_fcntl'
15384d_fd_macros='$d_fd_macros'
15385d_fd_set='$d_fd_set'
15386d_fds_bits='$d_fds_bits'
15387d_fgetpos='$d_fgetpos'
15388d_flexfnam='$d_flexfnam'
15389d_flock='$d_flock'
15390d_fork='$d_fork'
15391d_fpathconf='$d_fpathconf'
15392d_fpos64_t='$d_fpos64_t'
15393d_frexpl='$d_frexpl'
15394d_fs_data_s='$d_fs_data_s'
15395d_fseeko='$d_fseeko'
15396d_fsetpos='$d_fsetpos'
15397d_fstatfs='$d_fstatfs'
15398d_fstatvfs='$d_fstatvfs'
15399d_ftello='$d_ftello'
15400d_ftime='$d_ftime'
15401d_getcwd='$d_getcwd'
15402d_getespwnam='$d_getespwnam'
15403d_getfsstat='$d_getfsstat'
15404d_getgrent='$d_getgrent'
15405d_getgrps='$d_getgrps'
15406d_gethbyaddr='$d_gethbyaddr'
15407d_gethbyname='$d_gethbyname'
15408d_gethent='$d_gethent'
15409d_gethname='$d_gethname'
15410d_gethostprotos='$d_gethostprotos'
15411d_getlogin='$d_getlogin'
15412d_getmnt='$d_getmnt'
15413d_getmntent='$d_getmntent'
15414d_getnbyaddr='$d_getnbyaddr'
15415d_getnbyname='$d_getnbyname'
15416d_getnent='$d_getnent'
15417d_getnetprotos='$d_getnetprotos'
15418d_getpbyname='$d_getpbyname'
15419d_getpbynumber='$d_getpbynumber'
15420d_getpent='$d_getpent'
15421d_getpgid='$d_getpgid'
15422d_getpgrp2='$d_getpgrp2'
15423d_getpgrp='$d_getpgrp'
15424d_getppid='$d_getppid'
15425d_getprior='$d_getprior'
15426d_getprotoprotos='$d_getprotoprotos'
15427d_getprpwnam='$d_getprpwnam'
15428d_getpwent='$d_getpwent'
15429d_getsbyname='$d_getsbyname'
15430d_getsbyport='$d_getsbyport'
15431d_getsent='$d_getsent'
15432d_getservprotos='$d_getservprotos'
15433d_getspnam='$d_getspnam'
15434d_gettimeod='$d_gettimeod'
5f80c64f 15435d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
15436d_grpasswd='$d_grpasswd'
15437d_hasmntopt='$d_hasmntopt'
15438d_htonl='$d_htonl'
15439d_iconv='$d_iconv'
15440d_index='$d_index'
15441d_inetaton='$d_inetaton'
15442d_int64_t='$d_int64_t'
15443d_isascii='$d_isascii'
15444d_isnan='$d_isnan'
15445d_isnanl='$d_isnanl'
15446d_killpg='$d_killpg'
15447d_lchown='$d_lchown'
15448d_ldbl_dig='$d_ldbl_dig'
15449d_link='$d_link'
15450d_locconv='$d_locconv'
15451d_lockf='$d_lockf'
15452d_longdbl='$d_longdbl'
15453d_longlong='$d_longlong'
15454d_lseekproto='$d_lseekproto'
15455d_lstat='$d_lstat'
15456d_madvise='$d_madvise'
15457d_mblen='$d_mblen'
15458d_mbstowcs='$d_mbstowcs'
15459d_mbtowc='$d_mbtowc'
15460d_memchr='$d_memchr'
15461d_memcmp='$d_memcmp'
15462d_memcpy='$d_memcpy'
15463d_memmove='$d_memmove'
15464d_memset='$d_memset'
15465d_mkdir='$d_mkdir'
15466d_mkdtemp='$d_mkdtemp'
15467d_mkfifo='$d_mkfifo'
15468d_mkstemp='$d_mkstemp'
15469d_mkstemps='$d_mkstemps'
15470d_mktime='$d_mktime'
15471d_mmap='$d_mmap'
15472d_modfl='$d_modfl'
15473d_mprotect='$d_mprotect'
15474d_msg='$d_msg'
15475d_msg_ctrunc='$d_msg_ctrunc'
15476d_msg_dontroute='$d_msg_dontroute'
15477d_msg_oob='$d_msg_oob'
15478d_msg_peek='$d_msg_peek'
15479d_msg_proxy='$d_msg_proxy'
15480d_msgctl='$d_msgctl'
15481d_msgget='$d_msgget'
15482d_msgrcv='$d_msgrcv'
15483d_msgsnd='$d_msgsnd'
15484d_msync='$d_msync'
15485d_munmap='$d_munmap'
15486d_mymalloc='$d_mymalloc'
15487d_nice='$d_nice'
15488d_nv_preserves_uv='$d_nv_preserves_uv'
15489d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15490d_off64_t='$d_off64_t'
15491d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15492d_oldpthreads='$d_oldpthreads'
15493d_oldsock='$d_oldsock'
15494d_open3='$d_open3'
15495d_pathconf='$d_pathconf'
15496d_pause='$d_pause'
15497d_perl_otherlibdirs='$d_perl_otherlibdirs'
15498d_phostname='$d_phostname'
15499d_pipe='$d_pipe'
15500d_poll='$d_poll'
5f80c64f 15501d_portable='$d_portable'
b4eb6b3d
JH
15502d_pthread_yield='$d_pthread_yield'
15503d_pwage='$d_pwage'
15504d_pwchange='$d_pwchange'
15505d_pwclass='$d_pwclass'
15506d_pwcomment='$d_pwcomment'
15507d_pwexpire='$d_pwexpire'
15508d_pwgecos='$d_pwgecos'
15509d_pwpasswd='$d_pwpasswd'
15510d_pwquota='$d_pwquota'
15511d_qgcvt='$d_qgcvt'
15512d_quad='$d_quad'
15513d_readdir='$d_readdir'
15514d_readlink='$d_readlink'
15515d_rename='$d_rename'
15516d_rewinddir='$d_rewinddir'
15517d_rmdir='$d_rmdir'
15518d_safebcpy='$d_safebcpy'
15519d_safemcpy='$d_safemcpy'
15520d_sanemcmp='$d_sanemcmp'
15521d_sched_yield='$d_sched_yield'
15522d_scm_rights='$d_scm_rights'
15523d_seekdir='$d_seekdir'
15524d_select='$d_select'
15525d_sem='$d_sem'
15526d_semctl='$d_semctl'
15527d_semctl_semid_ds='$d_semctl_semid_ds'
15528d_semctl_semun='$d_semctl_semun'
15529d_semget='$d_semget'
15530d_semop='$d_semop'
15531d_setegid='$d_setegid'
15532d_seteuid='$d_seteuid'
15533d_setgrent='$d_setgrent'
15534d_setgrps='$d_setgrps'
15535d_sethent='$d_sethent'
15536d_setlinebuf='$d_setlinebuf'
15537d_setlocale='$d_setlocale'
15538d_setnent='$d_setnent'
15539d_setpent='$d_setpent'
15540d_setpgid='$d_setpgid'
15541d_setpgrp2='$d_setpgrp2'
15542d_setpgrp='$d_setpgrp'
15543d_setprior='$d_setprior'
15544d_setproctitle='$d_setproctitle'
15545d_setpwent='$d_setpwent'
15546d_setregid='$d_setregid'
15547d_setresgid='$d_setresgid'
15548d_setresuid='$d_setresuid'
15549d_setreuid='$d_setreuid'
15550d_setrgid='$d_setrgid'
15551d_setruid='$d_setruid'
15552d_setsent='$d_setsent'
15553d_setsid='$d_setsid'
15554d_setvbuf='$d_setvbuf'
15555d_sfio='$d_sfio'
15556d_shm='$d_shm'
15557d_shmat='$d_shmat'
15558d_shmatprototype='$d_shmatprototype'
15559d_shmctl='$d_shmctl'
15560d_shmdt='$d_shmdt'
15561d_shmget='$d_shmget'
15562d_sigaction='$d_sigaction'
15563d_sigsetjmp='$d_sigsetjmp'
15564d_socket='$d_socket'
15565d_socklen_t='$d_socklen_t'
15566d_sockpair='$d_sockpair'
15567d_socks5_init='$d_socks5_init'
15568d_sqrtl='$d_sqrtl'
15569d_statblks='$d_statblks'
15570d_statfs_f_flags='$d_statfs_f_flags'
15571d_statfs_s='$d_statfs_s'
15572d_statvfs='$d_statvfs'
15573d_stdio_cnt_lval='$d_stdio_cnt_lval'
15574d_stdio_ptr_lval='$d_stdio_ptr_lval'
15575d_stdio_stream_array='$d_stdio_stream_array'
15576d_stdiobase='$d_stdiobase'
15577d_stdstdio='$d_stdstdio'
15578d_strchr='$d_strchr'
15579d_strcoll='$d_strcoll'
15580d_strctcpy='$d_strctcpy'
15581d_strerrm='$d_strerrm'
15582d_strerror='$d_strerror'
15583d_strtod='$d_strtod'
15584d_strtol='$d_strtol'
15585d_strtold='$d_strtold'
15586d_strtoll='$d_strtoll'
15587d_strtoul='$d_strtoul'
15588d_strtoull='$d_strtoull'
15589d_strtouq='$d_strtouq'
15590d_strxfrm='$d_strxfrm'
15591d_suidsafe='$d_suidsafe'
15592d_symlink='$d_symlink'
15593d_syscall='$d_syscall'
15594d_sysconf='$d_sysconf'
15595d_sysernlst='$d_sysernlst'
15596d_syserrlst='$d_syserrlst'
15597d_system='$d_system'
15598d_tcgetpgrp='$d_tcgetpgrp'
15599d_tcsetpgrp='$d_tcsetpgrp'
15600d_telldir='$d_telldir'
15601d_telldirproto='$d_telldirproto'
15602d_time='$d_time'
15603d_times='$d_times'
15604d_truncate='$d_truncate'
15605d_tzname='$d_tzname'
15606d_umask='$d_umask'
15607d_uname='$d_uname'
15608d_union_semun='$d_union_semun'
15609d_ustat='$d_ustat'
15610d_vendorarch='$d_vendorarch'
15611d_vendorbin='$d_vendorbin'
15612d_vendorlib='$d_vendorlib'
15613d_vfork='$d_vfork'
15614d_void_closedir='$d_void_closedir'
15615d_voidsig='$d_voidsig'
15616d_voidtty='$d_voidtty'
15617d_volatile='$d_volatile'
15618d_vprintf='$d_vprintf'
15619d_wait4='$d_wait4'
15620d_waitpid='$d_waitpid'
15621d_wcstombs='$d_wcstombs'
15622d_wctomb='$d_wctomb'
5f80c64f
JH
15623d_xenix='$d_xenix'
15624date='$date'
b4eb6b3d
JH
15625db_hashtype='$db_hashtype'
15626db_prefixtype='$db_prefixtype'
15627defvoidused='$defvoidused'
15628direntrytype='$direntrytype'
15629dlext='$dlext'
5f80c64f 15630dlsrc='$dlsrc'
b4eb6b3d
JH
15631doublesize='$doublesize'
15632drand01='$drand01'
15633dynamic_ext='$dynamic_ext'
15634eagain='$eagain'
15635ebcdic='$ebcdic'
5f80c64f
JH
15636echo='$echo'
15637egrep='$egrep'
15638emacs='$emacs'
15639eunicefix='$eunicefix'
15640exe_ext='$exe_ext'
15641expr='$expr'
b4eb6b3d
JH
15642extensions='$extensions'
15643fflushNULL='$fflushNULL'
15644fflushall='$fflushall'
5f80c64f
JH
15645find='$find'
15646firstmakefile='$firstmakefile'
15647flex='$flex'
b4eb6b3d
JH
15648fpossize='$fpossize'
15649fpostype='$fpostype'
15650freetype='$freetype'
15651full_ar='$full_ar'
15652full_csh='$full_csh'
15653full_sed='$full_sed'
5b463ca7 15654gccosandvers='$gccosandvers'
5f80c64f 15655gccversion='$gccversion'
b4eb6b3d
JH
15656gidformat='$gidformat'
15657gidsign='$gidsign'
15658gidsize='$gidsize'
15659gidtype='$gidtype'
5f80c64f
JH
15660glibpth='$glibpth'
15661grep='$grep'
b4eb6b3d
JH
15662groupcat='$groupcat'
15663groupstype='$groupstype'
5f80c64f 15664gzip='$gzip'
b4eb6b3d
JH
15665h_fcntl='$h_fcntl'
15666h_sysfile='$h_sysfile'
5f80c64f 15667hint='$hint'
b4eb6b3d
JH
15668hostcat='$hostcat'
15669i16size='$i16size'
15670i16type='$i16type'
15671i32size='$i32size'
15672i32type='$i32type'
15673i64size='$i64size'
15674i64type='$i64type'
15675i8size='$i8size'
15676i8type='$i8type'
15677i_arpainet='$i_arpainet'
15678i_bsdioctl='$i_bsdioctl'
15679i_db='$i_db'
15680i_dbm='$i_dbm'
15681i_dirent='$i_dirent'
5f80c64f 15682i_dld='$i_dld'
b4eb6b3d
JH
15683i_dlfcn='$i_dlfcn'
15684i_fcntl='$i_fcntl'
15685i_float='$i_float'
15686i_gdbm='$i_gdbm'
15687i_grp='$i_grp'
15688i_iconv='$i_iconv'
15689i_ieeefp='$i_ieeefp'
15690i_inttypes='$i_inttypes'
15691i_libutil='$i_libutil'
15692i_limits='$i_limits'
15693i_locale='$i_locale'
15694i_machcthr='$i_machcthr'
15695i_malloc='$i_malloc'
15696i_math='$i_math'
15697i_memory='$i_memory'
15698i_mntent='$i_mntent'
15699i_ndbm='$i_ndbm'
15700i_netdb='$i_netdb'
15701i_neterrno='$i_neterrno'
15702i_netinettcp='$i_netinettcp'
15703i_niin='$i_niin'
15704i_poll='$i_poll'
15705i_prot='$i_prot'
15706i_pthread='$i_pthread'
15707i_pwd='$i_pwd'
15708i_rpcsvcdbm='$i_rpcsvcdbm'
15709i_sfio='$i_sfio'
15710i_sgtty='$i_sgtty'
15711i_shadow='$i_shadow'
15712i_socks='$i_socks'
15713i_stdarg='$i_stdarg'
15714i_stddef='$i_stddef'
15715i_stdlib='$i_stdlib'
15716i_string='$i_string'
15717i_sunmath='$i_sunmath'
15718i_sysaccess='$i_sysaccess'
15719i_sysdir='$i_sysdir'
15720i_sysfile='$i_sysfile'
15721i_sysfilio='$i_sysfilio'
15722i_sysin='$i_sysin'
15723i_sysioctl='$i_sysioctl'
15724i_syslog='$i_syslog'
15725i_sysmman='$i_sysmman'
15726i_sysmode='$i_sysmode'
15727i_sysmount='$i_sysmount'
15728i_sysndir='$i_sysndir'
15729i_sysparam='$i_sysparam'
15730i_sysresrc='$i_sysresrc'
15731i_syssecrt='$i_syssecrt'
15732i_sysselct='$i_sysselct'
15733i_syssockio='$i_syssockio'
15734i_sysstat='$i_sysstat'
15735i_sysstatfs='$i_sysstatfs'
15736i_sysstatvfs='$i_sysstatvfs'
15737i_systime='$i_systime'
15738i_systimek='$i_systimek'
15739i_systimes='$i_systimes'
15740i_systypes='$i_systypes'
15741i_sysuio='$i_sysuio'
15742i_sysun='$i_sysun'
15743i_sysutsname='$i_sysutsname'
15744i_sysvfs='$i_sysvfs'
15745i_syswait='$i_syswait'
15746i_termio='$i_termio'
15747i_termios='$i_termios'
15748i_time='$i_time'
15749i_unistd='$i_unistd'
15750i_ustat='$i_ustat'
15751i_utime='$i_utime'
15752i_values='$i_values'
15753i_varargs='$i_varargs'
15754i_varhdr='$i_varhdr'
15755i_vfork='$i_vfork'
5f80c64f 15756ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
15757inc_version_list='$inc_version_list'
15758inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
15759incpath='$incpath'
15760inews='$inews'
b4eb6b3d
JH
15761installarchlib='$installarchlib'
15762installbin='$installbin'
15763installman1dir='$installman1dir'
15764installman3dir='$installman3dir'
15765installprefix='$installprefix'
15766installprefixexp='$installprefixexp'
15767installprivlib='$installprivlib'
15768installscript='$installscript'
15769installsitearch='$installsitearch'
15770installsitebin='$installsitebin'
15771installsitelib='$installsitelib'
15772installstyle='$installstyle'
15773installusrbinperl='$installusrbinperl'
15774installvendorarch='$installvendorarch'
15775installvendorbin='$installvendorbin'
15776installvendorlib='$installvendorlib'
15777intsize='$intsize'
15778ivdformat='$ivdformat'
15779ivsize='$ivsize'
15780ivtype='$ivtype'
15781known_extensions='$known_extensions'
5f80c64f 15782ksh='$ksh'
5f80c64f
JH
15783ld='$ld'
15784lddlflags='$lddlflags'
15785ldflags='$ldflags'
b4eb6b3d
JH
15786ldflags_uselargefiles='$ldflags_uselargefiles'
15787ldlibpthname='$ldlibpthname'
5f80c64f
JH
15788less='$less'
15789lib_ext='$lib_ext'
15790libc='$libc'
b4eb6b3d 15791libperl='$libperl'
5f80c64f
JH
15792libpth='$libpth'
15793libs='$libs'
43999f95
JH
15794libsdirs='$libsdirs'
15795libsfiles='$libsfiles'
15796libsfound='$libsfound'
13b3f787 15797libspath='$libspath'
5f80c64f 15798libswanted='$libswanted'
b4eb6b3d 15799libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
15800line='$line'
15801lint='$lint'
15802lkflags='$lkflags'
15803ln='$ln'
15804lns='$lns'
15805locincpth='$locincpth'
15806loclibpth='$loclibpth'
b4eb6b3d
JH
15807longdblsize='$longdblsize'
15808longlongsize='$longlongsize'
15809longsize='$longsize'
5f80c64f
JH
15810lp='$lp'
15811lpr='$lpr'
15812ls='$ls'
b4eb6b3d
JH
15813lseeksize='$lseeksize'
15814lseektype='$lseektype'
5f80c64f
JH
15815mail='$mail'
15816mailx='$mailx'
15817make='$make'
15818make_set_make='$make_set_make'
b4eb6b3d
JH
15819mallocobj='$mallocobj'
15820mallocsrc='$mallocsrc'
15821malloctype='$malloctype'
15822man1dir='$man1dir'
15823man1direxp='$man1direxp'
15824man1ext='$man1ext'
15825man3dir='$man3dir'
15826man3direxp='$man3direxp'
15827man3ext='$man3ext'
5f80c64f
JH
15828mips_type='$mips_type'
15829mkdir='$mkdir'
b4eb6b3d
JH
15830mmaptype='$mmaptype'
15831modetype='$modetype'
5f80c64f 15832more='$more'
b4eb6b3d 15833multiarch='$multiarch'
5f80c64f 15834mv='$mv'
b4eb6b3d
JH
15835myarchname='$myarchname'
15836mydomain='$mydomain'
15837myhostname='$myhostname'
5f80c64f
JH
15838myuname='$myuname'
15839n='$n'
b4eb6b3d
JH
15840netdb_hlen_type='$netdb_hlen_type'
15841netdb_host_type='$netdb_host_type'
15842netdb_name_type='$netdb_name_type'
15843netdb_net_type='$netdb_net_type'
5f80c64f
JH
15844nm='$nm'
15845nm_opt='$nm_opt'
15846nm_so_opt='$nm_so_opt'
b4eb6b3d 15847nonxs_ext='$nonxs_ext'
5f80c64f 15848nroff='$nroff'
b4eb6b3d
JH
15849nvEUformat='$nvEUformat'
15850nvFUformat='$nvFUformat'
15851nvGUformat='$nvGUformat'
15852nveformat='$nveformat'
15853nvfformat='$nvfformat'
15854nvgformat='$nvgformat'
15855nvsize='$nvsize'
15856nvtype='$nvtype'
15857o_nonblock='$o_nonblock'
5f80c64f 15858obj_ext='$obj_ext'
b4eb6b3d 15859old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 15860optimize='$optimize'
b4eb6b3d 15861orderlib='$orderlib'
5f80c64f
JH
15862osname='$osname'
15863osvers='$osvers'
b4eb6b3d 15864otherlibdirs='$otherlibdirs'
5f80c64f 15865package='$package'
b4eb6b3d
JH
15866pager='$pager'
15867passcat='$passcat'
15868patchlevel='$patchlevel'
5f80c64f 15869path_sep='$path_sep'
b4eb6b3d 15870perl5='$perl5'
5f80c64f 15871perl='$perl'
b4eb6b3d 15872perladmin='$perladmin'
9c839522 15873perllibs='$perllibs'
b4eb6b3d 15874perlpath='$perlpath'
5f80c64f 15875pg='$pg'
b4eb6b3d
JH
15876phostname='$phostname'
15877pidtype='$pidtype'
5f80c64f 15878plibpth='$plibpth'
b4eb6b3d 15879pm_apiversion='$pm_apiversion'
5f80c64f
JH
15880pmake='$pmake'
15881pr='$pr'
b4eb6b3d
JH
15882prefix='$prefix'
15883prefixexp='$prefixexp'
15884privlib='$privlib'
15885privlibexp='$privlibexp'
15886prototype='$prototype'
15887ptrsize='$ptrsize'
15888quadkind='$quadkind'
15889quadtype='$quadtype'
15890randbits='$randbits'
15891randfunc='$randfunc'
15892randseedtype='$randseedtype'
15893ranlib='$ranlib'
15894rd_nodata='$rd_nodata'
15895revision='$revision'
5f80c64f
JH
15896rm='$rm'
15897rmail='$rmail'
15898runnm='$runnm'
b4eb6b3d
JH
15899sPRIEUldbl='$sPRIEUldbl'
15900sPRIFUldbl='$sPRIFUldbl'
15901sPRIGUldbl='$sPRIGUldbl'
15902sPRIXU64='$sPRIXU64'
15903sPRId64='$sPRId64'
15904sPRIeldbl='$sPRIeldbl'
15905sPRIfldbl='$sPRIfldbl'
15906sPRIgldbl='$sPRIgldbl'
15907sPRIi64='$sPRIi64'
15908sPRIo64='$sPRIo64'
15909sPRIu64='$sPRIu64'
15910sPRIx64='$sPRIx64'
15911sSCNfldbl='$sSCNfldbl'
15912sched_yield='$sched_yield'
15913scriptdir='$scriptdir'
15914scriptdirexp='$scriptdirexp'
5f80c64f 15915sed='$sed'
b4eb6b3d
JH
15916seedfunc='$seedfunc'
15917selectminbits='$selectminbits'
15918selecttype='$selecttype'
5f80c64f
JH
15919sendmail='$sendmail'
15920sh='$sh'
15921shar='$shar'
15922sharpbang='$sharpbang'
b4eb6b3d
JH
15923shmattype='$shmattype'
15924shortsize='$shortsize'
15925shrpenv='$shrpenv'
5f80c64f 15926shsharp='$shsharp'
b4eb6b3d
JH
15927sig_count='$sig_count'
15928sig_name='$sig_name'
15929sig_name_init='$sig_name_init'
15930sig_num='$sig_num'
15931sig_num_init='$sig_num_init'
15932signal_t='$signal_t'
15933sitearch='$sitearch'
15934sitearchexp='$sitearchexp'
15935sitebin='$sitebin'
15936sitebinexp='$sitebinexp'
15937sitelib='$sitelib'
15938sitelib_stem='$sitelib_stem'
15939sitelibexp='$sitelibexp'
15940siteprefix='$siteprefix'
15941siteprefixexp='$siteprefixexp'
15942sizesize='$sizesize'
15943sizetype='$sizetype'
5f80c64f
JH
15944sleep='$sleep'
15945smail='$smail'
5f80c64f 15946so='$so'
b4eb6b3d
JH
15947sockethdr='$sockethdr'
15948socketlib='$socketlib'
15949socksizetype='$socksizetype'
5f80c64f
JH
15950sort='$sort'
15951spackage='$spackage'
15952spitshell='$spitshell'
5f80c64f 15953src='$src'
b4eb6b3d
JH
15954ssizetype='$ssizetype'
15955startperl='$startperl'
5f80c64f 15956startsh='$startsh'
b4eb6b3d
JH
15957static_ext='$static_ext'
15958stdchar='$stdchar'
15959stdio_base='$stdio_base'
15960stdio_bufsiz='$stdio_bufsiz'
15961stdio_cnt='$stdio_cnt'
15962stdio_filbuf='$stdio_filbuf'
15963stdio_ptr='$stdio_ptr'
15964stdio_stream_array='$stdio_stream_array'
15965strings='$strings'
5f80c64f 15966submit='$submit'
b4eb6b3d
JH
15967subversion='$subversion'
15968sysman='$sysman'
5f80c64f
JH
15969tail='$tail'
15970tar='$tar'
15971tbl='$tbl'
15972tee='$tee'
15973test='$test'
b4eb6b3d
JH
15974timeincl='$timeincl'
15975timetype='$timetype'
5f80c64f
JH
15976touch='$touch'
15977tr='$tr'
15978trnl='$trnl'
15979troff='$troff'
b4eb6b3d
JH
15980u16size='$u16size'
15981u16type='$u16type'
15982u32size='$u32size'
15983u32type='$u32type'
15984u64size='$u64size'
15985u64type='$u64type'
15986u8size='$u8size'
15987u8type='$u8type'
15988uidformat='$uidformat'
15989uidsign='$uidsign'
15990uidsize='$uidsize'
15991uidtype='$uidtype'
5f80c64f
JH
15992uname='$uname'
15993uniq='$uniq'
b4eb6b3d
JH
15994uquadtype='$uquadtype'
15995use5005threads='$use5005threads'
15996use64bitall='$use64bitall'
15997use64bitint='$use64bitint'
5f80c64f 15998usedl='$usedl'
b4eb6b3d
JH
15999useithreads='$useithreads'
16000uselargefiles='$uselargefiles'
16001uselongdouble='$uselongdouble'
16002usemorebits='$usemorebits'
16003usemultiplicity='$usemultiplicity'
16004usemymalloc='$usemymalloc'
5f80c64f 16005usenm='$usenm'
b4eb6b3d
JH
16006useopcode='$useopcode'
16007useperlio='$useperlio'
16008useposix='$useposix'
16009usesfio='$usesfio'
16010useshrplib='$useshrplib'
29209bc5 16011usesocks='$usesocks'
b4eb6b3d
JH
16012usethreads='$usethreads'
16013usevendorprefix='$usevendorprefix'
16014usevfork='$usevfork'
5f80c64f
JH
16015usrinc='$usrinc'
16016uuname='$uuname'
b4eb6b3d
JH
16017uvXUformat='$uvXUformat'
16018uvoformat='$uvoformat'
16019uvsize='$uvsize'
16020uvtype='$uvtype'
16021uvuformat='$uvuformat'
16022uvxformat='$uvxformat'
16023vendorarch='$vendorarch'
16024vendorarchexp='$vendorarchexp'
16025vendorbin='$vendorbin'
16026vendorbinexp='$vendorbinexp'
16027vendorlib='$vendorlib'
16028vendorlib_stem='$vendorlib_stem'
16029vendorlibexp='$vendorlibexp'
16030vendorprefix='$vendorprefix'
16031vendorprefixexp='$vendorprefixexp'
16032version='$version'
d56c5707 16033versiononly='$versiononly'
5f80c64f 16034vi='$vi'
b4eb6b3d 16035voidflags='$voidflags'
5f80c64f 16036xlibpth='$xlibpth'
b4eb6b3d 16037xs_apiversion='$xs_apiversion'
5f80c64f
JH
16038zcat='$zcat'
16039zip='$zip'
16040EOT
16041
16042: Add in command line options if available
16043$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16044
16045: add special variables
16046$test -f $src/patchlevel.h && \
d00b958f 16047awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 16048echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
16049
16050: propagate old symbols
16051if $test -f UU/config.sh; then
16052 <UU/config.sh sort | uniq >UU/oldconfig.sh
16053 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16054 sort | uniq -u >UU/oldsyms
16055 set X `cat UU/oldsyms`
16056 shift
16057 case $# in
16058 0) ;;
16059 *)
16060 cat <<EOM
16061Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16062EOM
16063 echo "# Variables propagated from previous config.sh file." >>config.sh
16064 for sym in `cat UU/oldsyms`; do
16065 echo " Propagating $hint variable "'$'"$sym..."
16066 eval 'tmp="$'"${sym}"'"'
16067 echo "$tmp" | \
16068 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16069 done
16070 ;;
16071 esac
16072fi
16073
16074: Finish up by extracting the .SH files
16075case "$alldone" in
16076exit)
16077 $rm -rf UU
16078 echo "Done."
16079 exit 0
16080 ;;
16081cont)
16082 ;;
16083'')
16084 dflt=''
16085 nostick=true
16086 $cat <<EOM
16087
16088If you'd like to make any changes to the config.sh file before I begin
16089to configure things, do it as a shell escape now (e.g. !vi config.sh).
16090
16091EOM
16092 rp="Press return or use a shell escape to edit config.sh:"
16093 . UU/myread
16094 nostick=''
16095 case "$ans" in
16096 '') ;;
16097 *) : in case they cannot read
16098 sh 1>&4 -c "$ans";;
16099 esac
16100 ;;
16101esac
16102
16103: if this fails, just run all the .SH files by hand
16104. ./config.sh
16105
16106echo " "
16107exec 1>&4
16108. ./UU/extract
16109
16110if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16111 dflt=y
16112 case "$silent" in
16113 true) ;;
16114 *)
16115 $cat <<EOM
16116
16117Now you need to generate make dependencies by running "$make depend".
16118You might prefer to run it in background: "$make depend > makedepend.out &"
16119It can take a while, so you might not want to run it right now.
16120
16121EOM
16122 ;;
16123 esac
16124 rp="Run $make depend now?"
16125 . UU/myread
16126 case "$ans" in
16127 y*)
3d5d58b1 16128 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
16129 ;;
16130 *)
16131 echo "You must run '$make depend' then '$make'."
16132 ;;
16133 esac
16134elif test -f [Mm]akefile; then
16135 echo " "
16136 echo "Now you must run a $make."
16137else
16138 echo "Done."
16139fi
16140
16141if $test -f Policy.sh; then
16142 $cat <<EOM
16143
16144If you compile $package on a different machine or from a different object
16145directory, copy the Policy.sh file from this object directory to the
16146new one before you run Configure -- this will help you with most of
16147the policy defaults.
16148
16149EOM
16150fi
16151if $test -f config.msg; then
16152 echo "Hmm. I also noted the following information while running:"
16153 echo " "
16154 $cat config.msg >&4
16155 $rm -f config.msg
16156fi
16157$rm -f kit*isdone ark*isdone
16158$rm -rf UU
16159
16160: End of Configure
16161