This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make the warning about abandoning long doubles more visible.
[perl5.git] / Configure
... / ...
CommitLineData
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
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.)
19#
20
21# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22#
23# Generated on Tue Feb 29 18:56:27 EET 2000 [metaconfig 3.0 PL70]
24# (with additional metaconfig patches by perlbug@perl.com)
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
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
59: Proper separator for the PATH environment variable
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
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]'`
67 elif test -n "$DJGPP"; then
68 p_=\;
69 fi
70fi
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
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"
81
82for p in $paths
83do
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
87 esac
88done
89
90PATH=.$p_$PATH
91export PATH
92
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
99if (PATH=.; alias -x) >/dev/null 2>&1; then
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
109 fi
110fi
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
118case "$inksh/$needksh" in
119/[a-z]*)
120 ENV=''
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/--)
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
136EOM
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
148
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
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
161cd UU && rm -f ./*
162
163ccsymbols=''
164cppccsymbols=''
165cppsymbols=''
166dynamic_ext=''
167extensions=''
168known_extensions=''
169nonxs_ext=''
170static_ext=''
171useopcode=''
172useposix=''
173d_bsd=''
174d_eunice=''
175d_xenix=''
176eunicefix=''
177Mcc=''
178ar=''
179awk=''
180bash=''
181bison=''
182byacc=''
183cat=''
184chgrp=''
185chmod=''
186chown=''
187comm=''
188compress=''
189cp=''
190cpio=''
191cpp=''
192csh=''
193date=''
194echo=''
195egrep=''
196emacs=''
197expr=''
198find=''
199flex=''
200grep=''
201gzip=''
202inews=''
203ksh=''
204less=''
205line=''
206lint=''
207ln=''
208lp=''
209lpr=''
210ls=''
211mail=''
212mailx=''
213make=''
214mkdir=''
215more=''
216mv=''
217nm=''
218nroff=''
219perl=''
220pg=''
221pmake=''
222pr=''
223rm=''
224rmail=''
225sed=''
226sendmail=''
227shar=''
228sleep=''
229smail=''
230sort=''
231submit=''
232tail=''
233tar=''
234tbl=''
235tee=''
236test=''
237touch=''
238tr=''
239troff=''
240uname=''
241uniq=''
242uuname=''
243vi=''
244zcat=''
245zip=''
246full_ar=''
247full_sed=''
248libswanted=''
249hint=''
250myuname=''
251osname=''
252osvers=''
253Author=''
254Date=''
255Header=''
256Id=''
257Locker=''
258Log=''
259RCSfile=''
260Revision=''
261Source=''
262State=''
263_a=''
264_exe=''
265_o=''
266archobjs=''
267exe_ext=''
268firstmakefile=''
269lib_ext=''
270obj_ext=''
271path_sep=''
272afs=''
273alignbytes=''
274ansi2knr=''
275archlib=''
276archlibexp=''
277d_archlib=''
278installarchlib=''
279archname=''
280myarchname=''
281d_atolf=''
282d_atoll=''
283baserev=''
284bin=''
285binexp=''
286installbin=''
287bincompat5005=''
288d_bincompat5005=''
289byteorder=''
290cc=''
291gccversion=''
292ccflags=''
293cppflags=''
294ldflags=''
295lkflags=''
296locincpth=''
297optimize=''
298cf_email=''
299cf_by=''
300cf_time=''
301charsize=''
302contains=''
303cpp_stuff=''
304cpplast=''
305cppminus=''
306cpprun=''
307cppstdin=''
308crosscompile=''
309d_access=''
310d_accessx=''
311d_alarm=''
312d_attribut=''
313d_bcmp=''
314d_bcopy=''
315d_bzero=''
316d_casti32=''
317castflags=''
318d_castneg=''
319d_chown=''
320d_chroot=''
321d_chsize=''
322d_closedir=''
323d_void_closedir=''
324d_const=''
325cryptlib=''
326d_crypt=''
327d_csh=''
328full_csh=''
329d_cuserid=''
330d_dbl_dig=''
331d_difftime=''
332d_dlerror=''
333d_dlopen=''
334d_dlsymun=''
335d_dosuid=''
336d_suidsafe=''
337d_drand48proto=''
338d_dup2=''
339d_eaccess=''
340d_endgrent=''
341d_endhent=''
342d_endnent=''
343d_endpent=''
344d_endpwent=''
345d_endsent=''
346d_endspent=''
347d_fchmod=''
348d_fchown=''
349d_fcntl=''
350d_fd_macros=''
351d_fd_set=''
352d_fds_bits=''
353d_fgetpos=''
354d_flexfnam=''
355d_flock=''
356d_fork=''
357d_fpos64_t=''
358d_fs_data_s=''
359d_fseeko=''
360d_fsetpos=''
361d_fstatfs=''
362d_ftello=''
363d_ftime=''
364d_gettimeod=''
365d_Gconvert=''
366d_getcwd=''
367d_getfsstat=''
368d_getgrent=''
369d_getgrps=''
370d_gethbyaddr=''
371d_gethbyname=''
372d_gethent=''
373aphostname=''
374d_gethname=''
375d_phostname=''
376d_uname=''
377d_gethostprotos=''
378d_getlogin=''
379d_getmnt=''
380d_getmntent=''
381d_getnbyaddr=''
382d_getnbyname=''
383d_getnent=''
384d_getnetprotos=''
385d_getpent=''
386d_getpgid=''
387d_getpgrp2=''
388d_bsdgetpgrp=''
389d_getpgrp=''
390d_getppid=''
391d_getprior=''
392d_getpbyname=''
393d_getpbynumber=''
394d_getprotoprotos=''
395d_getpwent=''
396d_getsent=''
397d_getservprotos=''
398d_getspent=''
399d_getspnam=''
400d_getsbyname=''
401d_getsbyport=''
402d_gnulibc=''
403d_hasmntopt=''
404d_htonl=''
405d_iconv=''
406d_inetaton=''
407d_int64_t=''
408d_isascii=''
409d_killpg=''
410d_lchown=''
411d_ldbl_dig=''
412d_link=''
413d_locconv=''
414d_lockf=''
415d_longdbl=''
416longdblsize=''
417d_longlong=''
418longlongsize=''
419d_lseekproto=''
420d_lstat=''
421d_madvise=''
422d_mblen=''
423d_mbstowcs=''
424d_mbtowc=''
425d_memchr=''
426d_memcmp=''
427d_memcpy=''
428d_memmove=''
429d_memset=''
430d_mkdir=''
431d_mkdtemp=''
432d_mkfifo=''
433d_mkstemp=''
434d_mkstemps=''
435d_mktime=''
436d_mmap=''
437mmaptype=''
438d_mprotect=''
439d_msg=''
440d_msgctl=''
441d_msgget=''
442d_msgrcv=''
443d_msgsnd=''
444d_msync=''
445d_munmap=''
446d_nice=''
447d_off64_t=''
448d_open3=''
449d_fpathconf=''
450d_pathconf=''
451d_pause=''
452d_pipe=''
453d_poll=''
454d_portable=''
455d_old_pthread_create_joinable=''
456old_pthread_create_joinable=''
457d_pthread_yield=''
458d_sched_yield=''
459sched_yield=''
460d_readdir=''
461d_rewinddir=''
462d_seekdir=''
463d_telldir=''
464d_readlink=''
465d_rename=''
466d_rmdir=''
467d_safebcpy=''
468d_safemcpy=''
469d_sanemcmp=''
470d_select=''
471d_sem=''
472d_semctl=''
473d_semget=''
474d_semop=''
475d_setegid=''
476d_seteuid=''
477d_setgrent=''
478d_setgrps=''
479d_sethent=''
480d_setlinebuf=''
481d_setlocale=''
482d_setnent=''
483d_setpent=''
484d_setpgid=''
485d_setpgrp2=''
486d_bsdsetpgrp=''
487d_setpgrp=''
488d_setprior=''
489d_setpwent=''
490d_setregid=''
491d_setresgid=''
492d_setresuid=''
493d_setreuid=''
494d_setrgid=''
495d_setruid=''
496d_setsent=''
497d_setsid=''
498d_setspent=''
499d_setvbuf=''
500d_sfio=''
501usesfio=''
502d_shm=''
503d_shmat=''
504d_shmatprototype=''
505shmattype=''
506d_shmctl=''
507d_shmdt=''
508d_shmget=''
509d_sigaction=''
510d_sigsetjmp=''
511d_msg_ctrunc=''
512d_msg_dontroute=''
513d_msg_oob=''
514d_msg_peek=''
515d_msg_proxy=''
516d_oldsock=''
517d_scm_rights=''
518d_socket=''
519d_sockpair=''
520sockethdr=''
521socketlib=''
522d_socklen_t=''
523d_sqrtl=''
524d_statblks=''
525d_statfs_f_flags=''
526d_statfs_s=''
527d_fstatvfs=''
528d_statvfs=''
529d_stdio_cnt_lval=''
530d_stdio_ptr_lval=''
531d_stdiobase=''
532d_stdstdio=''
533stdio_base=''
534stdio_bufsiz=''
535stdio_cnt=''
536stdio_filbuf=''
537stdio_ptr=''
538d_index=''
539d_strchr=''
540d_strcoll=''
541d_strctcpy=''
542d_strerrm=''
543d_strerror=''
544d_sysernlst=''
545d_syserrlst=''
546d_strtod=''
547d_strtol=''
548d_strtold=''
549d_strtoll=''
550d_strtoul=''
551d_strtoull=''
552d_strtouq=''
553d_strxfrm=''
554d_symlink=''
555d_syscall=''
556d_sysconf=''
557d_system=''
558d_tcgetpgrp=''
559d_tcsetpgrp=''
560d_telldirproto=''
561d_time=''
562timetype=''
563clocktype=''
564d_times=''
565d_truncate=''
566d_tzname=''
567d_umask=''
568d_semctl_semid_ds=''
569d_semctl_semun=''
570d_union_semun=''
571d_ustat=''
572d_vfork=''
573usevfork=''
574d_voidsig=''
575signal_t=''
576d_volatile=''
577d_charvspr=''
578d_vprintf=''
579d_wait4=''
580d_waitpid=''
581d_wcstombs=''
582d_wctomb=''
583dlext=''
584cccdlflags=''
585ccdlflags=''
586dlsrc=''
587ld=''
588lddlflags=''
589usedl=''
590doublesize=''
591ebcdic=''
592fflushNULL=''
593fflushall=''
594fpossize=''
595fpostype=''
596gidformat=''
597gidsign=''
598gidsize=''
599gidtype=''
600groupstype=''
601h_fcntl=''
602h_sysfile=''
603i_arpainet=''
604db_hashtype=''
605db_prefixtype=''
606i_db=''
607i_dbm=''
608i_rpcsvcdbm=''
609d_dirnamlen=''
610direntrytype=''
611i_dirent=''
612i_dld=''
613i_dlfcn=''
614i_fcntl=''
615i_float=''
616i_gdbm=''
617d_grpasswd=''
618i_grp=''
619i_iconv=''
620i_inttypes=''
621i_limits=''
622i_locale=''
623i_machcthr=''
624i_malloc=''
625i_math=''
626i_memory=''
627i_mntent=''
628i_ndbm=''
629i_netdb=''
630i_neterrno=''
631i_netinettcp=''
632i_niin=''
633i_sysin=''
634i_poll=''
635i_pthread=''
636d_pwage=''
637d_pwchange=''
638d_pwclass=''
639d_pwcomment=''
640d_pwexpire=''
641d_pwgecos=''
642d_pwpasswd=''
643d_pwquota=''
644i_pwd=''
645i_sfio=''
646i_shadow=''
647i_socks=''
648i_stddef=''
649i_stdlib=''
650i_string=''
651strings=''
652i_sysaccess=''
653i_sysdir=''
654i_sysfile=''
655d_voidtty=''
656i_bsdioctl=''
657i_sysfilio=''
658i_sysioctl=''
659i_syssockio=''
660i_syslog=''
661i_sysmman=''
662i_sysmode=''
663i_sysmount=''
664i_sysndir=''
665i_sysparam=''
666i_sysresrc=''
667i_syssecrt=''
668i_sysselct=''
669i_sysstat=''
670i_sysstatfs=''
671i_sysstatvfs=''
672i_systimes=''
673i_systypes=''
674i_sysuio=''
675i_sysun=''
676i_sysutsname=''
677i_sysvfs=''
678i_syswait=''
679i_sgtty=''
680i_termio=''
681i_termios=''
682i_systime=''
683i_systimek=''
684i_time=''
685timeincl=''
686i_unistd=''
687i_ustat=''
688i_utime=''
689i_values=''
690i_stdarg=''
691i_varargs=''
692i_varhdr=''
693i_vfork=''
694inc_version_list=''
695inc_version_list_init=''
696installprefix=''
697installprefixexp=''
698installstyle=''
699installusrbinperl=''
700intsize=''
701longsize=''
702shortsize=''
703libc=''
704ldlibpthname=''
705libperl=''
706shrpenv=''
707useshrplib=''
708glibpth=''
709libpth=''
710loclibpth=''
711plibpth=''
712xlibpth=''
713ignore_versioned_solibs=''
714libs=''
715libsdirs=''
716libsfiles=''
717libsfound=''
718libspath=''
719lns=''
720d_PRIEldbl=''
721d_PRIFldbl=''
722d_PRIGldbl=''
723d_PRIeldbl=''
724d_PRIfldbl=''
725d_PRIgldbl=''
726sPRIEldbl=''
727sPRIFldbl=''
728sPRIGldbl=''
729sPRIeldbl=''
730sPRIfldbl=''
731sPRIgldbl=''
732lseeksize=''
733lseektype=''
734make_set_make=''
735d_mymalloc=''
736freetype=''
737mallocobj=''
738mallocsrc=''
739malloctype=''
740usemymalloc=''
741installman1dir=''
742man1dir=''
743man1direxp=''
744man1ext=''
745installman3dir=''
746man3dir=''
747man3direxp=''
748man3ext=''
749huge=''
750large=''
751medium=''
752models=''
753small=''
754split=''
755modetype=''
756multiarch=''
757mydomain=''
758myhostname=''
759phostname=''
760c=''
761n=''
762d_eofnblk=''
763eagain=''
764o_nonblock=''
765rd_nodata=''
766netdb_hlen_type=''
767netdb_host_type=''
768netdb_name_type=''
769netdb_net_type=''
770groupcat=''
771hostcat=''
772passcat=''
773orderlib=''
774ranlib=''
775package=''
776spackage=''
777pager=''
778api_revision=''
779api_subversion=''
780api_version=''
781api_versionstring=''
782patchlevel=''
783revision=''
784subversion=''
785version=''
786perl5=''
787perladmin=''
788perlpath=''
789d_nv_preserves_uv=''
790i16size=''
791i16type=''
792i32size=''
793i32type=''
794i64size=''
795i64type=''
796i8size=''
797i8type=''
798ivsize=''
799ivtype=''
800nvsize=''
801nvtype=''
802u16size=''
803u16type=''
804u32size=''
805u32type=''
806u64size=''
807u64type=''
808u8size=''
809u8type=''
810uvsize=''
811uvtype=''
812ivdformat=''
813uvoformat=''
814uvuformat=''
815uvxformat=''
816pidtype=''
817prefix=''
818prefixexp=''
819installprivlib=''
820privlib=''
821privlibexp=''
822prototype=''
823ptrsize=''
824d_PRIX64=''
825d_PRId64=''
826d_PRIi64=''
827d_PRIo64=''
828d_PRIu64=''
829d_PRIx64=''
830sPRIX64=''
831sPRId64=''
832sPRIi64=''
833sPRIo64=''
834sPRIu64=''
835sPRIx64=''
836d_quad=''
837quadkind=''
838quadtype=''
839uquadtype=''
840drand01=''
841randbits=''
842randfunc=''
843randseedtype=''
844seedfunc=''
845installscript=''
846scriptdir=''
847scriptdirexp=''
848selectminbits=''
849selecttype=''
850sh=''
851sig_count=''
852sig_name=''
853sig_name_init=''
854sig_num=''
855sig_num_init=''
856installsitearch=''
857sitearch=''
858sitearchexp=''
859installsitebin=''
860sitebin=''
861sitebinexp=''
862installsitelib=''
863sitelib=''
864sitelibexp=''
865siteprefix=''
866siteprefixexp=''
867sizetype=''
868so=''
869socksizetype=''
870sharpbang=''
871shsharp=''
872spitshell=''
873src=''
874ssizetype=''
875startperl=''
876startsh=''
877stdchar=''
878d_stdio_stream_array=''
879stdio_stream_array=''
880sysman=''
881trnl=''
882uidformat=''
883uidsign=''
884uidsize=''
885uidtype=''
886archname64=''
887use64bitall=''
888use64bitint=''
889uselargefiles=''
890uselongdouble=''
891usemorebits=''
892usemultiplicity=''
893nm_opt=''
894nm_so_opt=''
895runnm=''
896usenm=''
897useperlio=''
898usesocks=''
899d_oldpthreads=''
900use5005threads=''
901useithreads=''
902usethreads=''
903incpath=''
904mips_type=''
905usrinc=''
906d_vendorbin=''
907installvendorbin=''
908vendorbin=''
909vendorbinexp=''
910d_vendorlib=''
911installvendorlib=''
912vendorlib=''
913vendorlibexp=''
914usevendorprefix=''
915vendorprefix=''
916vendorprefixexp=''
917defvoidused=''
918voidflags=''
919pm_apiversion=''
920xs_apiversion=''
921CONFIG=''
922
923define='define'
924undef='undef'
925smallmach='pdp11 i8086 z8000 i80286 iAPX286'
926rmlist=''
927
928: We must find out about Eunice early
929eunicefix=':'
930if test -f /etc/unixtovms; then
931 eunicefix=/etc/unixtovms
932fi
933if test -f /etc/unixtovms.exe; then
934 eunicefix=/etc/unixtovms.exe
935fi
936
937i_whoami=''
938: set useposix=false in your hint file to disable the POSIX extension.
939useposix=true
940: set useopcode=false in your hint file to disable the Opcode extension.
941useopcode=true
942: Trailing extension. Override this in a hint file, if needed.
943_exe=''
944: Extra object files, if any, needed on this platform.
945archobjs=''
946: Possible local include directories to search.
947: Set locincpth to "" in a hint file to defeat local include searches.
948locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
949locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
950:
951: no include file wanted by default
952inclwanted=''
953
954groupstype=''
955: change the next line if compiling for Xenix/286 on Xenix/386
956xlibpth='/usr/lib/386 /lib/386'
957: Possible local library directories to search.
958loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
959loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
960
961: general looking path for locating libraries
962glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
963glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
964glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
965test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
966test -f /shlib/libc.so && glibpth="/shlib $glibpth"
967
968: Private path used by Configure to find libraries. Its value
969: is prepended to libpth. This variable takes care of special
970: machines, like the mips. Usually, it should be empty.
971plibpth=''
972
973: default library list
974libswanted=''
975: some systems want to use only the non-versioned libso:s
976ignore_versioned_solibs=''
977: set usemultiplicity on the Configure command line to enable multiplicity.
978: set usesocks on the Configure command line to enable socks.
979: set usethreads on the Configure command line to enable threads.
980: full support for void wanted by default
981defvoidused=15
982
983: List of libraries we want.
984: If anyone needs -lnet, put it in a hint file.
985libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
986libswanted="$libswanted dld ld sun m c cposix posix"
987libswanted="$libswanted ndir dir crypt sec"
988libswanted="$libswanted ucb bsd BSD PW x iconv"
989: We probably want to search /usr/shlib before most other libraries.
990: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
991glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
992glibpth="/usr/shlib $glibpth"
993: Do not use vfork unless overridden by a hint file.
994usevfork=false
995
996: Find the basic shell for Bourne shell scripts
997case "$sh" in
998'')
999 case "$SYSTYPE" in
1000 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1001 *) xxx='/bin/sh';;
1002 esac
1003 if test -f "$xxx"; then
1004 sh="$xxx"
1005 else
1006 : Build up a list and do a single loop so we can 'break' out.
1007 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1008 for xxx in sh bash ksh pdksh ash; do
1009 for p in $pth; do
1010 try="$try ${p}/${xxx}"
1011 done
1012 done
1013 for xxx in $try; do
1014 if test -f "$xxx"; then
1015 sh="$xxx";
1016 break
1017 elif test -f "$xxx.exe"; then
1018 sh="$xxx";
1019 break
1020 fi
1021 done
1022 fi
1023 ;;
1024esac
1025
1026case "$sh" in
1027'') cat <<EOM >&2
1028$me: Fatal Error: I can't find a Bourne Shell anywhere.
1029
1030Usually it's in /bin/sh. How did you even get this far?
1031Please contact me (Perl Maintainers) at perlbug@perl.com and
1032we'll try to straighten this all out.
1033EOM
1034 exit 1
1035 ;;
1036esac
1037
1038: see if sh knows # comments
1039if `$sh -c '#' >/dev/null 2>&1`; then
1040 shsharp=true
1041 spitshell=cat
1042 xcat=/bin/cat
1043 test -f $xcat || xcat=/usr/bin/cat
1044 echo "#!$xcat" >try
1045 $eunicefix try
1046 chmod +x try
1047 ./try > today
1048 if test -s today; then
1049 sharpbang='#!'
1050 else
1051 echo "#! $xcat" > try
1052 $eunicefix try
1053 chmod +x try
1054 ./try > today
1055 if test -s today; then
1056 sharpbang='#! '
1057 else
1058 sharpbang=': use '
1059 fi
1060 fi
1061else
1062 echo " "
1063 echo "Your $sh doesn't grok # comments--I will strip them later on."
1064 shsharp=false
1065 cd ..
1066 echo "exec grep -v '^[ ]*#'" >spitshell
1067 chmod +x spitshell
1068 $eunicefix spitshell
1069 spitshell=`pwd`/spitshell
1070 cd UU
1071 echo "I presume that if # doesn't work, #! won't work either!"
1072 sharpbang=': use '
1073fi
1074rm -f try today
1075
1076: figure out how to guarantee sh startup
1077case "$startsh" in
1078'') startsh=${sharpbang}${sh} ;;
1079*)
1080esac
1081cat >try <<EOSS
1082$startsh
1083set abc
1084test "$?abc" != 1
1085EOSS
1086
1087chmod +x try
1088$eunicefix try
1089if ./try; then
1090 : echo "Yup, it does."
1091else
1092 echo "Hmm... '$startsh' does not guarantee sh startup..."
1093 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1094fi
1095rm -f try
1096
1097
1098: Save command line options in file UU/cmdline.opt for later use in
1099: generating config.sh.
1100cat > cmdline.opt <<EOSH
1101# Configure command line arguments.
1102config_arg0='$0'
1103config_args='$*'
1104config_argc=$#
1105EOSH
1106argn=1
1107for arg in "$@"; do
1108 cat >>cmdline.opt <<EOSH
1109config_arg$argn='$arg'
1110EOSH
1111 argn=`expr $argn + 1`
1112done
1113
1114: produce awk script to parse command line options
1115cat >options.awk <<'EOF'
1116BEGIN {
1117 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1118
1119 len = length(optstr);
1120 for (i = 1; i <= len; i++) {
1121 c = substr(optstr, i, 1);
1122 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1123 if (a == ":") {
1124 arg[c] = 1;
1125 i++;
1126 }
1127 opt[c] = 1;
1128 }
1129}
1130{
1131 expect = 0;
1132 str = $0;
1133 if (substr(str, 1, 1) != "-") {
1134 printf("'%s'\n", str);
1135 next;
1136 }
1137 len = length($0);
1138 for (i = 2; i <= len; i++) {
1139 c = substr(str, i, 1);
1140 if (!opt[c]) {
1141 printf("-%s\n", substr(str, i));
1142 next;
1143 }
1144 printf("-%s\n", c);
1145 if (arg[c]) {
1146 if (i < len)
1147 printf("'%s'\n", substr(str, i + 1));
1148 else
1149 expect = 1;
1150 next;
1151 }
1152 }
1153}
1154END {
1155 if (expect)
1156 print "?";
1157}
1158EOF
1159
1160: process the command line options
1161set X `for arg in "$@"; do echo "X$arg"; done |
1162 sed -e s/X// | awk -f options.awk`
1163eval "set $*"
1164shift
1165rm -f options.awk
1166
1167: set up default values
1168fastread=''
1169reuseval=false
1170config_sh=''
1171alldone=''
1172error=''
1173silent=''
1174extractsh=''
1175override=''
1176knowitall=''
1177rm -f optdef.sh posthint.sh
1178cat >optdef.sh <<EOS
1179$startsh
1180EOS
1181
1182
1183: option parsing
1184while test $# -gt 0; do
1185 case "$1" in
1186 -d) shift; fastread=yes;;
1187 -e) shift; alldone=cont;;
1188 -f)
1189 shift
1190 cd ..
1191 if test -r "$1"; then
1192 config_sh="$1"
1193 else
1194 echo "$me: cannot read config file $1." >&2
1195 error=true
1196 fi
1197 cd UU
1198 shift;;
1199 -h) shift; error=true;;
1200 -r) shift; reuseval=true;;
1201 -s) shift; silent=true; realsilent=true;;
1202 -E) shift; alldone=exit;;
1203 -K) shift; knowitall=true;;
1204 -O) shift; override=true;;
1205 -S) shift; silent=true; extractsh=true;;
1206 -D)
1207 shift
1208 case "$1" in
1209 *=)
1210 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1211 echo "$me: ignoring -D $1" >&2
1212 ;;
1213 *=*) echo "$1" | \
1214 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1215 *) echo "$1='define'" >> optdef.sh;;
1216 esac
1217 shift
1218 ;;
1219 -U)
1220 shift
1221 case "$1" in
1222 *=) echo "$1" >> optdef.sh;;
1223 *=*)
1224 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1225 echo "$me: ignoring -U $1" >&2
1226 ;;
1227 *) echo "$1='undef'" >> optdef.sh;;
1228 esac
1229 shift
1230 ;;
1231 -A)
1232 shift
1233 xxx=''
1234 yyy="$1"
1235 zzz=''
1236 uuu=undef
1237 case "$yyy" in
1238 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1239 case "$zzz" in
1240 *:*) zzz='' ;;
1241 *) xxx=append
1242 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1243 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244 esac
1245 ;;
1246 esac
1247 case "$xxx" in
1248 '') case "$yyy" in
1249 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1250 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1251 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1252 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253 *) xxx=`echo $yyy|sed 's!:.*!!'`
1254 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1255 esac
1256 ;;
1257 esac
1258 case "$xxx" in
1259 append)
1260 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1261 clear)
1262 echo "$yyy=''" >> posthint.sh ;;
1263 define)
1264 case "$zzz" in
1265 '') zzz=define ;;
1266 esac
1267 echo "$yyy='$zzz'" >> posthint.sh ;;
1268 eval)
1269 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1270 prepend)
1271 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1272 undef)
1273 case "$zzz" in
1274 '') zzz="$uuu" ;;
1275 esac
1276 echo "$yyy=$zzz" >> posthint.sh ;;
1277 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1278 esac
1279 shift
1280 ;;
1281 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1282 exit 0;;
1283 --) break;;
1284 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1285 *) break;;
1286 esac
1287done
1288
1289case "$error" in
1290true)
1291 cat >&2 <<EOM
1292Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1293 [-U symbol] [-U symbol=] [-A command:symbol...]
1294 -d : use defaults for all answers.
1295 -e : go on without questioning past the production of config.sh.
1296 -f : specify an alternate default configuration file.
1297 -h : print this help message and exit (with an error status).
1298 -r : reuse C symbols value if possible (skips costly nm extraction).
1299 -s : silent mode, only echoes questions and essential information.
1300 -D : define symbol to have some value:
1301 -D symbol symbol gets the value 'define'
1302 -D symbol=value symbol gets the value 'value'
1303 -E : stop at the end of questions, after having produced config.sh.
1304 -K : do not use unless you know what you are doing.
1305 -O : let -D and -U override definitions from loaded configuration file.
1306 -S : perform variable substitutions on all .SH files (can mix with -f)
1307 -U : undefine symbol:
1308 -U symbol symbol gets the value 'undef'
1309 -U symbol= symbol gets completely empty
1310 -A : manipulate symbol after the platform specific hints have been applied:
1311 -A symbol=value append " "value to symbol
1312 -A append:symbol=value append value to symbol
1313 -A define:symbol=value define symbol to have value
1314 -A clear:symbol define symbol to be ''
1315 -A define:symbol define symbol to be 'define'
1316 -A eval:symbol=value define symbol to be eval of value
1317 -A prepend:symbol=value prepend value to symbol
1318 -A undef:symbol define symbol to be 'undef'
1319 -A undef:symbol= define symbol to be ''
1320 -V : print version number and exit (with a zero status).
1321EOM
1322 exit 1
1323 ;;
1324esac
1325
1326: Sanity checks
1327case "$fastread$alldone" in
1328yescont|yesexit) ;;
1329*)
1330 if test ! -t 0; then
1331 echo "Say 'sh Configure', not 'sh <Configure'"
1332 exit 1
1333 fi
1334 ;;
1335esac
1336
1337exec 4>&1
1338case "$silent" in
1339true) exec 1>/dev/null;;
1340esac
1341
1342: run the defines and the undefines, if any, but leave the file out there...
1343touch optdef.sh
1344. ./optdef.sh
1345: create the posthint manipulation script and leave the file out there...
1346touch posthint.sh
1347
1348: set package name
1349package=perl5
1350first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1351last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1352case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1353ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1354*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1355esac
1356
1357: Some greps do not return status, grrr.
1358echo "grimblepritz" >grimble
1359if grep blurfldyick grimble >/dev/null 2>&1 ; then
1360 contains=contains
1361elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1362 contains=grep
1363else
1364 contains=contains
1365fi
1366rm -f grimble
1367: the following should work in any shell
1368case "$contains" in
1369contains*)
1370 echo " "
1371 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1372 cat >contains <<'EOSS'
1373grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1374EOSS
1375chmod +x contains
1376esac
1377
1378: Find the path to the source tree
1379case "$src" in
1380'') case "$0" in
1381 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1382 case "$src" in
1383 /*) ;;
1384 *) src=`cd ../$src && pwd` ;;
1385 esac
1386 ;;
1387 *) src='.';;
1388 esac;;
1389esac
1390case "$src" in
1391'') src=/
1392 rsrc=/
1393 ;;
1394/*) rsrc="$src";;
1395*) rsrc="../$src";;
1396esac
1397if test -f $rsrc/Configure && \
1398 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1399then
1400 : found it, so we are ok.
1401else
1402 rsrc=''
1403 for src in . .. ../.. ../../.. ../../../..; do
1404 if test -f ../$src/Configure && \
1405 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1406 then
1407 rsrc=../$src
1408 break
1409 fi
1410 done
1411fi
1412case "$rsrc" in
1413'')
1414 cat <<EOM >&4
1415
1416Sorry, I can't seem to locate the source dir for $package. Please start
1417Configure with an explicit path -- i.e. /some/path/Configure.
1418
1419EOM
1420 exit 1
1421 ;;
1422../.) rsrc='..';;
1423*)
1424 echo " "
1425 echo "Sources for $package found in \"$src\"." >&4
1426 ;;
1427esac
1428
1429: script used to extract .SH files with variable substitutions
1430cat >extract <<'EOS'
1431CONFIGDOTSH=true
1432echo "Doing variable substitutions on .SH files..."
1433if test -f $src/MANIFEST; then
1434 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1435else
1436 echo "(Looking for .SH files under the source directory.)"
1437 set x `(cd $src; find . -name "*.SH" -print)`
1438fi
1439shift
1440case $# in
14410) set x `(cd $src; echo *.SH)`; shift;;
1442esac
1443if test ! -f $src/$1; then
1444 shift
1445fi
1446mkdir_p='
1447name=$1;
1448create="";
1449while test $name; do
1450 if test ! -d "$name"; then
1451 create="$name $create";
1452 name=`echo $name | sed -e "s|^[^/]*$||"`;
1453 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1454 else
1455 name="";
1456 fi;
1457done;
1458for file in $create; do
1459 mkdir $file;
1460done
1461'
1462for file in $*; do
1463 case "$src" in
1464 ".")
1465 case "$file" in
1466 */*)
1467 dir=`expr X$file : 'X\(.*\)/'`
1468 file=`expr X$file : 'X.*/\(.*\)'`
1469 (cd $dir && . ./$file)
1470 ;;
1471 *)
1472 . ./$file
1473 ;;
1474 esac
1475 ;;
1476 *)
1477 case "$file" in
1478 */*)
1479 dir=`expr X$file : 'X\(.*\)/'`
1480 file=`expr X$file : 'X.*/\(.*\)'`
1481 (set x $dir; shift; eval $mkdir_p)
1482 sh <$src/$dir/$file
1483 ;;
1484 *)
1485 sh <$src/$file
1486 ;;
1487 esac
1488 ;;
1489 esac
1490done
1491if test -f $src/config_h.SH; then
1492 if test ! -f config.h; then
1493 : oops, they left it out of MANIFEST, probably, so do it anyway.
1494 . $src/config_h.SH
1495 fi
1496fi
1497EOS
1498
1499: extract files and exit if asked to do so
1500case "$extractsh" in
1501true)
1502 case "$realsilent" in
1503 true) ;;
1504 *) exec 1>&4;;
1505 esac
1506 case "$config_sh" in
1507 '') config_sh='config.sh';;
1508 esac
1509 echo " "
1510 echo "Fetching answers from $config_sh..."
1511 cd ..
1512 . $config_sh
1513 test "$override" && . ./optdef.sh
1514 echo " "
1515 . UU/extract
1516 rm -rf UU
1517 echo "Done."
1518 exit 0
1519 ;;
1520esac
1521
1522: Eunice requires " " instead of "", can you believe it
1523echo " "
1524: Here we go...
1525echo "Beginning of configuration questions for $package."
1526
1527trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1528
1529: first determine how to suppress newline on echo command
1530echo " "
1531echo "Checking echo to see how to suppress newlines..."
1532(echo "hi there\c" ; echo " ") >.echotmp
1533if $contains c .echotmp >/dev/null 2>&1 ; then
1534 echo "...using -n."
1535 n='-n'
1536 c=''
1537else
1538 cat <<'EOM'
1539...using \c
1540EOM
1541 n=''
1542 c='\c'
1543fi
1544echo $n "The star should be here-->$c"
1545echo '*'
1546rm -f .echotmp
1547
1548: Now test for existence of everything in MANIFEST
1549echo " "
1550if test -f $rsrc/MANIFEST; then
1551 echo "First let's make sure your kit is complete. Checking..." >&4
1552 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1553 rm -f missing
1554 tmppwd=`pwd`
1555 for filelist in x??; do
1556 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1557 done
1558 if test -s missing; then
1559 cat missing >&4
1560 cat >&4 <<'EOM'
1561
1562THIS PACKAGE SEEMS TO BE INCOMPLETE.
1563
1564You have the option of continuing the configuration process, despite the
1565distinct possibility that your kit is damaged, by typing 'y'es. If you
1566do, don't blame me if something goes wrong. I advise you to type 'n'o
1567and contact the author (perlbug@perl.com).
1568
1569EOM
1570 echo $n "Continue? [n] $c" >&4
1571 read ans
1572 case "$ans" in
1573 y*)
1574 echo "Continuing..." >&4
1575 rm -f missing
1576 ;;
1577 *)
1578 echo "ABORTING..." >&4
1579 kill $$
1580 ;;
1581 esac
1582 else
1583 echo "Looks good..."
1584 fi
1585else
1586 echo "There is no MANIFEST file. I hope your kit is complete !"
1587fi
1588rm -f missing x??
1589
1590echo " "
1591: Find the appropriate value for a newline for tr
1592if test -n "$DJGPP"; then
1593 trnl='\012'
1594fi
1595if test X"$trnl" = X; then
1596 case "`echo foo|tr '\n' x 2>/dev/null`" in
1597 foox) trnl='\n' ;;
1598 esac
1599fi
1600if test X"$trnl" = X; then
1601 case "`echo foo|tr '\012' x 2>/dev/null`" in
1602 foox) trnl='\012' ;;
1603 esac
1604fi
1605if test X"$trnl" = X; then
1606 cat <<EOM >&2
1607
1608$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1609
1610EOM
1611 exit 1
1612fi
1613
1614: compute the number of columns on the terminal for proper question formatting
1615case "$COLUMNS" in
1616'') COLUMNS='80';;
1617esac
1618
1619: set up the echo used in my read
1620myecho="case \"\$xxxm\" in
1621'') echo $n \"\$rp $c\" >&4;;
1622*) case \"\$rp\" in
1623 '') echo $n \"[\$xxxm] $c\";;
1624 *)
1625 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1626 echo \"\$rp\" >&4
1627 echo $n \"[\$xxxm] $c\" >&4
1628 else
1629 echo $n \"\$rp [\$xxxm] $c\" >&4
1630 fi
1631 ;;
1632 esac;;
1633esac"
1634
1635: now set up to do reads with possible shell escape and default assignment
1636cat <<EOSC >myread
1637$startsh
1638xxxm=\$dflt
1639$myecho
1640ans='!'
1641case "\$fastread" in
1642yes) case "\$dflt" in
1643 '') ;;
1644 *) ans='';
1645 case "\$silent-\$rp" in
1646 true-) ;;
1647 *) echo " " >&4;;
1648 esac;;
1649 esac;;
1650*) case "\$silent" in
1651 true) case "\$rp" in
1652 '') ans='';;
1653 esac;;
1654 esac;;
1655esac
1656while expr "X\$ans" : "X!" >/dev/null; do
1657 read answ
1658 set x \$xxxm
1659 shift
1660 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1661 case "\$answ" in
1662 "!")
1663 sh 1>&4
1664 echo " "
1665 $myecho
1666 ;;
1667 !*)
1668 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1669 shift
1670 sh 1>&4 -c "\$*"
1671 echo " "
1672 $myecho
1673 ;;
1674 "\$ans")
1675 case "\$ans" in
1676 \\&*)
1677 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1678 shift
1679 case "\$1" in
1680 -d)
1681 fastread=yes
1682 echo "(OK, I'll run with -d after this question.)" >&4
1683 ;;
1684 -*)
1685 echo "*** Sorry, \$1 not supported yet." >&4
1686 ;;
1687 esac
1688 $myecho
1689 ans=!
1690 ;;
1691 esac;;
1692 *)
1693 case "\$aok" in
1694 y)
1695 echo "*** Substitution done -- please confirm."
1696 xxxm="\$ans"
1697 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1698 xxxm="\$ans"
1699 ans=!
1700 ;;
1701 *)
1702 echo "*** Error -- try again."
1703 ans=!
1704 ;;
1705 esac
1706 $myecho
1707 ;;
1708 esac
1709 case "\$ans\$xxxm\$nostick" in
1710 '')
1711 ans=!
1712 $myecho
1713 ;;
1714 esac
1715done
1716case "\$ans" in
1717'') ans="\$xxxm";;
1718esac
1719EOSC
1720
1721: create .config dir to save info across Configure sessions
1722test -d ../.config || mkdir ../.config
1723cat >../.config/README <<EOF
1724This directory created by Configure to save information that should
1725persist across sessions for $package.
1726
1727You may safely delete it if you wish.
1728EOF
1729
1730: general instructions
1731needman=true
1732firsttime=true
1733user=`(logname) 2>/dev/null`
1734case "$user" in
1735'') user=`whoami 2>&1`;;
1736esac
1737if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1738 firsttime=false
1739 echo " "
1740 rp='Would you like to see the instructions?'
1741 dflt=n
1742 . ./myread
1743 case "$ans" in
1744 [yY]*) ;;
1745 *) needman=false;;
1746 esac
1747fi
1748if $needman; then
1749 cat <<EOH
1750
1751This installation shell script will examine your system and ask you questions
1752to determine how the perl5 package should be installed. If you get
1753stuck on a question, you may use a ! shell escape to start a subshell or
1754execute a command. Many of the questions will have default answers in square
1755brackets; typing carriage return will give you the default.
1756
1757On some of the questions which ask for file or directory names you are allowed
1758to use the ~name construct to specify the login directory belonging to "name",
1759even if you don't have a shell which knows about that. Questions where this is
1760allowed will be marked "(~name ok)".
1761
1762EOH
1763 rp=''
1764 dflt='Type carriage return to continue'
1765 . ./myread
1766 cat <<'EOH'
1767
1768The prompter used in this script allows you to use shell variables and
1769backticks in your answers. You may use $1, $2, etc... to refer to the words
1770in the default answer, as if the default line was a set of arguments given to a
1771script shell. This means you may also use $* to repeat the whole default line,
1772so you do not have to re-type everything to add something to the default.
1773
1774Everytime there is a substitution, you will have to confirm. If there is an
1775error (e.g. an unmatched backtick), the default answer will remain unchanged
1776and you will be prompted again.
1777
1778If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1779the questions and use the computed defaults (or the previous answers if there
1780was already a config.sh file). Type 'Configure -h' for a list of options.
1781You may also start interactively and then answer '& -d' at any prompt to turn
1782on the non-interactive behaviour for the remainder of the execution.
1783
1784EOH
1785 . ./myread
1786 cat <<EOH
1787
1788Much effort has been expended to ensure that this shell script will run on any
1789Unix system. If despite that it blows up on yours, your best bet is to edit
1790Configure and run it again. If you can't run Configure for some reason,
1791you'll have to generate a config.sh file by hand. Whatever problems you
1792have, let me (perlbug@perl.com) know how I blew it.
1793
1794This installation script affects things in two ways:
1795
17961) it may do direct variable substitutions on some of the files included
1797 in this kit.
17982) it builds a config.h file for inclusion in C programs. You may edit
1799 any of these files as the need arises after running this script.
1800
1801If you make a mistake on a question, there is no easy way to back up to it
1802currently. The easiest thing to do is to edit config.sh and rerun all the SH
1803files. Configure will offer to let you do this before it runs the SH files.
1804
1805EOH
1806 dflt='Type carriage return to continue'
1807 . ./myread
1808 case "$firsttime" in
1809 true) echo $user >>../.config/instruct;;
1810 esac
1811fi
1812
1813: find out where common programs are
1814echo " "
1815echo "Locating common programs..." >&4
1816cat <<EOSC >loc
1817$startsh
1818case \$# in
18190) exit 1;;
1820esac
1821thing=\$1
1822shift
1823dflt=\$1
1824shift
1825for dir in \$*; do
1826 case "\$thing" in
1827 .)
1828 if test -d \$dir/\$thing; then
1829 echo \$dir
1830 exit 0
1831 fi
1832 ;;
1833 *)
1834 for thisthing in \$dir/\$thing; do
1835 : just loop through to pick last item
1836 done
1837 if test -f \$thisthing; then
1838 echo \$thisthing
1839 exit 0
1840 elif test -f \$dir/\$thing.exe; then
1841 if test -n "$DJGPP"; then
1842 echo \$dir/\$thing.exe
1843 else
1844 : on Eunice apparently
1845 echo \$dir/\$thing
1846 fi
1847 exit 0
1848 fi
1849 ;;
1850 esac
1851done
1852echo \$dflt
1853exit 1
1854EOSC
1855chmod +x loc
1856$eunicefix loc
1857loclist="
1858awk
1859cat
1860comm
1861cp
1862echo
1863expr
1864grep
1865ls
1866make
1867mkdir
1868rm
1869sed
1870sort
1871touch
1872tr
1873uniq
1874"
1875trylist="
1876Mcc
1877ar
1878byacc
1879cpp
1880csh
1881date
1882egrep
1883gzip
1884less
1885ln
1886more
1887nm
1888nroff
1889pg
1890test
1891uname
1892zip
1893"
1894pth=`echo $PATH | sed -e "s/$p_/ /g"`
1895pth="$pth /lib /usr/lib"
1896for file in $loclist; do
1897 eval xxx=\$$file
1898 case "$xxx" in
1899 /*|?:[\\/]*)
1900 if test -f "$xxx"; then
1901 : ok
1902 else
1903 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1904 xxx=`./loc $file $file $pth`
1905 fi
1906 ;;
1907 '') xxx=`./loc $file $file $pth`;;
1908 *) xxx=`./loc $xxx $xxx $pth`;;
1909 esac
1910 eval $file=$xxx
1911 eval _$file=$xxx
1912 case "$xxx" in
1913 /*)
1914 echo $file is in $xxx.
1915 ;;
1916 ?:[\\/]*)
1917 echo $file is in $xxx.
1918 ;;
1919 *)
1920 echo "I don't know where '$file' is, and my life depends on it." >&4
1921 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1922 exit 1
1923 ;;
1924 esac
1925done
1926echo " "
1927echo "Don't worry if any of the following aren't found..."
1928say=offhand
1929for file in $trylist; do
1930 eval xxx=\$$file
1931 case "$xxx" in
1932 /*|?:[\\/]*)
1933 if test -f "$xxx"; then
1934 : ok
1935 else
1936 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1937 xxx=`./loc $file $file $pth`
1938 fi
1939 ;;
1940 '') xxx=`./loc $file $file $pth`;;
1941 *) xxx=`./loc $xxx $xxx $pth`;;
1942 esac
1943 eval $file=$xxx
1944 eval _$file=$xxx
1945 case "$xxx" in
1946 /*)
1947 echo $file is in $xxx.
1948 ;;
1949 ?:[\\/]*)
1950 echo $file is in $xxx.
1951 ;;
1952 *)
1953 echo "I don't see $file out there, $say."
1954 say=either
1955 ;;
1956 esac
1957done
1958case "$egrep" in
1959egrep)
1960 echo "Substituting grep for egrep."
1961 egrep=$grep
1962 ;;
1963esac
1964case "$ln" in
1965ln)
1966 echo "Substituting cp for ln."
1967 ln=$cp
1968 ;;
1969esac
1970case "$test" in
1971test)
1972 echo "Hopefully test is built into your sh."
1973 ;;
1974*)
1975 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1976 echo "Using the test built into your sh."
1977 test=test
1978 _test=test
1979 fi
1980 ;;
1981esac
1982case "$echo" in
1983echo)
1984 echo "Hopefully echo is built into your sh."
1985 ;;
1986'') ;;
1987*)
1988 echo " "
1989echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1990 $echo $n "hi there$c" >foo1
1991 echo $n "hi there$c" >foo2
1992 if cmp foo1 foo2 >/dev/null 2>&1; then
1993 echo "They are compatible. In fact, they may be identical."
1994 else
1995 case "$n" in
1996 '-n') n='' c='\c';;
1997 *) n='-n' c='';;
1998 esac
1999 cat <<FOO
2000They are not compatible! You are probably running ksh on a non-USG system.
2001I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2002have echo built in and we may have to run some Bourne shell scripts. That
2003means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2004
2005FOO
2006 $echo $n "The star should be here-->$c"
2007 $echo "*"
2008 fi
2009 $rm -f foo1 foo2
2010 ;;
2011esac
2012
2013: determine whether symbolic links are supported
2014echo " "
2015$touch blurfl
2016if $ln -s blurfl sym > /dev/null 2>&1 ; then
2017 echo "Symbolic links are supported." >&4
2018 lns="$ln -s"
2019else
2020 echo "Symbolic links are NOT supported." >&4
2021 lns="$ln"
2022fi
2023$rm -f blurfl sym
2024
2025: see whether [:lower:] and [:upper:] are supported character classes
2026echo " "
2027case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2028ABYZ)
2029 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2030 up='[:upper:]'
2031 low='[:lower:]'
2032 ;;
2033*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2034 # (0xc9 and 0xd1), therefore that is a nice testing point.
2035 if test "X$up" = X -o "X$low" = X; then
2036 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2037 ij) up='[A-Z]'
2038 low='[a-z]'
2039 ;;
2040 esac
2041 fi
2042 if test "X$up" = X -o "X$low" = X; then
2043 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2044 ij) up='A-Z'
2045 low='a-z'
2046 ;;
2047 esac
2048 fi
2049 if test "X$up" = X -o "X$low" = X; then
2050 case "`echo IJ | od -x 2>/dev/null`" in
2051 *C9D1*|*c9d1*)
2052 echo "Hey, this might be EBCDIC." >&4
2053 if test "X$up" = X -o "X$low" = X; then
2054 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2055 ij) up='[A-IJ-RS-Z]'
2056 low='[a-ij-rs-z]'
2057 ;;
2058 esac
2059 fi
2060 if test "X$up" = X -o "X$low" = X; then
2061 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2062 ij) up='A-IJ-RS-Z'
2063 low='a-ij-rs-z'
2064 ;;
2065 esac
2066 fi
2067 ;;
2068 esac
2069 fi
2070esac
2071case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2072ij)
2073 echo "Using $up and $low to convert case." >&4
2074 ;;
2075*)
2076 echo "I don't know how to translate letters from upper to lower case." >&4
2077 echo "Your tr is not acting any way I know of." >&4
2078 exit 1
2079 ;;
2080esac
2081: set up the translation script tr, must be called with ./tr of course
2082cat >tr <<EOSC
2083$startsh
2084case "\$1\$2" in
2085'[A-Z][a-z]') exec $tr '$up' '$low';;
2086'[a-z][A-Z]') exec $tr '$low' '$up';;
2087esac
2088exec $tr "\$@"
2089EOSC
2090chmod +x tr
2091$eunicefix tr
2092
2093: Try to determine whether config.sh was made on this system
2094case "$config_sh" in
2095'')
2096myuname=`$uname -a 2>/dev/null`
2097$test -z "$myuname" && myuname=`hostname 2>/dev/null`
2098# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2099# because the A-Z/a-z are not consecutive.
2100myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2101 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2102newmyuname="$myuname"
2103dflt=n
2104case "$knowitall" in
2105'')
2106 if test -f ../config.sh; then
2107 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2108 eval "`grep myuname= ../config.sh`"
2109 fi
2110 if test "X$myuname" = "X$newmyuname"; then
2111 dflt=y
2112 fi
2113 fi
2114 ;;
2115*) dflt=y;;
2116esac
2117
2118: Get old answers from old config file if Configure was run on the
2119: same system, otherwise use the hints.
2120hint=default
2121cd ..
2122if test -f config.sh; then
2123 echo " "
2124 rp="I see a config.sh file. Shall I use it to set the defaults?"
2125 . UU/myread
2126 case "$ans" in
2127 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2128 *) echo "Fetching default answers from your old config.sh file..." >&4
2129 tmp_n="$n"
2130 tmp_c="$c"
2131 tmp_sh="$sh"
2132 . ./config.sh
2133 cp config.sh UU
2134 n="$tmp_n"
2135 c="$tmp_c"
2136 : Older versions did not always set $sh. Catch re-use of such
2137 : an old config.sh.
2138 case "$sh" in
2139 '') sh="$tmp_sh" ;;
2140 esac
2141 hint=previous
2142 ;;
2143 esac
2144fi
2145if test ! -f config.sh; then
2146 $cat <<EOM
2147
2148First time through, eh? I have some defaults handy for some systems
2149that need some extra help getting the Configure answers right:
2150
2151EOM
2152 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2153 dflt=''
2154 : Half the following guesses are probably wrong... If you have better
2155 : tests or hints, please send them to perlbug@perl.com
2156 : The metaconfig authors would also appreciate a copy...
2157 $test -f /irix && osname=irix
2158 $test -f /xenix && osname=sco_xenix
2159 $test -f /dynix && osname=dynix
2160 $test -f /dnix && osname=dnix
2161 $test -f /lynx.os && osname=lynxos
2162 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2163 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2164 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2165 $test -f /bin/mips && /bin/mips && osname=mips
2166 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2167 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2168 $test -d /usr/apollo/bin && osname=apollo
2169 $test -f /etc/saf/_sactab && osname=svr4
2170 $test -d /usr/include/minix && osname=minix
2171 if $test -d /MachTen -o -d /MachTen_Folder; then
2172 osname=machten
2173 if $test -x /sbin/version; then
2174 osvers=`/sbin/version | $awk '{print $2}' |
2175 $sed -e 's/[A-Za-z]$//'`
2176 elif $test -x /usr/etc/version; then
2177 osvers=`/usr/etc/version | $awk '{print $2}' |
2178 $sed -e 's/[A-Za-z]$//'`
2179 else
2180 osvers="$2.$3"
2181 fi
2182 fi
2183
2184 $test -f /sys/posix.dll &&
2185 $test -f /usr/bin/what &&
2186 set X `/usr/bin/what /sys/posix.dll` &&
2187 $test "$3" = UWIN &&
2188 osname=uwin &&
2189 osvers="$5"
2190
2191 if $test -f $uname; then
2192 set X $myuname
2193 shift
2194
2195 case "$5" in
2196 fps*) osname=fps ;;
2197 mips*)
2198 case "$4" in
2199 umips) osname=umips ;;
2200 *) osname=mips ;;
2201 esac;;
2202 [23]100) osname=mips ;;
2203 next*) osname=next ;;
2204 i386*)
2205 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2206 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2207 osname='sco'
2208 osvers=$tmp
2209 elif $test -f /etc/kconfig; then
2210 osname=isc
2211 if test "$lns" = "$ln -s"; then
2212 osvers=4
2213 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2214 osvers=3
2215 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2216 osvers=2
2217 fi
2218 fi
2219 tmp=''
2220 ;;
2221 pc*)
2222 if test -n "$DJGPP"; then
2223 osname=dos
2224 osvers=djgpp
2225 fi
2226 ;;
2227 esac
2228
2229 case "$1" in
2230 aix) osname=aix
2231 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2232 case "$tmp" in
2233 'not found') osvers="$4"."$3" ;;
2234 '<3240'|'<>3240') osvers=3.2.0 ;;
2235 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2236 '=3250'|'>3250') osvers=3.2.5 ;;
2237 *) osvers=$tmp;;
2238 esac
2239 ;;
2240 bsd386) osname=bsd386
2241 osvers=`$uname -r`
2242 ;;
2243 cygwin*) osname=cygwin
2244 osvers="$3"
2245 ;;
2246 *dc.osx) osname=dcosx
2247 osvers="$3"
2248 ;;
2249 dnix) osname=dnix
2250 osvers="$3"
2251 ;;
2252 domainos) osname=apollo
2253 osvers="$3"
2254 ;;
2255 dgux) osname=dgux
2256 osvers="$3"
2257 ;;
2258 dynixptx*) osname=dynixptx
2259 osvers=`echo "$4"|sed 's/^v//'`
2260 ;;
2261 freebsd) osname=freebsd
2262 osvers="$3" ;;
2263 genix) osname=genix ;;
2264 hp*) osname=hpux
2265 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2266 ;;
2267 irix*) osname=irix
2268 case "$3" in
2269 4*) osvers=4 ;;
2270 5*) osvers=5 ;;
2271 *) osvers="$3" ;;
2272 esac
2273 ;;
2274 linux) osname=linux
2275 case "$3" in
2276 *) osvers="$3" ;;
2277 esac
2278 ;;
2279 MiNT) osname=mint
2280 ;;
2281 netbsd*) osname=netbsd
2282 osvers="$3"
2283 ;;
2284 news-os) osvers="$3"
2285 case "$3" in
2286 4*) osname=newsos4 ;;
2287 *) osname=newsos ;;
2288 esac
2289 ;;
2290 next*) osname=next ;;
2291 POSIX-BC | posix-bc ) osname=posix-bc
2292 osvers="$3"
2293 ;;
2294 powerux | power_ux | powermax_os | powermaxos | \
2295 powerunix | power_unix) osname=powerux
2296 osvers="$3"
2297 ;;
2298 qnx) osname=qnx
2299 osvers="$4"
2300 ;;
2301 solaris) osname=solaris
2302 case "$3" in
2303 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2304 *) osvers="$3" ;;
2305 esac
2306 ;;
2307 sunos) osname=sunos
2308 case "$3" in
2309 5*) osname=solaris
2310 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2311 *) osvers="$3" ;;
2312 esac
2313 ;;
2314 titanos) osname=titanos
2315 case "$3" in
2316 1*) osvers=1 ;;
2317 2*) osvers=2 ;;
2318 3*) osvers=3 ;;
2319 4*) osvers=4 ;;
2320 *) osvers="$3" ;;
2321 esac
2322 ;;
2323 ultrix) osname=ultrix
2324 osvers="$3"
2325 ;;
2326 osf1|mls+) case "$5" in
2327 alpha)
2328 osname=dec_osf
2329 osvers=`echo "$3" | sed 's/^[xvt]//'`
2330 ;;
2331 hp*) osname=hp_osf1 ;;
2332 mips) osname=mips_osf1 ;;
2333 esac
2334 ;;
2335 unixware) osname=svr5
2336 osvers="$4"
2337 ;;
2338 uts) osname=uts
2339 osvers="$3"
2340 ;;
2341 $2) case "$osname" in
2342 *isc*) ;;
2343 *freebsd*) ;;
2344 svr*)
2345 : svr4.x or possibly later
2346 case "svr$3" in
2347 ${osname}*)
2348 osname=svr$3
2349 osvers=$4
2350 ;;
2351 esac
2352 case "$osname" in
2353 svr4.0)
2354 : Check for ESIX
2355 if test -f /stand/boot ; then
2356 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2357 if test -n "$INITPROG" -a -f "$INITPROG"; then
2358 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2359 if test -n "$isesix"; then
2360 osname=esix4
2361 fi
2362 fi
2363 fi
2364 ;;
2365 esac
2366 ;;
2367 *) if test -f /etc/systemid; then
2368 osname=sco
2369 set `echo $3 | $sed 's/\./ /g'` $4
2370 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2371 osvers=$1.$2.$3
2372 elif $test -f $src/hints/sco_$1_$2.sh; then
2373 osvers=$1.$2
2374 elif $test -f $src/hints/sco_$1.sh; then
2375 osvers=$1
2376 fi
2377 else
2378 case "$osname" in
2379 '') : Still unknown. Probably a generic Sys V.
2380 osname="sysv"
2381 osvers="$3"
2382 ;;
2383 esac
2384 fi
2385 ;;
2386 esac
2387 ;;
2388 *) case "$osname" in
2389 '') : Still unknown. Probably a generic BSD.
2390 osname="$1"
2391 osvers="$3"
2392 ;;
2393 esac
2394 ;;
2395 esac
2396 else
2397 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2398 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2399 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2400 osname=news_os
2401 fi
2402 $rm -f UU/kernel.what
2403 elif test -d c:/.; then
2404 set X $myuname
2405 osname=os2
2406 osvers="$5"
2407 fi
2408 fi
2409
2410 : Now look for a hint file osname_osvers, unless one has been
2411 : specified already.
2412 case "$hintfile" in
2413 ''|' ')
2414 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2415 : Also try without trailing minor version numbers.
2416 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2417 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2418 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2419 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2420 case "$file" in
2421 '') dflt=none ;;
2422 *) case "$osvers" in
2423 '') dflt=$file
2424 ;;
2425 *) if $test -f $src/hints/$file.sh ; then
2426 dflt=$file
2427 elif $test -f $src/hints/$xfile.sh ; then
2428 dflt=$xfile
2429 elif $test -f $src/hints/$xxfile.sh ; then
2430 dflt=$xxfile
2431 elif $test -f $src/hints/$xxxfile.sh ; then
2432 dflt=$xxxfile
2433 elif $test -f $src/hints/$xxxxfile.sh ; then
2434 dflt=$xxxxfile
2435 elif $test -f "$src/hints/${osname}.sh" ; then
2436 dflt="${osname}"
2437 else
2438 dflt=none
2439 fi
2440 ;;
2441 esac
2442 ;;
2443 esac
2444 if $test -f Policy.sh ; then
2445 case "$dflt" in
2446 *Policy*) ;;
2447 none) dflt="Policy" ;;
2448 *) dflt="Policy $dflt" ;;
2449 esac
2450 fi
2451 ;;
2452 *)
2453 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2454 ;;
2455 esac
2456
2457 if $test -f Policy.sh ; then
2458 $cat <<EOM
2459
2460There's also a Policy hint file available, which should make the
2461site-specific (policy) questions easier to answer.
2462EOM
2463
2464 fi
2465
2466 $cat <<EOM
2467
2468You may give one or more space-separated answers, or "none" if appropriate.
2469A well-behaved OS will have no hints, so answering "none" or just "Policy"
2470is a good thing. DO NOT give a wrong version or a wrong OS.
2471
2472EOM
2473
2474 rp="Which of these apply, if any?"
2475 . UU/myread
2476 tans=$ans
2477 for file in $tans; do
2478 if $test X$file = XPolicy -a -f Policy.sh; then
2479 . Policy.sh
2480 $cat Policy.sh >> UU/config.sh
2481 elif $test -f $src/hints/$file.sh; then
2482 . $src/hints/$file.sh
2483 $cat $src/hints/$file.sh >> UU/config.sh
2484 elif $test X$tans = X -o X$tans = Xnone ; then
2485 : nothing
2486 else
2487 : Give one chance to correct a possible typo.
2488 echo "$file.sh does not exist"
2489 dflt=$file
2490 rp="hint to use instead?"
2491 . UU/myread
2492 for file in $ans; do
2493 if $test -f "$src/hints/$file.sh"; then
2494 . $src/hints/$file.sh
2495 $cat $src/hints/$file.sh >> UU/config.sh
2496 elif $test X$ans = X -o X$ans = Xnone ; then
2497 : nothing
2498 else
2499 echo "$file.sh does not exist -- ignored."
2500 fi
2501 done
2502 fi
2503 done
2504
2505 hint=recommended
2506 : Remember our hint file for later.
2507 if $test -f "$src/hints/$file.sh" ; then
2508 hintfile="$file"
2509 else
2510 hintfile=''
2511 fi
2512fi
2513cd UU
2514;;
2515*)
2516 echo " "
2517 echo "Fetching default answers from $config_sh..." >&4
2518 tmp_n="$n"
2519 tmp_c="$c"
2520 cd ..
2521 cp $config_sh config.sh 2>/dev/null
2522 chmod +w config.sh
2523 . ./config.sh
2524 cd UU
2525 cp ../config.sh .
2526 n="$tmp_n"
2527 c="$tmp_c"
2528 hint=previous
2529 ;;
2530esac
2531test "$override" && . ./optdef.sh
2532myuname="$newmyuname"
2533
2534: Restore computed paths
2535for file in $loclist $trylist; do
2536 eval $file="\$_$file"
2537done
2538
2539cat << EOM
2540
2541Configure uses the operating system name and version to set some defaults.
2542The default value is probably right if the name rings a bell. Otherwise,
2543since spelling matters for me, either accept the default or answer "none"
2544to leave it blank.
2545
2546EOM
2547case "$osname" in
2548 ''|' ')
2549 case "$hintfile" in
2550 ''|' '|none) dflt=none ;;
2551 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2552 esac
2553 ;;
2554 *) dflt="$osname" ;;
2555esac
2556rp="Operating system name?"
2557. ./myread
2558case "$ans" in
2559none) osname='' ;;
2560*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2561esac
2562echo " "
2563case "$osvers" in
2564 ''|' ')
2565 case "$hintfile" in
2566 ''|' '|none) dflt=none ;;
2567 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2568 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2569 case "$dflt" in
2570 ''|' ') dflt=none ;;
2571 esac
2572 ;;
2573 esac
2574 ;;
2575 *) dflt="$osvers" ;;
2576esac
2577rp="Operating system version?"
2578. ./myread
2579case "$ans" in
2580none) osvers='' ;;
2581*) osvers="$ans" ;;
2582esac
2583
2584
2585. ./posthint.sh
2586
2587: who configured the system
2588cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2589cf_by=`(logname) 2>/dev/null`
2590case "$cf_by" in
2591"")
2592 cf_by=`(whoami) 2>/dev/null`
2593 case "$cf_by" in
2594 "") cf_by=unknown ;;
2595 esac ;;
2596esac
2597
2598: set up the script used to warn in case of inconsistency
2599cat <<EOS >whoa
2600$startsh
2601EOS
2602cat <<'EOSC' >>whoa
2603dflt=y
2604echo " "
2605echo "*** WHOA THERE!!! ***" >&4
2606echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2607rp=" Keep the $hint value?"
2608. ./myread
2609case "$ans" in
2610y) td=$was; tu=$was;;
2611esac
2612EOSC
2613
2614: function used to set $1 to $val
2615setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2616case "$val$was" in
2617$define$undef) . ./whoa; eval "$var=\$td";;
2618$undef$define) . ./whoa; eval "$var=\$tu";;
2619*) eval "$var=$val";;
2620esac'
2621
2622case "$usethreads" in
2623$define|true|[yY]*) dflt='y';;
2624*) dflt='n';;
2625esac
2626cat <<EOM
2627
2628Perl can be built to take advantage of threads on some systems.
2629To do so, Configure can be run with -Dusethreads.
2630
2631Note that threading is a highly experimental feature, and
2632some known race conditions still remain. If you choose to try
2633it, be very sure to not actually deploy it for production
2634purposes. README.threads has more details, and is required
2635reading if you enable threads.
2636
2637If this doesn't make any sense to you, just accept the default '$dflt'.
2638EOM
2639rp='Build a threading Perl?'
2640. ./myread
2641case "$ans" in
2642y|Y) val="$define" ;;
2643*) val="$undef" ;;
2644esac
2645set usethreads
2646eval $setvar
2647
2648case "$usethreads" in
2649$define)
2650 $cat <<EOM
2651
2652As of 5.5.640, Perl has two different internal threading implementations,
2653the 5.005 version (5005threads) and an interpreter-based version
2654(ithreads) that has one interpreter per thread. Both are very
2655experimental. This arrangement exists to help developers work out
2656which one is better.
2657
2658If you're a casual user, you probably don't want interpreter-threads
2659at this time. There doesn't yet exist a way to create threads from
2660within Perl in this model, i.e., "use Thread;" will NOT work.
2661EOM
2662 : Default to ithreads unless overridden on command line or with
2663 : old config.sh
2664 dflt='y'
2665 case "$use5005threads" in
2666 $define|true|[yY]*) dflt='n';;
2667 esac
2668 case "$useithreads" in
2669 $undef|false|[nN]*) dflt='n';;
2670 esac
2671 rp='Use interpreter-based ithreads?'
2672 . ./myread
2673 case "$ans" in
2674 y|Y) val="$define" ;;
2675 *) val="$undef" ;;
2676 esac
2677 set useithreads
2678 eval $setvar
2679 : Now set use5005threads to the opposite value.
2680 case "$useithreads" in
2681 $define) val="$undef" ;;
2682 *) val="$define" ;;
2683 esac
2684 set use5005threads
2685 eval $setvar
2686 ;;
2687*)
2688 useithreads="$undef"
2689 use5005threads="$undef"
2690 ;;
2691esac
2692
2693case "$d_oldpthreads" in
2694'') : Configure tests would be welcome here. For now, assume undef.
2695 val="$undef" ;;
2696*) val="$d_oldpthreads" ;;
2697esac
2698set d_oldpthreads
2699eval $setvar
2700
2701
2702case "$usethreads" in
2703"$define"|true|[yY]*)
2704: Look for a hint-file generated 'call-back-unit'. If the
2705: user has specified that a threading perl is to be built,
2706: we may need to set or change some other defaults.
2707 if $test -f usethreads.cbu; then
2708 echo "Your platform has some specific hints for threaded builds, using them..."
2709 . ./usethreads.cbu
2710 else
2711 $cat <<EOM
2712(Your platform doesn't have any specific hints for threaded builds.
2713 Assuming POSIX threads, then.)
2714EOM
2715 fi
2716 ;;
2717esac
2718
2719cat <<EOM
2720
2721Perl can be built so that multiple Perl interpreters can coexist
2722within the same Perl executable.
2723EOM
2724
2725case "$useithreads" in
2726$define)
2727 cat <<EOM
2728This multiple interpreter support is required for interpreter-based threads.
2729EOM
2730 val="$define"
2731 ;;
2732*) case "$usemultiplicity" in
2733 $define|true|[yY]*) dflt='y';;
2734 *) dflt='n';;
2735 esac
2736 echo " "
2737 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2738 rp='Build Perl for multiplicity?'
2739 . ./myread
2740 case "$ans" in
2741 y|Y) val="$define" ;;
2742 *) val="$undef" ;;
2743 esac
2744 ;;
2745esac
2746set usemultiplicity
2747eval $setvar
2748
2749: determine where manual pages are on this system
2750echo " "
2751case "$sysman" in
2752'')
2753 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2754 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2755 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2756 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2757 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2758 sysman=`./loc . /usr/man/man1 $syspath`
2759 ;;
2760esac
2761if $test -d "$sysman"; then
2762 echo "System manual is in $sysman." >&4
2763else
2764 echo "Could not find manual pages in source form." >&4
2765fi
2766
2767: see what memory models we can support
2768case "$models" in
2769'')
2770 $cat >pdp11.c <<'EOP'
2771int main() {
2772#ifdef pdp11
2773 exit(0);
2774#else
2775 exit(1);
2776#endif
2777}
2778EOP
2779 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2780 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2781 dflt='unsplit split'
2782 else
2783 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2784 case "$tans" in
2785 X) dflt='none';;
2786 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2787 dflt='small'
2788 else
2789 dflt=''
2790 fi
2791 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2792 dflt="$dflt medium"
2793 fi
2794 if $test -d /lib/large || $test -d /usr/lib/large; then
2795 dflt="$dflt large"
2796 fi
2797 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2798 dflt="$dflt huge"
2799 fi
2800 esac
2801 fi;;
2802*) dflt="$models";;
2803esac
2804$cat <<EOM
2805
2806Some systems have different model sizes. On most systems they are called
2807small, medium, large, and huge. On the PDP11 they are called unsplit and
2808split. If your system doesn't support different memory models, say "none".
2809If you wish to force everything to one memory model, say "none" here and
2810put the appropriate flags later when it asks you for other cc and ld flags.
2811Venix systems may wish to put "none" and let the compiler figure things out.
2812(In the following question multiple model names should be space separated.)
2813
2814The default for most systems is "none".
2815
2816EOM
2817rp="Which memory models are supported?"
2818. ./myread
2819models="$ans"
2820
2821case "$models" in
2822none)
2823 small=''
2824 medium=''
2825 large=''
2826 huge=''
2827 unsplit=''
2828 split=''
2829 ;;
2830*split)
2831 case "$split" in
2832 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2833 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2834 dflt='-i'
2835 else
2836 dflt='none'
2837 fi;;
2838 *) dflt="$split";;
2839 esac
2840 rp="What flag indicates separate I and D space?"
2841 . ./myread
2842 tans="$ans"
2843 case "$tans" in
2844 none) tans='';;
2845 esac
2846 split="$tans"
2847 unsplit='';;
2848*large*|*small*|*medium*|*huge*)
2849 case "$models" in
2850 *large*)
2851 case "$large" in
2852 '') dflt='-Ml';;
2853 *) dflt="$large";;
2854 esac
2855 rp="What flag indicates large model?"
2856 . ./myread
2857 tans="$ans"
2858 case "$tans" in
2859 none) tans='';
2860 esac
2861 large="$tans";;
2862 *) large='';;
2863 esac
2864 case "$models" in
2865 *huge*) case "$huge" in
2866 '') dflt='-Mh';;
2867 *) dflt="$huge";;
2868 esac
2869 rp="What flag indicates huge model?"
2870 . ./myread
2871 tans="$ans"
2872 case "$tans" in
2873 none) tans='';
2874 esac
2875 huge="$tans";;
2876 *) huge="$large";;
2877 esac
2878 case "$models" in
2879 *medium*) case "$medium" in
2880 '') dflt='-Mm';;
2881 *) dflt="$medium";;
2882 esac
2883 rp="What flag indicates medium model?"
2884 . ./myread
2885 tans="$ans"
2886 case "$tans" in
2887 none) tans='';
2888 esac
2889 medium="$tans";;
2890 *) medium="$large";;
2891 esac
2892 case "$models" in
2893 *small*) case "$small" in
2894 '') dflt='none';;
2895 *) dflt="$small";;
2896 esac
2897 rp="What flag indicates small model?"
2898 . ./myread
2899 tans="$ans"
2900 case "$tans" in
2901 none) tans='';
2902 esac
2903 small="$tans";;
2904 *) small='';;
2905 esac
2906 ;;
2907*)
2908 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2909 ;;
2910esac
2911$rm -f pdp11.* pdp11
2912
2913: make some quick guesses about what we are up against
2914echo " "
2915$echo $n "Hmm... $c"
2916echo exit 1 >bsd
2917echo exit 1 >usg
2918echo exit 1 >v7
2919echo exit 1 >osf1
2920echo exit 1 >eunice
2921echo exit 1 >xenix
2922echo exit 1 >venix
2923echo exit 1 >os2
2924d_bsd="$undef"
2925$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2926if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2927then
2928 echo "Looks kind of like an OSF/1 system, but we'll see..."
2929 echo exit 0 >osf1
2930elif test `echo abc | tr a-z A-Z` = Abc ; then
2931 xxx=`./loc addbib blurfl $pth`
2932 if $test -f $xxx; then
2933 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2934 echo exit 0 >bsd
2935 echo exit 0 >usg
2936 else
2937 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2938 echo "Looks kind of like an extended USG system, but we'll see..."
2939 else
2940 echo "Looks kind of like a USG system, but we'll see..."
2941 fi
2942 echo exit 0 >usg
2943 fi
2944elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2945 echo "Looks kind of like a BSD system, but we'll see..."
2946 d_bsd="$define"
2947 echo exit 0 >bsd
2948else
2949 echo "Looks kind of like a Version 7 system, but we'll see..."
2950 echo exit 0 >v7
2951fi
2952case "$eunicefix" in
2953*unixtovms*)
2954 $cat <<'EOI'
2955There is, however, a strange, musty smell in the air that reminds me of
2956something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2957EOI
2958 echo exit 0 >eunice
2959 d_eunice="$define"
2960: it so happens the Eunice I know will not run shell scripts in Unix format
2961 ;;
2962*)
2963 echo " "
2964 echo "Congratulations. You aren't running Eunice."
2965 d_eunice="$undef"
2966 ;;
2967esac
2968: Detect OS2. The p_ variable is set above in the Head.U unit.
2969case "$p_" in
2970:) ;;
2971*)
2972 $cat <<'EOI'
2973I have the feeling something is not exactly right, however...don't tell me...
2974lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2975EOI
2976 echo exit 0 >os2
2977 ;;
2978esac
2979if test -f /xenix; then
2980 echo "Actually, this looks more like a XENIX system..."
2981 echo exit 0 >xenix
2982 d_xenix="$define"
2983else
2984 echo " "
2985 echo "It's not Xenix..."
2986 d_xenix="$undef"
2987fi
2988chmod +x xenix
2989$eunicefix xenix
2990if test -f /venix; then
2991 echo "Actually, this looks more like a VENIX system..."
2992 echo exit 0 >venix
2993else
2994 echo " "
2995 if ./xenix; then
2996 : null
2997 else
2998 echo "Nor is it Venix..."
2999 fi
3000fi
3001chmod +x bsd usg v7 osf1 eunice xenix venix os2
3002$eunicefix bsd usg v7 osf1 eunice xenix venix os2
3003$rm -f foo
3004
3005: see if we need a special compiler
3006echo " "
3007if ./usg; then
3008 case "$cc" in
3009 '') case "$Mcc" in
3010 /*) dflt='Mcc';;
3011 *) case "$large" in
3012 -M*) dflt='cc';;
3013 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3014 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3015 dflt='cc'
3016 else
3017 dflt='cc -M'
3018 fi
3019 else
3020 dflt='cc'
3021 fi;;
3022 esac;;
3023 esac;;
3024 *) dflt="$cc";;
3025 esac
3026 case "$dflt" in
3027 *M*) $cat <<'EOM'
3028On some older systems the default C compiler will not resolve multiple global
3029references that happen to have the same name. On some such systems the "Mcc"
3030command may be used to force these to be resolved. On other systems a "cc -M"
3031command is required. (Note that the -M flag on other systems indicates a
3032memory model to use!) If you have the Gnu C compiler, you might wish to use
3033that instead.
3034
3035EOM
3036 ;;
3037 esac
3038 rp="Use which C compiler?"
3039 . ./myread
3040 cc="$ans"
3041else
3042 case "$cc" in
3043 '') dflt=cc;;
3044 *) dflt="$cc";;
3045 esac
3046 rp="Use which C compiler?"
3047 . ./myread
3048 cc="$ans"
3049fi
3050: Look for a hint-file generated 'call-back-unit'. Now that the
3051: user has specified the compiler, we may need to set or change some
3052: other defaults.
3053if $test -f cc.cbu; then
3054 . ./cc.cbu
3055fi
3056echo " "
3057echo "Checking for GNU cc in disguise and/or its version number..." >&4
3058$cat >gccvers.c <<EOM
3059#include <stdio.h>
3060int main() {
3061#ifdef __GNUC__
3062#ifdef __VERSION__
3063 printf("%s\n", __VERSION__);
3064#else
3065 printf("%s\n", "1");
3066#endif
3067#endif
3068 exit(0);
3069}
3070EOM
3071if $cc $ldflags -o gccvers gccvers.c; then
3072 gccversion=`./gccvers`
3073 case "$gccversion" in
3074 '') echo "You are not using GNU cc." ;;
3075 *) echo "You are using GNU cc $gccversion."
3076 ;;
3077 esac
3078else
3079 echo " "
3080 echo "*** WHOA THERE!!! ***" >&4
3081 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3082 case "$knowitall" in
3083 '')
3084 echo " You'd better start hunting for one and let me know about it." >&4
3085 exit 1
3086 ;;
3087 esac
3088fi
3089$rm -f gccvers*
3090case "$gccversion" in
30911*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3092esac
3093
3094: decide how portable to be. Allow command line overrides.
3095case "$d_portable" in
3096"$undef") ;;
3097*) d_portable="$define" ;;
3098esac
3099
3100: set up shell script to do ~ expansion
3101cat >filexp <<EOSS
3102$startsh
3103: expand filename
3104case "\$1" in
3105 ~/*|~)
3106 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3107 ;;
3108 ~*)
3109 if $test -f /bin/csh; then
3110 /bin/csh -f -c "glob \$1"
3111 failed=\$?
3112 echo ""
3113 exit \$failed
3114 else
3115 name=\`$expr x\$1 : '..\([^/]*\)'\`
3116 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3117 if $test ! -d "\$dir"; then
3118 me=\`basename \$0\`
3119 echo "\$me: can't locate home directory for: \$name" >&2
3120 exit 1
3121 fi
3122 case "\$1" in
3123 */*)
3124 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3125 ;;
3126 *)
3127 echo \$dir
3128 ;;
3129 esac
3130 fi
3131 ;;
3132*)
3133 echo \$1
3134 ;;
3135esac
3136EOSS
3137chmod +x filexp
3138$eunicefix filexp
3139
3140: now set up to get a file name
3141cat <<EOS >getfile
3142$startsh
3143EOS
3144cat <<'EOSC' >>getfile
3145tilde=''
3146fullpath=''
3147already=''
3148skip=''
3149none_ok=''
3150exp_file=''
3151nopath_ok=''
3152orig_rp="$rp"
3153orig_dflt="$dflt"
3154case "$gfpth" in
3155'') gfpth='.' ;;
3156esac
3157
3158case "$fn" in
3159*\(*)
3160 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3161 fn=`echo $fn | sed 's/(.*)//'`
3162 ;;
3163esac
3164
3165case "$fn" in
3166*:*)
3167 loc_file=`expr $fn : '.*:\(.*\)'`
3168 fn=`expr $fn : '\(.*\):.*'`
3169 ;;
3170esac
3171
3172case "$fn" in
3173*~*) tilde=true;;
3174esac
3175case "$fn" in
3176*/*) fullpath=true;;
3177esac
3178case "$fn" in
3179*+*) skip=true;;
3180esac
3181case "$fn" in
3182*n*) none_ok=true;;
3183esac
3184case "$fn" in
3185*e*) exp_file=true;;
3186esac
3187case "$fn" in
3188*p*) nopath_ok=true;;
3189esac
3190
3191case "$fn" in
3192*f*) type='File';;
3193*d*) type='Directory';;
3194*l*) type='Locate';;
3195esac
3196
3197what="$type"
3198case "$what" in
3199Locate) what='File';;
3200esac
3201
3202case "$exp_file" in
3203'')
3204 case "$d_portable" in
3205 "$define") ;;
3206 *) exp_file=true;;
3207 esac
3208 ;;
3209esac
3210
3211cd ..
3212while test "$type"; do
3213 redo=''
3214 rp="$orig_rp"
3215 dflt="$orig_dflt"
3216 case "$tilde" in
3217 true) rp="$rp (~name ok)";;
3218 esac
3219 . UU/myread
3220 if test -f UU/getfile.ok && \
3221 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3222 then
3223 value="$ans"
3224 ansexp="$ans"
3225 break
3226 fi
3227 case "$ans" in
3228 none)
3229 value=''
3230 ansexp=''
3231 case "$none_ok" in
3232 true) type='';;
3233 esac
3234 ;;
3235 *)
3236 case "$tilde" in
3237 '') value="$ans"
3238 ansexp="$ans";;
3239 *)
3240 value=`UU/filexp $ans`
3241 case $? in
3242 0)
3243 if test "$ans" != "$value"; then
3244 echo "(That expands to $value on this system.)"
3245 fi
3246 ;;
3247 *) value="$ans";;
3248 esac
3249 ansexp="$value"
3250 case "$exp_file" in
3251 '') value="$ans";;
3252 esac
3253 ;;
3254 esac
3255 case "$fullpath" in
3256 true)
3257 case "$ansexp" in
3258 /*) value="$ansexp" ;;
3259 *)
3260 redo=true
3261 case "$already" in
3262 true)
3263 echo "I shall only accept a full path name, as in /bin/ls." >&4
3264 echo "Use a ! shell escape if you wish to check pathnames." >&4
3265 ;;
3266 *)
3267 echo "Please give a full path name, starting with slash." >&4
3268 case "$tilde" in
3269 true)
3270 echo "Note that using ~name is ok provided it expands well." >&4
3271 already=true
3272 ;;
3273 esac
3274 esac
3275 ;;
3276 esac
3277 ;;
3278 esac
3279 case "$redo" in
3280 '')
3281 case "$type" in
3282 File)
3283 for fp in $gfpth; do
3284 if test "X$fp" = X.; then
3285 pf="$ansexp"
3286 else
3287 pf="$fp/$ansexp"
3288 fi
3289 if test -f "$pf"; then
3290 type=''
3291 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3292 then
3293 echo "($value is not a plain file, but that's ok.)"
3294 type=''
3295 fi
3296 if test X"$type" = X; then
3297 value="$pf"
3298 break
3299 fi
3300 done
3301 ;;
3302 Directory)
3303 for fp in $gfpth; do
3304 if test "X$fp" = X.; then
3305 pf="$ansexp"
3306 else
3307 pf="$fp/$ansexp"
3308 fi
3309 if test -d "$pf"; then
3310 type=''
3311 value="$pf"
3312 break
3313 fi
3314 done
3315 ;;
3316 Locate)
3317 if test -d "$ansexp"; then
3318 echo "(Looking for $loc_file in directory $value.)"
3319 value="$value/$loc_file"
3320 ansexp="$ansexp/$loc_file"
3321 fi
3322 if test -f "$ansexp"; then
3323 type=''
3324 fi
3325 case "$nopath_ok" in
3326 true) case "$value" in
3327 */*) ;;
3328 *) echo "Assuming $value will be in people's path."
3329 type=''
3330 ;;
3331 esac
3332 ;;
3333 esac
3334 ;;
3335 esac
3336
3337 case "$skip" in
3338 true) type='';
3339 esac
3340
3341 case "$type" in
3342 '') ;;
3343 *)
3344 if test "$fastread" = yes; then
3345 dflt=y
3346 else
3347 dflt=n
3348 fi
3349 rp="$what $value doesn't exist. Use that name anyway?"
3350 . UU/myread
3351 dflt=''
3352 case "$ans" in
3353 y*) type='';;
3354 *) echo " ";;
3355 esac
3356 ;;
3357 esac
3358 ;;
3359 esac
3360 ;;
3361 esac
3362done
3363cd UU
3364ans="$value"
3365rp="$orig_rp"
3366dflt="$orig_dflt"
3367rm -f getfile.ok
3368test "X$gfpthkeep" != Xy && gfpth=""
3369EOSC
3370
3371: What should the include directory be ?
3372echo " "
3373$echo $n "Hmm... $c"
3374dflt='/usr/include'
3375incpath=''
3376mips_type=''
3377if $test -f /bin/mips && /bin/mips; then
3378 echo "Looks like a MIPS system..."
3379 $cat >usr.c <<'EOCP'
3380#ifdef SYSTYPE_BSD43
3381/bsd43
3382#endif
3383EOCP
3384 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3385 dflt='/bsd43/usr/include'
3386 incpath='/bsd43'
3387 mips_type='BSD 4.3'
3388 else
3389 mips_type='System V'
3390 fi
3391 $rm -f usr.c usr.out
3392 echo "and you're compiling with the $mips_type compiler and libraries."
3393 xxx_prompt=y
3394 echo "exit 0" >mips
3395else
3396 echo "Doesn't look like a MIPS system."
3397 xxx_prompt=n
3398 echo "exit 1" >mips
3399fi
3400chmod +x mips
3401$eunicefix mips
3402case "$usrinc" in
3403'') ;;
3404*) dflt="$usrinc";;
3405esac
3406case "$xxx_prompt" in
3407y) fn=d/
3408 echo " "
3409 rp='Where are the include files you want to use?'
3410 . ./getfile
3411 usrinc="$ans"
3412 ;;
3413*) usrinc="$dflt"
3414 ;;
3415esac
3416
3417: see how we invoke the C preprocessor
3418echo " "
3419echo "Now, how can we feed standard input to your C preprocessor..." >&4
3420cat <<'EOT' >testcpp.c
3421#define ABC abc
3422#define XYZ xyz
3423ABC.XYZ
3424EOT
3425cd ..
3426if test ! -f cppstdin; then
3427 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3428 # AIX cc -E doesn't show the absolute headerfile
3429 # locations but we'll cheat by using the -M flag.
3430 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
3431 else
3432 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3433 fi
3434else
3435 echo "Keeping your $hint cppstdin wrapper."
3436fi
3437chmod 755 cppstdin
3438wrapper=`pwd`/cppstdin
3439ok='false'
3440cd UU
3441
3442if $test "X$cppstdin" != "X" && \
3443 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3445then
3446 echo "You used to use $cppstdin $cppminus so we'll use that again."
3447 case "$cpprun" in
3448 '') echo "But let's see if we can live without a wrapper..." ;;
3449 *)
3450 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3452 then
3453 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3454 ok='true'
3455 else
3456 echo "(However, $cpprun $cpplast does not work, let's see...)"
3457 fi
3458 ;;
3459 esac
3460else
3461 case "$cppstdin" in
3462 '') ;;
3463 *)
3464 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3465 ;;
3466 esac
3467fi
3468
3469if $ok; then
3470 : nothing
3471elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472 $cc -E <testcpp.c >testcpp.out 2>&1; \
3473 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 echo "Yup, it does."
3475 x_cpp="$cc -E"
3476 x_minus='';
3477elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "Yup, it does."
3481 x_cpp="$cc -E"
3482 x_minus='-';
3483elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484 $cc -P <testcpp.c >testcpp.out 2>&1; \
3485 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486 echo "Yipee, that works!"
3487 x_cpp="$cc -P"
3488 x_minus='';
3489elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492 echo "At long last!"
3493 x_cpp="$cc -P"
3494 x_minus='-';
3495elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496 $cpp <testcpp.c >testcpp.out 2>&1; \
3497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498 echo "It works!"
3499 x_cpp="$cpp"
3500 x_minus='';
3501elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502 $cpp - <testcpp.c >testcpp.out 2>&1; \
3503 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504 echo "Hooray, it works! I was beginning to wonder."
3505 x_cpp="$cpp"
3506 x_minus='-';
3507elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3508 $wrapper <testcpp.c >testcpp.out 2>&1; \
3509 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510 x_cpp="$wrapper"
3511 x_minus=''
3512 echo "Eureka!"
3513else
3514 dflt=''
3515 rp="No dice. I can't find a C preprocessor. Name one:"
3516 . ./myread
3517 x_cpp="$ans"
3518 x_minus=''
3519 $x_cpp <testcpp.c >testcpp.out 2>&1
3520 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521 echo "OK, that will do." >&4
3522 else
3523echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3524 exit 1
3525 fi
3526fi
3527
3528case "$ok" in
3529false)
3530 cppstdin="$x_cpp"
3531 cppminus="$x_minus"
3532 cpprun="$x_cpp"
3533 cpplast="$x_minus"
3534 set X $x_cpp
3535 shift
3536 case "$1" in
3537 "$cpp")
3538 echo "Perhaps can we force $cc -E using a wrapper..."
3539 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3541 then
3542 echo "Yup, we can."
3543 cppstdin="$wrapper"
3544 cppminus='';
3545 else
3546 echo "Nope, we'll have to live without it..."
3547 fi
3548 ;;
3549 esac
3550 case "$cpprun" in
3551 "$wrapper")
3552 cpprun=''
3553 cpplast=''
3554 ;;
3555 esac
3556 ;;
3557esac
3558
3559case "$cppstdin" in
3560"$wrapper"|'cppstdin') ;;
3561*) $rm -f $wrapper;;
3562esac
3563$rm -f testcpp.c testcpp.out
3564
3565: Set private lib path
3566case "$plibpth" in
3567'') if ./mips; then
3568 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3569 fi;;
3570esac
3571case "$libpth" in
3572' ') dlist='';;
3573'') dlist="$loclibpth $plibpth $glibpth";;
3574*) dlist="$libpth";;
3575esac
3576
3577: Now check and see which directories actually exist, avoiding duplicates
3578libpth=''
3579for xxx in $dlist
3580do
3581 if $test -d $xxx; then
3582 case " $libpth " in
3583 *" $xxx "*) ;;
3584 *) libpth="$libpth $xxx";;
3585 esac
3586 fi
3587done
3588$cat <<'EOM'
3589
3590Some systems have incompatible or broken versions of libraries. Among
3591the directories listed in the question below, please remove any you
3592know not to be holding relevant libraries, and add any that are needed.
3593Say "none" for none.
3594
3595EOM
3596case "$libpth" in
3597'') dflt='none';;
3598*)
3599 set X $libpth
3600 shift
3601 dflt=${1+"$@"}
3602 ;;
3603esac
3604rp="Directories to use for library searches?"
3605. ./myread
3606case "$ans" in
3607none) libpth=' ';;
3608*) libpth="$ans";;
3609esac
3610
3611: compute shared library extension
3612case "$so" in
3613'')
3614 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3615 dflt='sl'
3616 else
3617 dflt='so'
3618 fi
3619 ;;
3620*) dflt="$so";;
3621esac
3622$cat <<EOM
3623
3624On some systems, shared libraries may be available. Answer 'none' if
3625you want to suppress searching of shared libraries for the remainder
3626of this configuration.
3627
3628EOM
3629rp='What is the file extension used for shared libraries?'
3630. ./myread
3631so="$ans"
3632
3633: Define several unixisms.
3634: Hints files or command line option can be used to override them.
3635: The convoluted testing is in case hints files set either the old
3636: or the new name.
3637case "$_exe" in
3638'') case "$exe_ext" in
3639 '') ;;
3640 *) _exe="$exe_ext" ;;
3641 esac
3642 ;;
3643esac
3644case "$_a" in
3645'') case "$lib_ext" in
3646 '') _a='.a';;
3647 *) _a="$lib_ext" ;;
3648 esac
3649 ;;
3650esac
3651case "$_o" in
3652'') case "$obj_ext" in
3653 '') _o='.o';;
3654 *) _o="$obj_ext";;
3655 esac
3656 ;;
3657esac
3658case "$p_" in
3659'') case "$path_sep" in
3660 '') p_=':';;
3661 *) p_="$path_sep";;
3662 esac
3663 ;;
3664esac
3665exe_ext=$_exe
3666lib_ext=$_a
3667obj_ext=$_o
3668path_sep=$p_
3669
3670: Which makefile gets called first. This is used by make depend.
3671case "$firstmakefile" in
3672'') firstmakefile='makefile';;
3673esac
3674
3675case "$usesocks" in
3676$define|true|[yY]*) dflt='y';;
3677*) dflt='n';;
3678esac
3679cat <<EOM
3680
3681Perl can be built to use the SOCKS proxy protocol library. To do so,
3682Configure must be run with -Dusesocks.
3683
3684If this doesn't make any sense to you, just accept the default '$dflt'.
3685EOM
3686rp='Build Perl for SOCKS?'
3687. ./myread
3688case "$ans" in
3689y|Y) val="$define" ;;
3690*) val="$undef" ;;
3691esac
3692set usesocks
3693eval $setvar
3694
3695: Looking for optional libraries
3696echo " "
3697echo "Checking for optional libraries..." >&4
3698case "$libs" in
3699' '|'') dflt='';;
3700*) dflt="$libs";;
3701esac
3702case "$libswanted" in
3703'') libswanted='c_s';;
3704esac
3705case "$usesocks" in
3706$define)
3707 libswanted="$libswanted socks5 socks5_sh"
3708 ;;
3709esac
3710libsfound=''
3711libsfiles=''
3712libsdirs=''
3713libspath=''
3714for thisdir in $libpth $xlibpth; do
3715 test -d $thisdir && libspath="$libspath $thisdir"
3716done
3717for thislib in $libswanted; do
3718 for thisdir in $libspath; do
3719 xxx=''
3720 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3721 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3722 $test -f "$xxx" && eval $libscheck
3723 $test -f "$xxx" && libstyle=shared
3724 fi
3725 if test ! -f "$xxx"; then
3726 xxx=$thisdir/lib$thislib.$so
3727 $test -f "$xxx" && eval $libscheck
3728 $test -f "$xxx" && libstyle=shared
3729 fi
3730 if test ! -f "$xxx"; then
3731 xxx=$thisdir/lib$thislib$_a
3732 $test -f "$xxx" && eval $libscheck
3733 $test -f "$xxx" && libstyle=static
3734 fi
3735 if test ! -f "$xxx"; then
3736 xxx=$thisdir/$thislib$_a
3737 $test -f "$xxx" && eval $libscheck
3738 $test -f "$xxx" && libstyle=static
3739 fi
3740 if test ! -f "$xxx"; then
3741 xxx=$thisdir/lib${thislib}_s$_a
3742 $test -f "$xxx" && eval $libscheck
3743 $test -f "$xxx" && libstyle=static
3744 $test -f "$xxx" && thislib=${thislib}_s
3745 fi
3746 if test ! -f "$xxx"; then
3747 xxx=$thisdir/Slib$thislib$_a
3748 $test -f "$xxx" && eval $libscheck
3749 $test -f "$xxx" && libstyle=static
3750 fi
3751 if $test -f "$xxx"; then
3752 case "$libstyle" in
3753 shared) echo "Found -l$thislib (shared)." ;;
3754 static) echo "Found -l$thislib." ;;
3755 *) echo "Found -l$thislib ($libstyle)." ;;
3756 esac
3757 case " $dflt " in
3758 *"-l$thislib "*);;
3759 *) dflt="$dflt -l$thislib"
3760 libsfound="$libsfound $xxx"
3761 yyy=`basename $xxx`
3762 libsfiles="$libsfiles $yyy"
3763 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3764 case " $libsdirs " in
3765 *" $yyy "*) ;;
3766 *) libsdirs="$libsdirs $yyy" ;;
3767 esac
3768 ;;
3769 esac
3770 break
3771 fi
3772 done
3773 if $test ! -f "$xxx"; then
3774 echo "No -l$thislib."
3775 fi
3776done
3777set X $dflt
3778shift
3779dflt="$*"
3780case "$libs" in
3781'') dflt="$dflt";;
3782*) dflt="$libs";;
3783esac
3784case "$dflt" in
3785' '|'') dflt='none';;
3786esac
3787
3788$cat <<EOM
3789
3790In order to compile $package on your machine, a number of libraries
3791are usually needed. Include any other special libraries here as well.
3792Say "none" for none. The default list is almost always right.
3793EOM
3794
3795echo " "
3796rp="What libraries to use?"
3797. ./myread
3798case "$ans" in
3799none) libs=' ';;
3800*) libs="$ans";;
3801esac
3802
3803: determine optimization, if desired, or use for debug flag also
3804case "$optimize" in
3805' '|$undef) dflt='none';;
3806'') dflt='-O';;
3807*) dflt="$optimize";;
3808esac
3809$cat <<EOH
3810
3811By default, $package compiles with the -O flag to use the optimizer.
3812Alternately, you might want to use the symbolic debugger, which uses
3813the -g flag (on traditional Unix systems). Either flag can be
3814specified here. To use neither flag, specify the word "none".
3815
3816EOH
3817rp="What optimizer/debugger flag should be used?"
3818. ./myread
3819optimize="$ans"
3820case "$optimize" in
3821'none') optimize=" ";;
3822esac
3823
3824dflt=''
3825: We will not override a previous value, but we might want to
3826: augment a hint file
3827case "$hint" in
3828default|recommended)
3829 case "$gccversion" in
3830 1*) dflt='-fpcc-struct-return' ;;
3831 esac
3832 case "$optimize" in
3833 *-g*) dflt="$dflt -DDEBUGGING";;
3834 esac
3835 case "$gccversion" in
3836 2*) if test -d /etc/conf/kconfig.d &&
3837 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3838 then
3839 dflt="$dflt -posix"
3840 fi
3841 ;;
3842 esac
3843 case "$gccversion" in
3844 1*) ;;
3845 2.[0-8]*) ;;
3846 ?*) echo " "
3847 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3848 echo 'int main(void) { return 0; }' > gcctest.c
3849 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3850 echo "Yes, it does." 2>&1
3851 case "$ccflags" in
3852 *strict-aliasing*)
3853 echo "Leaving current flags $ccflags alone." 2>&1
3854 ;;
3855 *) dflt="$dflt -fno-strict-aliasing" ;;
3856 esac
3857 else
3858 echo "Nope, it doesn't, but that's ok." 2>&1
3859 fi
3860 ;;
3861 esac
3862 ;;
3863esac
3864
3865case "$mips_type" in
3866*BSD*|'') inclwanted="$locincpth $usrinc";;
3867*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3868esac
3869for thisincl in $inclwanted; do
3870 if $test -d $thisincl; then
3871 if $test x$thisincl != x$usrinc; then
3872 case "$dflt" in
3873 *$thisincl*);;
3874 *) dflt="$dflt -I$thisincl";;
3875 esac
3876 fi
3877 fi
3878done
3879
3880inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3881 xxx=true;
3882elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3883 xxx=true;
3884else
3885 xxx=false;
3886fi;
3887if $xxx; then
3888 case "$dflt" in
3889 *$2*);;
3890 *) dflt="$dflt -D$2";;
3891 esac;
3892fi'
3893
3894set signal.h LANGUAGE_C; eval $inctest
3895
3896case "$usesocks" in
3897$define)
3898 ccflags="$ccflags -DSOCKS"
3899 ;;
3900esac
3901
3902case "$hint" in
3903default|recommended) dflt="$ccflags $dflt" ;;
3904*) dflt="$ccflags";;
3905esac
3906
3907case "$dflt" in
3908''|' ') dflt=none;;
3909esac
3910$cat <<EOH
3911
3912Your C compiler may want other flags. For this question you should include
3913-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3914but you should NOT include libraries or ld flags like -lwhatever. If you
3915want $package to honor its debug switch, you should include -DDEBUGGING here.
3916Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3917
3918To use no flags, specify the word "none".
3919
3920EOH
3921set X $dflt
3922shift
3923dflt=${1+"$@"}
3924rp="Any additional cc flags?"
3925. ./myread
3926case "$ans" in
3927none) ccflags='';;
3928*) ccflags="$ans";;
3929esac
3930
3931: the following weeds options from ccflags that are of no interest to cpp
3932cppflags="$ccflags"
3933case "$gccversion" in
39341*) cppflags="$cppflags -D__GNUC__"
3935esac
3936case "$mips_type" in
3937'');;
3938*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3939esac
3940case "$cppflags" in
3941'');;
3942*)
3943 echo " "
3944 echo "Let me guess what the preprocessor flags are..." >&4
3945 set X $cppflags
3946 shift
3947 cppflags=''
3948 $cat >cpp.c <<'EOM'
3949#define BLURFL foo
3950
3951BLURFL xx LFRULB
3952EOM
3953 previous=''
3954 for flag in $*
3955 do
3956 case "$flag" in
3957 -*) ftry="$flag";;
3958 *) ftry="$previous $flag";;
3959 esac
3960 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3961 >cpp1.out 2>/dev/null && \
3962 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3963 >cpp2.out 2>/dev/null && \
3964 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3965 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3966 then
3967 cppflags="$cppflags $ftry"
3968 previous=''
3969 else
3970 previous="$flag"
3971 fi
3972 done
3973 set X $cppflags
3974 shift
3975 cppflags=${1+"$@"}
3976 case "$cppflags" in
3977 *-*) echo "They appear to be: $cppflags";;
3978 esac
3979 $rm -f cpp.c cpp?.out
3980 ;;
3981esac
3982
3983: flags used in final linking phase
3984case "$ldflags" in
3985'') if ./venix; then
3986 dflt='-i -z'
3987 else
3988 dflt=''
3989 fi
3990 case "$ccflags" in
3991 *-posix*) dflt="$dflt -posix" ;;
3992 esac
3993 ;;
3994*) dflt="$ldflags";;
3995esac
3996
3997: Try to guess additional flags to pick up local libraries.
3998for thislibdir in $libpth; do
3999 case " $loclibpth " in
4000 *" $thislibdir "*)
4001 case "$dflt " in
4002 *"-L$thislibdir "*) ;;
4003 *) dflt="$dflt -L$thislibdir" ;;
4004 esac
4005 ;;
4006 esac
4007done
4008
4009case "$dflt" in
4010'') dflt='none' ;;
4011esac
4012
4013$cat <<EOH
4014
4015Your C linker may need flags. For this question you should
4016include -L/whatever and any other flags used by the C linker, but you
4017should NOT include libraries like -lwhatever.
4018
4019Make sure you include the appropriate -L/path flags if your C linker
4020does not normally search all of the directories you specified above,
4021namely
4022 $libpth
4023To use no flags, specify the word "none".
4024
4025EOH
4026
4027rp="Any additional ld flags (NOT including libraries)?"
4028. ./myread
4029case "$ans" in
4030none) ldflags='';;
4031*) ldflags="$ans";;
4032esac
4033rmlist="$rmlist pdp11"
4034
4035: coherency check
4036echo " "
4037echo "Checking your choice of C compiler and flags for coherency..." >&4
4038$cat > try.c <<'EOF'
4039#include <stdio.h>
4040int main() { printf("Ok\n"); exit(0); }
4041EOF
4042set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4043shift
4044$cat >try.msg <<'EOM'
4045I've tried to compile and run the following simple program:
4046
4047EOM
4048$cat try.c >> try.msg
4049
4050$cat >> try.msg <<EOM
4051
4052I used the command:
4053
4054 $*
4055 ./try
4056
4057and I got the following output:
4058
4059EOM
4060dflt=y
4061if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4062 if sh -c './try' >>try.msg 2>&1; then
4063 xxx=`./try`
4064 case "$xxx" in
4065 "Ok") dflt=n ;;
4066 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4067 case " $libs " in
4068 *" -lsfio "*)
4069 cat >> try.msg <<'EOQS'
4070If $libs contains -lsfio, and sfio is mis-configured, then it
4071sometimes (apparently) runs and exits with a 0 status, but with no
4072output! It may have to do with sfio's use of _exit vs. exit.
4073
4074EOQS
4075 rp="You have a big problem. Shall I abort Configure"
4076 dflt=y
4077 ;;
4078 esac
4079 ;;
4080 esac
4081 else
4082 echo "The program compiled OK, but exited with status $?." >>try.msg
4083 rp="You have a problem. Shall I abort Configure"
4084 dflt=y
4085 fi
4086else
4087 echo "I can't compile the test program." >>try.msg
4088 rp="You have a BIG problem. Shall I abort Configure"
4089 dflt=y
4090fi
4091case "$dflt" in
4092y)
4093 $cat try.msg >&4
4094 case "$knowitall" in
4095 '')
4096 echo "(The supplied flags or libraries might be incorrect.)"
4097 ;;
4098 *) dflt=n;;
4099 esac
4100 echo " "
4101 . ./myread
4102 case "$ans" in
4103 n*|N*) ;;
4104 *) echo "Ok. Stopping Configure." >&4
4105 exit 1
4106 ;;
4107 esac
4108 ;;
4109n) echo "OK, that should do.";;
4110esac
4111$rm -f try try.* core
4112
4113: define an is-a-typedef? function
4114typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4115case "$inclist" in
4116"") inclist="sys/types.h";;
4117esac;
4118eval "varval=\$$var";
4119case "$varval" in
4120"")
4121 $rm -f temp.c;
4122 for inc in $inclist; do
4123 echo "#include <$inc>" >>temp.c;
4124 done;
4125 echo "#ifdef $type" >> temp.c;
4126 echo "printf(\"We have $type\");" >> temp.c;
4127 echo "#endif" >> temp.c;
4128 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4129 if $contains $type temp.E >/dev/null 2>&1; then
4130 eval "$var=\$type";
4131 else
4132 eval "$var=\$def";
4133 fi;
4134 $rm -f temp.?;;
4135*) eval "$var=\$varval";;
4136esac'
4137
4138: define an is-a-typedef? function that prompts if the type is not available.
4139typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4140case "$inclist" in
4141"") inclist="sys/types.h";;
4142esac;
4143eval "varval=\$$var";
4144case "$varval" in
4145"")
4146 $rm -f temp.c;
4147 for inc in $inclist; do
4148 echo "#include <$inc>" >>temp.c;
4149 done;
4150 echo "#ifdef $type" >> temp.c;
4151 echo "printf(\"We have $type\");" >> temp.c;
4152 echo "#endif" >> temp.c;
4153 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4154 echo " " ;
4155 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4156 if $contains $type temp.E >/dev/null 2>&1; then
4157 echo "$type found." >&4;
4158 eval "$var=\$type";
4159 else
4160 echo "$type NOT found." >&4;
4161 dflt="$def";
4162 . ./myread ;
4163 eval "$var=\$ans";
4164 fi;
4165 $rm -f temp.?;;
4166*) eval "$var=\$varval";;
4167esac'
4168
4169: define a shorthand compile call
4170compile='
4171mc_file=$1;
4172shift;
4173$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4174: define a shorthand compile call for compilations that should be ok.
4175compile_ok='
4176mc_file=$1;
4177shift;
4178$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4179
4180: check for lengths of integral types
4181echo " "
4182case "$intsize" in
4183'')
4184 echo "Checking to see how big your integers are..." >&4
4185 $cat >intsize.c <<'EOCP'
4186#include <stdio.h>
4187int main()
4188{
4189 printf("intsize=%d;\n", (int)sizeof(int));
4190 printf("longsize=%d;\n", (int)sizeof(long));
4191 printf("shortsize=%d;\n", (int)sizeof(short));
4192 exit(0);
4193}
4194EOCP
4195 set intsize
4196 if eval $compile_ok && ./intsize > /dev/null; then
4197 eval `./intsize`
4198 echo "Your integers are $intsize bytes long."
4199 echo "Your long integers are $longsize bytes long."
4200 echo "Your short integers are $shortsize bytes long."
4201 else
4202 $cat >&4 <<EOM
4203!
4204Help! I can't compile and run the intsize test program: please enlighten me!
4205(This is probably a misconfiguration in your system or libraries, and
4206you really ought to fix it. Still, I'll try anyway.)
4207!
4208EOM
4209 dflt=4
4210 rp="What is the size of an integer (in bytes)?"
4211 . ./myread
4212 intsize="$ans"
4213 dflt=$intsize
4214 rp="What is the size of a long integer (in bytes)?"
4215 . ./myread
4216 longsize="$ans"
4217 dflt=2
4218 rp="What is the size of a short integer (in bytes)?"
4219 . ./myread
4220 shortsize="$ans"
4221 fi
4222 ;;
4223esac
4224$rm -f intsize intsize.*
4225
4226: see what type lseek is declared as in the kernel
4227rp="What is the type used for lseek's offset on this system?"
4228set off_t lseektype long stdio.h sys/types.h
4229eval $typedef_ask
4230
4231echo " "
4232echo "Checking to see how big your file offsets are..." >&4
4233$cat >try.c <<EOCP
4234#include <sys/types.h>
4235#include <stdio.h>
4236int main()
4237{
4238 printf("%d\n", (int)sizeof($lseektype));
4239 return(0);
4240}
4241EOCP
4242set try
4243if eval $compile_ok; then
4244 lseeksize=`./try`
4245 echo "Your file offsets are $lseeksize bytes long."
4246else
4247 dflt=$longsize
4248 echo " "
4249 echo "(I can't seem to compile the test program. Guessing...)"
4250 rp="What is the size of your file offsets (in bytes)?"
4251 . ./myread
4252 lseeksize="$ans"
4253fi
4254$rm -f try.c try
4255
4256: see what type file positions are declared as in the library
4257rp="What is the type for file position used by fsetpos()?"
4258set fpos_t fpostype long stdio.h sys/types.h
4259eval $typedef_ask
4260
4261echo " "
4262case "$fpostype" in
4263*_t) zzz="$fpostype" ;;
4264*) zzz="fpos_t" ;;
4265esac
4266echo "Checking the size of $zzz..." >&4
4267cat > try.c <<EOCP
4268#include <sys/types.h>
4269#include <stdio.h>
4270int main() {
4271 printf("%d\n", (int)sizeof($fpostype));
4272 exit(0);
4273}
4274EOCP
4275set try
4276if eval $compile_ok; then
4277 yyy=`./try`
4278 case "$yyy" in
4279 '') fpossize=4
4280 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4281 ;;
4282 *) fpossize=$yyy
4283 echo "Your $zzz is $fpossize bytes long."
4284 ;;
4285 esac
4286else
4287 dflt="$longsize"
4288 echo " " >&4
4289 echo "(I can't compile the test program. Guessing...)" >&4
4290 rp="What is the size of your file positions (in bytes)?"
4291 . ./myread
4292 fpossize="$ans"
4293fi
4294
4295
4296
4297# Backward compatibility (uselfs is deprecated).
4298case "$uselfs" in
4299"$define"|true|[yY]*)
4300 cat <<EOM >&4
4301
4302*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4303EOM
4304 uselargefiles="$define"
4305 ;;
4306esac
4307
4308case "$lseeksize:$fpossize" in
43098:8) cat <<EOM
4310
4311You can have files larger than 2 gigabytes.
4312EOM
4313 val="$define" ;;
4314*) case "$uselargefiles" in
4315 "$undef"|false|[nN]*) dflt='n' ;;
4316 *) dflt='y' ;;
4317 esac
4318 cat <<EOM
4319
4320Perl can be built to understand large files (files larger than 2 gigabytes)
4321on some systems. To do so, Configure can be run with -Duselargefiles.
4322
4323If this doesn't make any sense to you, just accept the default '$dflt'.
4324EOM
4325 rp='Try to understand large files, if available?'
4326 . ./myread
4327 case "$ans" in
4328 y|Y) val="$define" ;;
4329 *) val="$undef" ;;
4330 esac
4331 ;;
4332esac
4333set uselargefiles
4334eval $setvar
4335case "$uselargefiles" in
4336"$define")
4337: Look for a hint-file generated 'call-back-unit'. If the
4338: user has specified that a large files perl is to be built,
4339: we may need to set or change some other defaults.
4340 if $test -f uselfs.cbu; then
4341 echo "Your platform has some specific hints for large file builds, using them..."
4342 . ./uselfs.cbu
4343 echo " "
4344 echo "Rechecking to see how big your file offsets are..." >&4
4345 $cat >try.c <<EOCP
4346#include <sys/types.h>
4347#include <stdio.h>
4348int main()
4349{
4350 printf("%d\n", (int)sizeof($lseektype));
4351 return(0);
4352}
4353EOCP
4354 set try
4355 if eval $compile_ok; then
4356 lseeksize=`./try`
4357 $echo "Your file offsets are now $lseeksize bytes long."
4358 else
4359 dflt="$lseeksize"
4360 echo " "
4361 echo "(I can't seem to compile the test program. Guessing...)"
4362 rp="What is the size of your file offsets (in bytes)?"
4363 . ./myread
4364 lseeksize="$ans"
4365 fi
4366 case "$fpostype" in
4367 *_t) zzz="$fpostype" ;;
4368 *) zzz="fpos_t" ;;
4369 esac
4370 $echo $n "Rechecking the size of $zzz...$c" >&4
4371 $cat > try.c <<EOCP
4372#include <sys/types.h>
4373#include <stdio.h>
4374int main() {
4375 printf("%d\n", (int)sizeof($fpostype));
4376 exit(0);
4377}
4378EOCP
4379 set try
4380 if eval $compile_ok; then
4381 yyy=`./try`
4382 dflt="$lseeksize"
4383 case "$yyy" in
4384 '') echo " "
4385 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4386 ;;
4387 *) fpossize=$yyy
4388 echo " $fpossize bytes." >&4
4389 ;;
4390 esac
4391 else
4392 dflt="$fpossize"
4393 echo " "
4394 echo "(I can't compile the test program. Guessing...)" >&4
4395 rp="What is the size of your file positions (in bytes)?"
4396 . ./myread
4397 fpossize="$ans"
4398 fi
4399 $rm -f try.c try
4400 fi
4401 ;;
4402esac
4403
4404
4405case "$usemorebits" in
4406"$define"|true|[yY]*)
4407 use64bitint="$define"
4408 uselongdouble="$define"
4409 usemorebits="$define"
4410 ;;
4411*) usemorebits="$undef"
4412 ;;
4413esac
4414
4415
4416# Backward compatibility (uselonglong is deprecated).
4417case "$uselonglong" in
4418"$define"|true|[yY]*)
4419 cat <<EOM >&4
4420
4421*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4422EOM
4423 use64bitint="$define"
4424 ;;
4425esac
4426# Backward compatibility (use64bits is deprecated).
4427case "$use64bits" in
4428"$define"|true|[yY]*)
4429 cat <<EOM >&4
4430
4431*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4432EOM
4433 use64bitint="$define"
4434 ;;
4435esac
4436# Thinko compatibilities.
4437case "$use64bitints" in
4438"$define"|true|[yY]*)
4439 cat <<EOM >&4
4440
4441*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4442EOM
4443 use64bitint="$define"
4444 ;;
4445esac
4446case "$use64bitsall" in
4447"$define"|true|[yY]*)
4448 cat <<EOM >&4
4449
4450*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4451EOM
4452 use64bitall="$define"
4453 ;;
4454esac
4455
4456case "$ccflags" in
4457*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4458esac
4459case "$use64bitall" in
4460"$define"|true|[yY]*) use64bitint="$define" ;;
4461esac
4462
4463case "$longsize" in
44648) cat <<EOM
4465
4466You have natively 64-bit long integers.
4467EOM
4468 val="$define"
4469 ;;
4470*) case "$use64bitint" in
4471 "$define"|true|[yY]*) dflt='y';;
4472 *) dflt='n';;
4473 esac
4474 cat <<EOM
4475
4476Perl can be built to take advantage of 64-bit integer types
4477on some systems. To do so, Configure can be run with -Duse64bitint.
4478Choosing this option will most probably introduce binary incompatibilities.
4479
4480If this doesn't make any sense to you, just accept the default '$dflt'.
4481EOM
4482 rp='Try to use 64-bit integers, if available?'
4483 . ./myread
4484 case "$ans" in
4485 [yY]*) val="$define" ;;
4486 *) val="$undef" ;;
4487 esac
4488 ;;
4489esac
4490set use64bitint
4491eval $setvar
4492
4493cat <<EOM
4494
4495You may also choose to try maximal 64-bitness. It means using as much
449664-bitness as possible on the platform. This in turn means even more
4497binary incompatibilities. On the other hand, your platform may not
4498have any more 64-bitness available than what you already have chosen.
4499
4500If this doesn't make any sense to you, just accept the default '$dflt'.
4501EOM
4502rp='Try to use maximal 64-bit support, if available?'
4503case "$use64bitall" in
4504"$define"|true|[yY]*) dflt='y' ;;
4505*) case "$longsize" in
4506 8) dflt='y' ;;
4507 *) dflt='n' ;;
4508 esac
4509 ;;
4510esac
4511. ./myread
4512case "$ans" in
4513[yY]*) val="$define" ;;
4514*) val="$undef" ;;
4515esac
4516set use64bitall
4517eval $setvar
4518case "$use64bitall" in
4519"$define")
4520 case "$use64bitint" in
4521 "$undef")
4522 cat <<EOM
4523
4524Since you have chosen a maximally 64-bit build, I'm also turning on
4525the use of 64-bit integers.
4526EOM
4527 use64bitint="$define" ;;
4528 esac
4529 ;;
4530esac
4531
4532case "$use64bitint" in
4533"$define"|true|[yY]*)
4534: Look for a hint-file generated 'call-back-unit'. If the
4535: user has specified that a 64-bit perl is to be built,
4536: we may need to set or change some other defaults.
4537 if $test -f use64bitint.cbu; then
4538 echo "Your platform has some specific hints for 64-bit integers, using them..."
4539 . ./use64bitint.cbu
4540 fi
4541 case "$longsize" in
4542 4) case "$archname64" in
4543 '') archname64=64int ;;
4544 esac
4545 ;;
4546 esac
4547 ;;
4548esac
4549
4550case "$use64bitall" in
4551"$define"|true|[yY]*)
4552: Look for a hint-file generated 'call-back-unit'. If the
4553: user has specified that a maximally 64-bit perl is to be built,
4554: we may need to set or change some other defaults.
4555 if $test -f use64bitall.cbu; then
4556 echo "Your platform has some specific hints for 64-bit builds, using them..."
4557 . ./use64bitall.cbu
4558 fi
4559 case "$longsize" in
4560 4) case "$archname64" in
4561 ''|64int) archname64=64all ;;
4562 esac
4563 ;;
4564 esac
4565 ;;
4566esac
4567
4568: determine the architecture name
4569echo " "
4570if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4571 tarch=`arch`"-$osname"
4572elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4573 if uname -m > tmparch 2>&1 ; then
4574 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4575 -e 's/$/'"-$osname/" tmparch`
4576 else
4577 tarch="$osname"
4578 fi
4579 $rm -f tmparch
4580else
4581 tarch="$osname"
4582fi
4583case "$myarchname" in
4584''|"$tarch") ;;
4585*)
4586 echo "(Your architecture name used to be $myarchname.)"
4587 archname=''
4588 ;;
4589esac
4590myarchname="$tarch"
4591case "$archname" in
4592'') dflt="$tarch";;
4593*) dflt="$archname";;
4594esac
4595rp='What is your architecture name'
4596. ./myread
4597archname="$ans"
4598case "$usethreads" in
4599$define)
4600 echo "Threads selected." >&4
4601 case "$archname" in
4602 *-thread*) echo "...and architecture name already has -thread." >&4
4603 ;;
4604 *) archname="$archname-thread"
4605 echo "...setting architecture name to $archname." >&4
4606 ;;
4607 esac
4608 ;;
4609esac
4610case "$usemultiplicity" in
4611$define)
4612 echo "Multiplicity selected." >&4
4613 case "$archname" in
4614 *-multi*) echo "...and architecture name already has -multi." >&4
4615 ;;
4616 *) archname="$archname-multi"
4617 echo "...setting architecture name to $archname." >&4
4618 ;;
4619 esac
4620 ;;
4621esac
4622case "$use64bitint" in
4623$define)
4624 case "$archname64" in
4625 '')
4626 ;;
4627 *)
4628 case "$archname" in
4629 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4630 ;;
4631 *) archname="$archname-$archname64"
4632 echo "...setting architecture name to $archname." >&4
4633 ;;
4634 esac
4635 ;;
4636 esac
4637esac
4638
4639: determine root of directory hierarchy where package will be installed.
4640case "$prefix" in
4641'')
4642 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4643 ;;
4644*)
4645 dflt="$prefix"
4646 ;;
4647esac
4648$cat <<EOM
4649
4650By default, $package will be installed in $dflt/bin, manual pages
4651under $dflt/man, etc..., i.e. with $dflt as prefix for all
4652installation directories. Typically this is something like /usr/local.
4653If you wish to have binaries under /usr/bin but other parts of the
4654installation under /usr/local, that's ok: you will be prompted
4655separately for each of the installation directories, the prefix being
4656only used to set the defaults.
4657
4658EOM
4659fn=d~
4660rp='Installation prefix to use?'
4661. ./getfile
4662oldprefix=''
4663case "$prefix" in
4664'') ;;
4665*)
4666 case "$ans" in
4667 "$prefix") ;;
4668 *) oldprefix="$prefix";;
4669 esac
4670 ;;
4671esac
4672prefix="$ans"
4673prefixexp="$ansexp"
4674
4675: is AFS running?
4676echo " "
4677case "$afs" in
4678$define|true) afs=true ;;
4679$undef|false) afs=false ;;
4680*) if test -d /afs; then
4681 afs=true
4682 else
4683 afs=false
4684 fi
4685 ;;
4686esac
4687if $afs; then
4688 echo "AFS may be running... I'll be extra cautious then..." >&4
4689else
4690 echo "AFS does not seem to be running..." >&4
4691fi
4692
4693: determine installation prefix for where package is to be installed.
4694if $afs; then
4695$cat <<EOM
4696
4697Since you are running AFS, I need to distinguish the directory in which
4698files will reside from the directory in which they are installed (and from
4699which they are presumably copied to the former directory by occult means).
4700
4701EOM
4702 case "$installprefix" in
4703 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4704 *) dflt="$installprefix";;
4705 esac
4706else
4707$cat <<EOM
4708
4709In some special cases, particularly when building $package for distribution,
4710it is convenient to distinguish between the directory in which files should
4711be installed from the directory ($prefix) in which they
4712will eventually reside. For most users, these two directories are the same.
4713
4714EOM
4715 case "$installprefix" in
4716 '') dflt=$prefix ;;
4717 *) dflt=$installprefix;;
4718 esac
4719fi
4720fn=d~
4721rp='What installation prefix should I use for installing files?'
4722. ./getfile
4723installprefix="$ans"
4724installprefixexp="$ansexp"
4725
4726: set the prefixit variable, to compute a suitable default value
4727prefixit='case "$3" in
4728""|none)
4729 case "$oldprefix" in
4730 "") eval "$1=\"\$$2\"";;
4731 *)
4732 case "$3" in
4733 "") eval "$1=";;
4734 none)
4735 eval "tp=\"\$$2\"";
4736 case "$tp" in
4737 ""|" ") eval "$1=\"\$$2\"";;
4738 *) eval "$1=";;
4739 esac;;
4740 esac;;
4741 esac;;
4742*)
4743 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4744 case "$tp" in
4745 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4746 /*-$oldprefix/*|\~*-$oldprefix/*)
4747 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4748 *) eval "$1=\"\$$2\"";;
4749 esac;;
4750esac'
4751
4752
4753: get the patchlevel
4754echo " "
4755echo "Getting the current patchlevel..." >&4
4756if $test -r $rsrc/patchlevel.h;then
4757 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4758 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4759 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4760 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4761 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4762 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4763else
4764 revision=0
4765 patchlevel=0
4766 subversion=0
4767 api_revision=0
4768 api_version=0
4769 api_subversion=0
4770fi
4771$echo $n "(You have $package revision $revision" $c
4772$echo $n " patchlevel $patchlevel" $c
4773test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4774echo ".)"
4775case "$osname" in
4776dos|vms)
4777 : XXX Should be a Configure test for double-dots in filenames.
4778 version=`echo $revision $patchlevel $subversion | \
4779 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4780 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4781 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4782 ;;
4783*)
4784 version=`echo $revision $patchlevel $subversion | \
4785 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4786 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4787 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4788 ;;
4789esac
4790: Special case the 5.005_xx maintenance series, which used 5.005
4791: without any subversion label as a subdirectory in $sitelib
4792if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4793 api_versionstring='5.005'
4794fi
4795
4796: determine installation style
4797: For now, try to deduce it from prefix unless it is already set.
4798: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4799case "$installstyle" in
4800'') case "$prefix" in
4801 *perl*) dflt='lib';;
4802 *) dflt='lib/perl5' ;;
4803 esac
4804 ;;
4805*) dflt='lib/perl5' ;;
4806esac
4807: Probably not worth prompting for this since we prompt for all
4808: the directories individually, and the prompt would be too long and
4809: confusing anyway.
4810installstyle=$dflt
4811
4812: determine where private library files go
4813: Usual default is /usr/local/lib/perl5/$version.
4814: Also allow things like /opt/perl/lib/$version, since
4815: /opt/perl/lib/perl5... would be redundant.
4816: The default "style" setting is made in installstyle.U
4817case "$installstyle" in
4818*lib/perl5*) set dflt privlib lib/$package/$version ;;
4819*) set dflt privlib lib/$version ;;
4820esac
4821eval $prefixit
4822$cat <<EOM
4823
4824There are some auxiliary files for $package that need to be put into a
4825private library directory that is accessible by everyone.
4826
4827EOM
4828fn=d~+
4829rp='Pathname where the private library files will reside?'
4830. ./getfile
4831privlib="$ans"
4832privlibexp="$ansexp"
4833: Change installation prefix, if necessary.
4834if $test X"$prefix" != X"$installprefix"; then
4835 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4836else
4837 installprivlib="$privlibexp"
4838fi
4839
4840: set the prefixup variable, to restore leading tilda escape
4841prefixup='case "$prefixexp" in
4842"$prefix") ;;
4843*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4844esac'
4845
4846: determine where public architecture dependent libraries go
4847set archlib archlib
4848eval $prefixit
4849: privlib default is /usr/local/lib/$package/$version
4850: archlib default is /usr/local/lib/$package/$version/$archname
4851: privlib may have an optional trailing /share.
4852tdflt=`echo $privlib | $sed 's,/share$,,'`
4853tdflt=$tdflt/$archname
4854case "$archlib" in
4855'') dflt=$tdflt
4856 ;;
4857*) dflt="$archlib"
4858 ;;
4859esac
4860$cat <<EOM
4861
4862$spackage contains architecture-dependent library files. If you are
4863sharing libraries in a heterogeneous environment, you might store
4864these files in a separate location. Otherwise, you can just include
4865them with the rest of the public library files.
4866
4867EOM
4868fn=d+~
4869rp='Where do you want to put the public architecture-dependent libraries?'
4870. ./getfile
4871archlib="$ans"
4872archlibexp="$ansexp"
4873if $test X"$archlib" = X"$privlib"; then
4874 d_archlib="$undef"
4875else
4876 d_archlib="$define"
4877fi
4878: Change installation prefix, if necessary.
4879if $test X"$prefix" != X"$installprefix"; then
4880 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4881else
4882 installarchlib="$archlibexp"
4883fi
4884
4885
4886: Binary compatibility with 5.005 is not possible for builds
4887: with advanced features
4888case "$usethreads$usemultiplicity" in
4889*define*)
4890 bincompat5005="$undef"
4891 d_bincompat5005="$undef"
4892 ;;
4893*) $cat <<EOM
4894
4895Perl 5.006 can be compiled for binary compatibility with 5.005.
4896If you decide to do so, you will be able to continue using most
4897of the extensions that were compiled for Perl 5.005.
4898
4899EOM
4900 case "$bincompat5005$d_bincompat5005" in
4901 *"$undef"*) dflt=n ;;
4902 *) dflt=y ;;
4903 esac
4904 rp='Binary compatibility with Perl 5.005?'
4905 . ./myread
4906 case "$ans" in
4907 y*) val="$define" ;;
4908 *) val="$undef" ;;
4909 esac
4910 set d_bincompat5005
4911 eval $setvar
4912 case "$d_bincompat5005" in
4913 "$define")
4914 bincompat5005="$define"
4915 ;;
4916 *) bincompat5005="$undef"
4917 d_bincompat5005="$undef"
4918 ;;
4919 esac
4920 ;;
4921esac
4922
4923
4924: see if setuid scripts can be secure
4925$cat <<EOM
4926
4927Some kernels have a bug that prevents setuid #! scripts from being
4928secure. Some sites have disabled setuid #! scripts because of this.
4929
4930First let's decide if your kernel supports secure setuid #! scripts.
4931(If setuid #! scripts would be secure but have been disabled anyway,
4932don't say that they are secure if asked.)
4933
4934EOM
4935
4936val="$undef"
4937if $test -d /dev/fd; then
4938 echo "#!$ls" >reflect
4939 chmod +x,u+s reflect
4940 ./reflect >flect 2>&1
4941 if $contains "/dev/fd" flect >/dev/null; then
4942 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4943 val="$define"
4944 else
4945 $cat <<EOM
4946If you are not sure if they are secure, I can check but I'll need a
4947username and password different from the one you are using right now.
4948If you don't have such a username or don't want me to test, simply
4949enter 'none'.
4950
4951EOM
4952 rp='Other username to test security of setuid scripts with?'
4953 dflt='none'
4954 . ./myread
4955 case "$ans" in
4956 n|none)
4957 case "$d_suidsafe" in
4958 '') echo "I'll assume setuid scripts are *not* secure." >&4
4959 dflt=n;;
4960 "$undef")
4961 echo "Well, the $hint value is *not* secure." >&4
4962 dflt=n;;
4963 *) echo "Well, the $hint value *is* secure." >&4
4964 dflt=y;;
4965 esac
4966 ;;
4967 *)
4968 $rm -f reflect flect
4969 echo "#!$ls" >reflect
4970 chmod +x,u+s reflect
4971 echo >flect
4972 chmod a+w flect
4973 echo '"su" will (probably) prompt you for '"$ans's password."
4974 su $ans -c './reflect >flect'
4975 if $contains "/dev/fd" flect >/dev/null; then
4976 echo "Okay, it looks like setuid scripts are secure." >&4
4977 dflt=y
4978 else
4979 echo "I don't think setuid scripts are secure." >&4
4980 dflt=n
4981 fi
4982 ;;
4983 esac
4984 rp='Does your kernel have *secure* setuid scripts?'
4985 . ./myread
4986 case "$ans" in
4987 [yY]*) val="$define";;
4988 *) val="$undef";;
4989 esac
4990 fi
4991else
4992 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4993 echo "(That's for file descriptors, not floppy disks.)"
4994 val="$undef"
4995fi
4996set d_suidsafe
4997eval $setvar
4998
4999$rm -f reflect flect
5000
5001: now see if they want to do setuid emulation
5002echo " "
5003val="$undef"
5004case "$d_suidsafe" in
5005"$define")
5006 val="$undef"
5007 echo "No need to emulate SUID scripts since they are secure here." >& 4
5008 ;;
5009*)
5010 $cat <<EOM
5011Some systems have disabled setuid scripts, especially systems where
5012setuid scripts cannot be secure. On systems where setuid scripts have
5013been disabled, the setuid/setgid bits on scripts are currently
5014useless. It is possible for $package to detect those bits and emulate
5015setuid/setgid in a secure fashion. This emulation will only work if
5016setuid scripts have been disabled in your kernel.
5017
5018EOM
5019 case "$d_dosuid" in
5020 "$define") dflt=y ;;
5021 *) dflt=n ;;
5022 esac
5023 rp="Do you want to do setuid/setgid emulation?"
5024 . ./myread
5025 case "$ans" in
5026 [yY]*) val="$define";;
5027 *) val="$undef";;
5028 esac
5029 ;;
5030esac
5031set d_dosuid
5032eval $setvar
5033
5034: determine filename position in cpp output
5035echo " "
5036echo "Computing filename position in cpp output for #include directives..." >&4
5037echo '#include <stdio.h>' > foo.c
5038$cat >fieldn <<EOF
5039$startsh
5040$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5041$grep '^[ ]*#.*stdio\.h' | \
5042while read cline; do
5043 pos=1
5044 set \$cline
5045 while $test \$# -gt 0; do
5046 if $test -r \`echo \$1 | $tr -d '"'\`; then
5047 echo "\$pos"
5048 exit 0
5049 fi
5050 shift
5051 pos=\`expr \$pos + 1\`
5052 done
5053done
5054EOF
5055chmod +x fieldn
5056fieldn=`./fieldn`
5057$rm -f foo.c fieldn
5058case $fieldn in
5059'') pos='???';;
50601) pos=first;;
50612) pos=second;;
50623) pos=third;;
5063*) pos="${fieldn}th";;
5064esac
5065echo "Your cpp writes the filename in the $pos field of the line."
5066
5067: locate header file
5068$cat >findhdr <<EOF
5069$startsh
5070wanted=\$1
5071name=''
5072for usrincdir in $usrinc
5073do
5074 if test -f \$usrincdir/\$wanted; then
5075 echo "\$usrincdir/\$wanted"
5076 exit 0
5077 fi
5078done
5079awkprg='{ print \$$fieldn }'
5080echo "#include <\$wanted>" > foo\$\$.c
5081$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5082$grep "^[ ]*#.*\$wanted" | \
5083while read cline; do
5084 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5085 case "\$name" in
5086 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5087 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5088 *) exit 2;;
5089 esac;
5090done;
5091#
5092# status = 0: grep returned 0 lines, case statement not executed
5093# status = 1: headerfile found
5094# status = 2: while loop executed, no headerfile found
5095#
5096status=\$?
5097$rm -f foo\$\$.c;
5098if test \$status -eq 1; then
5099 exit 0;
5100fi
5101exit 1
5102EOF
5103chmod +x findhdr
5104
5105: define an alternate in-header-list? function
5106inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5107cont=true; xxf="echo \"<\$1> found.\" >&4";
5108case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5109*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5110esac;
5111case $# in 4) instead=instead;; *) instead="at last";; esac;
5112while $test "$cont"; do
5113 xxx=`./findhdr $1`
5114 var=$2; eval "was=\$$2";
5115 if $test "$xxx" && $test -r "$xxx";
5116 then eval $xxf;
5117 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5118 cont="";
5119 else eval $xxnf;
5120 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5121 set $yyy; shift; shift; yyy=$@;
5122 case $# in 0) cont="";;
5123 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5124 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5125 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5126 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5127 esac;
5128done;
5129while $test "$yyy";
5130do set $yyy; var=$2; eval "was=\$$2";
5131 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5132 set $yyy; shift; shift; yyy=$@;
5133done'
5134
5135: see if this is a malloc.h system
5136set malloc.h i_malloc
5137eval $inhdr
5138
5139: see if stdlib is available
5140set stdlib.h i_stdlib
5141eval $inhdr
5142
5143: determine which malloc to compile in
5144echo " "
5145case "$usemymalloc" in
5146''|[yY]*|true|$define) dflt='y' ;;
5147*) dflt='n' ;;
5148esac
5149rp="Do you wish to attempt to use the malloc that comes with $package?"
5150. ./myread
5151usemymalloc="$ans"
5152case "$ans" in
5153y*|true)
5154 usemymalloc='y'
5155 mallocsrc='malloc.c'
5156 mallocobj="malloc$_o"
5157 d_mymalloc="$define"
5158 case "$libs" in
5159 *-lmalloc*)
5160 : Remove malloc from list of libraries to use
5161 echo "Removing unneeded -lmalloc from library list" >&4
5162 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5163 shift
5164 libs="$*"
5165 echo "libs = $libs" >&4
5166 ;;
5167 esac
5168 ;;
5169*)
5170 usemymalloc='n'
5171 mallocsrc=''
5172 mallocobj=''
5173 d_mymalloc="$undef"
5174 ;;
5175esac
5176
5177: compute the return types of malloc and free
5178echo " "
5179$cat >malloc.c <<END
5180#$i_malloc I_MALLOC
5181#$i_stdlib I_STDLIB
5182#include <stdio.h>
5183#include <sys/types.h>
5184#ifdef I_MALLOC
5185#include <malloc.h>
5186#endif
5187#ifdef I_STDLIB
5188#include <stdlib.h>
5189#endif
5190#ifdef TRY_MALLOC
5191void *malloc();
5192#endif
5193#ifdef TRY_FREE
5194void free();
5195#endif
5196END
5197case "$malloctype" in
5198'')
5199 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5200 malloctype='void *'
5201 else
5202 malloctype='char *'
5203 fi
5204 ;;
5205esac
5206echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5207
5208case "$freetype" in
5209'')
5210 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5211 freetype='void'
5212 else
5213 freetype='int'
5214 fi
5215 ;;
5216esac
5217echo "Your system uses $freetype free(), it would seem." >&4
5218$rm -f malloc.[co]
5219$cat <<EOM
5220
5221The installation process will also create a directory for
5222vendor-supplied add-ons. Vendors who supply perl with their system
5223may find it convenient to place all vendor-supplied files in this
5224directory rather than in the main distribution directory. This will
5225ease upgrades between binary-compatible maintenance versions of perl.
5226
5227Of course you may also use these directories in whatever way you see
5228fit. For example, you might use them to access modules shared over a
5229company-wide network.
5230
5231The default answer should be fine for most people.
5232This causes further questions about vendor add-ons to be skipped
5233and no vendor-specific directories will be configured for perl.
5234
5235EOM
5236rp='Do you want to configure vendor-specific add-on directories?'
5237case "$usevendorprefix" in
5238define|true|[yY]*) dflt=y ;;
5239*) : User may have set vendorprefix directly on Configure command line.
5240 case "$vendorprefix" in
5241 ''|' ') dflt=n ;;
5242 *) dflt=y ;;
5243 esac
5244 ;;
5245esac
5246. ./myread
5247case "$ans" in
5248[yY]*) fn=d~+
5249 rp='Installation prefix to use for vendor-supplied add-ons?'
5250 case "$vendorprefix" in
5251 '') dflt='' ;;
5252 *) dflt=$vendorprefix ;;
5253 esac
5254 . ./getfile
5255 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5256 oldvendorprefix=''
5257 case "$vendorprefix" in
5258 '') ;;
5259 *) case "$ans" in
5260 "$prefix") ;;
5261 *) oldvendorprefix="$prefix";;
5262 esac
5263 ;;
5264 esac
5265 usevendorprefix="$define"
5266 vendorprefix="$ans"
5267 vendorprefixexp="$ansexp"
5268 ;;
5269*) usevendorprefix="$undef"
5270 vendorprefix=''
5271 vendorprefixexp=''
5272 ;;
5273esac
5274
5275case "$vendorprefix" in
5276'') d_vendorlib="$undef"
5277 vendorlib=''
5278 vendorlibexp=''
5279 ;;
5280*) d_vendorlib="$define"
5281 : determine where vendor-supplied modules go.
5282 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5283 case "$vendorlib" in
5284 '')
5285 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5286 case "$installstyle" in
5287 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5288 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5289 esac
5290 ;;
5291 *) dflt="$vendorlib"
5292 ;;
5293 esac
5294 fn=d~+
5295 rp='Pathname for the vendor-supplied library files?'
5296 . ./getfile
5297 vendorlib="$ans"
5298 vendorlibexp="$ansexp"
5299 ;;
5300esac
5301: Change installation prefix, if necessary.
5302if $test X"$prefix" != X"$installprefix"; then
5303 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5304else
5305 installvendorlib="$vendorlibexp"
5306fi
5307
5308: Cruising for prototypes
5309echo " "
5310echo "Checking out function prototypes..." >&4
5311$cat >prototype.c <<'EOCP'
5312int main(int argc, char *argv[]) {
5313 exit(0);}
5314EOCP
5315if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5316 echo "Your C compiler appears to support function prototypes."
5317 val="$define"
5318else
5319 echo "Your C compiler doesn't seem to understand function prototypes."
5320 val="$undef"
5321fi
5322set prototype
5323eval $setvar
5324$rm -f prototype*
5325
5326case "$prototype" in
5327"$define") ;;
5328*) ansi2knr='ansi2knr'
5329 echo " "
5330 cat <<EOM >&4
5331
5332$me: FATAL ERROR:
5333This version of $package can only be compiled by a compiler that
5334understands function prototypes. Unfortunately, your C compiler
5335 $cc $ccflags
5336doesn't seem to understand them. Sorry about that.
5337
5338If GNU cc is available for your system, perhaps you could try that instead.
5339
5340Eventually, we hope to support building Perl with pre-ANSI compilers.
5341If you would like to help in that effort, please contact <perlbug@perl.org>.
5342
5343Aborting Configure now.
5344EOM
5345 exit 2
5346 ;;
5347esac
5348
5349: determine where public executables go
5350echo " "
5351set dflt bin bin
5352eval $prefixit
5353fn=d~
5354rp='Pathname where the public executables will reside?'
5355. ./getfile
5356if $test "X$ansexp" != "X$binexp"; then
5357 installbin=''
5358fi
5359bin="$ans"
5360binexp="$ansexp"
5361: Change installation prefix, if necessary.
5362: XXX Bug? -- ignores Configure -Dinstallprefix setting.
5363if $test X"$prefix" != X"$installprefix"; then
5364 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5365else
5366 installbin="$binexp"
5367fi
5368
5369: Find perl5.005 or later.
5370echo "Looking for a previously installed perl5.005 or later... "
5371case "$perl5" in
5372'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5373 : Check if this perl is recent and can load a simple module
5374 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5375 perl5=$tdir/perl
5376 break;
5377 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5378 perl5=$tdir/perl
5379 break;
5380 fi
5381 done
5382 ;;
5383*) perl5="$perl5"
5384 ;;
5385esac
5386case "$perl5" in
5387'') echo "None found. That's ok.";;
5388*) echo "Using $perl5." ;;
5389esac
5390
5391$cat <<EOM
5392
5393After $package is installed, you may wish to install various
5394add-on modules and utilities. Typically, these add-ons will
5395be installed under $prefix with the rest
5396of this package. However, you may wish to install such add-ons
5397elsewhere under a different prefix.
5398
5399If you do not wish to put everything under a single prefix, that's
5400ok. You will be prompted for the individual locations; this siteprefix
5401is only used to suggest the defaults.
5402
5403The default should be fine for most people.
5404
5405EOM
5406fn=d~+
5407rp='Installation prefix to use for add-on modules and utilities?'
5408: XXX Here might be another good place for an installstyle setting.
5409case "$siteprefix" in
5410'') dflt=$prefix ;;
5411*) dflt=$siteprefix ;;
5412esac
5413. ./getfile
5414: XXX Prefixit unit does not yet support siteprefix and vendorprefix
5415oldsiteprefix=''
5416case "$siteprefix" in
5417'') ;;
5418*) case "$ans" in
5419 "$prefix") ;;
5420 *) oldsiteprefix="$prefix";;
5421 esac
5422 ;;
5423esac
5424siteprefix="$ans"
5425siteprefixexp="$ansexp"
5426
5427: determine where site specific libraries go.
5428: Usual default is /usr/local/lib/perl5/site_perl/$version
5429: The default "style" setting is made in installstyle.U
5430: XXX No longer works with Prefixit stuff.
5431prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5432case "$sitelib" in
5433'') case "$installstyle" in
5434 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5435 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5436 esac
5437 ;;
5438*) dflt="$sitelib"
5439 ;;
5440esac
5441$cat <<EOM
5442
5443The installation process will create a directory for
5444site-specific extensions and modules. Most users find it convenient
5445to place all site-specific files in this directory rather than in the
5446main distribution directory.
5447
5448EOM
5449fn=d~+
5450rp='Pathname for the site-specific library files?'
5451. ./getfile
5452sitelib="$ans"
5453sitelibexp="$ansexp"
5454: Change installation prefix, if necessary.
5455if $test X"$prefix" != X"$installprefix"; then
5456 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5457else
5458 installsitelib="$sitelibexp"
5459fi
5460
5461: Determine list of previous versions to include in @INC
5462$cat > getverlist <<EOPL
5463#!$perl5 -w
5464use File::Basename;
5465\$api_versionstring = "$api_versionstring";
5466\$version = "$version";
5467\$sitelib = "$sitelib";
5468\$archname = "$archname";
5469EOPL
5470 $cat >> getverlist <<'EOPL'
5471# Can't have leading @ because metaconfig interprets it as a command!
5472;@inc_version_list=();
5473$stem=dirname($sitelib);
5474# XXX Redo to do opendir/readdir?
5475if (-d $stem) {
5476 chdir($stem);
5477 ;@candidates = glob("5.*");
5478}
5479else {
5480 ;@candidates = ();
5481}
5482
5483# XXX ToDo: These comparisons must be reworked when two-digit
5484# subversions come along, so that 5.7.10 compares as greater than
5485# 5.7.3! By that time, hope that 5.6.x is sufficiently
5486# widespread that we can use the built-in version vectors rather
5487# than reinventing them here. For 5.6.0, however, we must
5488# assume this script will likely be run by 5.005_0x. --AD 1/2000.
5489foreach $d (@candidates) {
5490 if ($d lt $version) {
5491 if ($d ge $api_versionstring) {
5492 unshift(@inc_version_list, "$d/$archname", $d);
5493 }
5494 elsif ($d ge "5.005") {
5495 unshift(@inc_version_list, $d);
5496 }
5497 }
5498 else {
5499 # Skip newer version. I.e. don't look in
5500 # 5.7.0 if we're installing 5.6.1.
5501 }
5502}
5503
5504if (@inc_version_list) {
5505 print join(' ', @inc_version_list);
5506}
5507else {
5508 # Blank space to preserve value for next Configure run.
5509 print " ";
5510}
5511EOPL
5512chmod +x getverlist
5513case "$inc_version_list" in
5514'') if test -x "$perl5"; then
5515 dflt=`$perl5 getverlist`
5516 else
5517 dflt='none'
5518 fi
5519 ;;
5520$undef) dflt='none' ;;
5521*) dflt="$inc_version_list" ;;
5522esac
5523case "$dflt" in
5524''|' ') dflt=none ;;
5525esac
5526$cat <<'EOM'
5527
5528In order to ease the process of upgrading, this version of perl
5529can be configured to use modules built and installed with earlier
5530versions of perl that were installed under $prefix. Specify here
5531the list of earlier versions that this version of perl should check.
5532If Configure detected no earlier versions of perl installed under
5533$prefix, then the list will be empty. Answer 'none' to tell perl
5534to not search earlier versions.
5535
5536The default should almost always be sensible, so if you're not sure,
5537just accept the default.
5538EOM
5539
5540rp='List of earlier versions to include in @INC?'
5541. ./myread
5542case "$ans" in
5543[Nn]one|''|' ') inc_version_list=' ' ;;
5544*) inc_version_list="$ans" ;;
5545esac
5546case "$inc_version_list" in
5547''|' ')
5548 inc_version_list_init='0';;
5549*) inc_version_list_init=`echo $inc_version_list |
5550 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5551 ;;
5552esac
5553$rm -f getverlist
5554
5555: determine whether to install perl also as /usr/bin/perl
5556
5557echo " "
5558if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5559 $cat <<EOM
5560Many scripts expect to perl to be installed as /usr/bin/perl.
5561I can install the perl you are about to compile also as /usr/bin/perl
5562(in addition to $installbin/perl).
5563EOM
5564 case "$installusrbinperl" in
5565 "$undef"|[nN]*) dflt='n';;
5566 *) dflt='y';;
5567 esac
5568 rp="Do you want to install perl as /usr/bin/perl?"
5569 . ./myread
5570 case "$ans" in
5571 [yY]*) val="$define";;
5572 *) val="$undef" ;;
5573 esac
5574else
5575 val="$undef"
5576fi
5577set installusrbinperl
5578eval $setvar
5579
5580echo " "
5581echo "Checking for GNU C Library..." >&4
5582cat >gnulibc.c <<EOM
5583#include <stdio.h>
5584int main()
5585{
5586#ifdef __GLIBC__
5587 exit(0);
5588#else
5589 exit(1);
5590#endif
5591}
5592EOM
5593set gnulibc
5594if eval $compile_ok && ./gnulibc; then
5595 val="$define"
5596 echo "You are using the GNU C Library"
5597else
5598 val="$undef"
5599 echo "You are not using the GNU C Library"
5600fi
5601$rm -f gnulibc*
5602set d_gnulibc
5603eval $setvar
5604
5605: see if nm is to be used to determine whether a symbol is defined or not
5606case "$usenm" in
5607'')
5608 dflt=''
5609 case "$d_gnulibc" in
5610 "$define")
5611 echo " "
5612 echo "nm probably won't work on the GNU C Library." >&4
5613 dflt=n
5614 ;;
5615 esac
5616 case "$dflt" in
5617 '')
5618 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5619 echo " "
5620 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5621 echo "'nm' won't be sufficient on this sytem." >&4
5622 dflt=n
5623 fi
5624 ;;
5625 esac
5626 case "$dflt" in
5627 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5628 if $test $dflt -gt 20; then
5629 dflt=y
5630 else
5631 dflt=n
5632 fi
5633 ;;
5634 esac
5635 ;;
5636*)
5637 case "$usenm" in
5638 true|$define) dflt=y;;
5639 *) dflt=n;;
5640 esac
5641 ;;
5642esac
5643$cat <<EOM
5644
5645I can use $nm to extract the symbols from your C libraries. This
5646is a time consuming task which may generate huge output on the disk (up
5647to 3 megabytes) but that should make the symbols extraction faster. The
5648alternative is to skip the 'nm' extraction part and to compile a small
5649test program instead to determine whether each symbol is present. If
5650you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5651this may be the best solution.
5652
5653You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5654
5655EOM
5656rp="Shall I use $nm to extract C symbols from the libraries?"
5657. ./myread
5658case "$ans" in
5659[Nn]*) usenm=false;;
5660*) usenm=true;;
5661esac
5662
5663runnm=$usenm
5664case "$reuseval" in
5665true) runnm=false;;
5666esac
5667
5668: nm options which may be necessary
5669case "$nm_opt" in
5670'') if $test -f /mach_boot; then
5671 nm_opt='' # Mach
5672 elif $test -d /usr/ccs/lib; then
5673 nm_opt='-p' # Solaris (and SunOS?)
5674 elif $test -f /dgux; then
5675 nm_opt='-p' # DG-UX
5676 elif $test -f /lib64/rld; then
5677 nm_opt='-p' # 64-bit Irix
5678 else
5679 nm_opt=''
5680 fi;;
5681esac
5682
5683: nm options which may be necessary for shared libraries but illegal
5684: for archive libraries. Thank you, Linux.
5685case "$nm_so_opt" in
5686'') case "$myuname" in
5687 *linux*)
5688 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5689 nm_so_opt='--dynamic'
5690 fi
5691 ;;
5692 esac
5693 ;;
5694esac
5695
5696case "$runnm" in
5697true)
5698: get list of predefined functions in a handy place
5699echo " "
5700case "$libc" in
5701'') libc=unknown
5702 case "$libs" in
5703 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5704 esac
5705 ;;
5706esac
5707libnames='';
5708case "$libs" in
5709'') ;;
5710*) for thislib in $libs; do
5711 case "$thislib" in
5712 -lc|-lc_s)
5713 : Handle C library specially below.
5714 ;;
5715 -l*)
5716 thislib=`echo $thislib | $sed -e 's/^-l//'`
5717 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5718 :
5719 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5720 :
5721 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5722 :
5723 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5724 :
5725 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5726 :
5727 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5728 :
5729 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5730 :
5731 else
5732 try=''
5733 fi
5734 libnames="$libnames $try"
5735 ;;
5736 *) libnames="$libnames $thislib" ;;
5737 esac
5738 done
5739 ;;
5740esac
5741xxx=normal
5742case "$libc" in
5743unknown)
5744 set /lib/libc.$so
5745 for xxx in $libpth; do
5746 $test -r $1 || set $xxx/libc.$so
5747 : The messy sed command sorts on library version numbers.
5748 $test -r $1 || \
5749 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5750 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5751 h
5752 s/[0-9][0-9]*/0000&/g
5753 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5754 G
5755 s/\n/ /' | \
5756 sort | $sed -e 's/^.* //'`
5757 eval set \$$#
5758 done
5759 $test -r $1 || set /usr/ccs/lib/libc.$so
5760 $test -r $1 || set /lib/libsys_s$_a
5761 ;;
5762*)
5763 set blurfl
5764 ;;
5765esac
5766if $test -r "$1"; then
5767 echo "Your (shared) C library seems to be in $1."
5768 libc="$1"
5769elif $test -r /lib/libc && $test -r /lib/clib; then
5770 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5771 xxx=apollo
5772 libc='/lib/clib /lib/libc'
5773 if $test -r /lib/syslib; then
5774 echo "(Your math library is in /lib/syslib.)"
5775 libc="$libc /lib/syslib"
5776 fi
5777elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5778 echo "Your C library seems to be in $libc, as you said before."
5779elif $test -r $incpath/usr/lib/libc$_a; then
5780 libc=$incpath/usr/lib/libc$_a;
5781 echo "Your C library seems to be in $libc. That's fine."
5782elif $test -r /lib/libc$_a; then
5783 libc=/lib/libc$_a;
5784 echo "Your C library seems to be in $libc. You're normal."
5785else
5786 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5787 :
5788 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5789 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5790 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5791 :
5792 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5793 :
5794 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5795 :
5796 else
5797 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5798 fi
5799 if $test -r "$tans"; then
5800 echo "Your C library seems to be in $tans, of all places."
5801 libc=$tans
5802 else
5803 libc='blurfl'
5804 fi
5805fi
5806if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5807 dflt="$libc"
5808 cat <<EOM
5809
5810If the guess above is wrong (which it might be if you're using a strange
5811compiler, or your machine supports multiple models), you can override it here.
5812
5813EOM
5814else
5815 dflt=''
5816 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5817 cat >&4 <<EOM
5818I can't seem to find your C library. I've looked in the following places:
5819
5820EOM
5821 $sed 's/^/ /' libpath
5822 cat <<EOM
5823
5824None of these seems to contain your C library. I need to get its name...
5825
5826EOM
5827fi
5828fn=f
5829rp='Where is your C library?'
5830. ./getfile
5831libc="$ans"
5832
5833echo " "
5834echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5835set X `cat libnames`
5836shift
5837xxx=files
5838case $# in 1) xxx=file; esac
5839echo "Extracting names from the following $xxx for later perusal:" >&4
5840echo " "
5841$sed 's/^/ /' libnames >&4
5842echo " "
5843$echo $n "This may take a while...$c" >&4
5844
5845for file in $*; do
5846 case $file in
5847 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5848 *) $nm $nm_opt $file 2>/dev/null;;
5849 esac
5850done >libc.tmp
5851
5852$echo $n ".$c"
5853$grep fprintf libc.tmp > libc.ptf
5854xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5855xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5856xxx='[ADTSIW]'
5857if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5858 eval $xscan;\
5859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5860 eval $xrun
5861elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5862 eval $xscan;\
5863 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5864 eval $xrun
5865elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5866 eval $xscan;\
5867 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5868 eval $xrun
5869elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5870 eval $xscan;\
5871 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5872 eval $xrun
5873elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5874 eval $xscan;\
5875 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5876 eval $xrun
5877elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5878 eval $xscan;\
5879 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5880 eval $xrun
5881elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5882 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5883 eval $xscan;\
5884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5885 eval $xrun
5886elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5887 eval $xscan;\
5888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5889 eval $xrun
5890elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5891 eval $xscan;\
5892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5893 eval $xrun
5894elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5895 eval $xscan;\
5896 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5897 eval $xrun
5898elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5899 eval $xscan;\
5900 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5901 eval $xrun
5902elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5903 eval $xscan;\
5904 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5905 eval $xrun
5906elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5907 eval $xscan;\
5908 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5909 eval $xrun
5910elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5911 eval $xscan;\
5912 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5913 eval $xrun
5914else
5915 $nm -p $* 2>/dev/null >libc.tmp
5916 $grep fprintf libc.tmp > libc.ptf
5917 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5918 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5919 then
5920 nm_opt='-p'
5921 eval $xrun
5922 else
5923 echo " "
5924 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5925 com=''
5926 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5927 for thisname in $libnames $libc; do
5928 $ar t $thisname >>libc.tmp
5929 done
5930 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5931 echo "Ok." >&4
5932 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5933 # Repeat libc to extract forwarders to DLL entries too
5934 for thisname in $libnames $libc; do
5935 $ar tv $thisname >>libc.tmp
5936 # Revision 50 of EMX has bug in $ar.
5937 # it will not extract forwarders to DLL entries
5938 # Use emximp which will extract exactly them.
5939 emximp -o tmp.imp $thisname \
5940 2>/dev/null && \
5941 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5942 < tmp.imp >>libc.tmp
5943 $rm tmp.imp
5944 done
5945 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5946 echo "Ok." >&4
5947 else
5948 echo "$ar didn't seem to work right." >&4
5949 echo "Maybe this is a Cray...trying bld instead..." >&4
5950 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5951 then
5952 for thisname in $libnames; do
5953 bld t $libnames | \
5954 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5955 $ar t $thisname >>libc.tmp
5956 done
5957 echo "Ok." >&4
5958 else
5959 echo "That didn't work either. Giving up." >&4
5960 exit 1
5961 fi
5962 fi
5963 fi
5964fi
5965nm_extract="$com"
5966if $test -f /lib/syscalls.exp; then
5967 echo " "
5968 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5969 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5970fi
5971;;
5972esac
5973$rm -f libnames libpath
5974
5975: see if dld is available
5976set dld.h i_dld
5977eval $inhdr
5978
5979: is a C symbol defined?
5980csym='tlook=$1;
5981case "$3" in
5982-v) tf=libc.tmp; tc=""; tdc="";;
5983-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5984*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5985esac;
5986tx=yes;
5987case "$reuseval-$4" in
5988true-) ;;
5989true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5990esac;
5991case "$tx" in
5992yes)
5993 case "$runnm" in
5994 true)
5995 if $contains $tlook $tf >/dev/null 2>&1;
5996 then tval=true;
5997 else tval=false;
5998 fi;;
5999 *)
6000 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6001 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6002 then tval=true;
6003 else tval=false;
6004 fi;
6005 $rm -f t t.c;;
6006 esac;;
6007*)
6008 case "$tval" in
6009 $define) tval=true;;
6010 *) tval=false;;
6011 esac;;
6012esac;
6013eval "$2=$tval"'
6014
6015: define an is-in-libc? function
6016inlibc='echo " "; td=$define; tu=$undef;
6017sym=$1; var=$2; eval "was=\$$2";
6018tx=yes;
6019case "$reuseval$was" in
6020true) ;;
6021true*) tx=no;;
6022esac;
6023case "$tx" in
6024yes)
6025 set $sym tres -f;
6026 eval $csym;
6027 case "$tres" in
6028 true)
6029 echo "$sym() found." >&4;
6030 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6031 *)
6032 echo "$sym() NOT found." >&4;
6033 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6034 esac;;
6035*)
6036 case "$was" in
6037 $define) echo "$sym() found." >&4;;
6038 *) echo "$sym() NOT found." >&4;;
6039 esac;;
6040esac'
6041
6042: see if dlopen exists
6043xxx_runnm="$runnm"
6044runnm=false
6045set dlopen d_dlopen
6046eval $inlibc
6047runnm="$xxx_runnm"
6048
6049: determine which dynamic loading, if any, to compile in
6050echo " "
6051dldir="ext/DynaLoader"
6052case "$usedl" in
6053$define|y|true)
6054 dflt='y'
6055 usedl="$define"
6056 ;;
6057$undef|n|false)
6058 dflt='n'
6059 usedl="$undef"
6060 ;;
6061*)
6062 dflt='n'
6063 case "$d_dlopen" in
6064 $define) dflt='y' ;;
6065 esac
6066 case "$i_dld" in
6067 $define) dflt='y' ;;
6068 esac
6069 : Does a dl_xxx.xs file exist for this operating system
6070 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6071 ;;
6072esac
6073rp="Do you wish to use dynamic loading?"
6074. ./myread
6075usedl="$ans"
6076case "$ans" in
6077y*) usedl="$define"
6078 case "$dlsrc" in
6079 '')
6080 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6081 dflt="$dldir/dl_${osname}.xs"
6082 elif $test "$d_dlopen" = "$define" ; then
6083 dflt="$dldir/dl_dlopen.xs"
6084 elif $test "$i_dld" = "$define" ; then
6085 dflt="$dldir/dl_dld.xs"
6086 else
6087 dflt=''
6088 fi
6089 ;;
6090 *) dflt="$dldir/$dlsrc"
6091 ;;
6092 esac
6093 echo "The following dynamic loading files are available:"
6094 : Can not go over to $dldir because getfile has path hard-coded in.
6095 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6096 rp="Source file to use for dynamic loading"
6097 fn="fne"
6098 gfpth="$src"
6099 . ./getfile
6100 usedl="$define"
6101 : emulate basename
6102 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6103
6104 $cat << EOM
6105
6106Some systems may require passing special flags to $cc -c to
6107compile modules that will be used to create a shared library.
6108To use no flags, say "none".
6109
6110EOM
6111 case "$cccdlflags" in
6112 '') case "$gccversion" in
6113 '') case "$osname" in
6114 hpux) dflt='+z' ;;
6115 next) dflt='none' ;;
6116 irix*) dflt='-KPIC' ;;
6117 svr4*|esix*|solaris) dflt='-KPIC' ;;
6118 sunos) dflt='-pic' ;;
6119 *) dflt='none' ;;
6120 esac
6121 ;;
6122 *) case "$osname" in
6123 svr4*|esix*|solaris) dflt='-fPIC' ;;
6124 *) dflt='-fpic' ;;
6125 esac ;;
6126 esac ;;
6127 ' ') dflt='none' ;;
6128 *) dflt="$cccdlflags" ;;
6129 esac
6130 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6131 . ./myread
6132 case "$ans" in
6133 none) cccdlflags=' ' ;;
6134 *) cccdlflags="$ans" ;;
6135 esac
6136
6137 cat << EOM
6138
6139Some systems use ld to create libraries that can be dynamically loaded,
6140while other systems (such as those using ELF) use $cc.
6141
6142EOM
6143 case "$ld" in
6144 '') $cat >try.c <<'EOM'
6145/* Test for whether ELF binaries are produced */
6146#include <fcntl.h>
6147#include <stdlib.h>
6148int main() {
6149 char b[4];
6150 int i = open("a.out",O_RDONLY);
6151 if(i == -1)
6152 exit(1); /* fail */
6153 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6154 exit(0); /* succeed (yes, it's ELF) */
6155 else
6156 exit(1); /* fail */
6157}
6158EOM
6159 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6160 cat <<EOM
6161You appear to have ELF support. I'll use $cc to build dynamic libraries.
6162EOM
6163 dflt="$cc"
6164 else
6165 echo "I'll use ld to build dynamic libraries."
6166 dflt='ld'
6167 fi
6168 rm -f try.c a.out
6169 ;;
6170 *) dflt="$ld"
6171 ;;
6172 esac
6173
6174 rp="What command should be used to create dynamic libraries?"
6175 . ./myread
6176 ld="$ans"
6177
6178 cat << EOM
6179
6180Some systems may require passing special flags to $ld to create a
6181library that can be dynamically loaded. If your ld flags include
6182-L/other/path options to locate libraries outside your loader's normal
6183search path, you may need to specify those -L options here as well. To
6184use no flags, say "none".
6185
6186EOM
6187 case "$lddlflags" in
6188 '') case "$osname" in
6189 beos) dflt='-nostart' ;;
6190 hpux) case "$gccversion" in
6191 '') dflt='-b +vnocompatwarnings' ;;
6192 *) dflt='none' ;;
6193 esac
6194 ;;
6195 linux|irix*) dflt='-shared' ;;
6196 next) dflt='none' ;;
6197 solaris) dflt='-G' ;;
6198 sunos) dflt='-assert nodefinitions' ;;
6199 svr4*|esix*) dflt="-G $ldflags" ;;
6200 *) dflt='none' ;;
6201 esac
6202 ;;
6203 *) dflt="$lddlflags" ;;
6204 esac
6205
6206 : Try to guess additional flags to pick up local libraries.
6207 : Be careful not to append to a plain 'none'
6208 case "$dflt" in
6209 none) dflt='' ;;
6210 esac
6211 for thisflag in $ldflags; do
6212 case "$thisflag" in
6213 -L*)
6214 case " $dflt " in
6215 *" $thisflag "*) ;;
6216 *) dflt="$dflt $thisflag" ;;
6217 esac
6218 ;;
6219 esac
6220 done
6221
6222 case "$dflt" in
6223 ''|' ') dflt='none' ;;
6224 esac
6225
6226 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6227 . ./myread
6228 case "$ans" in
6229 none) lddlflags=' ' ;;
6230 *) lddlflags="$ans" ;;
6231 esac
6232
6233 cat <<EOM
6234
6235Some systems may require passing special flags to $cc to indicate that
6236the resulting executable will use dynamic linking. To use no flags,
6237say "none".
6238
6239EOM
6240 case "$ccdlflags" in
6241 '') case "$osname" in
6242 hpux) dflt='-Wl,-E' ;;
6243 linux) dflt='-rdynamic' ;;
6244 next) dflt='none' ;;
6245 sunos) dflt='none' ;;
6246 *) dflt='none' ;;
6247 esac ;;
6248 ' ') dflt='none' ;;
6249 *) dflt="$ccdlflags" ;;
6250 esac
6251 rp="Any special flags to pass to $cc to use dynamic linking?"
6252 . ./myread
6253 case "$ans" in
6254 none) ccdlflags=' ' ;;
6255 *) ccdlflags="$ans" ;;
6256 esac
6257 ;;
6258*) usedl="$undef"
6259 ld='ld'
6260 dlsrc='dl_none.xs'
6261 lddlflags=''
6262 ccdlflags=''
6263 ;;
6264esac
6265
6266also=''
6267case "$usedl" in
6268$undef)
6269 # No dynamic loading being used, so don't bother even to prompt.
6270 useshrplib='false'
6271 ;;
6272*) case "$useshrplib" in
6273 '') case "$osname" in
6274 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6275 dflt=y
6276 also='Building a shared libperl is required for dynamic loading to work on your system.'
6277 ;;
6278 next*)
6279 case "$osvers" in
6280 4*) dflt=y
6281 also='Building a shared libperl is needed for MAB support.'
6282 ;;
6283 *) dflt=n
6284 ;;
6285 esac
6286 ;;
6287 *) dflt=n
6288 ;;
6289 esac
6290 ;;
6291 $define|true|[Yy]*)
6292 dflt=y
6293 ;;
6294 *) dflt=n
6295 ;;
6296 esac
6297 $cat << EOM
6298
6299The perl executable is normally obtained by linking perlmain.c with
6300libperl${_a}, any static extensions (usually just DynaLoader), and
6301any other libraries needed on this system (such as -lm, etc.). Since
6302your system supports dynamic loading, it is probably possible to build
6303a shared libperl.$so. If you will have more than one executable linked
6304to libperl.$so, this will significantly reduce the size of each
6305executable, but it may have a noticeable affect on performance. The
6306default is probably sensible for your system.
6307$also
6308
6309EOM
6310 rp="Build a shared libperl.$so (y/n)"
6311 . ./myread
6312 case "$ans" in
6313 true|$define|[Yy]*)
6314 useshrplib='true' ;;
6315 *) useshrplib='false' ;;
6316 esac
6317 ;;
6318esac
6319
6320case "$useshrplib" in
6321true)
6322 case "$libperl" in
6323 '')
6324 # Figure out a good name for libperl.so. Since it gets stored in
6325 # a version-specific architecture-dependent library, the version
6326 # number isn't really that important, except for making cc/ld happy.
6327 #
6328 # A name such as libperl.so.3.1
6329 majmin="libperl.$so.$patchlevel.$subversion"
6330 # A name such as libperl.so.301
6331 majonly=`echo $patchlevel $subversion |
6332 $awk '{printf "%d%02d", $1, $2}'`
6333 majonly=libperl.$so.$majonly
6334 # I'd prefer to keep the os-specific stuff here to a minimum, and
6335 # rely on figuring it out from the naming of libc.
6336 case "${osname}${osvers}" in
6337 next4*)
6338 dflt=libperl.5.$so
6339 # XXX How handle the --version stuff for MAB?
6340 ;;
6341 linux*) # ld won't link with a bare -lperl otherwise.
6342 dflt=libperl.$so
6343 ;;
6344 cygwin*) # include version
6345 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6346 ;;
6347 *) # Try to guess based on whether libc has major.minor.
6348 case "$libc" in
6349 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6350 *libc.$so.[0-9]*) dflt=$majonly ;;
6351 *) dflt=libperl.$so ;;
6352 esac
6353 ;;
6354 esac
6355 ;;
6356 *) dflt=$libperl
6357 ;;
6358 esac
6359 cat << EOM
6360
6361I need to select a good name for the shared libperl. If your system uses
6362library names with major and minor numbers, then you might want something
6363like $majmin. Alternatively, if your system uses a single version
6364number for shared libraries, then you might want to use $majonly.
6365Or, your system might be quite happy with a simple libperl.$so.
6366
6367Since the shared libperl will get installed into a version-specific
6368architecture-dependent directory, the version number of the shared perl
6369library probably isn't important, so the default should be o.k.
6370
6371EOM
6372 rp='What name do you want to give to the shared libperl?'
6373 . ./myread
6374 libperl=$ans
6375 echo "Ok, I'll use $libperl"
6376 ;;
6377*)
6378 libperl="libperl${_a}"
6379 ;;
6380esac
6381
6382# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6383case "$shrpdir" in
6384'') ;;
6385*) $cat >&4 <<EOM
6386WARNING: Use of the shrpdir variable for the installation location of
6387the shared $libperl is not supported. It was never documented and
6388will not work in this version. Let me (perlbug@perl.com)
6389know of any problems this may cause.
6390
6391EOM
6392 case "$shrpdir" in
6393 "$archlibexp/CORE")
6394 $cat >&4 <<EOM
6395But your current setting of $shrpdir is
6396the default anyway, so it's harmless.
6397EOM
6398 ;;
6399 *)
6400 $cat >&4 <<EOM
6401Further, your current attempted setting of $shrpdir
6402conflicts with the value of $archlibexp/CORE
6403that installperl will use.
6404EOM
6405 ;;
6406 esac
6407 ;;
6408esac
6409
6410# How will the perl executable find the installed shared $libperl?
6411# Add $xxx to ccdlflags.
6412# If we can't figure out a command-line option, use $shrpenv to
6413# set env LD_RUN_PATH. The main perl makefile uses this.
6414shrpdir=$archlibexp/CORE
6415xxx=''
6416tmp_shrpenv=''
6417if "$useshrplib"; then
6418 case "$osname" in
6419 aix)
6420 # We'll set it in Makefile.SH...
6421 ;;
6422 solaris|netbsd)
6423 xxx="-R $shrpdir"
6424 ;;
6425 freebsd)
6426 xxx="-Wl,-R$shrpdir"
6427 ;;
6428 linux|irix*|dec_osf)
6429 xxx="-Wl,-rpath,$shrpdir"
6430 ;;
6431 next)
6432 # next doesn't like the default...
6433 ;;
6434 beos)
6435 # beos doesn't like the default, either.
6436 ;;
6437 hpux*)
6438 # hpux doesn't like the default, either.
6439 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6440 ;;
6441 *)
6442 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6443 ;;
6444 esac
6445 case "$xxx" in
6446 '') ;;
6447 *)
6448 # Only add $xxx if it isn't already in ccdlflags.
6449 case " $ccdlflags " in
6450 *" $xxx "*) ;;
6451 *) ccdlflags="$ccdlflags $xxx"
6452 cat <<EOM >&4
6453
6454Adding $xxx to the flags
6455passed to $ld so that the perl executable will find the
6456installed shared $libperl.
6457
6458EOM
6459 ;;
6460 esac
6461 ;;
6462 esac
6463fi
6464# Fix ccdlflags in AIX for building external extensions.
6465# (For building Perl itself bare -bE:perl.exp is needed,
6466# Makefile.SH takes care of this.)
6467case "$osname" in
6468aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6469esac
6470# Respect a hint or command-line value.
6471case "$shrpenv" in
6472'') shrpenv="$tmp_shrpenv" ;;
6473esac
6474case "$ldlibpthname" in
6475'') ldlibpthname=LD_LIBRARY_PATH ;;
6476none) ldlibpthname='' ;;
6477esac
6478
6479: determine where manual pages go
6480set man1dir man1dir none
6481eval $prefixit
6482$cat <<EOM
6483
6484$spackage has manual pages available in source form.
6485EOM
6486case "$nroff" in
6487nroff)
6488 echo "However, you don't have nroff, so they're probably useless to you."
6489 case "$man1dir" in
6490 '') man1dir="none";;
6491 esac;;
6492esac
6493echo "If you don't want the manual sources installed, answer 'none'."
6494case "$man1dir" in
6495' ') dflt=none
6496 ;;
6497'')
6498 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6499 lookpath="$lookpath $prefixexp/man/p_man/man1"
6500 lookpath="$lookpath $prefixexp/man/u_man/man1"
6501 lookpath="$lookpath $prefixexp/man/man.1"
6502 case "$sysman" in
6503 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6504 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6505 esac
6506 set dflt
6507 eval $prefixup
6508 ;;
6509*) dflt="$man1dir"
6510 ;;
6511esac
6512echo " "
6513fn=dn+~
6514rp="Where do the main $spackage manual pages (source) go?"
6515. ./getfile
6516if $test "X$man1direxp" != "X$ansexp"; then
6517 installman1dir=''
6518fi
6519man1dir="$ans"
6520man1direxp="$ansexp"
6521case "$man1dir" in
6522'') man1dir=' '
6523 installman1dir='';;
6524esac
6525
6526: Change installation prefix, if necessary.
6527if $test X"$prefix" != X"$installprefix"; then
6528 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6529else
6530 installman1dir="$man1direxp"
6531fi
6532
6533: What suffix to use on installed man pages
6534
6535case "$man1dir" in
6536' ')
6537 man1ext='0'
6538 ;;
6539*)
6540 rp="What suffix should be used for the main $spackage man pages?"
6541 case "$man1ext" in
6542 '') case "$man1dir" in
6543 *1) dflt=1 ;;
6544 *1p) dflt=1p ;;
6545 *1pm) dflt=1pm ;;
6546 *l) dflt=l;;
6547 *n) dflt=n;;
6548 *o) dflt=o;;
6549 *p) dflt=p;;
6550 *C) dflt=C;;
6551 *L) dflt=L;;
6552 *L1) dflt=L1;;
6553 *) dflt=1;;
6554 esac
6555 ;;
6556 *) dflt="$man1ext";;
6557 esac
6558 . ./myread
6559 man1ext="$ans"
6560 ;;
6561esac
6562
6563: see if we can have long filenames
6564echo " "
6565rmlist="$rmlist /tmp/cf$$"
6566$test -d /tmp/cf$$ || mkdir /tmp/cf$$
6567first=123456789abcdef
6568second=/tmp/cf$$/$first
6569$rm -f $first $second
6570if (echo hi >$first) 2>/dev/null; then
6571 if $test -f 123456789abcde; then
6572 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6573 val="$undef"
6574 else
6575 if (echo hi >$second) 2>/dev/null; then
6576 if $test -f /tmp/cf$$/123456789abcde; then
6577 $cat <<'EOM'
6578That's peculiar... You can have filenames longer than 14 characters, but only
6579on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6580I shall consider your system cannot support long filenames at all.
6581EOM
6582 val="$undef"
6583 else
6584 echo 'You can have filenames longer than 14 characters.' >&4
6585 val="$define"
6586 fi
6587 else
6588 $cat <<'EOM'
6589How confusing! Some of your filesystems are sane enough to allow filenames
6590longer than 14 characters but some others like /tmp can't even think about them.
6591So, for now on, I shall assume your kernel does not allow them at all.
6592EOM
6593 val="$undef"
6594 fi
6595 fi
6596else
6597 $cat <<'EOM'
6598You can't have filenames longer than 14 chars. You can't even think about them!
6599EOM
6600 val="$undef"
6601fi
6602set d_flexfnam
6603eval $setvar
6604$rm -rf /tmp/cf$$ 123456789abcde*
6605
6606: determine where library module manual pages go
6607set man3dir man3dir none
6608eval $prefixit
6609$cat <<EOM
6610
6611$spackage has manual pages for many of the library modules.
6612EOM
6613
6614case "$nroff" in
6615nroff)
6616 $cat <<'EOM'
6617However, you don't have nroff, so they're probably useless to you.
6618EOM
6619 case "$man3dir" in
6620 '') man3dir="none";;
6621 esac;;
6622esac
6623
6624case "$d_flexfnam" in
6625undef)
6626 $cat <<'EOM'
6627However, your system can't handle the long file names like File::Basename.3.
6628EOM
6629 case "$man3dir" in
6630 '') man3dir="none";;
6631 esac;;
6632esac
6633
6634echo "If you don't want the manual sources installed, answer 'none'."
6635prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6636case "$man3dir" in
6637'') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6638 if $test -d "$privlib/man/man3"; then
6639 cat <<EOM >&4
6640
6641WARNING: Previous versions of perl installed man3 pages into
6642$privlib/man/man3. This version will suggest a
6643new default of $dflt.
6644EOM
6645 tdflt=$dflt
6646 dflt='n'
6647 rp='Do you wish to preserve the old behavior?(y/n)'
6648 . ./myread
6649 case "$ans" in
6650 y*) dflt="$privlib/man/man3" ;;
6651 *) dflt=$tdflt ;;
6652 esac
6653 fi
6654 ;;
6655' ') dflt=none;;
6656*) dflt="$man3dir" ;;
6657esac
6658echo " "
6659fn=dn+~
6660rp="Where do the $package library man pages (source) go?"
6661. ./getfile
6662man3dir="$ans"
6663man3direxp="$ansexp"
6664case "$man1dir" in
6665'') man3dir=' '
6666 installman3dir='';;
6667esac
6668
6669: Change installation prefix, if necessary.
6670if $test X"$prefix" != X"$installprefix"; then
6671 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6672else
6673 installman3dir="$man3direxp"
6674fi
6675
6676: What suffix to use on installed man pages
6677case "$man3dir" in
6678' ')
6679 man3ext='0'
6680 ;;
6681*)
6682 rp="What suffix should be used for the $package library man pages?"
6683 case "$man3ext" in
6684 '') case "$man3dir" in
6685 *3) dflt=3 ;;
6686 *3p) dflt=3p ;;
6687 *3pm) dflt=3pm ;;
6688 *l) dflt=l;;
6689 *n) dflt=n;;
6690 *o) dflt=o;;
6691 *p) dflt=p;;
6692 *C) dflt=C;;
6693 *L) dflt=L;;
6694 *L3) dflt=L3;;
6695 *) dflt=3;;
6696 esac
6697 ;;
6698 *) dflt="$man3ext";;
6699 esac
6700 . ./myread
6701 man3ext="$ans"
6702 ;;
6703esac
6704
6705: see if we have to deal with yellow pages, now NIS.
6706if $test -d /usr/etc/yp || $test -d /etc/yp; then
6707 if $test -f /usr/etc/nibindd; then
6708 echo " "
6709 echo "I'm fairly confident you're on a NeXT."
6710 echo " "
6711 rp='Do you get the hosts file via NetInfo?'
6712 dflt=y
6713 case "$hostcat" in
6714 nidump*) ;;
6715 '') ;;
6716 *) dflt=n;;
6717 esac
6718 . ./myread
6719 case "$ans" in
6720 y*) hostcat='nidump hosts .';;
6721 *) case "$hostcat" in
6722 nidump*) hostcat='';;
6723 esac
6724 ;;
6725 esac
6726 fi
6727 case "$hostcat" in
6728 nidump*) ;;
6729 *)
6730 case "$hostcat" in
6731 *ypcat*) dflt=y;;
6732 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6733 dflt=y
6734 else
6735 dflt=n
6736 fi;;
6737 *) dflt=n;;
6738 esac
6739 echo " "
6740 rp='Are you getting the hosts file via yellow pages?'
6741 . ./myread
6742 case "$ans" in
6743 y*) hostcat='ypcat hosts';;
6744 *) hostcat='cat /etc/hosts';;
6745 esac
6746 ;;
6747 esac
6748fi
6749case "$hostcat" in
6750'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6751esac
6752case "$groupcat" in
6753'') test -f /etc/group && groupcat='cat /etc/group';;
6754esac
6755case "$passcat" in
6756'') test -f /etc/passwd && passcat='cat /etc/passwd';;
6757esac
6758
6759: now get the host name
6760echo " "
6761echo "Figuring out host name..." >&4
6762case "$myhostname" in
6763'') cont=true
6764 echo 'Maybe "hostname" will work...'
6765 if tans=`sh -c hostname 2>&1` ; then
6766 myhostname=$tans
6767 phostname=hostname
6768 cont=''
6769 fi
6770 ;;
6771*) cont='';;
6772esac
6773if $test "$cont"; then
6774 if ./xenix; then
6775 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6776 if tans=`cat /etc/systemid 2>&1` ; then
6777 myhostname=$tans
6778 phostname='cat /etc/systemid'
6779 echo "Whadyaknow. Xenix always was a bit strange..."
6780 cont=''
6781 fi
6782 elif $test -r /etc/systemid; then
6783 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6784 fi
6785fi
6786if $test "$cont"; then
6787 echo 'No, maybe "uuname -l" will work...'
6788 if tans=`sh -c 'uuname -l' 2>&1` ; then
6789 myhostname=$tans
6790 phostname='uuname -l'
6791 else
6792 echo 'Strange. Maybe "uname -n" will work...'
6793 if tans=`sh -c 'uname -n' 2>&1` ; then
6794 myhostname=$tans
6795 phostname='uname -n'
6796 else
6797 echo 'Oh well, maybe I can mine it out of whoami.h...'
6798 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6799 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6800 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6801 else
6802 case "$myhostname" in
6803 '') echo "Does this machine have an identity crisis or something?"
6804 phostname='';;
6805 *)
6806 echo "Well, you said $myhostname before..."
6807 phostname='echo $myhostname';;
6808 esac
6809 fi
6810 fi
6811 fi
6812fi
6813: you do not want to know about this
6814set $myhostname
6815myhostname=$1
6816
6817: verify guess
6818if $test "$myhostname" ; then
6819 dflt=y
6820 rp='Your host name appears to be "'$myhostname'".'" Right?"
6821 . ./myread
6822 case "$ans" in
6823 y*) ;;
6824 *) myhostname='';;
6825 esac
6826fi
6827
6828: bad guess or no guess
6829while $test "X$myhostname" = X ; do
6830 dflt=''
6831 rp="Please type the (one word) name of your host:"
6832 . ./myread
6833 myhostname="$ans"
6834done
6835
6836: translate upper to lower if necessary
6837case "$myhostname" in
6838*[A-Z]*)
6839 echo "(Normalizing case in your host name)"
6840 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6841 ;;
6842esac
6843
6844case "$myhostname" in
6845*.*)
6846 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6847 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6848 echo "(Trimming domain name from host name--host name is now $myhostname)"
6849 ;;
6850*) case "$mydomain" in
6851 '')
6852 {
6853 test "X$hostcat" = "Xypcat hosts" &&
6854 ypmatch "$myhostname" hosts 2>/dev/null |\
6855 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6856 $test -s hosts
6857 } || {
6858 test "X$hostcat" != "X" &&
6859 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6860 /[ ]$myhostname[ . ]/p" > hosts
6861 }
6862 tmp_re="[ . ]"
6863 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6864 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6865 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6866 hosts | $sort | $uniq | \
6867 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6868 case `$echo X$dflt` in
6869 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6870 dflt=.
6871 ;;
6872 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6873 ;;
6874 esac
6875 case "$dflt" in
6876 .)
6877 tans=`./loc resolv.conf X /etc /usr/etc`
6878 if $test -f "$tans"; then
6879 echo "(Attempting domain name extraction from $tans)"
6880 dflt=.`$sed -n -e 's/ / /g' \
6881 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6882 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6883 case "$dflt" in
6884 .) dflt=.`$sed -n -e 's/ / /g' \
6885 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6886 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6887 ;;
6888 esac
6889 fi
6890 ;;
6891 esac
6892 case "$dflt" in
6893 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6894 dflt=.`sh -c domainname 2>/dev/null`
6895 case "$dflt" in
6896 '') dflt='.';;
6897 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6898 esac
6899 ;;
6900 esac
6901 case "$dflt" in
6902 .) echo "(Lost all hope -- silly guess then)"
6903 dflt='.uucp'
6904 ;;
6905 esac
6906 $rm -f hosts
6907 ;;
6908 *) dflt="$mydomain";;
6909 esac;;
6910esac
6911echo " "
6912rp="What is your domain name?"
6913. ./myread
6914tans="$ans"
6915case "$ans" in
6916'') ;;
6917.*) ;;
6918*) tans=".$tans";;
6919esac
6920mydomain="$tans"
6921
6922: translate upper to lower if necessary
6923case "$mydomain" in
6924*[A-Z]*)
6925 echo "(Normalizing case in your domain name)"
6926 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6927 ;;
6928esac
6929
6930: a little sanity check here
6931case "$phostname" in
6932'') ;;
6933*)
6934 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6935 $myhostname$mydomain|$myhostname) ;;
6936 *)
6937 case "$phostname" in
6938 sed*)
6939 echo "(That doesn't agree with your whoami.h file, by the way.)"
6940 ;;
6941 *)
6942 echo "(That doesn't agree with your $phostname command, by the way.)"
6943 ;;
6944 esac
6945 ;;
6946 esac
6947 ;;
6948esac
6949
6950$cat <<EOM
6951
6952I need to get your e-mail address in Internet format if possible, i.e.
6953something like user@host.domain. Please answer accurately since I have
6954no easy means to double check it. The default value provided below
6955is most probably close to reality but may not be valid from outside
6956your organization...
6957
6958EOM
6959cont=x
6960while test "$cont"; do
6961 case "$cf_email" in
6962 '') dflt="$cf_by@$myhostname$mydomain";;
6963 *) dflt="$cf_email";;
6964 esac
6965 rp='What is your e-mail address?'
6966 . ./myread
6967 cf_email="$ans"
6968 case "$cf_email" in
6969 *@*.*) cont='' ;;
6970 *)
6971 rp='Address does not look like an Internet one. Use it anyway?'
6972 case "$fastread" in
6973 yes) dflt=y ;;
6974 *) dflt=n ;;
6975 esac
6976 . ./myread
6977 case "$ans" in
6978 y*) cont='' ;;
6979 *) echo " " ;;
6980 esac
6981 ;;
6982 esac
6983done
6984
6985$cat <<EOM
6986
6987If you or somebody else will be maintaining perl at your site, please
6988fill in the correct e-mail address here so that they may be contacted
6989if necessary. Currently, the "perlbug" program included with perl
6990will send mail to this address in addition to perlbug@perl.com. You may
6991enter "none" for no administrator.
6992
6993EOM
6994case "$perladmin" in
6995'') dflt="$cf_email";;
6996*) dflt="$perladmin";;
6997esac
6998rp='Perl administrator e-mail address'
6999. ./myread
7000perladmin="$ans"
7001
7002: figure out how to guarantee perl startup
7003case "$startperl" in
7004'')
7005 case "$sharpbang" in
7006 *!)
7007 $cat <<EOH
7008
7009I can use the #! construct to start perl on your system. This will
7010make startup of perl scripts faster, but may cause problems if you
7011want to share those scripts and perl is not in a standard place
7012($binexp/perl) on all your platforms. The alternative is to force
7013a shell by starting the script with a single ':' character.
7014
7015EOH
7016 dflt="$binexp/perl"
7017 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7018 . ./myread
7019 case "$ans" in
7020 none) startperl=": # use perl";;
7021 *) startperl="#!$ans"
7022 if $test 30 -lt `echo "$ans" | wc -c`; then
7023 $cat >&4 <<EOM
7024
7025WARNING: Some systems limit the #! command to 32 characters.
7026If you experience difficulty running Perl scripts with #!, try
7027installing Perl in a directory with a shorter pathname.
7028
7029EOM
7030 fi ;;
7031 esac
7032 ;;
7033 *) startperl=": # use perl"
7034 ;;
7035 esac
7036 ;;
7037esac
7038echo "I'll use $startperl to start perl scripts."
7039
7040: figure best path for perl in scripts
7041case "$perlpath" in
7042'')
7043 perlpath="$binexp/perl"
7044 case "$startperl" in
7045 *!*) ;;
7046 *)
7047 $cat <<EOH
7048
7049I will use the "eval 'exec'" idiom to start Perl on your system.
7050I can use the full path of your Perl binary for this purpose, but
7051doing so may cause problems if you want to share those scripts and
7052Perl is not always in a standard place ($binexp/perl).
7053
7054EOH
7055 dflt="$binexp/perl"
7056 rp="What path shall I use in \"eval 'exec'\"?"
7057 . ./myread
7058 perlpath="$ans"
7059 ;;
7060 esac
7061 ;;
7062esac
7063case "$startperl" in
7064*!*) ;;
7065*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7066esac
7067
7068: determine where public executable scripts go
7069set scriptdir scriptdir
7070eval $prefixit
7071case "$scriptdir" in
7072'')
7073 dflt="$bin"
7074 : guess some guesses
7075 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7076 $test -d /usr/share/bin && dflt=/usr/share/bin
7077 $test -d /usr/local/script && dflt=/usr/local/script
7078 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7079 $test -d $prefixexp/script && dflt=$prefixexp/script
7080 set dflt
7081 eval $prefixup
7082 ;;
7083*) dflt="$scriptdir"
7084 ;;
7085esac
7086$cat <<EOM
7087
7088Some installations have a separate directory just for executable scripts so
7089that they can mount it across multiple architectures but keep the scripts in
7090one spot. You might, for example, have a subdirectory of /usr/share for this.
7091Or you might just lump your scripts in with all your other executables.
7092
7093EOM
7094fn=d~
7095rp='Where do you keep publicly executable scripts?'
7096. ./getfile
7097if $test "X$ansexp" != "X$scriptdirexp"; then
7098 installscript=''
7099fi
7100scriptdir="$ans"
7101scriptdirexp="$ansexp"
7102: Change installation prefix, if necessary.
7103if $test X"$prefix" != X"$installprefix"; then
7104 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7105else
7106 installscript="$scriptdirexp"
7107fi
7108
7109: determine where site specific architecture-dependent libraries go.
7110: sitelib default is /usr/local/lib/perl5/site_perl/$version
7111: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7112: sitelib may have an optional trailing /share.
7113case "$sitearch" in
7114'') dflt=`echo $sitelib | $sed 's,/share$,,'`
7115 dflt="$dflt/$archname"
7116 ;;
7117*) dflt="$sitearch"
7118 ;;
7119esac
7120set sitearch sitearch none
7121eval $prefixit
7122$cat <<EOM
7123
7124The installation process will also create a directory for
7125architecture-dependent site-specific extensions and modules.
7126
7127EOM
7128fn=d~+
7129rp='Pathname for the site-specific architecture-dependent library files?'
7130. ./getfile
7131sitearch="$ans"
7132sitearchexp="$ansexp"
7133: Change installation prefix, if necessary.
7134if $test X"$prefix" != X"$installprefix"; then
7135 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7136else
7137 installsitearch="$sitearchexp"
7138fi
7139
7140: determine where add-on public executables go
7141case "$sitebin" in
7142'') dflt=$siteprefix/bin ;;
7143*) dflt=$sitebin ;;
7144esac
7145fn=d~
7146rp='Pathname where the add-on public executables should be installed?'
7147. ./getfile
7148sitebin="$ans"
7149sitebinexp="$ansexp"
7150: Change installation prefix, if necessary.
7151if $test X"$prefix" != X"$installprefix"; then
7152 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7153else
7154 installsitebin="$sitebinexp"
7155fi
7156
7157: see if sqrtl exists
7158set sqrtl d_sqrtl
7159eval $inlibc
7160
7161case "$ccflags" in
7162*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7163esac
7164
7165case "$uselongdouble" in
7166$define|true|[yY]*) dflt='y';;
7167*) dflt='n';;
7168esac
7169cat <<EOM
7170
7171Perl can be built to take advantage of long doubles which
7172(if available) may give more accuracy and range for floating point numbers.
7173
7174If this doesn't make any sense to you, just accept the default '$dflt'.
7175EOM
7176rp='Try to use long doubles if available?'
7177. ./myread
7178case "$ans" in
7179y|Y) val="$define" ;;
7180*) val="$undef" ;;
7181esac
7182set uselongdouble
7183eval $setvar
7184
7185case "$uselongdouble" in
7186true|[yY]*) uselongdouble="$define" ;;
7187esac
7188
7189case "$uselongdouble" in
7190$define)
7191: Look for a hint-file generated 'call-back-unit'. If the
7192: user has specified that long doubles should be used,
7193: we may need to set or change some other defaults.
7194 if $test -f uselongdouble.cbu; then
7195 echo "Your platform has some specific hints for long doubles, using them..."
7196 . ./uselongdouble.cbu
7197 else
7198 $cat <<EOM
7199(Your platform doesn't have any specific hints for long doubles.)
7200EOM
7201 fi
7202 ;;
7203esac
7204
7205case "$uselongdouble:$d_sqrtl" in
7206$define:$undef)
7207 $cat <<EOM >&4
7208
7209*** You requested the use of long doubles but you do not seem to have
7210*** the mathematic functions for long doubles. I'm disabling the use
7211*** of long doubles.
7212
7213EOM
7214 uselongdouble=$undef
7215 ;;
7216esac
7217
7218case "$useperlio" in
7219$define|true|[yY]*) dflt='y';;
7220*) dflt='n';;
7221esac
7222cat <<EOM
7223
7224Previous version of $package used the standard IO mechanisms as defined
7225in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7226mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7227the default. This abstraction layer can use AT&T's sfio (if you already
7228have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7229problems with some extension modules. Using PerlIO with stdio is safe,
7230but it is slower than plain stdio and therefore is not the default.
7231
7232If this doesn't make any sense to you, just accept the default '$dflt'.
7233EOM
7234rp='Use the experimental PerlIO abstraction layer?'
7235. ./myread
7236case "$ans" in
7237y|Y)
7238 val="$define"
7239 ;;
7240*)
7241 echo "Ok, doing things the stdio way"
7242 val="$undef"
7243 ;;
7244esac
7245set useperlio
7246eval $setvar
7247
7248case "$vendorprefix" in
7249'') d_vendorbin="$undef"
7250 vendorbin=''
7251 vendorbinexp=''
7252 ;;
7253*) d_vendorbin="$define"
7254 : determine where vendor-supplied executables go.
7255 case "$vendorbin" in
7256 '') dflt=$vendorprefix/bin ;;
7257 *) dflt="$vendorbin" ;;
7258 esac
7259 fn=d~+
7260 rp='Pathname for the vendor-supplied executables directory?'
7261 . ./getfile
7262 vendorbin="$ans"
7263 vendorbinexp="$ansexp"
7264 ;;
7265esac
7266: Change installation prefix, if necessary.
7267if $test X"$prefix" != X"$installprefix"; then
7268 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7269else
7270 installvendorbin="$vendorbinexp"
7271fi
7272
7273: check for length of double
7274echo " "
7275case "$doublesize" in
7276'')
7277 echo "Checking to see how big your double precision numbers are..." >&4
7278 $cat >try.c <<'EOCP'
7279#include <stdio.h>
7280int main()
7281{
7282 printf("%d\n", (int)sizeof(double));
7283 exit(0);
7284}
7285EOCP
7286 set try
7287 if eval $compile_ok; then
7288 doublesize=`./try`
7289 echo "Your double is $doublesize bytes long."
7290 else
7291 dflt='8'
7292 echo "(I can't seem to compile the test program. Guessing...)"
7293 rp="What is the size of a double precision number (in bytes)?"
7294 . ./myread
7295 doublesize="$ans"
7296 fi
7297 ;;
7298esac
7299$rm -f try.c try
7300
7301: check for long doubles
7302echo " "
7303echo "Checking to see if you have long double..." >&4
7304echo 'int main() { long double x = 7.0; }' > try.c
7305set try
7306if eval $compile; then
7307 val="$define"
7308 echo "You have long double."
7309else
7310 val="$undef"
7311 echo "You do not have long double."
7312fi
7313$rm try.*
7314set d_longdbl
7315eval $setvar
7316
7317: check for length of long double
7318case "${d_longdbl}${longdblsize}" in
7319$define)
7320 echo " "
7321 echo "Checking to see how big your long doubles are..." >&4
7322 $cat >try.c <<'EOCP'
7323#include <stdio.h>
7324int main()
7325{
7326 printf("%d\n", sizeof(long double));
7327}
7328EOCP
7329 set try
7330 set try
7331 if eval $compile; then
7332 longdblsize=`./try$exe_ext`
7333 echo "Your long doubles are $longdblsize bytes long."
7334 else
7335 dflt='8'
7336 echo " "
7337 echo "(I can't seem to compile the test program. Guessing...)" >&4
7338 rp="What is the size of a long double (in bytes)?"
7339 . ./myread
7340 longdblsize="$ans"
7341 fi
7342 if $test "X$doublesize" = "X$longdblsize"; then
7343 echo "(That isn't any different from an ordinary double.)"
7344 fi
7345 ;;
7346esac
7347$rm -f try.* try
7348
7349: Check how to convert floats to strings.
7350if test "X$d_Gconvert" = X; then
7351 echo " "
7352 echo "Checking for an efficient way to convert floats to strings."
7353 $cat >try.c <<EOP
7354#ifdef TRY_gconvert
7355#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7356char *myname = "gconvert";
7357#endif
7358#ifdef TRY_gcvt
7359#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7360char *myname = "gcvt";
7361#endif
7362#ifdef TRY_qgcvt
7363#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7364char *myname = "qgcvt";
7365#define DOUBLETYPE long double
7366#endif
7367#ifdef TRY_sprintf
7368#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7369char *myname = "sprintf";
7370#endif
7371
7372#ifndef DOUBLETYPE
7373#define DOUBLETYPE double
7374#endif
7375
7376#include <stdio.h>
7377
7378#define I_STDLIB $i_stdlib
7379#ifdef I_STDLIB
7380#include <stdlib.h>
7381#endif
7382
7383int
7384checkit(expect, got)
7385char *expect;
7386char *got;
7387{
7388 if (strcmp(expect, got)) {
7389 printf("%s oddity: Expected %s, got %s\n",
7390 myname, expect, got);
7391 exit(1);
7392 }
7393}
7394
7395int main()
7396{
7397 char buf[64];
7398 buf[63] = '\0';
7399
7400 /* This must be 1st test on (which?) platform */
7401 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7402 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7403 checkit("0.1", buf);
7404
7405 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7406 checkit("1", buf);
7407
7408 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7409 checkit("0", buf);
7410
7411 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7412 checkit("-1", buf);
7413
7414 /* Some Linux gcvt's give 1.e+5 here. */
7415 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7416 checkit("100000", buf);
7417
7418 /* Some Linux gcvt's give -1.e+5 here. */
7419 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7420 checkit("-100000", buf);
7421
7422 exit(0);
7423}
7424EOP
7425 case "$d_Gconvert" in
7426 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7427 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7428 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7429 *) xxx_list='gconvert gcvt sprintf' ;;
7430 esac
7431
7432 case "$d_longdbl$uselongdouble" in
7433 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7434 esac
7435
7436 for xxx_convert in $xxx_list; do
7437 echo "Trying $xxx_convert..."
7438 $rm -f try try$_o
7439 set try -DTRY_$xxx_convert
7440 if eval $compile; then
7441 echo "$xxx_convert() found." >&4
7442 if ./try; then
7443 echo "I'll use $xxx_convert to convert floats into a string." >&4
7444 break;
7445 else
7446 echo "...But $xxx_convert didn't work as I expected."
7447 fi
7448 else
7449 echo "$xxx_convert NOT found." >&4
7450 fi
7451 done
7452
7453 case "$xxx_convert" in
7454 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7455 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7456 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7457 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7458 esac
7459fi
7460
7461echo " "
7462
7463if $test X"$d_longdbl" = X"$define"; then
7464
7465echo "Checking how to print long doubles..." >&4
7466
7467if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7468 $cat >try.c <<'EOCP'
7469#include <sys/types.h>
7470#include <stdio.h>
7471int main() {
7472 double d = 123.456;
7473 printf("%.3f\n", d);
7474}
7475EOCP
7476 set try
7477 if eval $compile; then
7478 yyy=`./try$exe_ext`
7479 case "$yyy" in
7480 123.456)
7481 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7482 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7483 echo "We will use %f."
7484 ;;
7485 esac
7486 fi
7487fi
7488
7489if $test X"$sPRIfldbl" = X; then
7490 $cat >try.c <<'EOCP'
7491#include <sys/types.h>
7492#include <stdio.h>
7493int main() {
7494 long double d = 123.456;
7495 printf("%.3llf\n", d);
7496}
7497EOCP
7498 set try
7499 if eval $compile; then
7500 yyy=`./try$exe_ext`
7501 case "$yyy" in
7502 123.456)
7503 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7504 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7505 echo "We will use %llf."
7506 ;;
7507 esac
7508 fi
7509fi
7510
7511if $test X"$sPRIfldbl" = X; then
7512 $cat >try.c <<'EOCP'
7513#include <sys/types.h>
7514#include <stdio.h>
7515int main() {
7516 long double d = 123.456;
7517 printf("%.3Lf\n", d);
7518}
7519EOCP
7520 set try
7521 if eval $compile; then
7522 yyy=`./try$exe_ext`
7523 case "$yyy" in
7524 123.456)
7525 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7526 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7527 echo "We will use %Lf."
7528 ;;
7529 esac
7530 fi
7531fi
7532
7533if $test X"$sPRIfldbl" = X; then
7534 $cat >try.c <<'EOCP'
7535#include <sys/types.h>
7536#include <stdio.h>
7537int main() {
7538 long double d = 123.456;
7539 printf("%.3lf\n", d);
7540}
7541EOCP
7542 set try
7543 if eval $compile; then
7544 yyy=`./try$exe_ext`
7545 case "$yyy" in
7546 123.456)
7547 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7548 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7549 echo "We will use %lf."
7550 ;;
7551 esac
7552 fi
7553fi
7554
7555if $test X"$sPRIfldbl" = X; then
7556 echo "Cannot figure out how to print long doubles." >&4
7557fi
7558
7559$rm -f try try.*
7560
7561fi # d_longdbl
7562
7563case "$sPRIfldbl" in
7564'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7565 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7566 ;;
7567*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7568 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7569 ;;
7570esac
7571
7572: Initialize h_fcntl
7573h_fcntl=false
7574
7575: Initialize h_sysfile
7576h_sysfile=false
7577
7578: access call always available on UNIX
7579set access d_access
7580eval $inlibc
7581
7582: locate the flags for 'access()'
7583case "$d_access" in
7584"$define")
7585 echo " "
7586 $cat >access.c <<'EOCP'
7587#include <sys/types.h>
7588#ifdef I_FCNTL
7589#include <fcntl.h>
7590#endif
7591#ifdef I_SYS_FILE
7592#include <sys/file.h>
7593#endif
7594#ifdef I_UNISTD
7595#include <unistd.h>
7596#endif
7597int main() {
7598 exit(R_OK);
7599}
7600EOCP
7601 : check sys/file.h first, no particular reason here
7602 if $test `./findhdr sys/file.h` && \
7603 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7604 h_sysfile=true;
7605 echo "<sys/file.h> defines the *_OK access constants." >&4
7606 elif $test `./findhdr fcntl.h` && \
7607 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7608 h_fcntl=true;
7609 echo "<fcntl.h> defines the *_OK access constants." >&4
7610 elif $test `./findhdr unistd.h` && \
7611 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7612 echo "<unistd.h> defines the *_OK access constants." >&4
7613 else
7614 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7615 fi
7616 ;;
7617esac
7618$rm -f access*
7619
7620: see if accessx exists
7621set accessx d_accessx
7622eval $inlibc
7623
7624: see if alarm exists
7625set alarm d_alarm
7626eval $inlibc
7627
7628: see if atolf exists
7629set atolf d_atolf
7630eval $inlibc
7631
7632: see if atoll exists
7633set atoll d_atoll
7634eval $inlibc
7635
7636: Look for GNU-cc style attribute checking
7637echo " "
7638echo "Checking whether your compiler can handle __attribute__ ..." >&4
7639$cat >attrib.c <<'EOCP'
7640#include <stdio.h>
7641void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7642EOCP
7643if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7644 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7645 echo "Your C compiler doesn't fully support __attribute__."
7646 val="$undef"
7647 else
7648 echo "Your C compiler supports __attribute__."
7649 val="$define"
7650 fi
7651else
7652 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7653 val="$undef"
7654fi
7655set d_attribut
7656eval $setvar
7657$rm -f attrib*
7658
7659: see if bcmp exists
7660set bcmp d_bcmp
7661eval $inlibc
7662
7663: see if bcopy exists
7664set bcopy d_bcopy
7665eval $inlibc
7666
7667: see if this is a unistd.h system
7668set unistd.h i_unistd
7669eval $inhdr
7670
7671: see if getpgrp exists
7672set getpgrp d_getpgrp
7673eval $inlibc
7674
7675case "$d_getpgrp" in
7676"$define")
7677 echo " "
7678 echo "Checking to see which flavor of getpgrp is in use..."
7679 $cat >set.c <<EOP
7680#$i_unistd I_UNISTD
7681#include <sys/types.h>
7682#ifdef I_UNISTD
7683# include <unistd.h>
7684#endif
7685int main()
7686{
7687 if (getuid() == 0) {
7688 printf("(I see you are running Configure as super-user...)\n");
7689 setuid(1);
7690 }
7691#ifdef TRY_BSD_PGRP
7692 if (getpgrp(1) == 0)
7693 exit(0);
7694#else
7695 if (getpgrp() > 0)
7696 exit(0);
7697#endif
7698 exit(1);
7699}
7700EOP
7701 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7702 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7703 val="$define"
7704 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7705 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7706 val="$undef"
7707 else
7708 echo "I can't seem to compile and run the test program."
7709 if ./usg; then
7710 xxx="a USG one, i.e. you use getpgrp()."
7711 else
7712 # SVR4 systems can appear rather BSD-ish.
7713 case "$i_unistd" in
7714 $undef)
7715 xxx="a BSD one, i.e. you use getpgrp(pid)."
7716 val="$define"
7717 ;;
7718 $define)
7719 xxx="probably a USG one, i.e. you use getpgrp()."
7720 val="$undef"
7721 ;;
7722 esac
7723 fi
7724 echo "Assuming your getpgrp is $xxx" >&4
7725 fi
7726 ;;
7727*) val="$undef";;
7728esac
7729set d_bsdgetpgrp
7730eval $setvar
7731$rm -f set set.c
7732
7733: see if setpgrp exists
7734set setpgrp d_setpgrp
7735eval $inlibc
7736
7737case "$d_setpgrp" in
7738"$define")
7739 echo " "
7740 echo "Checking to see which flavor of setpgrp is in use..."
7741 $cat >set.c <<EOP
7742#$i_unistd I_UNISTD
7743#include <sys/types.h>
7744#ifdef I_UNISTD
7745# include <unistd.h>
7746#endif
7747int main()
7748{
7749 if (getuid() == 0) {
7750 printf("(I see you are running Configure as super-user...)\n");
7751 setuid(1);
7752 }
7753#ifdef TRY_BSD_PGRP
7754 if (-1 == setpgrp(1, 1))
7755 exit(0);
7756#else
7757 if (setpgrp() != -1)
7758 exit(0);
7759#endif
7760 exit(1);
7761}
7762EOP
7763 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7764 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7765 val="$define"
7766 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7767 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7768 val="$undef"
7769 else
7770 echo "(I can't seem to compile and run the test program.)"
7771 if ./usg; then
7772 xxx="a USG one, i.e. you use setpgrp()."
7773 else
7774 # SVR4 systems can appear rather BSD-ish.
7775 case "$i_unistd" in
7776 $undef)
7777 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7778 val="$define"
7779 ;;
7780 $define)
7781 xxx="probably a USG one, i.e. you use setpgrp()."
7782 val="$undef"
7783 ;;
7784 esac
7785 fi
7786 echo "Assuming your setpgrp is $xxx" >&4
7787 fi
7788 ;;
7789*) val="$undef";;
7790esac
7791set d_bsdsetpgrp
7792eval $setvar
7793$rm -f set set.c
7794: see if bzero exists
7795set bzero d_bzero
7796eval $inlibc
7797
7798: see if signal is declared as pointer to function returning int or void
7799echo " "
7800xxx=`./findhdr signal.h`
7801$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7802if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7803 echo "You have int (*signal())() instead of void." >&4
7804 val="$undef"
7805elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7806 echo "You have void (*signal())()." >&4
7807 val="$define"
7808elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7809 echo "You have int (*signal())() instead of void." >&4
7810 val="$undef"
7811elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7812 echo "You have void (*signal())()." >&4
7813 val="$define"
7814else
7815 case "$d_voidsig" in
7816 '')
7817 echo "I can't determine whether signal handler returns void or int..." >&4
7818 dflt=void
7819 rp="What type does your signal handler return?"
7820 . ./myread
7821 case "$ans" in
7822 v*) val="$define";;
7823 *) val="$undef";;
7824 esac;;
7825 "$define")
7826 echo "As you already told me, signal handler returns void." >&4
7827 val="$define"
7828 ;;
7829 *) echo "As you already told me, signal handler returns int." >&4
7830 val="$undef"
7831 ;;
7832 esac
7833fi
7834set d_voidsig
7835eval $setvar
7836case "$d_voidsig" in
7837"$define") signal_t="void";;
7838*) signal_t="int";;
7839esac
7840$rm -f $$.tmp
7841
7842: check for ability to cast large floats to 32-bit ints.
7843echo " "
7844echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7845if $test "$intsize" -ge 4; then
7846 xxx=int
7847else
7848 xxx=long
7849fi
7850$cat >try.c <<EOCP
7851#include <stdio.h>
7852#include <sys/types.h>
7853#include <signal.h>
7854$signal_t blech(s) int s; { exit(3); }
7855int main()
7856{
7857 $xxx i32;
7858 double f, g;
7859 int result = 0;
7860 char str[16];
7861 signal(SIGFPE, blech);
7862
7863 /* Don't let compiler optimize the test away. Store the number
7864 in a writable string for gcc to pass to sscanf under HP/UX.
7865 */
7866 sprintf(str, "2147483647");
7867 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7868 g = 10 * f;
7869 i32 = ($xxx) g;
7870
7871 /* x86 processors will probably give 0x8000 0000, which is a
7872 sign change. We don't want that. We want to mimic SPARC
7873 behavior here, which is to preserve the sign and give
7874 back 0x7fff ffff.
7875 */
7876 if (i32 != ($xxx) f)
7877 result |= 1;
7878 exit(result);
7879}
7880EOCP
7881set try
7882if eval $compile_ok; then
7883 ./try
7884 yyy=$?
7885else
7886 echo "(I can't seem to compile the test program--assuming it can't)"
7887 yyy=1
7888fi
7889case "$yyy" in
78900) val="$define"
7891 echo "Yup, it can."
7892 ;;
7893*) val="$undef"
7894 echo "Nope, it can't."
7895 ;;
7896esac
7897set d_casti32
7898eval $setvar
7899$rm -f try try.*
7900
7901: check for ability to cast negative floats to unsigned
7902echo " "
7903echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7904$cat >try.c <<EOCP
7905#include <stdio.h>
7906#include <sys/types.h>
7907#include <signal.h>
7908$signal_t blech(s) int s; { exit(7); }
7909$signal_t blech_in_list(s) int s; { exit(4); }
7910unsigned long dummy_long(p) unsigned long p; { return p; }
7911unsigned int dummy_int(p) unsigned int p; { return p; }
7912unsigned short dummy_short(p) unsigned short p; { return p; }
7913int main()
7914{
7915 double f;
7916 unsigned long along;
7917 unsigned int aint;
7918 unsigned short ashort;
7919 int result = 0;
7920 char str[16];
7921
7922 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7923 a direct f = -123. assignment. gcc-2.8.0 reportedly
7924 optimized the whole file away
7925 */
7926 /* Store the number in a writable string for gcc to pass to
7927 sscanf under HP/UX.
7928 */
7929 sprintf(str, "-123");
7930 sscanf(str, "%lf", &f); /* f = -123.; */
7931
7932 signal(SIGFPE, blech);
7933 along = (unsigned long)f;
7934 aint = (unsigned int)f;
7935 ashort = (unsigned short)f;
7936 if (along != (unsigned long)-123)
7937 result |= 1;
7938 if (aint != (unsigned int)-123)
7939 result |= 1;
7940 if (ashort != (unsigned short)-123)
7941 result |= 1;
7942 sprintf(str, "1073741824.");
7943 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7944 f = f + f;
7945 along = 0;
7946 along = (unsigned long)f;
7947 if (along != 0x80000000)
7948 result |= 2;
7949 f -= 1.;
7950 along = 0;
7951 along = (unsigned long)f;
7952 if (along != 0x7fffffff)
7953 result |= 1;
7954 f += 2.;
7955 along = 0;
7956 along = (unsigned long)f;
7957 if (along != 0x80000001)
7958 result |= 2;
7959 if (result)
7960 exit(result);
7961 signal(SIGFPE, blech_in_list);
7962 sprintf(str, "123.");
7963 sscanf(str, "%lf", &f); /* f = 123.; */
7964 along = dummy_long((unsigned long)f);
7965 aint = dummy_int((unsigned int)f);
7966 ashort = dummy_short((unsigned short)f);
7967 if (along != (unsigned long)123)
7968 result |= 4;
7969 if (aint != (unsigned int)123)
7970 result |= 4;
7971 if (ashort != (unsigned short)123)
7972 result |= 4;
7973 exit(result);
7974
7975}
7976EOCP
7977set try
7978if eval $compile_ok; then
7979 ./try
7980 castflags=$?
7981else
7982 echo "(I can't seem to compile the test program--assuming it can't)"
7983 castflags=7
7984fi
7985case "$castflags" in
79860) val="$define"
7987 echo "Yup, it can."
7988 ;;
7989*) val="$undef"
7990 echo "Nope, it can't."
7991 ;;
7992esac
7993set d_castneg
7994eval $setvar
7995$rm -f try.*
7996
7997: see if vprintf exists
7998echo " "
7999if set vprintf val -f d_vprintf; eval $csym; $val; then
8000 echo 'vprintf() found.' >&4
8001 val="$define"
8002 $cat >vprintf.c <<'EOF'
8003#include <varargs.h>
8004
8005int main() { xxx("foo"); }
8006
8007xxx(va_alist)
8008va_dcl
8009{
8010 va_list args;
8011 char buf[10];
8012
8013 va_start(args);
8014 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8015}
8016EOF
8017 set vprintf
8018 if eval $compile && ./vprintf; then
8019 echo "Your vsprintf() returns (int)." >&4
8020 val2="$undef"
8021 else
8022 echo "Your vsprintf() returns (char*)." >&4
8023 val2="$define"
8024 fi
8025else
8026 echo 'vprintf() NOT found.' >&4
8027 val="$undef"
8028 val2="$undef"
8029fi
8030set d_vprintf
8031eval $setvar
8032val=$val2
8033set d_charvspr
8034eval $setvar
8035
8036: see if chown exists
8037set chown d_chown
8038eval $inlibc
8039
8040: see if chroot exists
8041set chroot d_chroot
8042eval $inlibc
8043
8044: see if chsize exists
8045set chsize d_chsize
8046eval $inlibc
8047
8048: check for const keyword
8049echo " "
8050echo 'Checking to see if your C compiler knows about "const"...' >&4
8051$cat >const.c <<'EOCP'
8052typedef struct spug { int drokk; } spug;
8053int main()
8054{
8055 const char *foo;
8056 const spug y;
8057}
8058EOCP
8059if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8060 val="$define"
8061 echo "Yup, it does."
8062else
8063 val="$undef"
8064 echo "Nope, it doesn't."
8065fi
8066set d_const
8067eval $setvar
8068
8069: see if crypt exists
8070echo " "
8071if set crypt val -f d_crypt; eval $csym; $val; then
8072 echo 'crypt() found.' >&4
8073 val="$define"
8074 cryptlib=''
8075else
8076 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8077 if $test -z "$cryptlib"; then
8078 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8079 else
8080 cryptlib=-lcrypt
8081 fi
8082 if $test -z "$cryptlib"; then
8083 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8084 else
8085 cryptlib=-lcrypt
8086 fi
8087 if $test -z "$cryptlib"; then
8088 cryptlib=`./loc libcrypt$_a "" $libpth`
8089 else
8090 cryptlib=-lcrypt
8091 fi
8092 if $test -z "$cryptlib"; then
8093 echo 'crypt() NOT found.' >&4
8094 val="$undef"
8095 else
8096 val="$define"
8097 fi
8098fi
8099set d_crypt
8100eval $setvar
8101
8102: get csh whereabouts
8103case "$csh" in
8104'csh') val="$undef" ;;
8105*) val="$define" ;;
8106esac
8107set d_csh
8108eval $setvar
8109: Respect a hint or command line value for full_csh.
8110case "$full_csh" in
8111'') full_csh=$csh ;;
8112esac
8113
8114: see if cuserid exists
8115set cuserid d_cuserid
8116eval $inlibc
8117
8118: see if this is a limits.h system
8119set limits.h i_limits
8120eval $inhdr
8121
8122: see if this is a float.h system
8123set float.h i_float
8124eval $inhdr
8125
8126: See if number of significant digits in a double precision number is known
8127echo " "
8128$cat >dbl_dig.c <<EOM
8129#$i_limits I_LIMITS
8130#$i_float I_FLOAT
8131#ifdef I_LIMITS
8132#include <limits.h>
8133#endif
8134#ifdef I_FLOAT
8135#include <float.h>
8136#endif
8137#ifdef DBL_DIG
8138printf("Contains DBL_DIG");
8139#endif
8140EOM
8141$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8142if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8143 echo "DBL_DIG found." >&4
8144 val="$define"
8145else
8146 echo "DBL_DIG NOT found." >&4
8147 val="$undef"
8148fi
8149$rm -f dbl_dig.?
8150set d_dbl_dig
8151eval $setvar
8152
8153: see if difftime exists
8154set difftime d_difftime
8155eval $inlibc
8156
8157: see if this is a dirent system
8158echo " "
8159if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8160 val="$define"
8161 echo "<dirent.h> found." >&4
8162else
8163 val="$undef"
8164 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8165 echo "<sys/dir.h> found." >&4
8166 echo " "
8167 else
8168 xinc=`./findhdr sys/ndir.h`
8169 fi
8170 echo "<dirent.h> NOT found." >&4
8171fi
8172set i_dirent
8173eval $setvar
8174
8175: Look for type of directory structure.
8176echo " "
8177$cppstdin $cppflags $cppminus < "$xinc" > try.c
8178
8179case "$direntrytype" in
8180''|' ')
8181 case "$i_dirent" in
8182 $define) guess1='struct dirent' ;;
8183 *) guess1='struct direct' ;;
8184 esac
8185 ;;
8186*) guess1="$direntrytype"
8187 ;;
8188esac
8189
8190case "$guess1" in
8191'struct dirent') guess2='struct direct' ;;
8192*) guess2='struct dirent' ;;
8193esac
8194
8195if $contains "$guess1" try.c >/dev/null 2>&1; then
8196 direntrytype="$guess1"
8197 echo "Your directory entries are $direntrytype." >&4
8198elif $contains "$guess2" try.c >/dev/null 2>&1; then
8199 direntrytype="$guess2"
8200 echo "Your directory entries seem to be $direntrytype." >&4
8201else
8202 echo "I don't recognize your system's directory entries." >&4
8203 rp="What type is used for directory entries on this system?"
8204 dflt="$guess1"
8205 . ./myread
8206 direntrytype="$ans"
8207fi
8208$rm -f try.c
8209
8210
8211: see if the directory entry stores field length
8212echo " "
8213$cppstdin $cppflags $cppminus < "$xinc" > try.c
8214if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8215 echo "Good, your directory entry keeps length information in d_namlen." >&4
8216 val="$define"
8217else
8218 echo "Your directory entry does not know about the d_namlen field." >&4
8219 val="$undef"
8220fi
8221set d_dirnamlen
8222eval $setvar
8223$rm -f try.c
8224
8225: see if dlerror exists
8226xxx_runnm="$runnm"
8227runnm=false
8228set dlerror d_dlerror
8229eval $inlibc
8230runnm="$xxx_runnm"
8231
8232: see if dlfcn is available
8233set dlfcn.h i_dlfcn
8234eval $inhdr
8235
8236case "$usedl" in
8237$define|y|true)
8238 $cat << EOM
8239
8240On a few systems, the dynamically loaded modules that perl generates and uses
8241will need a different extension than shared libs. The default will probably
8242be appropriate.
8243
8244EOM
8245 case "$dlext" in
8246 '') dflt="$so" ;;
8247 *) dflt="$dlext" ;;
8248 esac
8249 rp='What is the extension of dynamically loaded modules'
8250 . ./myread
8251 dlext="$ans"
8252 ;;
8253*)
8254 dlext="none"
8255 ;;
8256esac
8257
8258: Check if dlsym need a leading underscore
8259echo " "
8260val="$undef"
8261
8262case "$dlsrc" in
8263dl_dlopen.xs)
8264 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8265 $cat >dyna.c <<'EOM'
8266fred () { }
8267EOM
8268
8269$cat >fred.c<<EOM
8270
8271#include <stdio.h>
8272#$i_dlfcn I_DLFCN
8273#ifdef I_DLFCN
8274#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8275#else
8276#include <sys/types.h>
8277#include <nlist.h>
8278#include <link.h>
8279#endif
8280
8281extern int fred() ;
8282
8283int main()
8284{
8285 void * handle ;
8286 void * symbol ;
8287#ifndef RTLD_LAZY
8288 int mode = 1 ;
8289#else
8290 int mode = RTLD_LAZY ;
8291#endif
8292 handle = dlopen("./dyna.$dlext", mode) ;
8293 if (handle == NULL) {
8294 printf ("1\n") ;
8295 fflush (stdout) ;
8296 exit(0);
8297 }
8298 symbol = dlsym(handle, "fred") ;
8299 if (symbol == NULL) {
8300 /* try putting a leading underscore */
8301 symbol = dlsym(handle, "_fred") ;
8302 if (symbol == NULL) {
8303 printf ("2\n") ;
8304 fflush (stdout) ;
8305 exit(0);
8306 }
8307 printf ("3\n") ;
8308 }
8309 else
8310 printf ("4\n") ;
8311 fflush (stdout) ;
8312 exit(0);
8313}
8314EOM
8315 : Call the object file tmp-dyna.o in case dlext=o.
8316 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8317 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8318 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8319 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8320 xxx=`./fred`
8321 case $xxx in
8322 1) echo "Test program failed using dlopen." >&4
8323 echo "Perhaps you should not use dynamic loading." >&4;;
8324 2) echo "Test program failed using dlsym." >&4
8325 echo "Perhaps you should not use dynamic loading." >&4;;
8326 3) echo "dlsym needs a leading underscore" >&4
8327 val="$define" ;;
8328 4) echo "dlsym doesn't need a leading underscore." >&4;;
8329 esac
8330 else
8331 echo "I can't compile and run the test program." >&4
8332 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8333 fi
8334 ;;
8335esac
8336
8337$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8338
8339set d_dlsymun
8340eval $setvar
8341
8342hasproto='varname=$1; func=$2; shift; shift;
8343while $test $# -ge 2; do
8344 case "$1" in
8345 $define) echo "#include <$2>";;
8346 esac ;
8347 shift 2;
8348done > try.c;
8349$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8350if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8351 echo "$func() prototype found.";
8352 val="$define";
8353else
8354 echo "$func() prototype NOT found.";
8355 val="$undef";
8356fi;
8357set $varname;
8358eval $setvar;
8359$rm -f try.c tryout.c'
8360
8361: see if prototype for drand48 is available
8362echo " "
8363set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8364eval $hasproto
8365
8366: see if dup2 exists
8367set dup2 d_dup2
8368eval $inlibc
8369
8370: see if eaccess exists
8371set eaccess d_eaccess
8372eval $inlibc
8373
8374: see if endgrent exists
8375set endgrent d_endgrent
8376eval $inlibc
8377
8378: see if endhostent exists
8379set endhostent d_endhent
8380eval $inlibc
8381
8382: see if endnetent exists
8383set endnetent d_endnent
8384eval $inlibc
8385
8386: see if endprotoent exists
8387set endprotoent d_endpent
8388eval $inlibc
8389
8390: see if endpwent exists
8391set endpwent d_endpwent
8392eval $inlibc
8393
8394: see if endservent exists
8395set endservent d_endsent
8396eval $inlibc
8397
8398: see if endspent exists
8399set endspent d_endspent
8400eval $inlibc
8401
8402: Locate the flags for 'open()'
8403echo " "
8404$cat >open3.c <<'EOCP'
8405#include <sys/types.h>
8406#ifdef I_FCNTL
8407#include <fcntl.h>
8408#endif
8409#ifdef I_SYS_FILE
8410#include <sys/file.h>
8411#endif
8412int main() {
8413 if(O_RDONLY);
8414#ifdef O_TRUNC
8415 exit(0);
8416#else
8417 exit(1);
8418#endif
8419}
8420EOCP
8421: check sys/file.h first to get FREAD on Sun
8422if $test `./findhdr sys/file.h` && \
8423 set open3 -DI_SYS_FILE && eval $compile; then
8424 h_sysfile=true;
8425 echo "<sys/file.h> defines the O_* constants..." >&4
8426 if ./open3; then
8427 echo "and you have the 3 argument form of open()." >&4
8428 val="$define"
8429 else
8430 echo "but not the 3 argument form of open(). Oh, well." >&4
8431 val="$undef"
8432 fi
8433elif $test `./findhdr fcntl.h` && \
8434 set open3 -DI_FCNTL && eval $compile; then
8435 h_fcntl=true;
8436 echo "<fcntl.h> defines the O_* constants..." >&4
8437 if ./open3; then
8438 echo "and you have the 3 argument form of open()." >&4
8439 val="$define"
8440 else
8441 echo "but not the 3 argument form of open(). Oh, well." >&4
8442 val="$undef"
8443 fi
8444else
8445 val="$undef"
8446 echo "I can't find the O_* constant definitions! You got problems." >&4
8447fi
8448set d_open3
8449eval $setvar
8450$rm -f open3*
8451
8452: see which of string.h or strings.h is needed
8453echo " "
8454strings=`./findhdr string.h`
8455if $test "$strings" && $test -r "$strings"; then
8456 echo "Using <string.h> instead of <strings.h>." >&4
8457 val="$define"
8458else
8459 val="$undef"
8460 strings=`./findhdr strings.h`
8461 if $test "$strings" && $test -r "$strings"; then
8462 echo "Using <strings.h> instead of <string.h>." >&4
8463 else
8464 echo "No string header found -- You'll surely have problems." >&4
8465 fi
8466fi
8467set i_string
8468eval $setvar
8469case "$i_string" in
8470"$undef") strings=`./findhdr strings.h`;;
8471*) strings=`./findhdr string.h`;;
8472esac
8473
8474: check for non-blocking I/O stuff
8475case "$h_sysfile" in
8476true) echo "#include <sys/file.h>" > head.c;;
8477*)
8478 case "$h_fcntl" in
8479 true) echo "#include <fcntl.h>" > head.c;;
8480 *) echo "#include <sys/fcntl.h>" > head.c;;
8481 esac
8482 ;;
8483esac
8484echo " "
8485echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8486case "$o_nonblock" in
8487'')
8488 $cat head.c > try.c
8489 $cat >>try.c <<'EOCP'
8490#include <stdio.h>
8491int main() {
8492#ifdef O_NONBLOCK
8493 printf("O_NONBLOCK\n");
8494 exit(0);
8495#endif
8496#ifdef O_NDELAY
8497 printf("O_NDELAY\n");
8498 exit(0);
8499#endif
8500#ifdef FNDELAY
8501 printf("FNDELAY\n");
8502 exit(0);
8503#endif
8504 exit(0);
8505}
8506EOCP
8507 set try
8508 if eval $compile_ok; then
8509 o_nonblock=`./try`
8510 case "$o_nonblock" in
8511 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8512 *) echo "Seems like we can use $o_nonblock.";;
8513 esac
8514 else
8515 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8516 fi
8517 ;;
8518*) echo "Using $hint value $o_nonblock.";;
8519esac
8520$rm -f try try.* .out core
8521
8522echo " "
8523echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8524case "$eagain" in
8525'')
8526 $cat head.c > try.c
8527 $cat >>try.c <<EOCP
8528#include <errno.h>
8529#include <sys/types.h>
8530#include <signal.h>
8531#include <stdio.h>
8532#define MY_O_NONBLOCK $o_nonblock
8533#ifndef errno /* XXX need better Configure test */
8534extern int errno;
8535#endif
8536#$i_unistd I_UNISTD
8537#ifdef I_UNISTD
8538#include <unistd.h>
8539#endif
8540#ifdef $i_string
8541#include <string.h>
8542#else
8543#include <strings.h>
8544#endif
8545$signal_t blech(x) int x; { exit(3); }
8546EOCP
8547 $cat >> try.c <<'EOCP'
8548int main()
8549{
8550 int pd[2];
8551 int pu[2];
8552 char buf[1];
8553 char string[100];
8554
8555 pipe(pd); /* Down: child -> parent */
8556 pipe(pu); /* Up: parent -> child */
8557 if (0 != fork()) {
8558 int ret;
8559 close(pd[1]); /* Parent reads from pd[0] */
8560 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8561 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8562 exit(1);
8563 signal(SIGALRM, blech);
8564 alarm(5);
8565 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8566 exit(2);
8567 sprintf(string, "%d\n", ret);
8568 write(2, string, strlen(string));
8569 alarm(0);
8570#ifdef EAGAIN
8571 if (errno == EAGAIN) {
8572 printf("EAGAIN\n");
8573 goto ok;
8574 }
8575#endif
8576#ifdef EWOULDBLOCK
8577 if (errno == EWOULDBLOCK)
8578 printf("EWOULDBLOCK\n");
8579#endif
8580 ok:
8581 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8582 sleep(2); /* Give it time to close our pipe */
8583 alarm(5);
8584 ret = read(pd[0], buf, 1); /* Should read EOF */
8585 alarm(0);
8586 sprintf(string, "%d\n", ret);
8587 write(3, string, strlen(string));
8588 exit(0);
8589 }
8590
8591 close(pd[0]); /* We write to pd[1] */
8592 close(pu[1]); /* We read from pu[0] */
8593 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8594 close(pd[1]); /* Pipe pd is now fully closed! */
8595 exit(0); /* Bye bye, thank you for playing! */
8596}
8597EOCP
8598 set try
8599 if eval $compile_ok; then
8600 echo "$startsh" >mtry
8601 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8602 chmod +x mtry
8603 ./mtry >/dev/null 2>&1
8604 case $? in
8605 0) eagain=`$cat try.out`;;
8606 1) echo "Could not perform non-blocking setting!";;
8607 2) echo "I did a successful read() for something that was not there!";;
8608 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8609 *) echo "Something terribly wrong happened during testing.";;
8610 esac
8611 rd_nodata=`$cat try.ret`
8612 echo "A read() system call with no data present returns $rd_nodata."
8613 case "$rd_nodata" in
8614 0|-1) ;;
8615 *)
8616 echo "(That's peculiar, fixing that to be -1.)"
8617 rd_nodata=-1
8618 ;;
8619 esac
8620 case "$eagain" in
8621 '')
8622 echo "Forcing errno EAGAIN on read() with no data available."
8623 eagain=EAGAIN
8624 ;;
8625 *)
8626 echo "Your read() sets errno to $eagain when no data is available."
8627 ;;
8628 esac
8629 status=`$cat try.err`
8630 case "$status" in
8631 0) echo "And it correctly returns 0 to signal EOF.";;
8632 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8633 *) echo "However, your read() returns '$status' on EOF??";;
8634 esac
8635 val="$define"
8636 if test "$status" = "$rd_nodata"; then
8637 echo "WARNING: you can't distinguish between EOF and no data!"
8638 val="$undef"
8639 fi
8640 else
8641 echo "I can't compile the test program--assuming errno EAGAIN will do."
8642 eagain=EAGAIN
8643 fi
8644 set d_eofnblk
8645 eval $setvar
8646 ;;
8647*)
8648 echo "Using $hint value $eagain."
8649 echo "Your read() returns $rd_nodata when no data is present."
8650 case "$d_eofnblk" in
8651 "$define") echo "And you can see EOF because read() returns 0.";;
8652 "$undef") echo "But you can't see EOF status from read() returned value.";;
8653 *)
8654 echo "(Assuming you can't see EOF status from read anyway.)"
8655 d_eofnblk=$undef
8656 ;;
8657 esac
8658 ;;
8659esac
8660$rm -f try try.* .out core head.c mtry
8661
8662: see if fchmod exists
8663set fchmod d_fchmod
8664eval $inlibc
8665
8666: see if fchown exists
8667set fchown d_fchown
8668eval $inlibc
8669
8670: see if this is an fcntl system
8671set fcntl d_fcntl
8672eval $inlibc
8673
8674hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8675while $test $# -ge 2; do
8676 case "$1" in
8677 $define) echo "#include <$2>";;
8678 esac ;
8679 shift 2;
8680done > try.c;
8681echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8682set try;
8683if eval $compile; then
8684 val="$define";
8685else
8686 val="$undef";
8687fi;
8688set $varname;
8689eval $setvar;
8690$rm -f try.c try.o'
8691
8692socketlib=''
8693sockethdr=''
8694: see whether socket exists
8695echo " "
8696$echo $n "Hmm... $c" >&4
8697if set socket val -f d_socket; eval $csym; $val; then
8698 echo "Looks like you have Berkeley networking support." >&4
8699 d_socket="$define"
8700 if set setsockopt val -f; eval $csym; $val; then
8701 d_oldsock="$undef"
8702 else
8703 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8704 d_oldsock="$define"
8705 fi
8706else
8707 if $contains socklib libc.list >/dev/null 2>&1; then
8708 echo "Looks like you have Berkeley networking support." >&4
8709 d_socket="$define"
8710 : we will have to assume that it supports the 4.2 BSD interface
8711 d_oldsock="$undef"
8712 else
8713 echo "You don't have Berkeley networking in libc$_a..." >&4
8714 if test "X$d_socket" = "X$define"; then
8715 echo "...but you seem to believe that you have sockets." >&4
8716 else
8717 for net in net socket
8718 do
8719 if test -f /usr/lib/lib$net$_a; then
8720 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8721 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8722 if $contains socket libc.list >/dev/null 2>&1; then
8723 d_socket="$define"
8724 socketlib="-l$net"
8725 case "$net" in
8726 net)
8727 echo "...but the Wollongong group seems to have hacked it in." >&4
8728 sockethdr="-I/usr/netinclude"
8729 ;;
8730 esac
8731 echo "Found Berkeley sockets interface in lib$net." >& 4
8732 if $contains setsockopt libc.list >/dev/null 2>&1; then
8733 d_oldsock="$undef"
8734 else
8735 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8736 d_oldsock="$define"
8737 fi
8738 break
8739 fi
8740 fi
8741 done
8742 if test "X$d_socket" != "X$define"; then
8743 echo "or anywhere else I see." >&4
8744 d_socket="$undef"
8745 d_oldsock="$undef"
8746 fi
8747 fi
8748 fi
8749fi
8750
8751: see if socketpair exists
8752set socketpair d_sockpair
8753eval $inlibc
8754
8755
8756echo " "
8757echo "Checking the availability of certain socket constants..." >& 4
8758for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8759 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8760 $cat >try.c <<EOF
8761#include <sys/types.h>
8762#include <sys/socket.h>
8763int main() {
8764 int i = $ENUM;
8765}
8766EOF
8767 val="$undef"
8768 set try; if eval $compile; then
8769 val="$define"
8770 fi
8771 set d_${enum}; eval $setvar
8772 $rm -f try.c try
8773done
8774
8775: see if sys/select.h has to be included
8776set sys/select.h i_sysselct
8777eval $inhdr
8778
8779: see if we should include time.h, sys/time.h, or both
8780echo " "
8781if test "X$timeincl" = X; then
8782 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8783 $echo $n "I'm now running the test program...$c"
8784 $cat >try.c <<'EOCP'
8785#include <sys/types.h>
8786#ifdef I_TIME
8787#include <time.h>
8788#endif
8789#ifdef I_SYSTIME
8790#ifdef SYSTIMEKERNEL
8791#define KERNEL
8792#endif
8793#include <sys/time.h>
8794#endif
8795#ifdef I_SYSSELECT
8796#include <sys/select.h>
8797#endif
8798int main()
8799{
8800 struct tm foo;
8801#ifdef S_TIMEVAL
8802 struct timeval bar;
8803#endif
8804#ifdef S_TIMEZONE
8805 struct timezone tzp;
8806#endif
8807 if (foo.tm_sec == foo.tm_sec)
8808 exit(0);
8809#ifdef S_TIMEVAL
8810 if (bar.tv_sec == bar.tv_sec)
8811 exit(0);
8812#endif
8813 exit(1);
8814}
8815EOCP
8816 flags=''
8817 for s_timezone in '-DS_TIMEZONE' ''; do
8818 sysselect=''
8819 for s_timeval in '-DS_TIMEVAL' ''; do
8820 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8821 for i_time in '' '-DI_TIME'; do
8822 for i_systime in '-DI_SYSTIME' ''; do
8823 case "$flags" in
8824 '') $echo $n ".$c"
8825 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8826 if eval $compile; then
8827 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8828 shift
8829 flags="$*"
8830 echo " "
8831 $echo $n "Succeeded with $flags$c"
8832 fi
8833 ;;
8834 esac
8835 done
8836 done
8837 done
8838 done
8839 done
8840 timeincl=''
8841 echo " "
8842 case "$flags" in
8843 *SYSTIMEKERNEL*) i_systimek="$define"
8844 timeincl=`./findhdr sys/time.h`
8845 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8846 *) i_systimek="$undef";;
8847 esac
8848 case "$flags" in
8849 *I_TIME*) i_time="$define"
8850 timeincl=`./findhdr time.h`" $timeincl"
8851 echo "We'll include <time.h>." >&4;;
8852 *) i_time="$undef";;
8853 esac
8854 case "$flags" in
8855 *I_SYSTIME*) i_systime="$define"
8856 timeincl=`./findhdr sys/time.h`" $timeincl"
8857 echo "We'll include <sys/time.h>." >&4;;
8858 *) i_systime="$undef";;
8859 esac
8860 $rm -f try.c try
8861fi
8862
8863: check for fd_set items
8864$cat <<EOM
8865
8866Checking to see how well your C compiler handles fd_set and friends ...
8867EOM
8868$cat >fd_set.c <<EOCP
8869#$i_systime I_SYS_TIME
8870#$i_sysselct I_SYS_SELECT
8871#$d_socket HAS_SOCKET
8872#include <sys/types.h>
8873#ifdef HAS_SOCKET
8874#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8875#endif
8876#ifdef I_SYS_TIME
8877#include <sys/time.h>
8878#endif
8879#ifdef I_SYS_SELECT
8880#include <sys/select.h>
8881#endif
8882int main() {
8883 fd_set fds;
8884
8885#ifdef TRYBITS
8886 if(fds.fds_bits);
8887#endif
8888
8889#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8890 exit(0);
8891#else
8892 exit(1);
8893#endif
8894}
8895EOCP
8896set fd_set -DTRYBITS
8897if eval $compile; then
8898 d_fds_bits="$define"
8899 d_fd_set="$define"
8900 echo "Well, your system knows about the normal fd_set typedef..." >&4
8901 if ./fd_set; then
8902 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8903 d_fd_macros="$define"
8904 else
8905 $cat >&4 <<'EOM'
8906but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8907EOM
8908 d_fd_macros="$undef"
8909 fi
8910else
8911 $cat <<'EOM'
8912Hmm, your compiler has some difficulty with fd_set. Checking further...
8913EOM
8914 set fd_set
8915 if eval $compile; then
8916 d_fds_bits="$undef"
8917 d_fd_set="$define"
8918 echo "Well, your system has some sort of fd_set available..." >&4
8919 if ./fd_set; then
8920 echo "and you have the normal fd_set macros." >&4
8921 d_fd_macros="$define"
8922 else
8923 $cat <<'EOM'
8924but not the normal fd_set macros! Gross! More work for me...
8925EOM
8926 d_fd_macros="$undef"
8927 fi
8928 else
8929 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8930 d_fd_set="$undef"
8931 d_fds_bits="$undef"
8932 d_fd_macros="$undef"
8933 fi
8934fi
8935$rm -f fd_set*
8936
8937: see if fgetpos exists
8938set fgetpos d_fgetpos
8939eval $inlibc
8940
8941: see if flock exists
8942set flock d_flock
8943eval $inlibc
8944
8945: see if fork exists
8946set fork d_fork
8947eval $inlibc
8948
8949: see if pathconf exists
8950set pathconf d_pathconf
8951eval $inlibc
8952
8953: see if fpathconf exists
8954set fpathconf d_fpathconf
8955eval $inlibc
8956
8957
8958: check for fpos64_t
8959echo " "
8960echo "Checking to see if you have fpos64_t..." >&4
8961$cat >try.c <<EOCP
8962#include <stdio.h>
8963int main() { fpos64_t x = 7; }
8964EOCP
8965set try
8966if eval $compile; then
8967 val="$define"
8968 echo "You have fpos64_t."
8969else
8970 val="$undef"
8971 echo "You do not have fpos64_t."
8972 case "$fpossize" in
8973 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8974 esac
8975fi
8976$rm -f try.* try
8977set d_fpos64_t
8978eval $setvar
8979
8980hasstruct='varname=$1; struct=$2; shift; shift;
8981while $test $# -ge 2; do
8982 case "$1" in
8983 $define) echo "#include <$2>";;
8984 esac ;
8985 shift 2;
8986done > try.c;
8987echo "int main () { struct $struct foo; }" >> try.c;
8988set try;
8989if eval $compile; then
8990 val="$define";
8991else
8992 val="$undef";
8993fi;
8994set $varname;
8995eval $setvar;
8996$rm -f try.c try.o'
8997
8998: see if this is a sys/param system
8999set sys/param.h i_sysparam
9000eval $inhdr
9001
9002: see if this is a sys/mount.h system
9003set sys/mount.h i_sysmount
9004eval $inhdr
9005
9006: see if sys/types.h has to be included
9007set sys/types.h i_systypes
9008eval $inhdr
9009
9010
9011echo " "
9012echo "Checking to see if your system supports struct fs_data..." >&4
9013set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9014eval $hasstruct
9015case "$d_fs_data_s" in
9016"$define") echo "Yes, it does." ;;
9017*) echo "No, it doesn't." ;;
9018esac
9019
9020: see if fseeko exists
9021set fseeko d_fseeko
9022eval $inlibc
9023case "$longsize" in
90248) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9025esac
9026
9027: see if fsetpos exists
9028set fsetpos d_fsetpos
9029eval $inlibc
9030
9031
9032: see if fstatfs exists
9033set fstatfs d_fstatfs
9034eval $inlibc
9035
9036
9037: see if statvfs exists
9038set statvfs d_statvfs
9039eval $inlibc
9040
9041: see if fstatvfs exists
9042set fstatvfs d_fstatvfs
9043eval $inlibc
9044
9045
9046: see if ftello exists
9047set ftello d_ftello
9048eval $inlibc
9049case "$longsize" in
90508) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9051esac
9052
9053: see if getcwd exists
9054set getcwd d_getcwd
9055eval $inlibc
9056
9057
9058: see if getfsstat exists
9059set getfsstat d_getfsstat
9060eval $inlibc
9061
9062: see if getgrent exists
9063set getgrent d_getgrent
9064eval $inlibc
9065
9066: see if gethostbyaddr exists
9067set gethostbyaddr d_gethbyaddr
9068eval $inlibc
9069
9070: see if gethostbyname exists
9071set gethostbyname d_gethbyname
9072eval $inlibc
9073
9074: see if gethostent exists
9075set gethostent d_gethent
9076eval $inlibc
9077
9078: see how we will look up host name
9079echo " "
9080call=''
9081if set gethostname val -f d_gethname; eval $csym; $val; then
9082 echo 'gethostname() found.' >&4
9083 d_gethname="$define"
9084 call=gethostname
9085fi
9086if set uname val -f d_uname; eval $csym; $val; then
9087 if ./xenix; then
9088 $cat <<'EOM'
9089uname() was found, but you're running xenix, and older versions of xenix
9090have a broken uname(). If you don't really know whether your xenix is old
9091enough to have a broken system call, use the default answer.
9092
9093EOM
9094 dflt=y
9095 case "$d_uname" in
9096 "$define") dflt=n;;
9097 esac
9098 rp='Is your uname() broken?'
9099 . ./myread
9100 case "$ans" in
9101 n*) d_uname="$define"; call=uname;;
9102 esac
9103 else
9104 echo 'uname() found.' >&4
9105 d_uname="$define"
9106 case "$call" in
9107 '') call=uname ;;
9108 esac
9109 fi
9110fi
9111case "$d_gethname" in
9112'') d_gethname="$undef";;
9113esac
9114case "$d_uname" in
9115'') d_uname="$undef";;
9116esac
9117case "$d_uname$d_gethname" in
9118*define*)
9119 dflt=n
9120 cat <<EOM
9121
9122Every now and then someone has a $call() that lies about the hostname
9123but can't be fixed for political or economic reasons. If you wish, I can
9124pretend $call() isn't there and maybe compute hostname at run-time
9125thanks to the '$phostname' command.
9126
9127EOM
9128 rp="Shall I ignore $call() from now on?"
9129 . ./myread
9130 case "$ans" in
9131 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9132 esac;;
9133esac
9134case "$phostname" in
9135'') aphostname='';;
9136*) case "$aphostname" in
9137 /*) ;;
9138 *) set X $phostname
9139 shift
9140 file=$1
9141 shift
9142 file=`./loc $file $file $pth`
9143 aphostname=`echo $file $*`
9144 ;;
9145 esac
9146 ;;
9147esac
9148case "$d_uname$d_gethname" in
9149*define*) ;;
9150*)
9151 case "$phostname" in
9152 '')
9153 echo "There will be no way for $package to get your hostname." >&4;;
9154 *)
9155 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9156 ;;
9157 esac;;
9158esac
9159case "$d_phostname" in
9160'') d_phostname="$undef";;
9161esac
9162
9163: see if this is a netdb.h system
9164set netdb.h i_netdb
9165eval $inhdr
9166
9167: see if prototypes for various gethostxxx netdb.h functions are available
9168echo " "
9169set d_gethostprotos gethostent $i_netdb netdb.h
9170eval $hasproto
9171
9172: see if getlogin exists
9173set getlogin d_getlogin
9174eval $inlibc
9175
9176: see if getmnt exists
9177set getmnt d_getmnt
9178eval $inlibc
9179
9180: see if getmntent exists
9181set getmntent d_getmntent
9182eval $inlibc
9183
9184: see if getnetbyaddr exists
9185set getnetbyaddr d_getnbyaddr
9186eval $inlibc
9187
9188: see if getnetbyname exists
9189set getnetbyname d_getnbyname
9190eval $inlibc
9191
9192: see if getnetent exists
9193set getnetent d_getnent
9194eval $inlibc
9195
9196: see if prototypes for various getnetxxx netdb.h functions are available
9197echo " "
9198set d_getnetprotos getnetent $i_netdb netdb.h
9199eval $hasproto
9200
9201
9202: see if getprotobyname exists
9203set getprotobyname d_getpbyname
9204eval $inlibc
9205
9206: see if getprotobynumber exists
9207set getprotobynumber d_getpbynumber
9208eval $inlibc
9209
9210: see if getprotoent exists
9211set getprotoent d_getpent
9212eval $inlibc
9213
9214: see if getpgid exists
9215set getpgid d_getpgid
9216eval $inlibc
9217
9218: see if getpgrp2 exists
9219set getpgrp2 d_getpgrp2
9220eval $inlibc
9221
9222: see if getppid exists
9223set getppid d_getppid
9224eval $inlibc
9225
9226: see if getpriority exists
9227set getpriority d_getprior
9228eval $inlibc
9229
9230: see if prototypes for various getprotoxxx netdb.h functions are available
9231echo " "
9232set d_getprotoprotos getprotoent $i_netdb netdb.h
9233eval $hasproto
9234
9235: see if getpwent exists
9236set getpwent d_getpwent
9237eval $inlibc
9238
9239
9240: see if getservbyname exists
9241set getservbyname d_getsbyname
9242eval $inlibc
9243
9244: see if getservbyport exists
9245set getservbyport d_getsbyport
9246eval $inlibc
9247
9248: see if getservent exists
9249set getservent d_getsent
9250eval $inlibc
9251
9252: see if prototypes for various getservxxx netdb.h functions are available
9253echo " "
9254set d_getservprotos getservent $i_netdb netdb.h
9255eval $hasproto
9256
9257: see if getspent exists
9258set getspent d_getspent
9259eval $inlibc
9260
9261: see if getspnam exists
9262set getspnam d_getspnam
9263eval $inlibc
9264
9265: see if gettimeofday or ftime exists
9266set gettimeofday d_gettimeod
9267eval $inlibc
9268case "$d_gettimeod" in
9269"$undef")
9270 set ftime d_ftime
9271 eval $inlibc
9272 ;;
9273*)
9274 val="$undef"; set d_ftime; eval $setvar
9275 ;;
9276esac
9277case "$d_gettimeod$d_ftime" in
9278"$undef$undef")
9279 echo " "
9280 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9281 ;;
9282esac
9283
9284: see if this is an grp system
9285set grp.h i_grp
9286eval $inhdr
9287
9288case "$i_grp" in
9289$define)
9290 xxx=`./findhdr grp.h`
9291 $cppstdin $cppflags $cppminus < $xxx >$$.h
9292
9293 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9294 val="$define"
9295 else
9296 val="$undef"
9297 fi
9298 set d_grpasswd
9299 eval $setvar
9300
9301 $rm -f $$.h
9302 ;;
9303*)
9304 val="$undef";
9305 set d_grpasswd; eval $setvar
9306 ;;
9307esac
9308
9309: see if hasmntopt exists
9310set hasmntopt d_hasmntopt
9311eval $inlibc
9312
9313: see if this is a netinet/in.h or sys/in.h system
9314set netinet/in.h i_niin sys/in.h i_sysin
9315eval $inhdr
9316
9317: see if arpa/inet.h has to be included
9318set arpa/inet.h i_arpainet
9319eval $inhdr
9320
9321: see if htonl --and friends-- exists
9322val=''
9323set htonl val
9324eval $inlibc
9325
9326: Maybe they are macros.
9327case "$val" in
9328$undef)
9329 $cat >htonl.c <<EOM
9330#include <stdio.h>
9331#include <sys/types.h>
9332#$i_niin I_NETINET_IN
9333#$i_sysin I_SYS_IN
9334#$i_arpainet I_ARPA_INET
9335#ifdef I_NETINET_IN
9336#include <netinet/in.h>
9337#endif
9338#ifdef I_SYS_IN
9339#include <sys/in.h>
9340#endif
9341#ifdef I_ARPA_INET
9342#include <arpa/inet.h>
9343#endif
9344#ifdef htonl
9345printf("Defined as a macro.");
9346#endif
9347EOM
9348 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9349 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9350 val="$define"
9351 echo "But it seems to be defined as a macro." >&4
9352 fi
9353 $rm -f htonl.?
9354 ;;
9355esac
9356set d_htonl
9357eval $setvar
9358
9359: see if iconv exists
9360set iconv d_iconv
9361eval $inlibc
9362
9363: index or strchr
9364echo " "
9365if set index val -f; eval $csym; $val; then
9366 if set strchr val -f d_strchr; eval $csym; $val; then
9367 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9368 val="$define"
9369 vali="$undef"
9370 echo "strchr() found." >&4
9371 else
9372 val="$undef"
9373 vali="$define"
9374 echo "index() found." >&4
9375 fi
9376 else
9377 val="$undef"
9378 vali="$define"
9379 echo "index() found." >&4
9380 fi
9381else
9382 if set strchr val -f d_strchr; eval $csym; $val; then
9383 val="$define"
9384 vali="$undef"
9385 echo "strchr() found." >&4
9386 else
9387 echo "No index() or strchr() found!" >&4
9388 val="$undef"
9389 vali="$undef"
9390 fi
9391fi
9392set d_strchr; eval $setvar
9393val="$vali"
9394set d_index; eval $setvar
9395
9396: check whether inet_aton exists
9397set inet_aton d_inetaton
9398eval $inlibc
9399
9400: see if inttypes.h is available
9401: we want a real compile instead of Inhdr because some systems
9402: have an inttypes.h which includes non-existent headers
9403echo " "
9404$cat >try.c <<EOCP
9405#include <inttypes.h>
9406int main() {
9407 static int32_t foo32 = 0x12345678;
9408}
9409EOCP
9410set try
9411if eval $compile; then
9412 echo "<inttypes.h> found." >&4
9413 val="$define"
9414else
9415 echo "<inttypes.h> NOT found." >&4
9416 val="$undef"
9417fi
9418$rm -f try.c try
9419set i_inttypes
9420eval $setvar
9421
9422: check for int64_t
9423echo " "
9424echo "Checking to see if you have int64_t..." >&4
9425$cat >try.c <<EOCP
9426#include <sys/types.h>
9427#$i_inttypes I_INTTYPES
9428#ifdef I_INTTYPES
9429#include <inttypes.h>
9430#endif
9431int main() { int64_t x = 7; }
9432EOCP
9433set try
9434if eval $compile; then
9435 val="$define"
9436 echo "You have int64_t."
9437else
9438 val="$undef"
9439 echo "You do not have int64_t."
9440fi
9441$rm -f try try.*
9442set d_int64_t
9443eval $setvar
9444
9445: Look for isascii
9446echo " "
9447$cat >isascii.c <<'EOCP'
9448#include <stdio.h>
9449#include <ctype.h>
9450int main() {
9451 int c = 'A';
9452 if (isascii(c))
9453 exit(0);
9454 else
9455 exit(1);
9456}
9457EOCP
9458set isascii
9459if eval $compile; then
9460 echo "isascii() found." >&4
9461 val="$define"
9462else
9463 echo "isascii() NOT found." >&4
9464 val="$undef"
9465fi
9466set d_isascii
9467eval $setvar
9468$rm -f isascii*
9469
9470: see if killpg exists
9471set killpg d_killpg
9472eval $inlibc
9473
9474: see if lchown exists
9475echo " "
9476$cat > try.c <<'EOCP'
9477/* System header to define __stub macros and hopefully few prototypes,
9478 which can conflict with char lchown(); below. */
9479#include <assert.h>
9480/* Override any gcc2 internal prototype to avoid an error. */
9481/* We use char because int might match the return type of a gcc2
9482 builtin and then its argument prototype would still apply. */
9483char lchown();
9484int main() {
9485 /* The GNU C library defines this for functions which it implements
9486 to always fail with ENOSYS. Some functions are actually named
9487 something starting with __ and the normal name is an alias. */
9488#if defined (__stub_lchown) || defined (__stub___lchown)
9489choke me
9490#else
9491lchown();
9492#endif
9493; return 0; }
9494EOCP
9495set try
9496if eval $compile; then
9497 $echo "lchown() found." >&4
9498 val="$define"
9499else
9500 $echo "lchown() NOT found." >&4
9501 val="$undef"
9502fi
9503set d_lchown
9504eval $setvar
9505
9506: See if number of significant digits in a double precision number is known
9507echo " "
9508$cat >ldbl_dig.c <<EOM
9509#$i_limits I_LIMITS
9510#$i_float I_FLOAT
9511#ifdef I_LIMITS
9512#include <limits.h>
9513#endif
9514#ifdef I_FLOAT
9515#include <float.h>
9516#endif
9517#ifdef LDBL_DIG
9518printf("Contains LDBL_DIG");
9519#endif
9520EOM
9521$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9522if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9523 echo "LDBL_DIG found." >&4
9524 val="$define"
9525else
9526 echo "LDBL_DIG NOT found." >&4
9527 val="$undef"
9528fi
9529$rm -f ldbl_dig.?
9530set d_ldbl_dig
9531eval $setvar
9532
9533: see if link exists
9534set link d_link
9535eval $inlibc
9536
9537: see if localeconv exists
9538set localeconv d_locconv
9539eval $inlibc
9540
9541: see if lockf exists
9542set lockf d_lockf
9543eval $inlibc
9544
9545: check for long long
9546echo " "
9547echo "Checking to see if you have long long..." >&4
9548echo 'int main() { long long x = 7; return 0; }' > try.c
9549set try
9550if eval $compile; then
9551 val="$define"
9552 echo "You have have long long."
9553else
9554 val="$undef"
9555 echo "You do not have long long."
9556fi
9557$rm try.*
9558set d_longlong
9559eval $setvar
9560
9561: check for length of long long
9562case "${d_longlong}${longlongsize}" in
9563$define)
9564 echo " "
9565 echo "Checking to see how big your long longs are..." >&4
9566 $cat >try.c <<'EOCP'
9567#include <stdio.h>
9568int main()
9569{
9570 printf("%d\n", (int)sizeof(long long));
9571 return(0);
9572}
9573EOCP
9574 set try
9575 if eval $compile_ok; then
9576 longlongsize=`./try$exe_ext`
9577 echo "Your long longs are $longlongsize bytes long."
9578 else
9579 dflt='8'
9580 echo " "
9581 echo "(I can't seem to compile the test program. Guessing...)"
9582 rp="What is the size of a long long (in bytes)?"
9583 . ./myread
9584 longlongsize="$ans"
9585 fi
9586 if $test "X$longsize" = "X$longlongsize"; then
9587 echo "(That isn't any different from an ordinary long.)"
9588 fi
9589 ;;
9590esac
9591$rm -f try.* try
9592
9593: see if prototype for lseek is available
9594echo " "
9595set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9596eval $hasproto
9597
9598: see if lstat exists
9599set lstat d_lstat
9600eval $inlibc
9601
9602: see if madvise exists
9603set madvise d_madvise
9604eval $inlibc
9605
9606: see if mblen exists
9607set mblen d_mblen
9608eval $inlibc
9609
9610: see if mbstowcs exists
9611set mbstowcs d_mbstowcs
9612eval $inlibc
9613
9614: see if mbtowc exists
9615set mbtowc d_mbtowc
9616eval $inlibc
9617
9618: see if memchr exists
9619set memchr d_memchr
9620eval $inlibc
9621
9622: see if memcmp exists
9623set memcmp d_memcmp
9624eval $inlibc
9625
9626: see if memcpy exists
9627set memcpy d_memcpy
9628eval $inlibc
9629
9630: see if memmove exists
9631set memmove d_memmove
9632eval $inlibc
9633
9634: see if memset exists
9635set memset d_memset
9636eval $inlibc
9637
9638: see if mkdir exists
9639set mkdir d_mkdir
9640eval $inlibc
9641
9642: see if mkdtemp exists
9643set mkdtemp d_mkdtemp
9644eval $inlibc
9645
9646: see if mkfifo exists
9647set mkfifo d_mkfifo
9648eval $inlibc
9649
9650: see if mkstemp exists
9651set mkstemp d_mkstemp
9652eval $inlibc
9653
9654: see if mkstemps exists
9655set mkstemps d_mkstemps
9656eval $inlibc
9657
9658: see if mktime exists
9659set mktime d_mktime
9660eval $inlibc
9661
9662: see if this is a sys/mman.h system
9663set sys/mman.h i_sysmman
9664eval $inhdr
9665
9666: see if mmap exists
9667set mmap d_mmap
9668eval $inlibc
9669: see what shmat returns
9670: default to something harmless
9671mmaptype='void *'
9672case "$i_sysmman$d_mmap" in
9673"$define$define")
9674 $cat >mmap.c <<'END'
9675#include <sys/mman.h>
9676void *mmap();
9677END
9678 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9679 mmaptype='void *'
9680 else
9681 mmaptype='caddr_t'
9682 fi
9683 echo "and it returns ($mmaptype)." >&4
9684 ;;
9685esac
9686
9687
9688
9689: see if mprotect exists
9690set mprotect d_mprotect
9691eval $inlibc
9692
9693: see if msgctl exists
9694set msgctl d_msgctl
9695eval $inlibc
9696
9697: see if msgget exists
9698set msgget d_msgget
9699eval $inlibc
9700
9701: see if msgsnd exists
9702set msgsnd d_msgsnd
9703eval $inlibc
9704
9705: see if msgrcv exists
9706set msgrcv d_msgrcv
9707eval $inlibc
9708
9709: see how much of the 'msg*(2)' library is present.
9710h_msg=true
9711echo " "
9712case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9713*"$undef"*) h_msg=false;;
9714esac
9715case "$osname" in
9716freebsd)
9717 case "`ipcs 2>&1`" in
9718 "SVID messages"*"not configured"*)
9719 echo "Your $osname does not have the msg*(2) configured." >&4
9720 h_msg=false
9721 val="$undef"
9722 set msgctl d_msgctl
9723 eval $setvar
9724 set msgget d_msgget
9725 eval $setvar
9726 set msgsnd d_msgsnd
9727 eval $setvar
9728 set msgrcv d_msgrcv
9729 eval $setvar
9730 ;;
9731 esac
9732 ;;
9733esac
9734: we could also check for sys/ipc.h ...
9735if $h_msg && $test `./findhdr sys/msg.h`; then
9736 echo "You have the full msg*(2) library." >&4
9737 val="$define"
9738else
9739 echo "You don't have the full msg*(2) library." >&4
9740 val="$undef"
9741fi
9742set d_msg
9743eval $setvar
9744
9745: see if msync exists
9746set msync d_msync
9747eval $inlibc
9748
9749: see if munmap exists
9750set munmap d_munmap
9751eval $inlibc
9752
9753: see if nice exists
9754set nice d_nice
9755eval $inlibc
9756
9757
9758echo " "
9759echo "Checking which 64-bit integer type we could use..." >&4
9760
9761case "$intsize" in
97628) val=int
9763 set quadtype
9764 eval $setvar
9765 val='"unsigned int"'
9766 set uquadtype
9767 eval $setvar
9768 quadkind=1
9769 ;;
9770*) case "$longsize" in
9771 8) val=long
9772 set quadtype
9773 eval $setvar
9774 val='"unsigned long"'
9775 set uquadtype
9776 eval $setvar
9777 quadkind=2
9778 ;;
9779 *) case "$d_longlong:$longlongsize" in
9780 define:8)
9781 val='"long long"'
9782 set quadtype
9783 eval $setvar
9784 val='"unsigned long long"'
9785 set uquadtype
9786 eval $setvar
9787 quadkind=3
9788 ;;
9789 *) case "$d_int64_t" in
9790 define)
9791 val=int64_t
9792 set quadtype
9793 eval $setvar
9794 val=uint64_t
9795 set uquadtype
9796 eval $setvar
9797 quadkind=4
9798 ;;
9799 esac
9800 ;;
9801 esac
9802 ;;
9803 esac
9804 ;;
9805esac
9806
9807case "$quadtype" in
9808'') echo "Alas, no 64-bit integer types in sight." >&4
9809 d_quad="$undef"
9810 ;;
9811*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9812 verb="will"
9813 else
9814 verb="could"
9815 fi
9816 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9817 d_quad="$define"
9818 ;;
9819esac
9820
9821: check for length of character
9822echo " "
9823case "$charsize" in
9824'')
9825 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9826 $cat >try.c <<'EOCP'
9827#include <stdio.h>
9828int main()
9829{
9830 printf("%d\n", (int)sizeof(char));
9831 exit(0);
9832}
9833EOCP
9834 set try
9835 if eval $compile_ok; then
9836 dflt=`./try`
9837 else
9838 dflt='1'
9839 echo "(I can't seem to compile the test program. Guessing...)"
9840 fi
9841 ;;
9842*)
9843 dflt="$charsize"
9844 ;;
9845esac
9846rp="What is the size of a character (in bytes)?"
9847. ./myread
9848charsize="$ans"
9849$rm -f try.c try
9850
9851
9852echo " "
9853$echo "Choosing the C types to be used for Perl's internal types..." >&4
9854
9855case "$use64bitint:$d_quad:$quadtype" in
9856define:define:?*)
9857 ivtype="$quadtype"
9858 uvtype="$uquadtype"
9859 ivsize=8
9860 uvsize=8
9861 ;;
9862*) ivtype="long"
9863 uvtype="unsigned long"
9864 ivsize=$longsize
9865 uvsize=$longsize
9866 ;;
9867esac
9868
9869case "$uselongdouble:$d_longdbl" in
9870define:define)
9871 nvtype="long double"
9872 nvsize=$longdblsize
9873 ;;
9874*) nvtype=double
9875 nvsize=$doublesize
9876 ;;
9877esac
9878
9879$echo "(IV will be "$ivtype", $ivsize bytes)"
9880$echo "(UV will be "$uvtype", $uvsize bytes)"
9881$echo "(NV will be "$nvtype", $nvsize bytes)"
9882
9883$cat >try.c <<EOCP
9884#$i_inttypes I_INTTYPES
9885#ifdef I_INTTYPES
9886#include <inttypes.h>
9887#endif
9888#include <stdio.h>
9889int main() {
9890#ifdef INT8
9891 int8_t i = INT8_MAX;
9892 uint8_t u = UINT8_MAX;
9893 printf("int8_t\n");
9894#endif
9895#ifdef INT16
9896 int16_t i = INT16_MAX;
9897 uint16_t i = UINT16_MAX;
9898 printf("int16_t\n");
9899#endif
9900#ifdef INT32
9901 int32_t i = INT32_MAX;
9902 uint32_t u = UINT32_MAX;
9903 printf("int32_t\n");
9904#endif
9905}
9906EOCP
9907
9908case "$i8type" in
9909'') case "$charsize" in
9910 1) i8type=char
9911 u8type="unsigned char"
9912 i8size=$charsize
9913 u8size=$charsize
9914 ;;
9915 esac
9916 ;;
9917esac
9918case "$i8type" in
9919'') set try -DINT8
9920 if eval $compile; then
9921 case "`./try$exe_ext`" in
9922 int8_t) i8type=int8_t
9923 u8type=uint8_t
9924 i8size=1
9925 u8size=1
9926 ;;
9927 esac
9928 fi
9929 ;;
9930esac
9931case "$i8type" in
9932'') if $test $charsize -ge 1; then
9933 i8type=char
9934 u8type="unsigned char"
9935 i8size=$charsize
9936 u8size=$charsize
9937 fi
9938 ;;
9939esac
9940
9941case "$i16type" in
9942'') case "$shortsize" in
9943 2) i16type=short
9944 u16type="unsigned short"
9945 i16size=$shortsize
9946 u16size=$shortsize
9947 ;;
9948 esac
9949 ;;
9950esac
9951case "$i16type" in
9952'') set try -DINT16
9953 if eval $compile; then
9954 case "`./try$exe_ext`" in
9955 int16_t)
9956 i16type=int16_t
9957 u16type=uint16_t
9958 i16size=2
9959 u16size=2
9960 ;;
9961 esac
9962 fi
9963 ;;
9964esac
9965case "$i16type" in
9966'') if $test $shortsize -ge 2; then
9967 i16type=short
9968 u16type="unsigned short"
9969 i16size=$shortsize
9970 u16size=$shortsize
9971 fi
9972 ;;
9973esac
9974
9975case "$i32type" in
9976'') case "$longsize" in
9977 4) i32type=long
9978 u32type="unsigned long"
9979 i32size=$longsize
9980 u32size=$longsize
9981 ;;
9982 *) case "$intsize" in
9983 4) i32type=int
9984 u32type="unsigned int"
9985 i32size=$intsize
9986 u32size=$intsize
9987 ;;
9988 esac
9989 ;;
9990 esac
9991 ;;
9992esac
9993case "$i32type" in
9994'') set try -DINT32
9995 if eval $compile; then
9996 case "`./try$exe_ext`" in
9997 int32_t)
9998 i32type=int32_t
9999 u32type=uint32_t
10000 i32size=4
10001 u32size=4
10002 ;;
10003 esac
10004 fi
10005 ;;
10006esac
10007case "$i32type" in
10008'') if $test $intsize -ge 4; then
10009 i32type=int
10010 u32type="unsigned int"
10011 i32size=$intsize
10012 u32size=$intsize
10013 fi
10014 ;;
10015esac
10016
10017case "$i64type" in
10018'') case "$d_quad:$quadtype" in
10019 define:?*)
10020 i64type="$quadtype"
10021 u64type="$uquadtype"
10022 i64size=8
10023 u64size=8
10024 ;;
10025 esac
10026 ;;
10027esac
10028
10029$echo "Checking whether your NVs can preserve your UVs..." >&4
10030$cat <<EOP >try.c
10031#include <stdio.h>
10032int main() {
10033 $uvtype k = ($uvtype)~0, l;
10034 $nvtype d;
10035 l = k;
10036 d = ($nvtype)l;
10037 l = ($uvtype)d;
10038 if (l == k)
10039 printf("preserve\n");
10040 exit(0);
10041}
10042EOP
10043set try
10044if eval $compile; then
10045 case "`./try$exe_ext`" in
10046 preserve) d_nv_preserves_uv="$define" ;;
10047 esac
10048fi
10049case "$d_nv_preserves_uv" in
10050$define) $echo "Yes, they can." 2>&1 ;;
10051*) $echo "No, they can't." 2>&1
10052 d_nv_preserves_uv="$undef"
10053 ;;
10054esac
10055
10056$rm -f try.* try
10057
10058
10059: check for off64_t
10060echo " "
10061echo "Checking to see if you have off64_t..." >&4
10062$cat >try.c <<EOCP
10063#include <sys/types.h>
10064#include <unistd.h>
10065int main() { off64_t x = 7; }
10066EOCP
10067set try
10068if eval $compile; then
10069 val="$define"
10070 echo "You have off64_t."
10071else
10072 val="$undef"
10073 echo "You do not have off64_t."
10074 case "$lseeksize" in
10075 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10076 esac
10077fi
10078$rm -f try.* try
10079set d_off64_t
10080eval $setvar
10081
10082: see if POSIX threads are available
10083set pthread.h i_pthread
10084eval $inhdr
10085
10086
10087
10088
10089: how to create joinable pthreads
10090if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10091 echo " "
10092 echo "Checking what constant to use for creating joinable pthreads..." >&4
10093 $cat >try.c <<'EOCP'
10094#include <pthread.h>
10095int main() {
10096 int detachstate = JOINABLE;
10097}
10098EOCP
10099 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10100 if eval $compile; then
10101 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10102 val="$undef" # Yes, undef.
10103 set d_old_pthread_create_joinable
10104 eval $setvar
10105 val=""
10106 set old_pthread_create_joinable
10107 eval $setvar
10108 else
10109 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10110 if eval $compile; then
10111 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10112 val="$define"
10113 set d_old_pthread_create_joinable
10114 eval $setvar
10115 val=PTHREAD_CREATE_UNDETACHED
10116 set old_pthread_create_joinable
10117 eval $setvar
10118 else
10119 set try -DJOINABLE=__UNDETACHED
10120 if eval $compile; then
10121 echo "You seem to use __UNDETACHED." >&4
10122 val="$define"
10123 set d_old_pthread_create_joinable
10124 eval $setvar
10125 val=__UNDETACHED
10126 set old_pthread_create_joinable
10127 eval $setvar
10128 else
10129 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10130 val="$define"
10131 set d_old_pthread_create_joinable
10132 eval $setvar
10133 val=0
10134 set old_pthread_create_joinable
10135 eval $setvar
10136 fi
10137 fi
10138 fi
10139 $rm -f try try.*
10140else
10141 d_old_pthread_create_joinable="$undef"
10142 old_pthread_create_joinable=""
10143fi
10144
10145: see if pause exists
10146set pause d_pause
10147eval $inlibc
10148
10149: see if pipe exists
10150set pipe d_pipe
10151eval $inlibc
10152
10153: see if poll exists
10154set poll d_poll
10155eval $inlibc
10156
10157
10158: see whether the various POSIXish _yields exist
10159$cat >try.c <<EOP
10160#include <pthread.h>
10161#include <stdio.h>
10162int main() {
10163#ifdef SCHED_YIELD
10164 sched_yield();
10165#else
10166#ifdef PTHREAD_YIELD
10167 pthread_yield();
10168#else
10169#ifdef PTHREAD_YIELD_NULL
10170 pthread_yield(NULL);
10171#endif
10172#endif
10173#endif
10174}
10175EOP
10176: see if sched_yield exists
10177set try -DSCHED_YIELD
10178if eval $compile; then
10179 val="$define"
10180 sched_yield='sched_yield()'
10181else
10182 val="$undef"
10183fi
10184case "$usethreads" in
10185$define)
10186 case "$val" in
10187 $define) echo 'sched_yield() found.' >&4 ;;
10188 *) echo 'sched_yield() NOT found.' >&4 ;;
10189 esac
10190esac
10191set d_sched_yield
10192eval $setvar
10193
10194: see if pthread_yield exists
10195set try -DPTHREAD_YIELD
10196if eval $compile; then
10197 val="$define"
10198 case "$sched_yield" in
10199 '') sched_yield='pthread_yield()' ;;
10200 esac
10201else
10202 set try -DPTHREAD_YIELD_NULL
10203 if eval $compile; then
10204 val="$define"
10205 case "$sched_yield" in
10206 '') sched_yield='pthread_yield(NULL)' ;;
10207 esac
10208 else
10209 val="$undef"
10210 fi
10211fi
10212case "$usethreads" in
10213$define)
10214 case "$val" in
10215 $define) echo 'pthread_yield() found.' >&4 ;;
10216 *) echo 'pthread_yield() NOT found.' >&4 ;;
10217 esac
10218 ;;
10219esac
10220set d_pthread_yield
10221eval $setvar
10222
10223case "$sched_yield" in
10224'') sched_yield=undef ;;
10225esac
10226
10227$rm -f try try.*
10228
10229: see if this is a pwd.h system
10230set pwd.h i_pwd
10231eval $inhdr
10232
10233case "$i_pwd" in
10234$define)
10235 xxx=`./findhdr pwd.h`
10236 $cppstdin $cppflags $cppminus < $xxx >$$.h
10237
10238 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10239 val="$define"
10240 else
10241 val="$undef"
10242 fi
10243 set d_pwquota
10244 eval $setvar
10245
10246 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10247 val="$define"
10248 else
10249 val="$undef"
10250 fi
10251 set d_pwage
10252 eval $setvar
10253
10254 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10255 val="$define"
10256 else
10257 val="$undef"
10258 fi
10259 set d_pwchange
10260 eval $setvar
10261
10262 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10263 val="$define"
10264 else
10265 val="$undef"
10266 fi
10267 set d_pwclass
10268 eval $setvar
10269
10270 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10271 val="$define"
10272 else
10273 val="$undef"
10274 fi
10275 set d_pwexpire
10276 eval $setvar
10277
10278 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10279 val="$define"
10280 else
10281 val="$undef"
10282 fi
10283 set d_pwcomment
10284 eval $setvar
10285
10286 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10287 val="$define"
10288 else
10289 val="$undef"
10290 fi
10291 set d_pwgecos
10292 eval $setvar
10293
10294 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10295 val="$define"
10296 else
10297 val="$undef"
10298 fi
10299 set d_pwpasswd
10300 eval $setvar
10301
10302 $rm -f $$.h
10303 ;;
10304*)
10305 val="$undef";
10306 set d_pwquota; eval $setvar
10307 set d_pwage; eval $setvar
10308 set d_pwchange; eval $setvar
10309 set d_pwclass; eval $setvar
10310 set d_pwexpire; eval $setvar
10311 set d_pwcomment; eval $setvar
10312 set d_pwgecos; eval $setvar
10313 set d_pwpasswd; eval $setvar
10314 ;;
10315esac
10316
10317: see if readdir and friends exist
10318set readdir d_readdir
10319eval $inlibc
10320set seekdir d_seekdir
10321eval $inlibc
10322set telldir d_telldir
10323eval $inlibc
10324set rewinddir d_rewinddir
10325eval $inlibc
10326
10327: see if readlink exists
10328set readlink d_readlink
10329eval $inlibc
10330
10331: see if rename exists
10332set rename d_rename
10333eval $inlibc
10334
10335: see if rmdir exists
10336set rmdir d_rmdir
10337eval $inlibc
10338
10339: see if memory.h is available.
10340val=''
10341set memory.h val
10342eval $inhdr
10343
10344: See if it conflicts with string.h
10345case "$val" in
10346$define)
10347 case "$strings" in
10348 '') ;;
10349 *)
10350 $cppstdin $cppflags $cppminus < $strings > mem.h
10351 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10352 echo " "
10353 echo "We won't be including <memory.h>."
10354 val="$undef"
10355 fi
10356 $rm -f mem.h
10357 ;;
10358 esac
10359esac
10360set i_memory
10361eval $setvar
10362
10363: can bcopy handle overlapping blocks?
10364val="$undef"
10365case "$d_bcopy" in
10366"$define")
10367 echo " "
10368 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10369 $cat >try.c <<EOCP
10370#$i_memory I_MEMORY
10371#$i_stdlib I_STDLIB
10372#$i_string I_STRING
10373#$i_unistd I_UNISTD
10374EOCP
10375 $cat >>try.c <<'EOCP'
10376#include <stdio.h>
10377#ifdef I_MEMORY
10378# include <memory.h>
10379#endif
10380#ifdef I_STDLIB
10381# include <stdlib.h>
10382#endif
10383#ifdef I_STRING
10384# include <string.h>
10385#else
10386# include <strings.h>
10387#endif
10388#ifdef I_UNISTD
10389# include <unistd.h> /* Needed for NetBSD */
10390#endif
10391int main()
10392{
10393char buf[128], abc[128];
10394char *b;
10395int len;
10396int off;
10397int align;
10398
10399bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10400
10401for (align = 7; align >= 0; align--) {
10402 for (len = 36; len; len--) {
10403 b = buf+align;
10404 bcopy(abc, b, len);
10405 for (off = 1; off <= len; off++) {
10406 bcopy(b, b+off, len);
10407 bcopy(b+off, b, len);
10408 if (bcmp(b, abc, len))
10409 exit(1);
10410 }
10411 }
10412}
10413exit(0);
10414}
10415EOCP
10416 set try
10417 if eval $compile_ok; then
10418 if ./try 2>/dev/null; then
10419 echo "Yes, it can."
10420 val="$define"
10421 else
10422 echo "It can't, sorry."
10423 case "$d_memmove" in
10424 "$define") echo "But that's Ok since you have memmove()." ;;
10425 esac
10426 fi
10427 else
10428 echo "(I can't compile the test program, so we'll assume not...)"
10429 case "$d_memmove" in
10430 "$define") echo "But that's Ok since you have memmove()." ;;
10431 esac
10432 fi
10433 ;;
10434esac
10435$rm -f try.* try core
10436set d_safebcpy
10437eval $setvar
10438
10439: can memcpy handle overlapping blocks?
10440val="$undef"
10441case "$d_memcpy" in
10442"$define")
10443 echo " "
10444 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10445 $cat >try.c <<EOCP
10446#$i_memory I_MEMORY
10447#$i_stdlib I_STDLIB
10448#$i_string I_STRING
10449#$i_unistd I_UNISTD
10450EOCP
10451 $cat >>try.c <<'EOCP'
10452#include <stdio.h>
10453#ifdef I_MEMORY
10454# include <memory.h>
10455#endif
10456#ifdef I_STDLIB
10457# include <stdlib.h>
10458#endif
10459#ifdef I_STRING
10460# include <string.h>
10461#else
10462# include <strings.h>
10463#endif
10464#ifdef I_UNISTD
10465# include <unistd.h> /* Needed for NetBSD */
10466#endif
10467int main()
10468{
10469char buf[128], abc[128];
10470char *b;
10471int len;
10472int off;
10473int align;
10474
10475/* Copy "abcde..." string to char abc[] so that gcc doesn't
10476 try to store the string in read-only memory. */
10477memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10478
10479for (align = 7; align >= 0; align--) {
10480 for (len = 36; len; len--) {
10481 b = buf+align;
10482 memcpy(b, abc, len);
10483 for (off = 1; off <= len; off++) {
10484 memcpy(b+off, b, len);
10485 memcpy(b, b+off, len);
10486 if (memcmp(b, abc, len))
10487 exit(1);
10488 }
10489 }
10490}
10491exit(0);
10492}
10493EOCP
10494 set try
10495 if eval $compile_ok; then
10496 if ./try 2>/dev/null; then
10497 echo "Yes, it can."
10498 val="$define"
10499 else
10500 echo "It can't, sorry."
10501 case "$d_memmove" in
10502 "$define") echo "But that's Ok since you have memmove()." ;;
10503 esac
10504 fi
10505 else
10506 echo "(I can't compile the test program, so we'll assume not...)"
10507 case "$d_memmove" in
10508 "$define") echo "But that's Ok since you have memmove()." ;;
10509 esac
10510 fi
10511 ;;
10512esac
10513$rm -f try.* try core
10514set d_safemcpy
10515eval $setvar
10516
10517: can memcmp be trusted to compare relative magnitude?
10518val="$undef"
10519case "$d_memcmp" in
10520"$define")
10521 echo " "
10522 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10523 $cat >try.c <<EOCP
10524#$i_memory I_MEMORY
10525#$i_stdlib I_STDLIB
10526#$i_string I_STRING
10527#$i_unistd I_UNISTD
10528EOCP
10529 $cat >>try.c <<'EOCP'
10530#include <stdio.h>
10531#ifdef I_MEMORY
10532# include <memory.h>
10533#endif
10534#ifdef I_STDLIB
10535# include <stdlib.h>
10536#endif
10537#ifdef I_STRING
10538# include <string.h>
10539#else
10540# include <strings.h>
10541#endif
10542#ifdef I_UNISTD
10543# include <unistd.h> /* Needed for NetBSD */
10544#endif
10545int main()
10546{
10547char a = -1;
10548char b = 0;
10549if ((a < b) && memcmp(&a, &b, 1) < 0)
10550 exit(1);
10551exit(0);
10552}
10553EOCP
10554 set try
10555 if eval $compile_ok; then
10556 if ./try 2>/dev/null; then
10557 echo "Yes, it can."
10558 val="$define"
10559 else
10560 echo "No, it can't (it uses signed chars)."
10561 fi
10562 else
10563 echo "(I can't compile the test program, so we'll assume not...)"
10564 fi
10565 ;;
10566esac
10567$rm -f try.* try core
10568set d_sanemcmp
10569eval $setvar
10570
10571: see if select exists
10572set select d_select
10573eval $inlibc
10574
10575: see if semctl exists
10576set semctl d_semctl
10577eval $inlibc
10578
10579: see if semget exists
10580set semget d_semget
10581eval $inlibc
10582
10583: see if semop exists
10584set semop d_semop
10585eval $inlibc
10586
10587: see how much of the 'sem*(2)' library is present.
10588h_sem=true
10589echo " "
10590case "$d_semctl$d_semget$d_semop" in
10591*"$undef"*) h_sem=false;;
10592esac
10593case "$osname" in
10594freebsd)
10595 case "`ipcs 2>&1`" in
10596 "SVID messages"*"not configured"*)
10597 echo "Your $osname does not have the sem*(2) configured." >&4
10598 h_sem=false
10599 val="$undef"
10600 set semctl d_semctl
10601 eval $setvar
10602 set semget d_semget
10603 eval $setvar
10604 set semop d_semop
10605 eval $setvar
10606 ;;
10607 esac
10608 ;;
10609esac
10610: we could also check for sys/ipc.h ...
10611if $h_sem && $test `./findhdr sys/sem.h`; then
10612 echo "You have the full sem*(2) library." >&4
10613 val="$define"
10614else
10615 echo "You don't have the full sem*(2) library." >&4
10616 val="$undef"
10617fi
10618set d_sem
10619eval $setvar
10620
10621: see whether sys/sem.h defines union semun
10622echo " "
10623$cat > try.c <<'END'
10624#include <sys/types.h>
10625#include <sys/ipc.h>
10626#include <sys/sem.h>
10627int main () { union semun semun; semun.buf = 0; }
10628END
10629set try
10630if eval $compile; then
10631 echo "You have union semun in <sys/sem.h>." >&4
10632 val="$define"
10633else
10634 echo "You do not have union semun in <sys/sem.h>." >&4
10635 val="$undef"
10636fi
10637$rm -f try try.c try.h
10638set d_union_semun
10639eval $setvar
10640
10641: see how to do semctl IPC_STAT
10642case "$d_sem" in
10643$define)
10644 : see whether semctl IPC_STAT can use union semun
10645 echo " "
10646 $cat > try.h <<END
10647#ifndef S_IRUSR
10648# ifdef S_IREAD
10649# define S_IRUSR S_IREAD
10650# define S_IWUSR S_IWRITE
10651# define S_IXUSR S_IEXEC
10652# else
10653# define S_IRUSR 0400
10654# define S_IWUSR 0200
10655# define S_IXUSR 0100
10656# endif
10657# define S_IRGRP (S_IRUSR>>3)
10658# define S_IWGRP (S_IWUSR>>3)
10659# define S_IXGRP (S_IXUSR>>3)
10660# define S_IROTH (S_IRUSR>>6)
10661# define S_IWOTH (S_IWUSR>>6)
10662# define S_IXOTH (S_IXUSR>>6)
10663#endif
10664#ifndef S_IRWXU
10665# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10666# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10667# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10668#endif
10669END
10670
10671 $cat > try.c <<END
10672#include <sys/types.h>
10673#include <sys/ipc.h>
10674#include <sys/sem.h>
10675#include <sys/stat.h>
10676#include <stdio.h>
10677#include <errno.h>
10678#include "try.h"
10679#ifndef errno
10680extern int errno;
10681#endif
10682#$d_union_semun HAS_UNION_SEMUN
10683int main() {
10684 union semun
10685#ifndef HAS_UNION_SEMUN
10686 {
10687 int val;
10688 struct semid_ds *buf;
10689 unsigned short *array;
10690 }
10691#endif
10692 arg;
10693 int sem, st;
10694
10695#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10696 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10697 if (sem > -1) {
10698 struct semid_ds argbuf;
10699 arg.buf = &argbuf;
10700# ifdef IPC_STAT
10701 st = semctl(sem, 0, IPC_STAT, arg);
10702 if (st == 0)
10703 printf("semun\n");
10704 else
10705# endif /* IPC_STAT */
10706 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10707# ifdef IPC_RMID
10708 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10709# endif /* IPC_RMID */
10710 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10711 } else
10712#endif /* IPC_PRIVATE && ... */
10713 printf("semget failed: errno = %d\n", errno);
10714 return 0;
10715}
10716END
10717 val="$undef"
10718 set try
10719 if eval $compile; then
10720 xxx=`./try`
10721 case "$xxx" in
10722 semun) val="$define" ;;
10723 esac
10724 fi
10725 $rm -f try try.c
10726 set d_semctl_semun
10727 eval $setvar
10728 case "$d_semctl_semun" in
10729 $define)
10730 echo "You can use union semun for semctl IPC_STAT." >&4
10731 also='also'
10732 ;;
10733 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10734 also=''
10735 ;;
10736 esac
10737
10738 : see whether semctl IPC_STAT can use struct semid_ds pointer
10739 $cat > try.c <<'END'
10740#include <sys/types.h>
10741#include <sys/ipc.h>
10742#include <sys/sem.h>
10743#include <sys/stat.h>
10744#include "try.h"
10745#include <stdio.h>
10746#include <errno.h>
10747#ifndef errno
10748extern int errno;
10749#endif
10750int main() {
10751 struct semid_ds arg;
10752 int sem, st;
10753
10754#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10755 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10756 if (sem > -1) {
10757# ifdef IPC_STAT
10758 st = semctl(sem, 0, IPC_STAT, &arg);
10759 if (st == 0)
10760 printf("semid_ds\n");
10761 else
10762# endif /* IPC_STAT */
10763 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10764# ifdef IPC_RMID
10765 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10766# endif /* IPC_RMID */
10767 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10768 } else
10769#endif /* IPC_PRIVATE && ... */
10770 printf("semget failed: errno = %d\n", errno);
10771
10772 return 0;
10773}
10774END
10775 val="$undef"
10776 set try
10777 if eval $compile; then
10778 xxx=`./try`
10779 case "$xxx" in
10780 semid_ds) val="$define" ;;
10781 esac
10782 fi
10783 $rm -f try try.c
10784 set d_semctl_semid_ds
10785 eval $setvar
10786 case "$d_semctl_semid_ds" in
10787 $define)
10788 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10789 ;;
10790 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10791 ;;
10792 esac
10793 $rm -f try.h
10794 ;;
10795*) val="$undef"
10796
10797 # We do not have the full sem*(2) library, so assume we can not
10798 # use either.
10799
10800 set d_semctl_semun
10801 eval $setvar
10802
10803 set d_semctl_semid_ds
10804 eval $setvar
10805 ;;
10806esac
10807
10808: see if setegid exists
10809set setegid d_setegid
10810eval $inlibc
10811
10812: see if seteuid exists
10813set seteuid d_seteuid
10814eval $inlibc
10815
10816: see if setgrent exists
10817set setgrent d_setgrent
10818eval $inlibc
10819
10820: see if sethostent exists
10821set sethostent d_sethent
10822eval $inlibc
10823
10824: see if setlinebuf exists
10825set setlinebuf d_setlinebuf
10826eval $inlibc
10827
10828: see if setlocale exists
10829set setlocale d_setlocale
10830eval $inlibc
10831
10832: see if setnetent exists
10833set setnetent d_setnent
10834eval $inlibc
10835
10836: see if setprotoent exists
10837set setprotoent d_setpent
10838eval $inlibc
10839
10840: see if setpgid exists
10841set setpgid d_setpgid
10842eval $inlibc
10843
10844: see if setpgrp2 exists
10845set setpgrp2 d_setpgrp2
10846eval $inlibc
10847
10848: see if setpriority exists
10849set setpriority d_setprior
10850eval $inlibc
10851
10852: see if setpwent exists
10853set setpwent d_setpwent
10854eval $inlibc
10855
10856: see if setregid exists
10857set setregid d_setregid
10858eval $inlibc
10859set setresgid d_setresgid
10860eval $inlibc
10861
10862: see if setreuid exists
10863set setreuid d_setreuid
10864eval $inlibc
10865set setresuid d_setresuid
10866eval $inlibc
10867
10868: see if setrgid exists
10869set setrgid d_setrgid
10870eval $inlibc
10871
10872: see if setruid exists
10873set setruid d_setruid
10874eval $inlibc
10875
10876: see if setservent exists
10877set setservent d_setsent
10878eval $inlibc
10879
10880: see if setsid exists
10881set setsid d_setsid
10882eval $inlibc
10883
10884: see if setspent exists
10885set setspent d_setspent
10886eval $inlibc
10887
10888: see if setvbuf exists
10889set setvbuf d_setvbuf
10890eval $inlibc
10891
10892: see if sfio.h is available
10893set sfio.h i_sfio
10894eval $inhdr
10895
10896
10897: see if sfio library is available
10898case "$i_sfio" in
10899$define)
10900 val=''
10901 set sfreserve val
10902 eval $inlibc
10903 ;;
10904*)
10905 val="$undef"
10906 ;;
10907esac
10908: Ok, but do we want to use it.
10909case "$val" in
10910$define)
10911 case "$usesfio" in
10912 true|$define|[yY]*) dflt='y';;
10913 *) dflt='n';;
10914 esac
10915 echo "$package can use the sfio library, but it is experimental."
10916 rp="You seem to have sfio available, do you want to try using it?"
10917 . ./myread
10918 case "$ans" in
10919 y|Y) ;;
10920 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10921 val="$undef"
10922 : Remove sfio from list of libraries to use
10923 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10924 shift
10925 libs="$*"
10926 echo "libs = $libs" >&4
10927 ;;
10928 esac
10929 ;;
10930*) case "$usesfio" in
10931 true|$define|[yY]*)
10932 echo "Sorry, cannot find sfio on this machine" >&4
10933 echo "Ignoring your setting of usesfio=$usesfio" >&4
10934 ;;
10935 esac
10936 ;;
10937esac
10938set d_sfio
10939eval $setvar
10940case "$d_sfio" in
10941$define) usesfio='true';;
10942*) usesfio='false';;
10943esac
10944
10945: see if shmctl exists
10946set shmctl d_shmctl
10947eval $inlibc
10948
10949: see if shmget exists
10950set shmget d_shmget
10951eval $inlibc
10952
10953: see if shmat exists
10954set shmat d_shmat
10955eval $inlibc
10956: see what shmat returns
10957case "$d_shmat" in
10958"$define")
10959 $cat >shmat.c <<'END'
10960#include <sys/shm.h>
10961void *shmat();
10962END
10963 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10964 shmattype='void *'
10965 else
10966 shmattype='char *'
10967 fi
10968 echo "and it returns ($shmattype)." >&4
10969 : see if a prototype for shmat is available
10970 xxx=`./findhdr sys/shm.h`
10971 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10972 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10973 val="$define"
10974 else
10975 val="$undef"
10976 fi
10977 $rm -f shmat.[co]
10978 ;;
10979*)
10980 val="$undef"
10981 ;;
10982esac
10983set d_shmatprototype
10984eval $setvar
10985
10986: see if shmdt exists
10987set shmdt d_shmdt
10988eval $inlibc
10989
10990: see how much of the 'shm*(2)' library is present.
10991h_shm=true
10992echo " "
10993case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10994*"$undef"*) h_shm=false;;
10995esac
10996case "$osname" in
10997freebsd)
10998 case "`ipcs 2>&1`" in
10999 "SVID shared memory"*"not configured"*)
11000 echo "Your $osname does not have the shm*(2) configured." >&4
11001 h_shm=false
11002 val="$undef"
11003 set shmctl d_shmctl
11004 evat $setvar
11005 set shmget d_shmget
11006 evat $setvar
11007 set shmat d_shmat
11008 evat $setvar
11009 set shmdt d_shmdt
11010 evat $setvar
11011 ;;
11012 esac
11013 ;;
11014esac
11015: we could also check for sys/ipc.h ...
11016if $h_shm && $test `./findhdr sys/shm.h`; then
11017 echo "You have the full shm*(2) library." >&4
11018 val="$define"
11019else
11020 echo "You don't have the full shm*(2) library." >&4
11021 val="$undef"
11022fi
11023set d_shm
11024eval $setvar
11025
11026echo " "
11027: see if we have sigaction
11028if set sigaction val -f d_sigaction; eval $csym; $val; then
11029 echo 'sigaction() found.' >&4
11030 $cat > try.c <<'EOP'
11031#include <stdio.h>
11032#include <sys/types.h>
11033#include <signal.h>
11034int main()
11035{
11036 struct sigaction act, oact;
11037 act.sa_flags = 0;
11038 oact.sa_handler = 0;
11039 /* so that act and oact are used */
11040 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11041}
11042EOP
11043 set try
11044 if eval $compile_ok; then
11045 val="$define"
11046 else
11047 echo "But you don't seem to have a useable struct sigaction." >&4
11048 val="$undef"
11049 fi
11050else
11051 echo 'sigaction NOT found.' >&4
11052 val="$undef"
11053fi
11054set d_sigaction; eval $setvar
11055$rm -f try try$_o try.c
11056
11057: see if sigsetjmp exists
11058echo " "
11059case "$d_sigsetjmp" in
11060'')
11061 $cat >try.c <<'EOP'
11062#include <setjmp.h>
11063sigjmp_buf env;
11064int set = 1;
11065int main()
11066{
11067 if (sigsetjmp(env,1))
11068 exit(set);
11069 set = 0;
11070 siglongjmp(env, 1);
11071 exit(1);
11072}
11073EOP
11074 set try
11075 if eval $compile; then
11076 if ./try >/dev/null 2>&1; then
11077 echo "POSIX sigsetjmp found." >&4
11078 val="$define"
11079 else
11080 $cat >&4 <<EOM
11081Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11082I'll ignore them.
11083EOM
11084 val="$undef"
11085 fi
11086 else
11087 echo "sigsetjmp not found." >&4
11088 val="$undef"
11089 fi
11090 ;;
11091*) val="$d_sigsetjmp"
11092 case "$d_sigsetjmp" in
11093 $define) echo "POSIX sigsetjmp found." >&4;;
11094 $undef) echo "sigsetjmp not found." >&4;;
11095 esac
11096 ;;
11097esac
11098set d_sigsetjmp
11099eval $setvar
11100$rm -f try.c try
11101
11102: see if sys/stat.h is available
11103set sys/stat.h i_sysstat
11104eval $inhdr
11105
11106
11107: see if stat knows about block sizes
11108echo " "
11109echo "Checking to see if your struct stat has st_blocks field..." >&4
11110set d_statblks stat st_blocks $i_sysstat sys/stat.h
11111eval $hasfield
11112
11113
11114: see if this is a sys/vfs.h system
11115set sys/vfs.h i_sysvfs
11116eval $inhdr
11117
11118
11119: see if this is a sys/statfs.h system
11120set sys/statfs.h i_sysstatfs
11121eval $inhdr
11122
11123
11124echo " "
11125echo "Checking to see if your system supports struct statfs..." >&4
11126set 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
11127eval $hasstruct
11128case "$d_statfs_s" in
11129"$define") echo "Yes, it does." ;;
11130*) echo "No, it doesn't." ;;
11131esac
11132
11133
11134
11135: see if struct statfs knows about f_flags
11136case "$d_statfs_s" in
11137define)
11138 echo " "
11139 echo "Checking to see if your struct statfs has f_flags field..." >&4
11140 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
11141 eval $hasfield
11142 ;;
11143*) val="$undef"
11144 set d_statfs_f_flags
11145 eval $setvar
11146 ;;
11147esac
11148case "$d_statfs_f_flags" in
11149"$define") echo "Yes, it does." ;;
11150*) echo "No, it doesn't." ;;
11151esac
11152
11153: see if _ptr and _cnt from stdio act std
11154echo " "
11155if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11156 echo "(Looks like you have stdio.h from Linux.)"
11157 case "$stdio_ptr" in
11158 '') stdio_ptr='((fp)->_IO_read_ptr)'
11159 ptr_lval=$define
11160 ;;
11161 *) ptr_lval=$d_stdio_ptr_lval;;
11162 esac
11163 case "$stdio_cnt" in
11164 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11165 cnt_lval=$undef
11166 ;;
11167 *) cnt_lval=$d_stdio_cnt_lval;;
11168 esac
11169 case "$stdio_base" in
11170 '') stdio_base='((fp)->_IO_read_base)';;
11171 esac
11172 case "$stdio_bufsiz" in
11173 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11174 esac
11175else
11176 case "$stdio_ptr" in
11177 '') stdio_ptr='((fp)->_ptr)'
11178 ptr_lval=$define
11179 ;;
11180 *) ptr_lval=$d_stdio_ptr_lval;;
11181 esac
11182 case "$stdio_cnt" in
11183 '') stdio_cnt='((fp)->_cnt)'
11184 cnt_lval=$define
11185 ;;
11186 *) cnt_lval=$d_stdio_cnt_lval;;
11187 esac
11188 case "$stdio_base" in
11189 '') stdio_base='((fp)->_base)';;
11190 esac
11191 case "$stdio_bufsiz" in
11192 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11193 esac
11194fi
11195: test whether _ptr and _cnt really work
11196echo "Checking how std your stdio is..." >&4
11197$cat >try.c <<EOP
11198#include <stdio.h>
11199#define FILE_ptr(fp) $stdio_ptr
11200#define FILE_cnt(fp) $stdio_cnt
11201int main() {
11202 FILE *fp = fopen("try.c", "r");
11203 char c = getc(fp);
11204 if (
11205 18 <= FILE_cnt(fp) &&
11206 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11207 )
11208 exit(0);
11209 exit(1);
11210}
11211EOP
11212val="$undef"
11213set try
11214if eval $compile; then
11215 if ./try; then
11216 echo "Your stdio acts pretty std."
11217 val="$define"
11218 else
11219 echo "Your stdio isn't very std."
11220 fi
11221else
11222 echo "Your stdio doesn't appear very std."
11223fi
11224$rm -f try.c try
11225set d_stdstdio
11226eval $setvar
11227
11228: Can _ptr be used as an lvalue?
11229case "$d_stdstdio$ptr_lval" in
11230$define$define) val=$define ;;
11231*) val=$undef ;;
11232esac
11233set d_stdio_ptr_lval
11234eval $setvar
11235
11236: Can _cnt be used as an lvalue?
11237case "$d_stdstdio$cnt_lval" in
11238$define$define) val=$define ;;
11239*) val=$undef ;;
11240esac
11241set d_stdio_cnt_lval
11242eval $setvar
11243
11244: see if _base is also standard
11245val="$undef"
11246case "$d_stdstdio" in
11247$define)
11248 $cat >try.c <<EOP
11249#include <stdio.h>
11250#define FILE_base(fp) $stdio_base
11251#define FILE_bufsiz(fp) $stdio_bufsiz
11252int main() {
11253 FILE *fp = fopen("try.c", "r");
11254 char c = getc(fp);
11255 if (
11256 19 <= FILE_bufsiz(fp) &&
11257 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11258 )
11259 exit(0);
11260 exit(1);
11261}
11262EOP
11263 set try
11264 if eval $compile; then
11265 if ./try; then
11266 echo "And its _base field acts std."
11267 val="$define"
11268 else
11269 echo "But its _base field isn't std."
11270 fi
11271 else
11272 echo "However, it seems to be lacking the _base field."
11273 fi
11274 $rm -f try.c try
11275 ;;
11276esac
11277set d_stdiobase
11278eval $setvar
11279
11280$cat >&4 <<EOM
11281Checking how to access stdio streams by file descriptor number...
11282EOM
11283case "$stdio_stream_array" in
11284'') $cat >try.c <<EOCP
11285#include <stdio.h>
11286int main() {
11287 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11288 printf("yes\n");
11289}
11290EOCP
11291 for s in _iob __iob __sF
11292 do
11293 set try -DSTDIO_STREAM_ARRAY=$s
11294 if eval $compile; then
11295 case "`./try$exe_ext`" in
11296 yes) stdio_stream_array=$s; break ;;
11297 esac
11298 fi
11299 done
11300 $rm -f try.* try$exe_ext
11301esac
11302case "$stdio_stream_array" in
11303'') $cat >&4 <<EOM
11304I can't figure out how to access stdio streams by file descriptor number.
11305EOM
11306 d_stdio_stream_array="$undef"
11307 ;;
11308*) $cat >&4 <<EOM
11309You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11310EOM
11311 d_stdio_stream_array="$define"
11312 ;;
11313esac
11314
11315: see if strcoll exists
11316set strcoll d_strcoll
11317eval $inlibc
11318
11319: check for structure copying
11320echo " "
11321echo "Checking to see if your C compiler can copy structs..." >&4
11322$cat >try.c <<'EOCP'
11323int main()
11324{
11325 struct blurfl {
11326 int dyick;
11327 } foo, bar;
11328
11329 foo = bar;
11330}
11331EOCP
11332if $cc -c try.c >/dev/null 2>&1 ; then
11333 val="$define"
11334 echo "Yup, it can."
11335else
11336 val="$undef"
11337 echo "Nope, it can't."
11338fi
11339set d_strctcpy
11340eval $setvar
11341$rm -f try.*
11342
11343: see if strerror and/or sys_errlist[] exist
11344echo " "
11345if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11346 if set strerror val -f d_strerror; eval $csym; $val; then
11347 echo 'strerror() found.' >&4
11348 d_strerror="$define"
11349 d_strerrm='strerror(e)'
11350 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11351 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11352 d_syserrlst="$define"
11353 else
11354 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11355 d_syserrlst="$undef"
11356 fi
11357 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11358 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11359 echo 'strerror() found in string header.' >&4
11360 d_strerror="$define"
11361 d_strerrm='strerror(e)'
11362 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11363 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11364 d_syserrlst="$define"
11365 else
11366 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11367 d_syserrlst="$undef"
11368 fi
11369 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11370 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11371 d_strerror="$undef"
11372 d_syserrlst="$define"
11373 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11374 else
11375 echo 'strerror() and sys_errlist[] NOT found.' >&4
11376 d_strerror="$undef"
11377 d_syserrlst="$undef"
11378 d_strerrm='"unknown"'
11379 fi
11380fi
11381
11382: see if strtod exists
11383set strtod d_strtod
11384eval $inlibc
11385
11386: see if strtol exists
11387set strtol d_strtol
11388eval $inlibc
11389
11390: see if strtold exists
11391set strtold d_strtold
11392eval $inlibc
11393
11394: see if strtoll exists
11395set strtoll d_strtoll
11396eval $inlibc
11397
11398: see if strtoul exists
11399set strtoul d_strtoul
11400eval $inlibc
11401
11402: see if strtoull exists
11403set strtoull d_strtoull
11404eval $inlibc
11405
11406: see if strtouq exists
11407set strtouq d_strtouq
11408eval $inlibc
11409
11410: see if strxfrm exists
11411set strxfrm d_strxfrm
11412eval $inlibc
11413
11414: see if symlink exists
11415set symlink d_symlink
11416eval $inlibc
11417
11418: see if syscall exists
11419set syscall d_syscall
11420eval $inlibc
11421
11422: see if sysconf exists
11423set sysconf d_sysconf
11424eval $inlibc
11425
11426: see if system exists
11427set system d_system
11428eval $inlibc
11429
11430: see if tcgetpgrp exists
11431set tcgetpgrp d_tcgetpgrp
11432eval $inlibc
11433
11434: see if tcsetpgrp exists
11435set tcsetpgrp d_tcsetpgrp
11436eval $inlibc
11437
11438: see if prototype for telldir is available
11439echo " "
11440set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11441eval $hasproto
11442
11443: see if this is a sys/times.h system
11444set sys/times.h i_systimes
11445eval $inhdr
11446
11447: see if times exists
11448echo " "
11449if set times val -f d_times; eval $csym; $val; then
11450 echo 'times() found.' >&4
11451 d_times="$define"
11452 inc=''
11453 case "$i_systimes" in
11454 "$define") inc='sys/times.h';;
11455 esac
11456 rp="What is the type returned by times() on this system?"
11457 set clock_t clocktype long stdio.h sys/types.h $inc
11458 eval $typedef_ask
11459else
11460 echo 'times() NOT found, hope that will do.' >&4
11461 d_times="$undef"
11462 clocktype='int'
11463fi
11464
11465: see if truncate exists
11466set truncate d_truncate
11467eval $inlibc
11468
11469: see if tzname[] exists
11470echo " "
11471if set tzname val -a d_tzname; eval $csym; $val; then
11472 val="$define"
11473 echo 'tzname[] found.' >&4
11474else
11475 val="$undef"
11476 echo 'tzname[] NOT found.' >&4
11477fi
11478set d_tzname
11479eval $setvar
11480
11481: see if umask exists
11482set umask d_umask
11483eval $inlibc
11484
11485: see if ustat exists
11486set ustat d_ustat
11487eval $inlibc
11488
11489: backward compatibility for d_hvfork
11490if test X$d_hvfork != X; then
11491 d_vfork="$d_hvfork"
11492 d_hvfork=''
11493fi
11494: see if there is a vfork
11495val=''
11496set vfork val
11497eval $inlibc
11498
11499: Ok, but do we want to use it. vfork is reportedly unreliable in
11500: perl on Solaris 2.x, and probably elsewhere.
11501case "$val" in
11502$define)
11503 echo " "
11504 case "$usevfork" in
11505 false) dflt='n';;
11506 *) dflt='y';;
11507 esac
11508 cat <<'EOM'
11509
11510Perl can only use a vfork() that doesn't suffer from strict
11511restrictions on calling functions or modifying global data in
11512the child. For example, glibc-2.1 contains such a vfork()
11513that is unsuitable. If your system provides a proper fork()
11514call, chances are that you do NOT want perl to use vfork().
11515
11516EOM
11517 rp="Do you still want to use vfork()?"
11518 . ./myread
11519 case "$ans" in
11520 y|Y) ;;
11521 *)
11522 echo "Ok, we won't use vfork()."
11523 val="$undef"
11524 ;;
11525 esac
11526 ;;
11527esac
11528set d_vfork
11529eval $setvar
11530case "$d_vfork" in
11531$define) usevfork='true';;
11532*) usevfork='false';;
11533esac
11534
11535: see if this is an sysdir system
11536set sys/dir.h i_sysdir
11537eval $inhdr
11538
11539: see if this is an sysndir system
11540set sys/ndir.h i_sysndir
11541eval $inhdr
11542
11543: see if closedir exists
11544set closedir d_closedir
11545eval $inlibc
11546
11547case "$d_closedir" in
11548"$define")
11549 echo " "
11550 echo "Checking whether closedir() returns a status..." >&4
11551 cat > closedir.c <<EOM
11552#$i_dirent I_DIRENT /**/
11553#$i_sysdir I_SYS_DIR /**/
11554#$i_sysndir I_SYS_NDIR /**/
11555#$i_systypes I_SYS_TYPES /**/
11556
11557#if defined(I_SYS_TYPES)
11558#include <sys/types.h>
11559#endif
11560#if defined(I_DIRENT)
11561#include <dirent.h>
11562#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11563#include <sys/dir.h>
11564#endif
11565#else
11566#ifdef I_SYS_NDIR
11567#include <sys/ndir.h>
11568#else
11569#ifdef I_SYS_DIR
11570#ifdef hp9000s500
11571#include <ndir.h> /* may be wrong in the future */
11572#else
11573#include <sys/dir.h>
11574#endif
11575#endif
11576#endif
11577#endif
11578int main() { return closedir(opendir(".")); }
11579EOM
11580 set closedir
11581 if eval $compile_ok; then
11582 if ./closedir > /dev/null 2>&1 ; then
11583 echo "Yes, it does."
11584 val="$undef"
11585 else
11586 echo "No, it doesn't."
11587 val="$define"
11588 fi
11589 else
11590 echo "(I can't seem to compile the test program--assuming it doesn't)"
11591 val="$define"
11592 fi
11593 ;;
11594*)
11595 val="$undef";
11596 ;;
11597esac
11598set d_void_closedir
11599eval $setvar
11600$rm -f closedir*
11601: check for volatile keyword
11602echo " "
11603echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11604$cat >try.c <<'EOCP'
11605int main()
11606{
11607 typedef struct _goo_struct goo_struct;
11608 goo_struct * volatile goo = ((goo_struct *)0);
11609 struct _goo_struct {
11610 long long_int;
11611 int reg_int;
11612 char char_var;
11613 };
11614 typedef unsigned short foo_t;
11615 char *volatile foo;
11616 volatile int bar;
11617 volatile foo_t blech;
11618 foo = foo;
11619}
11620EOCP
11621if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11622 val="$define"
11623 echo "Yup, it does."
11624else
11625 val="$undef"
11626 echo "Nope, it doesn't."
11627fi
11628set d_volatile
11629eval $setvar
11630$rm -f try.*
11631
11632: see if there is a wait4
11633set wait4 d_wait4
11634eval $inlibc
11635
11636: see if waitpid exists
11637set waitpid d_waitpid
11638eval $inlibc
11639
11640: see if wcstombs exists
11641set wcstombs d_wcstombs
11642eval $inlibc
11643
11644: see if wctomb exists
11645set wctomb d_wctomb
11646eval $inlibc
11647
11648: preserve RCS keywords in files with variable substitution, grrr
11649Date='$Date'
11650Id='$Id'
11651Log='$Log'
11652RCSfile='$RCSfile'
11653Revision='$Revision'
11654
11655case "$crosscompile" in
11656''|[nN]*) crosscompile="$undef" ;;
11657esac
11658
11659case "$osname" in
11660next|rhapsody|darwin) multiarch="$define" ;;
11661esac
11662case "$multiarch" in
11663''|[nN]*) multiarch="$undef" ;;
11664esac
11665
11666: check for alignment requirements
11667echo " "
11668case "$crosscompile$multiarch" in
11669*$define*)
11670 $cat <<EOM
11671You seem to be either cross-compiling or doing a multiarchitecture build,
11672skipping the memory alignment check.
11673
11674EOM
11675 case "$alignbytes" in
11676 '') alignbytes=8 ;;
11677 esac
11678 ;;
11679*)
11680 case "$alignbytes" in
11681 '') echo "Checking alignment constraints..." >&4
11682 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11683 $cat >try.c <<'EOCP'
11684typedef long double NV;
11685EOCP
11686 else
11687 $cat >try.c <<'EOCP'
11688typedef double NV;
11689EOCP
11690 fi
11691 $cat >>try.c <<'EOCP'
11692#include <stdio.h>
11693struct foobar {
11694 char foo;
11695 NV bar;
11696} try_algn;
11697int main()
11698{
11699 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11700 return(0);
11701}
11702EOCP
11703 set try
11704 if eval $compile_ok; then
11705 dflt=`./try`
11706 else
11707 dflt='8'
11708 echo "(I can't seem to compile the test program...)"
11709 fi
11710 ;;
11711 *) dflt="$alignbytes"
11712 ;;
11713 esac
11714 rp="Doubles must be aligned on a how-many-byte boundary?"
11715 . ./myread
11716 alignbytes="$ans"
11717 $rm -f try.c try
11718 ;;
11719esac
11720
11721
11722: set the base revision
11723baserev=5.0
11724
11725: check for ordering of bytes in a long
11726echo " "
11727case "$crosscompile$multiarch" in
11728*$define*)
11729 $cat <<EOM
11730You seem to be either cross-compiling or doing a multiarchitecture build,
11731skipping the byteorder check.
11732
11733EOM
11734 byteorder='0xffff'
11735 ;;
11736*)
11737 case "$byteorder" in
11738 '')
11739 $cat <<'EOM'
11740In the following, larger digits indicate more significance. A big-endian
11741machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11742little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11743machines may have weird orders like 3412. A Cray will report 87654321,
11744an Alpha will report 12345678. If the test program works the default is
11745probably right.
11746I'm now running the test program...
11747EOM
11748 $cat >try.c <<'EOCP'
11749#include <stdio.h>
11750int main()
11751{
11752 int i;
11753 union {
11754 unsigned long l;
11755 char c[sizeof(long)];
11756 } u;
11757
11758 if (sizeof(long) > 4)
11759 u.l = (0x08070605L << 32) | 0x04030201L;
11760 else
11761 u.l = 0x04030201L;
11762 for (i = 0; i < sizeof(long); i++)
11763 printf("%c", u.c[i]+'0');
11764 printf("\n");
11765 exit(0);
11766}
11767EOCP
11768 xxx_prompt=y
11769 set try
11770 if eval $compile && ./try > /dev/null; then
11771 dflt=`./try`
11772 case "$dflt" in
11773 [1-4][1-4][1-4][1-4]|12345678|87654321)
11774 echo "(The test program ran ok.)"
11775 echo "byteorder=$dflt"
11776 xxx_prompt=n
11777 ;;
11778 ????|????????) echo "(The test program ran ok.)" ;;
11779 *) echo "(The test program didn't run right for some reason.)" ;;
11780 esac
11781 else
11782 dflt='4321'
11783 cat <<'EOM'
11784(I can't seem to compile the test program. Guessing big-endian...)
11785EOM
11786 fi
11787 case "$xxx_prompt" in
11788 y)
11789 rp="What is the order of bytes in a long?"
11790 . ./myread
11791 byteorder="$ans"
11792 ;;
11793 *) byteorder=$dflt
11794 ;;
11795 esac
11796 ;;
11797 esac
11798 $rm -f try.c try
11799 ;;
11800esac
11801
11802
11803: how do we catenate cpp tokens here?
11804echo " "
11805echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11806$cat >cpp_stuff.c <<'EOCP'
11807#define RCAT(a,b)a/**/b
11808#define ACAT(a,b)a ## b
11809RCAT(Rei,ser)
11810ACAT(Cir,cus)
11811EOCP
11812$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11813if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11814 echo "Oh! Smells like ANSI's been here." >&4
11815 echo "We can catify or stringify, separately or together!"
11816 cpp_stuff=42
11817elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11818 echo "Ah, yes! The good old days!" >&4
11819 echo "However, in the good old days we don't know how to stringify and"
11820 echo "catify at the same time."
11821 cpp_stuff=1
11822else
11823 $cat >&4 <<EOM
11824Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11825to have to edit the values of CAT[2-5] in config.h...
11826EOM
11827 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11828fi
11829$rm -f cpp_stuff.*
11830
11831: see if this is a db.h system
11832set db.h i_db
11833eval $inhdr
11834
11835case "$i_db" in
11836$define)
11837 : Check db version.
11838 echo " "
11839 echo "Checking Berkeley DB version ..." >&4
11840 $cat >try.c <<EOCP
11841#$d_const HASCONST
11842#ifndef HASCONST
11843#define const
11844#endif
11845#include <sys/types.h>
11846#include <stdio.h>
11847#include <db.h>
11848int main()
11849{
11850#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11851 int Major, Minor, Patch ;
11852 unsigned long Version ;
11853 (void)db_version(&Major, &Minor, &Patch) ;
11854 printf("You have Berkeley DB Version 2 or greater\n");
11855
11856 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11857 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11858 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11859 Major, Minor, Patch) ;
11860
11861 /* check that db.h & libdb are compatible */
11862 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11863 printf("db.h and libdb are incompatible\n") ;
11864 exit(3);
11865 }
11866
11867 printf("db.h and libdb are compatible\n") ;
11868
11869 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11870 + DB_VERSION_PATCH ;
11871
11872 /* needs to be >= 2.3.4 */
11873 if (Version < 2003004) {
11874 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11875 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11876 exit(2);
11877 }
11878
11879 exit(0);
11880#else
11881#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11882 printf("You have Berkeley DB Version 1\n");
11883 exit(0); /* DB version < 2: the coast is clear. */
11884#else
11885 exit(1); /* <db.h> not Berkeley DB? */
11886#endif
11887#endif
11888}
11889EOCP
11890 set try
11891 if eval $compile_ok && ./try; then
11892 echo 'Looks OK.' >&4
11893 else
11894 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11895 i_db=$undef
11896 case " $libs " in
11897 *"-ldb "*)
11898 : Remove db from list of libraries to use
11899 echo "Removing unusable -ldb from library list" >&4
11900 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11901 shift
11902 libs="$*"
11903 echo "libs = $libs" >&4
11904 ;;
11905 esac
11906 fi
11907 $rm -f try.*
11908 ;;
11909esac
11910
11911case "$i_db" in
11912define)
11913 : Check the return type needed for hash
11914 echo " "
11915 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11916 $cat >try.c <<EOCP
11917#$d_const HASCONST
11918#ifndef HASCONST
11919#define const
11920#endif
11921#include <sys/types.h>
11922#include <db.h>
11923
11924#ifndef DB_VERSION_MAJOR
11925u_int32_t hash_cb (ptr, size)
11926const void *ptr;
11927size_t size;
11928{
11929}
11930HASHINFO info;
11931int main()
11932{
11933 info.hash = hash_cb;
11934}
11935#endif
11936EOCP
11937 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11938 if $contains warning try.out >>/dev/null 2>&1 ; then
11939 db_hashtype='int'
11940 else
11941 db_hashtype='u_int32_t'
11942 fi
11943 else
11944 : XXX Maybe we should just give up here.
11945 db_hashtype=u_int32_t
11946 $cat try.out >&4
11947 echo "Help: I can't seem to compile the db test program." >&4
11948 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11949 fi
11950 $rm -f try.*
11951 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11952 ;;
11953*) db_hashtype=u_int32_t
11954 ;;
11955esac
11956case "$i_db" in
11957define)
11958 : Check the return type needed for prefix
11959 echo " "
11960 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11961 cat >try.c <<EOCP
11962#$d_const HASCONST
11963#ifndef HASCONST
11964#define const
11965#endif
11966#include <sys/types.h>
11967#include <db.h>
11968
11969#ifndef DB_VERSION_MAJOR
11970size_t prefix_cb (key1, key2)
11971const DBT *key1;
11972const DBT *key2;
11973{
11974}
11975BTREEINFO info;
11976int main()
11977{
11978 info.prefix = prefix_cb;
11979}
11980#endif
11981EOCP
11982 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11983 if $contains warning try.out >>/dev/null 2>&1 ; then
11984 db_prefixtype='int'
11985 else
11986 db_prefixtype='size_t'
11987 fi
11988 else
11989 db_prefixtype='size_t'
11990 : XXX Maybe we should just give up here.
11991 $cat try.out >&4
11992 echo "Help: I can't seem to compile the db test program." >&4
11993 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11994 fi
11995 $rm -f try.*
11996 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11997 ;;
11998*) db_prefixtype='size_t'
11999 ;;
12000esac
12001
12002: check for void type
12003echo " "
12004echo "Checking to see how well your C compiler groks the void type..." >&4
12005case "$voidflags" in
12006'')
12007 $cat >try.c <<'EOCP'
12008#if TRY & 1
12009void sub() {
12010#else
12011sub() {
12012#endif
12013 extern void moo(); /* function returning void */
12014 void (*goo)(); /* ptr to func returning void */
12015#if TRY & 8
12016 void *hue; /* generic ptr */
12017#endif
12018#if TRY & 2
12019 void (*foo[10])();
12020#endif
12021
12022#if TRY & 4
12023 if(goo == moo) {
12024 exit(0);
12025 }
12026#endif
12027 exit(0);
12028}
12029int main() { sub(); }
12030EOCP
12031 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12032 voidflags=$defvoidused
12033 echo "Good. It appears to support void to the level $package wants.">&4
12034 if $contains warning .out >/dev/null 2>&1; then
12035 echo "However, you might get some warnings that look like this:"
12036 $cat .out
12037 fi
12038 else
12039echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12040 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12041 echo "It supports 1..."
12042 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12043 echo "It also supports 2..."
12044 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12045 voidflags=7
12046 echo "And it supports 4 but not 8 definitely."
12047 else
12048 echo "It doesn't support 4..."
12049 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12050 voidflags=11
12051 echo "But it supports 8."
12052 else
12053 voidflags=3
12054 echo "Neither does it support 8."
12055 fi
12056 fi
12057 else
12058 echo "It does not support 2..."
12059 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12060 voidflags=13
12061 echo "But it supports 4 and 8."
12062 else
12063 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12064 voidflags=5
12065 echo "And it supports 4 but has not heard about 8."
12066 else
12067 echo "However it supports 8 but not 4."
12068 fi
12069 fi
12070 fi
12071 else
12072 echo "There is no support at all for void."
12073 voidflags=0
12074 fi
12075 fi
12076esac
12077case "$voidflags" in
12078"$defvoidused") ;;
12079*) $cat >&4 <<'EOM'
12080 Support flag bits are:
12081 1: basic void declarations.
12082 2: arrays of pointers to functions returning void.
12083 4: operations between pointers to and addresses of void functions.
12084 8: generic void pointers.
12085EOM
12086 dflt="$voidflags";
12087 rp="Your void support flags add up to what?"
12088 . ./myread
12089 voidflags="$ans"
12090 ;;
12091esac
12092$rm -f try.* .out
12093
12094
12095: How can we generate normalized random numbers ?
12096echo " "
12097echo "Looking for a random number function..." >&4
12098case "$randfunc" in
12099'')
12100 if set drand48 val -f; eval $csym; $val; then
12101 dflt="drand48"
12102 echo "Good, found drand48()." >&4
12103 elif set random val -f; eval $csym; $val; then
12104 dflt="random"
12105 echo "OK, found random()." >&4
12106 else
12107 dflt="rand"
12108 echo "Yick, looks like I have to use rand()." >&4
12109 fi
12110 echo " "
12111 ;;
12112*)
12113 dflt="$randfunc"
12114 ;;
12115esac
12116cont=true
12117
12118case "$ccflags" in
12119*-Dmy_rand=*|*-Dmy_srand=*)
12120 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12121 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12122 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12123 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12124 ;;
12125esac
12126
12127while $test "$cont"; do
12128 rp="Use which function to generate random numbers?"
12129 . ./myread
12130 if $test "$ans" = "$dflt"; then
12131 : null
12132 else
12133 randbits=''
12134 fi
12135 randfunc="$ans"
12136 if set $ans val -f; eval $csym; $val; then
12137 cont=''
12138 else
12139 dflt=y
12140 rp="I cannot find function $ans. Use that name anyway?"
12141 . ./myread
12142 dflt=rand
12143 case "$ans" in
12144 [yY]*) cont='';;
12145 esac
12146 fi
12147 case "$cont" in
12148 '')
12149 case "$randfunc" in
12150 drand48)
12151 drand01="drand48()"
12152 seedfunc="srand48"
12153 randbits=48
12154 randseedtype=long
12155 ;;
12156 rand|random)
12157 case "$randbits" in
12158 '')
12159echo "Checking to see how many bits your $randfunc() function produces..." >&4
12160 $cat >try.c <<EOCP
12161#$i_unistd I_UNISTD
12162#$i_stdlib I_STDLIB
12163#include <stdio.h>
12164#ifdef I_UNISTD
12165# include <unistd.h>
12166#endif
12167#ifdef I_STDLIB
12168# include <stdlib.h>
12169#endif
12170int main()
12171{
12172 register int i;
12173 register unsigned long tmp;
12174 register unsigned long max = 0L;
12175
12176 for (i = 1000; i; i--) {
12177 tmp = (unsigned long) $randfunc();
12178 if (tmp > max) max = tmp;
12179 }
12180 for (i = 0; max; i++)
12181 max /= 2;
12182 printf("%d\n",i);
12183}
12184EOCP
12185 set try
12186 if eval $compile_ok; then
12187 dflt=`try`
12188 else
12189 dflt='?'
12190 echo "(I can't seem to compile the test program...)"
12191 fi
12192 ;;
12193 *)
12194 dflt="$randbits"
12195 ;;
12196 esac
12197 rp="How many bits does your $randfunc() function produce?"
12198 . ./myread
12199 randbits="$ans"
12200 $rm -f try.c try
12201 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12202 seedfunc="s$randfunc"
12203 randseedtype=unsigned
12204 ;;
12205 *)
12206 dflt="31"
12207 rp="How many bits does your $randfunc() function produce?"
12208 . ./myread
12209 randbits="$ans"
12210 seedfunc="s$randfunc"
12211 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12212 if set $seedfunc val -f; eval $csym; $val; then
12213 echo "(Using $seedfunc() to seed random generator)"
12214 else
12215 echo "(Warning: no $seedfunc() to seed random generator)"
12216 seedfunc=rand
12217 fi
12218 randseedtype=unsigned
12219 ;;
12220 esac
12221 ;;
12222 esac
12223done
12224
12225echo " "
12226echo "Determining whether or not we are on an EBCDIC system..." >&4
12227$cat >tebcdic.c <<'EOM'
12228int main()
12229{
12230 if ('M'==0xd4) return 0;
12231 return 1;
12232}
12233EOM
12234
12235val=$undef
12236set tebcdic
12237if eval $compile_ok; then
12238 if ./tebcdic; then
12239 echo "You have EBCDIC." >&4
12240 val="$define"
12241 else
12242 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12243 fi
12244else
12245 echo "I'm unable to compile the test program." >&4
12246 echo "I'll assume ASCII or some ISO Latin." >&4
12247fi
12248$rm -f tebcdic.c tebcdic
12249set ebcdic
12250eval $setvar
12251
12252echo " "
12253$cat >&4 <<EOM
12254Checking how to flush all pending stdio output...
12255EOM
12256# I only know how to find the first 32 possibly open files on SunOS.
12257# See also hints/sunos_4_1.sh and util.c --AD
12258case "$osname" in
12259sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12260esac
12261$cat >>try.c <<EOCP
12262#include <stdio.h>
12263#$i_unistd I_UNISTD
12264#ifdef I_UNISTD
12265# include <unistd.h>
12266#endif
12267#$d_sysconf HAS_SYSCONF
12268#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12269#ifdef HAS_STDIO_STREAM_ARRAY
12270# define STDIO_STREAM_ARRAY $stdio_stream_array
12271#endif
12272int main() {
12273 FILE* p = fopen("try.out", "w");
12274#ifdef TRY_FPUTC
12275 fputc('x', p);
12276#else
12277# ifdef TRY_FPRINTF
12278 fprintf(p, "x");
12279# endif
12280#endif
12281#ifdef TRY_FFLUSH_NULL
12282 fflush(NULL);
12283#endif
12284#ifdef TRY_FFLUSH_ALL
12285 {
12286 long open_max = -1;
12287# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12288 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12289# else
12290# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12291 open_max = sysconf(_SC_OPEN_MAX);
12292# else
12293# ifdef FOPEN_MAX
12294 open_max = FOPEN_MAX;
12295# else
12296# ifdef OPEN_MAX
12297 open_max = OPEN_MAX;
12298# else
12299# ifdef _NFILE
12300 open_max = _NFILE;
12301# endif
12302# endif
12303# endif
12304# endif
12305# endif
12306# ifdef HAS_STDIO_STREAM_ARRAY
12307 if (open_max > 0) {
12308 long i;
12309 for (i = 0; i < open_max; i++)
12310 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12311 STDIO_STREAM_ARRAY[i]._file < open_max &&
12312 STDIO_STREAM_ARRAY[i]._flag)
12313 fflush(&STDIO_STREAM_ARRAY[i]);
12314 }
12315 }
12316# endif
12317#endif
12318 _exit(42);
12319}
12320EOCP
12321: first we have to find out how _not_ to flush
12322if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12323 output=''
12324 set try -DTRY_FPUTC
12325 if eval $compile; then
12326 $rm -f try.out
12327 ./try$exe_ext 2>/dev/null
12328 if $test ! -s try.out -a "X$?" = X42; then
12329 output=-DTRY_FPUTC
12330 fi
12331 fi
12332 case "$output" in
12333 '')
12334 set try -DTRY_FPRINTF
12335 $rm -f try.out
12336 if eval $compile; then
12337 $rm -f try.out
12338 ./try$exe_ext 2>/dev/null
12339 if $test ! -s try.out -a "X$?" = X42; then
12340 output=-DTRY_FPRINTF
12341 fi
12342 fi
12343 ;;
12344 esac
12345fi
12346: check for fflush NULL behaviour
12347case "$fflushNULL" in
12348'') set try -DTRY_FFLUSH_NULL $output
12349 if eval $compile; then
12350 $rm -f try.out
12351 ./try$exe_ext 2>/dev/null
12352 code="$?"
12353 if $test -s try.out -a "X$code" = X42; then
12354 fflushNULL="`$cat try.out`"
12355 else
12356 if $test "X$code" != X42; then
12357 $cat >&4 <<EOM
12358(If this test failed, don't worry, we'll try another method shortly.)
12359EOM
12360 fi
12361 fi
12362 fi
12363 $rm -f core try.core core.try.*
12364 case "$fflushNULL" in
12365 x) $cat >&4 <<EOM
12366Your fflush(NULL) works okay.
12367EOM
12368 fflushNULL="$define"
12369 ;;
12370 '') $cat >&4 <<EOM
12371Your fflush(NULL) isn't working (contrary to ANSI C).
12372EOM
12373 fflushNULL="$undef"
12374 ;;
12375 *) $cat >&4 <<EOM
12376Cannot figure out whether your fflush(NULL) works or not.
12377I'm assuming it doesn't (contrary to ANSI C).
12378EOM
12379 fflushNULL="$undef"
12380 ;;
12381 esac
12382 ;;
12383$define|true|[yY]*)
12384 fflushNULL="$define"
12385 ;;
12386*)
12387 fflushNULL="$undef"
12388 ;;
12389esac
12390: check explicit looping only if NULL did not work
12391case "$fflushNULL" in
12392"$undef")
12393 : check for fflush all behaviour
12394 case "$fflushall" in
12395 '') set try -DTRY_FFLUSH_ALL $output
12396 if eval $compile; then
12397 $cat >&4 <<EOM
12398(Now testing the other method--but note that also this may fail.)
12399EOM
12400 $rm -f try.out
12401 ./try$exe_ext 2>/dev/null
12402 if $test -s try.out -a "X$?" = X42; then
12403 fflushall="`$cat try.out`"
12404 fi
12405 fi
12406 $rm -f core try.core core.try.*
12407 case "$fflushall" in
12408 x) $cat >&4 <<EOM
12409Whew. Flushing explicitly all the stdio streams works.
12410EOM
12411 fflushall="$define"
12412 ;;
12413 '') $cat >&4 <<EOM
12414Sigh. Flushing explicitly all the stdio streams doesn't work.
12415EOM
12416 fflushall="$undef"
12417 ;;
12418 *) $cat >&4 <<EOM
12419Cannot figure out whether flushing stdio streams explicitly works or not.
12420I'm assuming it doesn't.
12421EOM
12422 fflushall="$undef"
12423 ;;
12424 esac
12425 ;;
12426 "$define"|true|[yY]*)
12427 fflushall="$define"
12428 ;;
12429 *)
12430 fflushall="$undef"
12431 ;;
12432 esac
12433 ;;
12434*) fflushall="$undef"
12435 ;;
12436esac
12437case "$fflushNULL$fflushall" in
12438undefundef)
12439 $cat <<EOM
12440I cannot figure out how to flush pending stdio output.
12441EOM
12442 ;;
12443esac
12444$rm -f try.* try$exe_ext
12445
12446: Store the full pathname to the ar program for use in the C program
12447: Respect a hint or command line value for full_ar.
12448case "$full_ar" in
12449'') full_ar=$ar ;;
12450esac
12451
12452: Store the full pathname to the sed program for use in the C program
12453full_sed=$sed
12454
12455: see what type gids are declared as in the kernel
12456echo " "
12457echo "Looking for the type for group ids returned by getgid()."
12458set gid_t gidtype xxx stdio.h sys/types.h
12459eval $typedef
12460case "$gidtype" in
12461xxx)
12462 xxx=`./findhdr sys/user.h`
12463 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12464 case $1 in
12465 unsigned) dflt="$1 $2" ;;
12466 *) dflt="$1" ;;
12467 esac
12468 ;;
12469*) dflt="$gidtype";;
12470esac
12471case "$gidtype" in
12472gid_t) echo "gid_t found." ;;
12473*) rp="What is the type for group ids returned by getgid()?"
12474 . ./myread
12475 gidtype="$ans"
12476 ;;
12477esac
12478
12479echo " "
12480case "$gidtype" in
12481*_t) zzz="$gidtype" ;;
12482*) zzz="gid" ;;
12483esac
12484echo "Checking the size of $zzz..." >&4
12485cat > try.c <<EOCP
12486#include <sys/types.h>
12487#include <stdio.h>
12488int main() {
12489 printf("%d\n", (int)sizeof($gidtype));
12490 exit(0);
12491}
12492EOCP
12493set try
12494if eval $compile_ok; then
12495 yyy=`./try`
12496 case "$yyy" in
12497 '') gidsize=4
12498 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12499 ;;
12500 *) gidsize=$yyy
12501 echo "Your $zzz is $gidsize bytes long."
12502 ;;
12503 esac
12504else
12505 gidsize=4
12506 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12507fi
12508
12509
12510echo " "
12511case "$gidtype" in
12512*_t) zzz="$gidtype" ;;
12513*) zzz="gid" ;;
12514esac
12515echo "Checking the sign of $zzz..." >&4
12516cat > try.c <<EOCP
12517#include <sys/types.h>
12518#include <stdio.h>
12519int main() {
12520 $gidtype foo = -1;
12521 if (foo < 0)
12522 printf("-1\n");
12523 else
12524 printf("1\n");
12525}
12526EOCP
12527set try
12528if eval $compile; then
12529 yyy=`./try`
12530 case "$yyy" in
12531 '') gidsign=1
12532 echo "(I can't execute the test program--guessing unsigned.)" >&4
12533 ;;
12534 *) gidsign=$yyy
12535 case "$gidsign" in
12536 1) echo "Your $zzz is unsigned." ;;
12537 -1) echo "Your $zzz is signed." ;;
12538 esac
12539 ;;
12540 esac
12541else
12542 gidsign=1
12543 echo "(I can't compile the test program--guessing unsigned.)" >&4
12544fi
12545
12546
12547echo " "
12548
12549if $test X"$quadtype" != X; then
12550
12551echo "Checking how to print 64-bit integers..." >&4
12552
12553if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12554 $cat >try.c <<'EOCP'
12555#include <sys/types.h>
12556#include <stdio.h>
12557int main() {
12558 int q = 12345678901;
12559 printf("%ld\n", q);
12560}
12561EOCP
12562 set try
12563 if eval $compile; then
12564 yyy=`./try$exe_ext`
12565 case "$yyy" in
12566 12345678901)
12567 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12568 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12569 echo "We will use %d."
12570 ;;
12571 esac
12572 fi
12573fi
12574
12575if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12576 $cat >try.c <<'EOCP'
12577#include <sys/types.h>
12578#include <stdio.h>
12579int main() {
12580 long q = 12345678901;
12581 printf("%ld\n", q);
12582}
12583EOCP
12584 set try
12585 if eval $compile; then
12586 yyy=`./try$exe_ext`
12587 case "$yyy" in
12588 12345678901)
12589 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12590 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12591 echo "We will use %ld."
12592 ;;
12593 esac
12594 fi
12595fi
12596
12597if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12598 $cat >try.c <<'EOCP'
12599#include <sys/types.h>
12600#include <inttypes.h>
12601#include <stdio.h>
12602int main() {
12603 int64_t q = 12345678901;
12604 printf("%" PRId64 "\n", q);
12605}
12606EOCP
12607 set try
12608 if eval $compile; then
12609 yyy=`./try$exe_ext`
12610 case "$yyy" in
12611 12345678901)
12612 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12613 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12614 echo "We will use the C9X style."
12615 ;;
12616 esac
12617 fi
12618fi
12619
12620if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12621 $cat >try.c <<'EOCP'
12622#include <sys/types.h>
12623#include <stdio.h>
12624int main() {
12625 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12626 printf("%lld\n", q);
12627}
12628EOCP
12629 set try
12630 if eval $compile; then
12631 yyy=`./try$exe_ext`
12632 case "$yyy" in
12633 12345678901)
12634 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12635 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12636 echo "We will use the %lld style."
12637 ;;
12638 esac
12639 fi
12640fi
12641
12642if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12643 $cat >try.c <<EOCP
12644#include <sys/types.h>
12645#include <stdio.h>
12646int main() {
12647 $quadtype q = 12345678901;
12648 printf("%Ld\n", q);
12649}
12650EOCP
12651 set try
12652 if eval $compile; then
12653 yyy=`./try$exe_ext`
12654 case "$yyy" in
12655 12345678901)
12656 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12657 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12658 echo "We will use %Ld."
12659 ;;
12660 esac
12661 fi
12662fi
12663
12664if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12665 $cat >try.c <<EOCP
12666#include <sys/types.h>
12667#include <stdio.h>
12668int main() {
12669 $quadtype q = 12345678901;
12670 printf("%qd\n", q);
12671}
12672EOCP
12673 set try
12674 if eval $compile; then
12675 yyy=`./try$exe_ext`
12676 case "$yyy" in
12677 12345678901)
12678 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12679 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12680 echo "We will use %qd."
12681 ;;
12682 esac
12683 fi
12684fi
12685
12686if $test X"$sPRId64" = X; then
12687 echo "Cannot figure out how to print 64-bit integers." >&4
12688fi
12689
12690$rm -f try try.*
12691
12692fi
12693
12694case "$sPRId64" in
12695'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12696 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12697 ;;
12698*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12699 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12700 ;;
12701esac
12702
12703
12704echo " "
12705$echo "Checking the format strings to be used for Perl's internal types..." >&4
12706
12707if $test X"$ivsize" = X8; then
12708 ivdformat="$sPRId64"
12709 uvuformat="$sPRIu64"
12710 uvoformat="$sPRIo64"
12711 uvxformat="$sPRIx64"
12712else
12713 if $test X"$ivsize" = X"$longsize"; then
12714 ivdformat='"ld"'
12715 uvuformat='"lu"'
12716 uvoformat='"lo"'
12717 uvxformat='"lx"'
12718 else
12719 if $test X"$ivsize" = X"$intsize"; then
12720 ivdformat='"d"'
12721 uvuformat='"u"'
12722 uvoformat='"o"'
12723 uvxformat='"x"'
12724 else
12725 : far out
12726 if $test X"$ivsize" = X"$shortsize"; then
12727 ivdformat='"hd"'
12728 uvuformat='"hu"'
12729 uvoformat='"ho"'
12730 uvxformat='"hx"'
12731 fi
12732 fi
12733 fi
12734fi
12735
12736case "$ivdformat" in
12737'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12738 exit 1
12739 ;;
12740esac
12741
12742
12743echo " "
12744$echo "Checking the format string to be used for gids..." >&4
12745
12746case "$gidsign" in
12747-1) if $test X"$gidsize" = X"$ivsize"; then
12748 gidformat="$ivdformat"
12749 else
12750 if $test X"$gidsize" = X"$longsize"; then
12751 gidformat='"ld"'
12752 else
12753 if $test X"$gidsize" = X"$intsize"; then
12754 gidformat='"d"'
12755 else
12756 if $test X"$gidsize" = X"$shortsize"; then
12757 gidformat='"hd"'
12758 fi
12759 fi
12760 fi
12761 fi
12762 ;;
12763*) if $test X"$gidsize" = X"$uvsize"; then
12764 gidformat="$uvuformat"
12765 else
12766 if $test X"$gidsize" = X"$longsize"; then
12767 gidformat='"lu"'
12768 else
12769 if $test X"$gidsize" = X"$intsize"; then
12770 gidformat='"u"'
12771 else
12772 if $test X"$gidsize" = X"$shortsize"; then
12773 gidformat='"hu"'
12774 fi
12775 fi
12776 fi
12777 fi
12778 ;;
12779esac
12780
12781: see if getgroups exists
12782set getgroups d_getgrps
12783eval $inlibc
12784
12785: see if setgroups exists
12786set setgroups d_setgrps
12787eval $inlibc
12788
12789
12790: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12791echo " "
12792case "$d_getgrps$d_setgrps" in
12793*define*)
12794 case "$groupstype" in
12795 '') dflt="$gidtype" ;;
12796 *) dflt="$groupstype" ;;
12797 esac
12798 $cat <<EOM
12799What type of pointer is the second argument to getgroups() and setgroups()?
12800Usually this is the same as group ids, $gidtype, but not always.
12801
12802EOM
12803 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12804 . ./myread
12805 groupstype="$ans"
12806 ;;
12807*) groupstype="$gidtype";;
12808esac
12809
12810echo " "
12811echo "Checking if your $make program sets \$(MAKE)..." >&4
12812case "$make_set_make" in
12813'')
12814 $sed 's/^X //' > testmake.mak << 'EOF'
12815Xall:
12816X @echo 'maketemp="$(MAKE)"'
12817EOF
12818 case "`$make -f testmake.mak 2>/dev/null`" in
12819 *maketemp=*) make_set_make='#' ;;
12820 *) make_set_make="MAKE=$make" ;;
12821 esac
12822 $rm -f testmake.mak
12823 ;;
12824esac
12825case "$make_set_make" in
12826'#') echo "Yup, it does.";;
12827*) echo "Nope, it doesn't.";;
12828esac
12829
12830: see what type is used for mode_t
12831rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12832set mode_t modetype int stdio.h sys/types.h
12833eval $typedef_ask
12834
12835: define a fucntion to check prototypes
12836$cat > protochk <<EOSH
12837$startsh
12838cc="$cc"
12839optimize="$optimize"
12840ccflags="$ccflags"
12841prototype="$prototype"
12842define="$define"
12843rm=$rm
12844EOSH
12845
12846$cat >> protochk <<'EOSH'
12847
12848$rm -f try.c
12849foo="$1"
12850shift
12851while test $# -ge 2; do
12852 case "$1" in
12853 $define) echo "#include <$2>" >> try.c ;;
12854 literal) echo "$2" >> try.c ;;
12855 esac
12856 shift 2
12857done
12858test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12859cat >> try.c <<'EOCP'
12860#ifdef CAN_PROTOTYPE
12861#define _(args) args
12862#else
12863#define _(args) ()
12864#endif
12865EOCP
12866echo "$foo" >> try.c
12867echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12868$cc $optimize $ccflags -c try.c > /dev/null 2>&1
12869status=$?
12870$rm -f try.[co]
12871exit $status
12872EOSH
12873chmod +x protochk
12874$eunicefix protochk
12875
12876: see what type is used for size_t
12877rp="What is the type used for the length parameter for string functions?"
12878set size_t sizetype 'unsigned int' stdio.h sys/types.h
12879eval $typedef_ask
12880
12881: check for type of arguments to gethostbyaddr.
12882if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12883 case "$d_gethbyaddr" in
12884 $define)
12885 $cat <<EOM
12886
12887Checking to see what type of arguments are accepted by gethostbyaddr().
12888EOM
12889 hdrs="$define sys/types.h
12890 $d_socket sys/socket.h
12891 $i_niin netinet/in.h
12892 $i_netdb netdb.h
12893 $i_unistd unistd.h"
12894 : The first arg can 'char *' or 'void *'
12895 : The second arg is some of integral type
12896 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12897 for yyy in size_t long int; do
12898 case "$netdb_host_type" in
12899 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12900 if ./protochk "$try" $hdrs; then
12901 echo "Your system accepts $xxx for the first arg."
12902 echo "...and $yyy for the second arg."
12903 netdb_host_type="$xxx"
12904 netdb_hlen_type="$yyy"
12905 fi
12906 ;;
12907 esac
12908 done
12909 done
12910 : In case none of those worked, prompt the user.
12911 case "$netdb_host_type" in
12912 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12913 dflt='char *'
12914 . ./myread
12915 netdb_host_type=$ans
12916 rp='What is the type for the 2nd argument to gethostbyaddr?'
12917 dflt="$sizetype"
12918 . ./myread
12919 netdb_hlen_type=$ans
12920 ;;
12921 esac
12922 ;;
12923 *) : no gethostbyaddr, so pick harmless defaults
12924 netdb_host_type='char *'
12925 netdb_hlen_type="$sizetype"
12926 ;;
12927 esac
12928 # Remove the "const" if needed. -- but then we'll have a
12929 # prototype clash!
12930 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12931fi
12932
12933: check for type of argument to gethostbyname.
12934if test "X$netdb_name_type" = X ; then
12935 case "$d_gethbyname" in
12936 $define)
12937 $cat <<EOM
12938
12939Checking to see what type of argument is accepted by gethostbyname().
12940EOM
12941 hdrs="$define sys/types.h
12942 $d_socket sys/socket.h
12943 $i_niin netinet/in.h
12944 $i_netdb netdb.h
12945 $i_unistd unistd.h"
12946 for xxx in "const char *" "char *"; do
12947 case "$netdb_name_type" in
12948 '') try="extern struct hostent *gethostbyname($xxx);"
12949 if ./protochk "$try" $hdrs; then
12950 echo "Your system accepts $xxx."
12951 netdb_name_type="$xxx"
12952 fi
12953 ;;
12954 esac
12955 done
12956 : In case none of those worked, prompt the user.
12957 case "$netdb_name_type" in
12958 '') rp='What is the type for the 1st argument to gethostbyname?'
12959 dflt='char *'
12960 . ./myread
12961 netdb_name_type=$ans
12962 ;;
12963 esac
12964 ;;
12965 *) : no gethostbyname, so pick harmless default
12966 netdb_name_type='char *'
12967 ;;
12968 esac
12969fi
12970
12971: check for type of 1st argument to getnetbyaddr.
12972if test "X$netdb_net_type" = X ; then
12973 case "$d_getnbyaddr" in
12974 $define)
12975 $cat <<EOM
12976
12977Checking to see what type of 1st argument is accepted by getnetbyaddr().
12978EOM
12979 hdrs="$define sys/types.h
12980 $d_socket sys/socket.h
12981 $i_niin netinet/in.h
12982 $i_netdb netdb.h
12983 $i_unistd unistd.h"
12984 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12985 case "$netdb_net_type" in
12986 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12987 if ./protochk "$try" $hdrs; then
12988 echo "Your system accepts $xxx."
12989 netdb_net_type="$xxx"
12990 fi
12991 ;;
12992 esac
12993 done
12994 : In case none of those worked, prompt the user.
12995 case "$netdb_net_type" in
12996 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12997 dflt='long'
12998 . ./myread
12999 netdb_net_type=$ans
13000 ;;
13001 esac
13002 ;;
13003 *) : no getnetbyaddr, so pick harmless default
13004 netdb_net_type='long'
13005 ;;
13006 esac
13007fi
13008: locate the preferred pager for this system
13009case "$pager" in
13010'')
13011 dflt=''
13012 case "$pg" in
13013 /*) dflt=$pg;;
13014 esac
13015 case "$more" in
13016 /*) dflt=$more;;
13017 esac
13018 case "$less" in
13019 /*) dflt=$less;;
13020 esac
13021 case "$dflt" in
13022 '') dflt=/usr/ucb/more;;
13023 esac
13024 ;;
13025*) dflt="$pager";;
13026esac
13027echo " "
13028fn=f/
13029rp='What pager is used on your system?'
13030. ./getfile
13031pager="$ans"
13032
13033: see what type pids are declared as in the kernel
13034rp="What is the type of process ids on this system?"
13035set pid_t pidtype int stdio.h sys/types.h
13036eval $typedef_ask
13037
13038: Find earliest binary compatible site_perl subdirectory perl can use.
13039case "$bincompat5005" in
13040"$define") xs_apiversion='5.005' ;;
13041*) xs_apiversion=$version ;; # The current site_perl version.
13042esac
13043: Find earliest pure perl site_perl subdirectory perl can use.
13044: The versioned directories started at 5.005.
13045pm_apiversion='5.005'
13046
13047: check for length of pointer
13048echo " "
13049case "$ptrsize" in
13050'')
13051 echo "Checking to see how big your pointers are..." >&4
13052 if test "$voidflags" -gt 7; then
13053 echo '#define VOID_PTR char *' > try.c
13054 else
13055 echo '#define VOID_PTR void *' > try.c
13056 fi
13057 $cat >>try.c <<'EOCP'
13058#include <stdio.h>
13059int main()
13060{
13061 printf("%d\n", (int)sizeof(VOID_PTR));
13062 exit(0);
13063}
13064EOCP
13065 set try
13066 if eval $compile_ok; then
13067 ptrsize=`./try`
13068 echo "Your pointers are $ptrsize bytes long."
13069 else
13070 dflt='4'
13071 echo "(I can't seem to compile the test program. Guessing...)" >&4
13072 rp="What is the size of a pointer (in bytes)?"
13073 . ./myread
13074 ptrsize="$ans"
13075 fi
13076 ;;
13077esac
13078$rm -f try.c try
13079
13080: see if ar generates random libraries by itself
13081echo " "
13082echo "Checking how to generate random libraries on your machine..." >&4
13083echo 'int bar1() { return bar2(); }' > bar1.c
13084echo 'int bar2() { return 2; }' > bar2.c
13085$cat > foo.c <<'EOP'
13086int main() { printf("%d\n", bar1()); exit(0); }
13087EOP
13088$cc $ccflags -c bar1.c >/dev/null 2>&1
13089$cc $ccflags -c bar2.c >/dev/null 2>&1
13090$cc $ccflags -c foo.c >/dev/null 2>&1
13091$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13092if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13093 ./foobar >/dev/null 2>&1; then
13094 echo "$ar appears to generate random libraries itself."
13095 orderlib=false
13096 ranlib=":"
13097elif $ar ts bar$_a >/dev/null 2>&1 &&
13098 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13099 ./foobar >/dev/null 2>&1; then
13100 echo "a table of contents needs to be added with '$ar ts'."
13101 orderlib=false
13102 ranlib="$ar ts"
13103else
13104 case "$ranlib" in
13105 :) ranlib='';;
13106 '')
13107 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13108 $test -f $ranlib || ranlib=''
13109 ;;
13110 esac
13111 if $test -n "$ranlib"; then
13112 echo "your system has '$ranlib'; we'll use that."
13113 orderlib=false
13114 else
13115 echo "your system doesn't seem to support random libraries"
13116 echo "so we'll use lorder and tsort to order the libraries."
13117 orderlib=true
13118 ranlib=":"
13119 fi
13120fi
13121$rm -f foo* bar*
13122
13123: check for type of arguments to select.
13124case "$selecttype" in
13125'') case "$d_select" in
13126 $define)
13127 echo " "
13128 $cat <<EOM
13129Checking to see what type of arguments are accepted by select().
13130EOM
13131 hdrs="$define sys/types.h
13132 $i_systime sys/time.h
13133 $i_sysselct sys/select.h
13134 $d_socket sys/socket.h"
13135 : The first arg can be int, unsigned, or size_t
13136 : The last arg may or may not be 'const'
13137 val=''
13138 : void pointer has been seen but using that
13139 : breaks the selectminbits test
13140 for xxx in 'fd_set *' 'int *'; do
13141 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13142 for tmo in 'struct timeval *' 'const struct timeval *'; do
13143 case "$val" in
13144 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13145 if ./protochk "$try" $hdrs; then
13146 echo "Your system accepts $xxx."
13147 val="$xxx"
13148 fi
13149 ;;
13150 esac
13151 done
13152 done
13153 done
13154 case "$val" in
13155 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13156 case "$d_fd_set" in
13157 $define) dflt="fd_set *" ;;
13158 *) dflt="int *" ;;
13159 esac
13160 . ./myread
13161 val=$ans
13162 ;;
13163 esac
13164 selecttype="$val"
13165 ;;
13166 *) : no select, so pick a harmless default
13167 selecttype='int *'
13168 ;;
13169 esac
13170 ;;
13171esac
13172
13173: check for the select 'width'
13174case "$selectminbits" in
13175'') case "$d_select" in
13176 $define)
13177 $cat <<EOM
13178
13179Checking to see on how many bits at a time your select() operates...
13180EOM
13181 $cat >try.c <<EOCP
13182#include <sys/types.h>
13183#$i_time I_TIME
13184#$i_systime I_SYS_TIME
13185#$i_systimek I_SYS_TIME_KERNEL
13186#ifdef I_TIME
13187# include <time.h>
13188#endif
13189#ifdef I_SYS_TIME
13190# ifdef I_SYS_TIME_KERNEL
13191# define KERNEL
13192# endif
13193# include <sys/time.h>
13194# ifdef I_SYS_TIME_KERNEL
13195# undef KERNEL
13196# endif
13197#endif
13198#$i_sysselct I_SYS_SELECT
13199#ifdef I_SYS_SELECT
13200#include <sys/select.h>
13201#endif
13202#$d_socket HAS_SOCKET
13203#ifdef HAS_SOCKET
13204# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13205#endif
13206#include <stdio.h>
13207$selecttype b;
13208#define S sizeof(*(b))
13209#define MINBITS 64
13210#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13211#define NBITS (NBYTES * 8)
13212int main() {
13213 char s[NBYTES];
13214 struct timeval t;
13215 int i;
13216 FILE* fp;
13217 int fd;
13218
13219 fclose(stdin);
13220 fp = fopen("try.c", "r");
13221 if (fp == 0)
13222 exit(1);
13223 fd = fileno(fp);
13224 if (fd < 0)
13225 exit(2);
13226 b = ($selecttype)s;
13227 for (i = 0; i < NBITS; i++)
13228 FD_SET(i, b);
13229 t.tv_sec = 0;
13230 t.tv_usec = 0;
13231 select(fd + 1, b, 0, 0, &t);
13232 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13233 printf("%d\n", i + 1);
13234 return 0;
13235}
13236EOCP
13237 set try
13238 if eval $compile_ok; then
13239 selectminbits=`./try`
13240 case "$selectminbits" in
13241 '') cat >&4 <<EOM
13242Cannot figure out on how many bits at a time your select() operates.
13243I'll play safe and guess it is 32 bits.
13244EOM
13245 selectminbits=32
13246 bits="32 bits"
13247 ;;
13248 1) bits="1 bit" ;;
13249 *) bits="$selectminbits bits" ;;
13250 esac
13251 echo "Your select() operates on $bits at a time." >&4
13252 else
13253 rp='What is the minimum number of bits your select() operates on?'
13254 case "$byteorder" in
13255 1234|12345678) dflt=32 ;;
13256 *) dflt=1 ;;
13257 esac
13258 . ./myread
13259 val=$ans
13260 selectminbits="$val"
13261 fi
13262 $rm -f try.* try
13263 ;;
13264 *) : no select, so pick a harmless default
13265 selectminbits='32'
13266 ;;
13267 esac
13268 ;;
13269esac
13270
13271: Trace out the files included by signal.h, then look for SIGxxx names.
13272: Remove SIGARRAYSIZE used by HPUX.
13273: Remove SIGSTKSIZE used by Linux.
13274: Remove SIGSTKSZ used by Posix.
13275: Remove SIGTYP void lines used by OS2.
13276: Some cpps, like os390, dont give the file name anywhere
13277if [ "X$fieldn" = X ]; then
13278 : Just make some guesses. We check them later.
13279 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13280else
13281 xxx=`echo '#include <signal.h>' |
13282 $cppstdin $cppminus $cppflags 2>/dev/null |
13283 $grep '^[ ]*#.*include' |
13284 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13285fi
13286: Check this list of files to be sure we have parsed the cpp output ok.
13287: This will also avoid potentially non-existent files, such
13288: as ../foo/bar.h
13289xxxfiles=''
13290for xx in $xxx /dev/null ; do
13291 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13292done
13293: If we have found no files, at least try signal.h
13294case "$xxxfiles" in
13295'') xxxfiles=`./findhdr signal.h` ;;
13296esac
13297xxx=`awk '
13298$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13299 print substr($2, 4, 20)
13300}
13301$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13302 print substr($3, 4, 20)
13303}' $xxxfiles`
13304: Append some common names just in case the awk scan failed.
13305xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13306xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13307xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13308xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13309xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13310
13311: generate a few handy files for later
13312$cat > signal.c <<'EOCP'
13313#include <sys/types.h>
13314#include <signal.h>
13315#include <stdio.h>
13316int main() {
13317
13318/* Strange style to avoid deeply-nested #if/#else/#endif */
13319#ifndef NSIG
13320# ifdef _NSIG
13321# define NSIG (_NSIG)
13322# endif
13323#endif
13324
13325#ifndef NSIG
13326# ifdef SIGMAX
13327# define NSIG (SIGMAX+1)
13328# endif
13329#endif
13330
13331#ifndef NSIG
13332# ifdef SIG_MAX
13333# define NSIG (SIG_MAX+1)
13334# endif
13335#endif
13336
13337#ifndef NSIG
13338# ifdef MAXSIG
13339# define NSIG (MAXSIG+1)
13340# endif
13341#endif
13342
13343#ifndef NSIG
13344# ifdef MAX_SIG
13345# define NSIG (MAX_SIG+1)
13346# endif
13347#endif
13348
13349#ifndef NSIG
13350# ifdef SIGARRAYSIZE
13351# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13352# endif
13353#endif
13354
13355#ifndef NSIG
13356# ifdef _sys_nsig
13357# define NSIG (_sys_nsig) /* Solaris 2.5 */
13358# endif
13359#endif
13360
13361/* Default to some arbitrary number that's big enough to get most
13362 of the common signals.
13363*/
13364#ifndef NSIG
13365# define NSIG 50
13366#endif
13367
13368printf("NSIG %d\n", NSIG);
13369
13370#ifndef JUST_NSIG
13371
13372EOCP
13373
13374echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13375{
13376 printf "#ifdef SIG"; printf $1; printf "\n"
13377 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13378 printf $1; printf ");\n"
13379 printf "#endif\n"
13380}
13381END {
13382 printf "#endif /* JUST_NSIG */\n";
13383 printf "exit(0);\n}\n";
13384}
13385' >>signal.c
13386$cat >signal.awk <<'EOP'
13387BEGIN { ndups = 0 }
13388$1 ~ /^NSIG$/ { nsig = $2 }
13389($1 !~ /^NSIG$/) && (NF == 2) {
13390 if ($2 > maxsig) { maxsig = $2 }
13391 if (sig_name[$2]) {
13392 dup_name[ndups] = $1
13393 dup_num[ndups] = $2
13394 ndups++
13395 }
13396 else {
13397 sig_name[$2] = $1
13398 sig_num[$2] = $2
13399 }
13400}
13401END {
13402 if (nsig == 0) {
13403 nsig = maxsig + 1
13404 }
13405 printf("NSIG %d\n", nsig);
13406 for (n = 1; n < nsig; n++) {
13407 if (sig_name[n]) {
13408 printf("%s %d\n", sig_name[n], sig_num[n])
13409 }
13410 else {
13411 printf("NUM%d %d\n", n, n)
13412 }
13413 }
13414 for (n = 0; n < ndups; n++) {
13415 printf("%s %d\n", dup_name[n], dup_num[n])
13416 }
13417}
13418EOP
13419$cat >signal_cmd <<EOS
13420$startsh
13421if $test -s signal.lst; then
13422 echo "Using your existing signal.lst file"
13423 exit 0
13424fi
13425xxx="$xxx"
13426EOS
13427$cat >>signal_cmd <<'EOS'
13428
13429set signal
13430if eval $compile_ok; then
13431 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13432else
13433 echo "(I can't seem be able to compile the whole test program)" >&4
13434 echo "(I'll try it in little pieces.)" >&4
13435 set signal -DJUST_NSIG
13436 if eval $compile_ok; then
13437 ./signal$_exe > signal.nsg
13438 $cat signal.nsg
13439 else
13440 echo "I can't seem to figure out how many signals you have." >&4
13441 echo "Guessing 50." >&4
13442 echo 'NSIG 50' > signal.nsg
13443 fi
13444 : Now look at all the signal names, one at a time.
13445 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13446 $cat > signal.c <<EOCP
13447#include <sys/types.h>
13448#include <signal.h>
13449#include <stdio.h>
13450int main() {
13451printf("$xx %d\n", SIG${xx});
13452return 0;
13453}
13454EOCP
13455 set signal
13456 if eval $compile; then
13457 echo "SIG${xx} found."
13458 ./signal$_exe >> signal.ls1
13459 else
13460 echo "SIG${xx} NOT found."
13461 fi
13462 done
13463 if $test -s signal.ls1; then
13464 $cat signal.nsg signal.ls1 |
13465 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13466 fi
13467
13468fi
13469if $test -s signal.lst; then
13470 :
13471else
13472 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13473 echo 'kill -l' >signal
13474 set X `csh -f <signal`
13475 $rm -f signal
13476 shift
13477 case $# in
13478 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13479 esac
13480 echo $@ | $tr ' ' $trnl | \
13481 $awk '{ printf "%s %d\n", $1, ++s; }
13482 END { printf "NSIG %d\n", ++s }' >signal.lst
13483fi
13484$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13485EOS
13486chmod a+x signal_cmd
13487$eunicefix signal_cmd
13488
13489: generate list of signal names
13490echo " "
13491case "$sig_name_init" in
13492'') doinit=yes ;;
13493*) case "$sig_num_init" in
13494 ''|*,*) doinit=yes ;;
13495 esac ;;
13496esac
13497case "$doinit" in
13498yes)
13499 echo "Generating a list of signal names and numbers..." >&4
13500 . ./signal_cmd
13501 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13502 sig_name=`$awk 'BEGIN { printf "ZERO " }
13503 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13504 sig_num=`$awk 'BEGIN { printf "0 " }
13505 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13506 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13507 !/^NSIG/ { printf "\"%s\", ", $1 }
13508 END { printf "0\n" }' signal.lst`
13509 sig_num_init=`$awk 'BEGIN { printf "0, " }
13510 !/^NSIG/ { printf "%d, ", $2}
13511 END { printf "0\n"}' signal.lst`
13512 ;;
13513esac
13514echo "The following $sig_count signals are available:"
13515echo " "
13516echo $sig_name | $awk \
13517'BEGIN { linelen = 0 }
13518{
13519 for (i = 1; i <= NF; i++) {
13520 name = "SIG" $i " "
13521 linelen = linelen + length(name)
13522 if (linelen > 70) {
13523 printf "\n"
13524 linelen = length(name)
13525 }
13526 printf "%s", name
13527 }
13528 printf "\n"
13529}'
13530$rm -f signal signal.c signal.awk signal.lst signal_cmd
13531
13532: check for socklen_t
13533echo " "
13534echo "Checking to see if you have socklen_t..." >&4
13535$cat >try.c <<EOCP
13536#include <sys/types.h>
13537#$d_socket HAS_SOCKET
13538#ifdef HAS_SOCKET
13539#include <sys/socket.h>
13540#endif
13541int main() { socklen_t x = 16; }
13542EOCP
13543set try
13544if eval $compile; then
13545 val="$define"
13546 echo "You have socklen_t."
13547else
13548 val="$undef"
13549 echo "You do not have socklen_t."
13550 case "$sizetype" in
13551 size_t) echo "(You do have size_t, that might work.)" ;;
13552 esac
13553fi
13554$rm -f try try.*
13555set d_socklen_t
13556eval $setvar
13557
13558: check for type of the size argument to socket calls
13559case "$d_socket" in
13560"$define")
13561 $cat <<EOM
13562
13563Checking to see what type is the last argument of accept().
13564EOM
13565 hdrs="$define sys/types.h $d_socket sys/socket.h"
13566 yyy=''
13567 case "$d_socklen_t" in
13568 "$define") yyy="$yyy socklen_t"
13569 esac
13570 yyy="$yyy $sizetype int long"
13571 for xxx in $yyy; do
13572 case "$socksizetype" in
13573 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
13574 if ./protochk "$try" $hdrs; then
13575 echo "Your system accepts '$xxx *' for the last argument of accept()."
13576 socksizetype="$xxx"
13577 fi
13578 ;;
13579 esac
13580 done
13581: In case none of those worked, prompt the user.
13582 case "$socksizetype" in
13583 '') rp='What is the type for the last argument to accept()?'
13584 dflt='int'
13585 . ./myread
13586 socksizetype=$ans
13587 ;;
13588 esac
13589 ;;
13590*) : no sockets, so pick relatively harmless defaults
13591 socksizetype='char *'
13592 ;;
13593esac
13594
13595: see what type is used for signed size_t
13596set ssize_t ssizetype int stdio.h sys/types.h
13597eval $typedef
13598dflt="$ssizetype"
13599$cat > ssize.c <<EOM
13600#include <stdio.h>
13601#include <sys/types.h>
13602#define Size_t $sizetype
13603#define SSize_t $dflt
13604int main()
13605{
13606 if (sizeof(Size_t) == sizeof(SSize_t))
13607 printf("$dflt\n");
13608 else if (sizeof(Size_t) == sizeof(int))
13609 printf("int\n");
13610 else
13611 printf("long\n");
13612 exit(0);
13613}
13614EOM
13615echo " "
13616set ssize
13617if eval $compile_ok && ./ssize > /dev/null; then
13618 ssizetype=`./ssize`
13619 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13620else
13621 $cat >&4 <<EOM
13622Help! I can't compile and run the ssize_t test program: please enlighten me!
13623(This is probably a misconfiguration in your system or libraries, and
13624you really ought to fix it. Still, I'll try anyway.)
13625
13626I need a type that is the same size as $sizetype, but is guaranteed to
13627be signed. Common values are ssize_t, int and long.
13628
13629EOM
13630 rp="What signed type is the same size as $sizetype?"
13631 . ./myread
13632 ssizetype="$ans"
13633fi
13634$rm -f ssize ssize.*
13635
13636: see what type of char stdio uses.
13637echo " "
13638if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13639 echo "Your stdio uses unsigned chars." >&4
13640 stdchar="unsigned char"
13641else
13642 echo "Your stdio uses signed chars." >&4
13643 stdchar="char"
13644fi
13645
13646: see if time exists
13647echo " "
13648if test "X$d_time" = X -o X"$timetype" = X; then
13649 if set time val -f d_time; eval $csym; $val; then
13650 echo 'time() found.' >&4
13651 val="$define"
13652 rp="What is the type returned by time() on this system?"
13653 set time_t timetype long stdio.h sys/types.h
13654 eval $typedef_ask
13655 else
13656 echo 'time() not found, hope that will do.' >&4
13657 val="$undef"
13658 timetype='int';
13659 fi
13660 set d_time
13661 eval $setvar
13662fi
13663
13664: see what type uids are declared as in the kernel
13665echo " "
13666echo "Looking for the type for user ids returned by getuid()."
13667set uid_t uidtype xxx stdio.h sys/types.h
13668eval $typedef
13669case "$uidtype" in
13670xxx)
13671 xxx=`./findhdr sys/user.h`
13672 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13673 case $1 in
13674 unsigned) dflt="$1 $2" ;;
13675 *) dflt="$1" ;;
13676 esac
13677 ;;
13678*) dflt="$uidtype";;
13679esac
13680case "$uidtype" in
13681uid_t) echo "uid_t found." ;;
13682*) rp="What is the type for user ids returned by getuid()?"
13683 . ./myread
13684 uidtype="$ans"
13685 ;;
13686esac
13687
13688echo " "
13689case "$uidtype" in
13690*_t) zzz="$uidtype" ;;
13691*) zzz="uid" ;;
13692esac
13693echo "Checking the size of $zzz..." >&4
13694cat > try.c <<EOCP
13695#include <sys/types.h>
13696#include <stdio.h>
13697int main() {
13698 printf("%d\n", (int)sizeof($uidtype));
13699 exit(0);
13700}
13701EOCP
13702set try
13703if eval $compile_ok; then
13704 yyy=`./try`
13705 case "$yyy" in
13706 '') uidsize=4
13707 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13708 ;;
13709 *) uidsize=$yyy
13710 echo "Your $zzz is $uidsize bytes long."
13711 ;;
13712 esac
13713else
13714 uidsize=4
13715 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13716fi
13717
13718echo " "
13719case "$uidtype" in
13720*_t) zzz="$uidtype" ;;
13721*) zzz="uid" ;;
13722esac
13723echo "Checking the sign of $zzz..." >&4
13724cat > try.c <<EOCP
13725#include <sys/types.h>
13726#include <stdio.h>
13727int main() {
13728 $uidtype foo = -1;
13729 if (foo < 0)
13730 printf("-1\n");
13731 else
13732 printf("1\n");
13733}
13734EOCP
13735set try
13736if eval $compile; then
13737 yyy=`./try`
13738 case "$yyy" in
13739 '') uidsign=1
13740 echo "(I can't execute the test program--guessing unsigned.)" >&4
13741 ;;
13742 *) uidsign=$yyy
13743 case "$uidsign" in
13744 1) echo "Your $zzz is unsigned." ;;
13745 -1) echo "Your $zzz is signed." ;;
13746 esac
13747 ;;
13748 esac
13749else
13750 uidsign=1
13751 echo "(I can't compile the test program--guessing unsigned.)" >&4
13752fi
13753
13754
13755
13756echo " "
13757$echo "Checking the format string to be used for uids..." >&4
13758
13759case "$uidsign" in
13760-1) if $test X"$uidsize" = X"$ivsize"; then
13761 uidformat="$ivdformat"
13762 else
13763 if $test X"$uidsize" = X"$longsize"; then
13764 uidformat='"ld"'
13765 else
13766 if $test X"$uidsize" = X"$intsize"; then
13767 uidformat='"d"'
13768 else
13769 if $test X"$uidsize" = X"$shortsize"; then
13770 uidformat='"hd"'
13771 fi
13772 fi
13773 fi
13774 fi
13775 ;;
13776*) if $test X"$uidsize" = X"$uvsize"; then
13777 uidformat="$uvuformat"
13778 else
13779 if $test X"$uidsize" = X"$longsize"; then
13780 uidformat='"lu"'
13781 else
13782 if $test X"$uidsize" = X"$intsize"; then
13783 uidformat='"u"'
13784 else
13785 if $test X"$uidsize" = X"$shortsize"; then
13786 uidformat='"hu"'
13787 fi
13788 fi
13789 fi
13790 fi
13791 ;;
13792esac
13793
13794: see if dbm.h is available
13795: see if dbmclose exists
13796set dbmclose d_dbmclose
13797eval $inlibc
13798
13799case "$d_dbmclose" in
13800$define)
13801 set dbm.h i_dbm
13802 eval $inhdr
13803 case "$i_dbm" in
13804 $define)
13805 val="$undef"
13806 set i_rpcsvcdbm
13807 eval $setvar
13808 ;;
13809 *) set rpcsvc/dbm.h i_rpcsvcdbm
13810 eval $inhdr
13811 ;;
13812 esac
13813 ;;
13814*) echo "We won't be including <dbm.h>"
13815 val="$undef"
13816 set i_dbm
13817 eval $setvar
13818 val="$undef"
13819 set i_rpcsvcdbm
13820 eval $setvar
13821 ;;
13822esac
13823
13824: see if this is a sys/file.h system
13825val=''
13826set sys/file.h val
13827eval $inhdr
13828
13829: do we need to include sys/file.h ?
13830case "$val" in
13831"$define")
13832 echo " "
13833 if $h_sysfile; then
13834 val="$define"
13835 echo "We'll be including <sys/file.h>." >&4
13836 else
13837 val="$undef"
13838 echo "We won't be including <sys/file.h>." >&4
13839 fi
13840 ;;
13841*)
13842 h_sysfile=false
13843 ;;
13844esac
13845set i_sysfile
13846eval $setvar
13847
13848: see if fcntl.h is there
13849val=''
13850set fcntl.h val
13851eval $inhdr
13852
13853: see if we can include fcntl.h
13854case "$val" in
13855"$define")
13856 echo " "
13857 if $h_fcntl; then
13858 val="$define"
13859 echo "We'll be including <fcntl.h>." >&4
13860 else
13861 val="$undef"
13862 if $h_sysfile; then
13863 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13864 else
13865 echo "We won't be including <fcntl.h>." >&4
13866 fi
13867 fi
13868 ;;
13869*)
13870 h_fcntl=false
13871 val="$undef"
13872 ;;
13873esac
13874set i_fcntl
13875eval $setvar
13876
13877: see if this is a iconv.h system
13878set iconv.h i_iconv
13879eval $inhdr
13880
13881: see if locale.h is available
13882set locale.h i_locale
13883eval $inhdr
13884
13885: see if mach cthreads are available
13886if test "X$usethreads" = "X$define"; then
13887 set mach/cthreads.h i_machcthr
13888 eval $inhdr
13889else
13890 i_machcthr="$undef"
13891fi
13892
13893
13894
13895: see if this is a math.h system
13896set math.h i_math
13897eval $inhdr
13898
13899: see if this is a mntent.h system
13900set mntent.h i_mntent
13901eval $inhdr
13902
13903: see if ndbm.h is available
13904set ndbm.h t_ndbm
13905eval $inhdr
13906case "$t_ndbm" in
13907$define)
13908 : see if dbm_open exists
13909 set dbm_open d_dbm_open
13910 eval $inlibc
13911 case "$d_dbm_open" in
13912 $undef)
13913 t_ndbm="$undef"
13914 echo "We won't be including <ndbm.h>"
13915 ;;
13916 esac
13917 ;;
13918esac
13919val="$t_ndbm"
13920set i_ndbm
13921eval $setvar
13922
13923: see if net/errno.h is available
13924val=''
13925set net/errno.h val
13926eval $inhdr
13927
13928: Unfortunately, it causes problems on some systems. Arrgh.
13929case "$val" in
13930$define)
13931 cat > try.c <<'EOM'
13932#include <stdio.h>
13933#include <errno.h>
13934#include <net/errno.h>
13935int func()
13936{
13937 return ENOTSOCK;
13938}
13939EOM
13940 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13941 echo "We'll be including <net/errno.h>." >&4
13942 else
13943 echo "We won't be including <net/errno.h>." >&4
13944 val="$undef"
13945 fi
13946 $rm -f try.* try
13947 ;;
13948esac
13949set i_neterrno
13950eval $setvar
13951
13952: see if netinet/tcp.h is available
13953set netinet/tcp.h i_netinettcp
13954eval $inhdr
13955
13956: see if this is a poll.h system
13957set poll.h i_poll
13958eval $inhdr
13959
13960echo " "
13961$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13962$cat <<'EOSH' > Cppsym.know
13963a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13964AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13965alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13966ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13967BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13968BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13969bull c cadmus clipper CMU COFF COMPILER_VERSION
13970concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13971CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13972Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13973FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13974GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13975H3050R H3050RX hbullx20 hcx host_mips
13976hp200 hp300 hp700 HP700 hp800 hp9000
13977hp9000s200 hp9000s300 hp9000s400 hp9000s500
13978hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13979i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13980iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13981INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13982LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13983LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13984Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13985LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13986M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13987M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13988M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13989MATH_HAS_NO_SIDE_EFFECTS
13990mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13991mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13992mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13993MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13994mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13995NetBSD news1500 news1700 news1800 news1900 news3700
13996news700 news800 news900 NeXT NLS ns16000 ns32000
13997ns32016 ns32332 ns32k nsc32000
13998OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13999pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14000pc532 pdp11 PGC PIC plexus PORTAR posix
14001POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14002POSIX_C_SOURCE POSIX_SOURCE POWER
14003PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14004riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14005SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14006sony sony_news sonyrisc sparc sparclite spectrum
14007stardent stdc STDC_EXT stratos sun sun3 sun386
14008Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14009SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14010SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14011sysV68 sysV88 Tek4132 Tek4300 titan
14012tower tower32 tower32_200 tower32_600 tower32_700
14013tower32_800 tower32_850 tss
14014u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14015ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14016unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14017Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14018XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14019XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14020z8000
14021EOSH
14022# Maybe put other stuff here too.
14023cat <<EOSH >>Cppsym.know
14024$osname
14025EOSH
14026./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14027./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14028$cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14029$rm -f Cppsym.a Cppsym.b
14030cat <<EOSH > Cppsym
14031$startsh
14032if $test \$# -gt 0; then
14033 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14034 if $test -s Cppsym.got; then
14035 $rm -f Cppsym.got
14036 exit 0
14037 fi
14038 $rm -f Cppsym.got
14039 exit 1
14040else
14041 $tr " " "$trnl" | ./Cppsym.try
14042 exit 0
14043fi
14044EOSH
14045chmod +x Cppsym
14046$eunicefix Cppsym
14047cat <<EOSH > Cppsym.try
14048$startsh
14049cat <<'EOCP' > try.c
14050#include <stdio.h>
14051int main() {
14052EOCP
14053$awk \\
14054EOSH
14055cat <<'EOSH' >> Cppsym.try
14056'length($1) > 0 {
14057 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
14058 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
14059 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
14060 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
14061}' >> try.c
14062echo '}' >> try.c
14063EOSH
14064cat <<EOSH >> Cppsym.try
14065ccflags="$ccflags"
14066case "$osname-$gccversion" in
14067irix-) ccflags="\$ccflags -woff 1178" ;;
14068esac
14069$cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14070EOSH
14071chmod +x Cppsym.try
14072$eunicefix Cppsym.try
14073./Cppsym < Cppsym.know > Cppsym.true
14074: now check the C compiler for additional symbols
14075postprocess_cc_v=''
14076case "$osname" in
14077aix) postprocess_cc_v="|$tr , ' '" ;;
14078esac
14079$cat >ccsym <<EOS
14080$startsh
14081$cat >tmp.c <<EOF
14082extern int foo;
14083EOF
14084for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14085do
14086 case "\$i" in
14087 -D*) echo "\$i" | $sed 's/^-D//';;
14088 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14089 esac
14090done
14091$rm -f try.c
14092EOS
14093postprocess_cc_v=''
14094chmod +x ccsym
14095$eunicefix ccsym
14096./ccsym > ccsym1.raw
14097if $test -s ccsym1.raw; then
14098 $sort ccsym1.raw | $uniq >ccsym.raw
14099else
14100 mv ccsym1.raw ccsym.raw
14101fi
14102
14103$awk '/\=/ { print $0; next }
14104 { print $0"=1" }' ccsym.raw >ccsym.list
14105$awk '/\=/ { print $0; next }
14106 { print $0"=1" }' Cppsym.true >ccsym.true
14107$comm -13 ccsym.true ccsym.list >ccsym.own
14108$comm -12 ccsym.true ccsym.list >ccsym.com
14109$comm -23 ccsym.true ccsym.list >ccsym.cpp
14110also=''
14111if $test -z ccsym.raw; then
14112 echo "Your C compiler doesn't seem to define any symbols!" >&4
14113 echo " "
14114 echo "However, your C preprocessor defines the following symbols:"
14115 $cat Cppsym.true
14116 ccsymbols=''
14117 cppsymbols=`$cat Cppsym.true`
14118 cppsymbols=`echo $cppsymbols`
14119 cppccsymbols="$cppsymbols"
14120else
14121 if $test -s ccsym.com; then
14122 echo "Your C compiler and pre-processor define these symbols:"
14123 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14124 also='also '
14125 symbols='ones'
14126 cppccsymbols=`$cat ccsym.com`
14127 cppccsymbols=`echo $cppccsymbols`
14128 $test "$silent" || sleep 1
14129 fi
14130 if $test -s ccsym.cpp; then
14131 $test "$also" && echo " "
14132 echo "Your C pre-processor ${also}defines the following symbols:"
14133 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14134 also='further '
14135 cppsymbols=`$cat ccsym.cpp`
14136 cppsymbols=`echo $cppsymbols`
14137 $test "$silent" || sleep 1
14138 fi
14139 if $test -s ccsym.own; then
14140 $test "$also" && echo " "
14141 echo "Your C compiler ${also}defines the following cpp symbols:"
14142 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14143 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14144 ccsymbols=`$cat ccsym.own`
14145 ccsymbols=`echo $ccsymbols`
14146 $test "$silent" || sleep 1
14147 fi
14148fi
14149$rm -f ccsym*
14150
14151: see if this is a termio system
14152val="$undef"
14153val2="$undef"
14154val3="$undef"
14155if $test `./findhdr termios.h`; then
14156 set tcsetattr i_termios
14157 eval $inlibc
14158 val3="$i_termios"
14159fi
14160echo " "
14161case "$val3" in
14162"$define") echo "You have POSIX termios.h... good!" >&4;;
14163*) if ./Cppsym pyr; then
14164 case "`/bin/universe`" in
14165 ucb) if $test `./findhdr sgtty.h`; then
14166 val2="$define"
14167 echo "<sgtty.h> found." >&4
14168 else
14169 echo "System is pyramid with BSD universe."
14170 echo "<sgtty.h> not found--you could have problems." >&4
14171 fi;;
14172 *) if $test `./findhdr termio.h`; then
14173 val="$define"
14174 echo "<termio.h> found." >&4
14175 else
14176 echo "System is pyramid with USG universe."
14177 echo "<termio.h> not found--you could have problems." >&4
14178 fi;;
14179 esac
14180 elif ./usg; then
14181 if $test `./findhdr termio.h`; then
14182 echo "<termio.h> found." >&4
14183 val="$define"
14184 elif $test `./findhdr sgtty.h`; then
14185 echo "<sgtty.h> found." >&4
14186 val2="$define"
14187 else
14188echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14189 fi
14190 else
14191 if $test `./findhdr sgtty.h`; then
14192 echo "<sgtty.h> found." >&4
14193 val2="$define"
14194 elif $test `./findhdr termio.h`; then
14195 echo "<termio.h> found." >&4
14196 val="$define"
14197 else
14198echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14199 fi
14200 fi;;
14201esac
14202set i_termio; eval $setvar
14203val=$val2; set i_sgtty; eval $setvar
14204val=$val3; set i_termios; eval $setvar
14205
14206: see if this is a shadow.h system
14207set shadow.h i_shadow
14208eval $inhdr
14209
14210: see if this is a socks.h system
14211set socks.h i_socks
14212eval $inhdr
14213
14214: see if stdarg is available
14215echo " "
14216if $test `./findhdr stdarg.h`; then
14217 echo "<stdarg.h> found." >&4
14218 valstd="$define"
14219else
14220 echo "<stdarg.h> NOT found." >&4
14221 valstd="$undef"
14222fi
14223
14224: see if varags is available
14225echo " "
14226if $test `./findhdr varargs.h`; then
14227 echo "<varargs.h> found." >&4
14228else
14229 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14230fi
14231
14232: set up the varargs testing programs
14233$cat > varargs.c <<EOP
14234#ifdef I_STDARG
14235#include <stdarg.h>
14236#endif
14237#ifdef I_VARARGS
14238#include <varargs.h>
14239#endif
14240
14241#ifdef I_STDARG
14242int f(char *p, ...)
14243#else
14244int f(va_alist)
14245va_dcl
14246#endif
14247{
14248 va_list ap;
14249#ifndef I_STDARG
14250 char *p;
14251#endif
14252#ifdef I_STDARG
14253 va_start(ap,p);
14254#else
14255 va_start(ap);
14256 p = va_arg(ap, char *);
14257#endif
14258 va_end(ap);
14259}
14260EOP
14261$cat > varargs <<EOP
14262$startsh
14263if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14264 echo "true"
14265else
14266 echo "false"
14267fi
14268$rm -f varargs$_o
14269EOP
14270chmod +x varargs
14271
14272: now check which varargs header should be included
14273echo " "
14274i_varhdr=''
14275case "$valstd" in
14276"$define")
14277 if `./varargs I_STDARG`; then
14278 val='stdarg.h'
14279 elif `./varargs I_VARARGS`; then
14280 val='varargs.h'
14281 fi
14282 ;;
14283*)
14284 if `./varargs I_VARARGS`; then
14285 val='varargs.h'
14286 fi
14287 ;;
14288esac
14289case "$val" in
14290'')
14291echo "I could not find the definition for va_dcl... You have problems..." >&4
14292 val="$undef"; set i_stdarg; eval $setvar
14293 val="$undef"; set i_varargs; eval $setvar
14294 ;;
14295*)
14296 set i_varhdr
14297 eval $setvar
14298 case "$i_varhdr" in
14299 stdarg.h)
14300 val="$define"; set i_stdarg; eval $setvar
14301 val="$undef"; set i_varargs; eval $setvar
14302 ;;
14303 varargs.h)
14304 val="$undef"; set i_stdarg; eval $setvar
14305 val="$define"; set i_varargs; eval $setvar
14306 ;;
14307 esac
14308 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14309esac
14310$rm -f varargs*
14311
14312: see if stddef is available
14313set stddef.h i_stddef
14314eval $inhdr
14315
14316: see if sys/access.h is available
14317set sys/access.h i_sysaccess
14318eval $inhdr
14319
14320: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14321set sys/filio.h i_sysfilio
14322eval $inhdr
14323echo " "
14324if $test `./findhdr sys/ioctl.h`; then
14325 val="$define"
14326 echo '<sys/ioctl.h> found.' >&4
14327else
14328 val="$undef"
14329 if $test $i_sysfilio = "$define"; then
14330 echo '<sys/ioctl.h> NOT found.' >&4
14331 else
14332 $test $i_sgtty = "$define" && xxx="sgtty.h"
14333 $test $i_termio = "$define" && xxx="termio.h"
14334 $test $i_termios = "$define" && xxx="termios.h"
14335echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14336 fi
14337fi
14338set i_sysioctl
14339eval $setvar
14340
14341
14342: see if this is a syslog.h system
14343set syslog.h i_syslog
14344eval $inhdr
14345
14346
14347: see if this is a sys/mode.h system
14348set sys/mode.h i_sysmode
14349eval $inhdr
14350
14351: see if sys/resource.h has to be included
14352set sys/resource.h i_sysresrc
14353eval $inhdr
14354
14355: see if sys/security.h is available
14356set sys/security.h i_syssecrt
14357eval $inhdr
14358
14359: see if this is a sys/statvfs.h system
14360set sys/statvfs.h i_sysstatvfs
14361eval $inhdr
14362
14363: see if this is a sys/uio.h system
14364set sys/uio.h i_sysuio
14365eval $inhdr
14366
14367: see if this is a sys/un.h system
14368set sys/un.h i_sysun
14369eval $inhdr
14370
14371
14372: see if this is a sys/utsname.h system
14373set sys/utsname.h i_sysutsname
14374eval $inhdr
14375
14376: see if this is a syswait system
14377set sys/wait.h i_syswait
14378eval $inhdr
14379
14380: see if this is a ustat.h system
14381set ustat.h i_ustat
14382eval $inhdr
14383
14384: see if this is an utime system
14385set utime.h i_utime
14386eval $inhdr
14387
14388: see if this is a values.h system
14389set values.h i_values
14390eval $inhdr
14391
14392: see if this is a vfork system
14393case "$d_vfork" in
14394"$define")
14395 set vfork.h i_vfork
14396 eval $inhdr
14397 ;;
14398*)
14399 i_vfork="$undef"
14400 ;;
14401esac
14402
14403: see if gdbm.h is available
14404set gdbm.h t_gdbm
14405eval $inhdr
14406case "$t_gdbm" in
14407$define)
14408 : see if gdbm_open exists
14409 set gdbm_open d_gdbm_open
14410 eval $inlibc
14411 case "$d_gdbm_open" in
14412 $undef)
14413 t_gdbm="$undef"
14414 echo "We won't be including <gdbm.h>"
14415 ;;
14416 esac
14417 ;;
14418esac
14419val="$t_gdbm"
14420set i_gdbm
14421eval $setvar
14422
14423echo " "
14424echo "Looking for extensions..." >&4
14425: If we are using the old config.sh, known_extensions may contain
14426: old or inaccurate or duplicate values.
14427known_extensions=''
14428nonxs_extensions=''
14429: We do not use find because it might not be available.
14430: We do not just use MANIFEST because the user may have dropped
14431: some additional extensions into the source tree and expect them
14432: to be built.
14433
14434: Function to recursively find available extensions, ignoring DynaLoader
14435: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14436find_extensions='
14437 for xxx in *; do
14438 case "$xxx" in
14439 DynaLoader|dynaload) ;;
14440 *)
14441 if $test -f $xxx/$xxx.xs; then
14442 known_extensions="$known_extensions $1$xxx";
14443 elif $test -f $xxx/Makefile.PL; then
14444 nonxs_extensions="$nonxs_extensions $1$xxx";
14445 else
14446 if $test -d $xxx -a $# -lt 10; then
14447 set $1$xxx/ $*;
14448 cd $xxx;
14449 eval $find_extensions;
14450 cd ..;
14451 shift;
14452 fi;
14453 fi
14454 ;;
14455 esac;
14456 done'
14457tdir=`pwd`
14458cd $rsrc/ext
14459set X
14460shift
14461eval $find_extensions
14462set X $nonxs_extensions
14463shift
14464nonxs_extensions="$*"
14465set X $known_extensions
14466shift
14467known_extensions="$*"
14468cd $tdir
14469
14470: Now see which are supported on this system.
14471avail_ext=''
14472for xxx in $known_extensions ; do
14473 case "$xxx" in
14474 DB_File|db_file)
14475 case "$i_db" in
14476 $define) avail_ext="$avail_ext $xxx" ;;
14477 esac
14478 ;;
14479 GDBM_File|gdbm_fil)
14480 case "$i_gdbm" in
14481 $define) avail_ext="$avail_ext $xxx" ;;
14482 esac
14483 ;;
14484 NDBM_File|ndbm_fil)
14485 case "$i_ndbm" in
14486 $define)
14487 case "$osname-$use64bitint" in
14488 hpux-define)
14489 case "$libs" in
14490 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14491 esac
14492 ;;
14493 *) avail_ext="$avail_ext $xxx" ;;
14494 esac
14495 ;;
14496 esac
14497 ;;
14498 ODBM_File|odbm_fil)
14499 case "${i_dbm}${i_rpcsvcdbm}" in
14500 *"${define}"*)
14501 case "$osname-$use64bitint" in
14502 hpux-define)
14503 case "$libs" in
14504 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14505 esac
14506 ;;
14507 *) avail_ext="$avail_ext $xxx" ;;
14508 esac
14509 ;;
14510 esac
14511 ;;
14512 POSIX|posix)
14513 case "$useposix" in
14514 true|define|y) avail_ext="$avail_ext $xxx" ;;
14515 esac
14516 ;;
14517 Opcode|opcode)
14518 case "$useopcode" in
14519 true|define|y) avail_ext="$avail_ext $xxx" ;;
14520 esac
14521 ;;
14522 Socket|socket)
14523 case "$d_socket" in
14524 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14525 esac
14526 ;;
14527 Thread|thread)
14528 case "$usethreads" in
14529 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14530 esac
14531 ;;
14532 IPC/SysV|ipc/sysv)
14533 : XXX Do we need a useipcsysv variable here
14534 case "${d_msg}${d_sem}${d_shm}" in
14535 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14536 esac
14537 ;;
14538 *) avail_ext="$avail_ext $xxx"
14539 ;;
14540 esac
14541done
14542
14543set X $avail_ext
14544shift
14545avail_ext="$*"
14546
14547: Now see which nonxs extensions are supported on this system.
14548: For now assume all are.
14549nonxs_ext=''
14550for xxx in $nonxs_extensions ; do
14551 case "$xxx" in
14552 *) nonxs_ext="$nonxs_ext $xxx"
14553 ;;
14554 esac
14555done
14556
14557set X $nonxs_ext
14558shift
14559nonxs_ext="$*"
14560
14561case $usedl in
14562$define)
14563 $cat <<EOM
14564A number of extensions are supplied with $package. You may choose to
14565compile these extensions for dynamic loading (the default), compile
14566them into the $package executable (static loading), or not include
14567them at all. Answer "none" to include no extensions.
14568Note that DynaLoader is always built and need not be mentioned here.
14569
14570EOM
14571 case "$dynamic_ext" in
14572 '') dflt="$avail_ext" ;;
14573 *) dflt="$dynamic_ext"
14574 # Perhaps we are reusing an old out-of-date config.sh.
14575 case "$hint" in
14576 previous)
14577 if test X"$dynamic_ext" != X"$avail_ext"; then
14578 $cat <<EOM
14579NOTICE: Your previous config.sh list may be incorrect.
14580The extensions now available to you are
14581 ${avail_ext}
14582but the default list from your previous config.sh is
14583 ${dynamic_ext}
14584
14585EOM
14586 fi
14587 ;;
14588 esac
14589 ;;
14590 esac
14591 case "$dflt" in
14592 '') dflt=none;;
14593 esac
14594 rp="What extensions do you wish to load dynamically?"
14595 . ./myread
14596 case "$ans" in
14597 none) dynamic_ext=' ' ;;
14598 *) dynamic_ext="$ans" ;;
14599 esac
14600
14601 case "$static_ext" in
14602 '')
14603 : Exclude those already listed in dynamic linking
14604 dflt=''
14605 for xxx in $avail_ext; do
14606 case " $dynamic_ext " in
14607 *" $xxx "*) ;;
14608 *) dflt="$dflt $xxx" ;;
14609 esac
14610 done
14611 set X $dflt
14612 shift
14613 dflt="$*"
14614 ;;
14615 *) dflt="$static_ext"
14616 ;;
14617 esac
14618
14619 case "$dflt" in
14620 '') dflt=none;;
14621 esac
14622 rp="What extensions do you wish to load statically?"
14623 . ./myread
14624 case "$ans" in
14625 none) static_ext=' ' ;;
14626 *) static_ext="$ans" ;;
14627 esac
14628 ;;
14629*)
14630 $cat <<EOM
14631A number of extensions are supplied with $package. Answer "none"
14632to include no extensions.
14633Note that DynaLoader is always built and need not be mentioned here.
14634
14635EOM
14636 case "$static_ext" in
14637 '') dflt="$avail_ext" ;;
14638 *) dflt="$static_ext"
14639 # Perhaps we are reusing an old out-of-date config.sh.
14640 case "$hint" in
14641 previous)
14642 if test X"$static_ext" != X"$avail_ext"; then
14643 $cat <<EOM
14644NOTICE: Your previous config.sh list may be incorrect.
14645The extensions now available to you are
14646 ${avail_ext}
14647but the default list from your previous config.sh is
14648 ${static_ext}
14649
14650EOM
14651 fi
14652 ;;
14653 esac
14654 ;;
14655 esac
14656 : Exclude those that are not xs extensions
14657 case "$dflt" in
14658 '') dflt=none;;
14659 esac
14660 rp="What extensions do you wish to include?"
14661 . ./myread
14662 case "$ans" in
14663 none) static_ext=' ' ;;
14664 *) static_ext="$ans" ;;
14665 esac
14666 ;;
14667esac
14668
14669set X $dynamic_ext $static_ext $nonxs_ext
14670shift
14671extensions="$*"
14672
14673: Remove build directory name from cppstdin so it can be used from
14674: either the present location or the final installed location.
14675echo " "
14676: Get out of the UU directory to get correct path name.
14677cd ..
14678case "$cppstdin" in
14679`pwd`/cppstdin)
14680 echo "Stripping down cppstdin path name"
14681 cppstdin=cppstdin
14682 ;;
14683esac
14684cd UU
14685
14686: end of configuration questions
14687echo " "
14688echo "End of configuration questions."
14689echo " "
14690
14691: back to where it started
14692if test -d ../UU; then
14693 cd ..
14694fi
14695
14696: configuration may be patched via a 'config.over' file
14697if $test -f config.over; then
14698 echo " "
14699 dflt=y
14700 rp='I see a config.over file. Do you wish to load it?'
14701 . UU/myread
14702 case "$ans" in
14703 n*) echo "OK, I'll ignore it.";;
14704 *) . ./config.over
14705 echo "Configuration override changes have been loaded."
14706 ;;
14707 esac
14708fi
14709
14710: in case they want portability, strip down executable paths
14711case "$d_portable" in
14712"$define")
14713 echo " "
14714 echo "Stripping down executable paths..." >&4
14715 for file in $loclist $trylist; do
14716 eval temp=\$$file
14717 eval $file=`basename $temp`
14718 done
14719 ;;
14720esac
14721
14722: create config.sh file
14723echo " "
14724echo "Creating config.sh..." >&4
14725$spitshell <<EOT >config.sh
14726$startsh
14727#
14728# This file was produced by running the Configure script. It holds all the
14729# definitions figured out by Configure. Should you modify one of these values,
14730# do not forget to propagate your changes by running "Configure -der". You may
14731# instead choose to run each of the .SH files by yourself, or "Configure -S".
14732#
14733
14734# Package name : $package
14735# Source directory : $src
14736# Configuration time: $cf_time
14737# Configured by : $cf_by
14738# Target system : $myuname
14739
14740Author='$Author'
14741Date='$Date'
14742Header='$Header'
14743Id='$Id'
14744Locker='$Locker'
14745Log='$Log'
14746Mcc='$Mcc'
14747RCSfile='$RCSfile'
14748Revision='$Revision'
14749Source='$Source'
14750State='$State'
14751_a='$_a'
14752_exe='$_exe'
14753_o='$_o'
14754afs='$afs'
14755alignbytes='$alignbytes'
14756ansi2knr='$ansi2knr'
14757aphostname='$aphostname'
14758api_revision='$api_revision'
14759api_subversion='$api_subversion'
14760api_version='$api_version'
14761api_versionstring='$api_versionstring'
14762ar='$ar'
14763archlib='$archlib'
14764archlibexp='$archlibexp'
14765archname64='$archname64'
14766archname='$archname'
14767archobjs='$archobjs'
14768awk='$awk'
14769baserev='$baserev'
14770bash='$bash'
14771bin='$bin'
14772bincompat5005='$bincompat5005'
14773binexp='$binexp'
14774bison='$bison'
14775byacc='$byacc'
14776byteorder='$byteorder'
14777c='$c'
14778castflags='$castflags'
14779cat='$cat'
14780cc='$cc'
14781cccdlflags='$cccdlflags'
14782ccdlflags='$ccdlflags'
14783ccflags='$ccflags'
14784ccsymbols='$ccsymbols'
14785cf_by='$cf_by'
14786cf_email='$cf_email'
14787cf_time='$cf_time'
14788charsize='$charsize'
14789chgrp='$chgrp'
14790chmod='$chmod'
14791chown='$chown'
14792clocktype='$clocktype'
14793comm='$comm'
14794compress='$compress'
14795contains='$contains'
14796cp='$cp'
14797cpio='$cpio'
14798cpp='$cpp'
14799cpp_stuff='$cpp_stuff'
14800cppccsymbols='$cppccsymbols'
14801cppflags='$cppflags'
14802cpplast='$cpplast'
14803cppminus='$cppminus'
14804cpprun='$cpprun'
14805cppstdin='$cppstdin'
14806cppsymbols='$cppsymbols'
14807crosscompile='$crosscompile'
14808cryptlib='$cryptlib'
14809csh='$csh'
14810d_Gconvert='$d_Gconvert'
14811d_PRIEldbl='$d_PRIEldbl'
14812d_PRIFldbl='$d_PRIFldbl'
14813d_PRIGldbl='$d_PRIGldbl'
14814d_PRIX64='$d_PRIX64'
14815d_PRId64='$d_PRId64'
14816d_PRIeldbl='$d_PRIeldbl'
14817d_PRIfldbl='$d_PRIfldbl'
14818d_PRIgldbl='$d_PRIgldbl'
14819d_PRIi64='$d_PRIi64'
14820d_PRIo64='$d_PRIo64'
14821d_PRIu64='$d_PRIu64'
14822d_PRIx64='$d_PRIx64'
14823d_access='$d_access'
14824d_accessx='$d_accessx'
14825d_alarm='$d_alarm'
14826d_archlib='$d_archlib'
14827d_atolf='$d_atolf'
14828d_atoll='$d_atoll'
14829d_attribut='$d_attribut'
14830d_bcmp='$d_bcmp'
14831d_bcopy='$d_bcopy'
14832d_bincompat5005='$d_bincompat5005'
14833d_bsd='$d_bsd'
14834d_bsdgetpgrp='$d_bsdgetpgrp'
14835d_bsdsetpgrp='$d_bsdsetpgrp'
14836d_bzero='$d_bzero'
14837d_casti32='$d_casti32'
14838d_castneg='$d_castneg'
14839d_charvspr='$d_charvspr'
14840d_chown='$d_chown'
14841d_chroot='$d_chroot'
14842d_chsize='$d_chsize'
14843d_closedir='$d_closedir'
14844d_const='$d_const'
14845d_crypt='$d_crypt'
14846d_csh='$d_csh'
14847d_cuserid='$d_cuserid'
14848d_dbl_dig='$d_dbl_dig'
14849d_difftime='$d_difftime'
14850d_dirnamlen='$d_dirnamlen'
14851d_dlerror='$d_dlerror'
14852d_dlopen='$d_dlopen'
14853d_dlsymun='$d_dlsymun'
14854d_dosuid='$d_dosuid'
14855d_drand48proto='$d_drand48proto'
14856d_dup2='$d_dup2'
14857d_eaccess='$d_eaccess'
14858d_endgrent='$d_endgrent'
14859d_endhent='$d_endhent'
14860d_endnent='$d_endnent'
14861d_endpent='$d_endpent'
14862d_endpwent='$d_endpwent'
14863d_endsent='$d_endsent'
14864d_endspent='$d_endspent'
14865d_eofnblk='$d_eofnblk'
14866d_eunice='$d_eunice'
14867d_fchmod='$d_fchmod'
14868d_fchown='$d_fchown'
14869d_fcntl='$d_fcntl'
14870d_fd_macros='$d_fd_macros'
14871d_fd_set='$d_fd_set'
14872d_fds_bits='$d_fds_bits'
14873d_fgetpos='$d_fgetpos'
14874d_flexfnam='$d_flexfnam'
14875d_flock='$d_flock'
14876d_fork='$d_fork'
14877d_fpathconf='$d_fpathconf'
14878d_fpos64_t='$d_fpos64_t'
14879d_fs_data_s='$d_fs_data_s'
14880d_fseeko='$d_fseeko'
14881d_fsetpos='$d_fsetpos'
14882d_fstatfs='$d_fstatfs'
14883d_fstatvfs='$d_fstatvfs'
14884d_ftello='$d_ftello'
14885d_ftime='$d_ftime'
14886d_getcwd='$d_getcwd'
14887d_getfsstat='$d_getfsstat'
14888d_getgrent='$d_getgrent'
14889d_getgrps='$d_getgrps'
14890d_gethbyaddr='$d_gethbyaddr'
14891d_gethbyname='$d_gethbyname'
14892d_gethent='$d_gethent'
14893d_gethname='$d_gethname'
14894d_gethostprotos='$d_gethostprotos'
14895d_getlogin='$d_getlogin'
14896d_getmnt='$d_getmnt'
14897d_getmntent='$d_getmntent'
14898d_getnbyaddr='$d_getnbyaddr'
14899d_getnbyname='$d_getnbyname'
14900d_getnent='$d_getnent'
14901d_getnetprotos='$d_getnetprotos'
14902d_getpbyname='$d_getpbyname'
14903d_getpbynumber='$d_getpbynumber'
14904d_getpent='$d_getpent'
14905d_getpgid='$d_getpgid'
14906d_getpgrp2='$d_getpgrp2'
14907d_getpgrp='$d_getpgrp'
14908d_getppid='$d_getppid'
14909d_getprior='$d_getprior'
14910d_getprotoprotos='$d_getprotoprotos'
14911d_getpwent='$d_getpwent'
14912d_getsbyname='$d_getsbyname'
14913d_getsbyport='$d_getsbyport'
14914d_getsent='$d_getsent'
14915d_getservprotos='$d_getservprotos'
14916d_getspent='$d_getspent'
14917d_getspnam='$d_getspnam'
14918d_gettimeod='$d_gettimeod'
14919d_gnulibc='$d_gnulibc'
14920d_grpasswd='$d_grpasswd'
14921d_hasmntopt='$d_hasmntopt'
14922d_htonl='$d_htonl'
14923d_iconv='$d_iconv'
14924d_index='$d_index'
14925d_inetaton='$d_inetaton'
14926d_int64_t='$d_int64_t'
14927d_isascii='$d_isascii'
14928d_killpg='$d_killpg'
14929d_lchown='$d_lchown'
14930d_ldbl_dig='$d_ldbl_dig'
14931d_link='$d_link'
14932d_locconv='$d_locconv'
14933d_lockf='$d_lockf'
14934d_longdbl='$d_longdbl'
14935d_longlong='$d_longlong'
14936d_lseekproto='$d_lseekproto'
14937d_lstat='$d_lstat'
14938d_madvise='$d_madvise'
14939d_mblen='$d_mblen'
14940d_mbstowcs='$d_mbstowcs'
14941d_mbtowc='$d_mbtowc'
14942d_memchr='$d_memchr'
14943d_memcmp='$d_memcmp'
14944d_memcpy='$d_memcpy'
14945d_memmove='$d_memmove'
14946d_memset='$d_memset'
14947d_mkdir='$d_mkdir'
14948d_mkdtemp='$d_mkdtemp'
14949d_mkfifo='$d_mkfifo'
14950d_mkstemp='$d_mkstemp'
14951d_mkstemps='$d_mkstemps'
14952d_mktime='$d_mktime'
14953d_mmap='$d_mmap'
14954d_mprotect='$d_mprotect'
14955d_msg='$d_msg'
14956d_msg_ctrunc='$d_msg_ctrunc'
14957d_msg_dontroute='$d_msg_dontroute'
14958d_msg_oob='$d_msg_oob'
14959d_msg_peek='$d_msg_peek'
14960d_msg_proxy='$d_msg_proxy'
14961d_msgctl='$d_msgctl'
14962d_msgget='$d_msgget'
14963d_msgrcv='$d_msgrcv'
14964d_msgsnd='$d_msgsnd'
14965d_msync='$d_msync'
14966d_munmap='$d_munmap'
14967d_mymalloc='$d_mymalloc'
14968d_nice='$d_nice'
14969d_nv_preserves_uv='$d_nv_preserves_uv'
14970d_off64_t='$d_off64_t'
14971d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14972d_oldpthreads='$d_oldpthreads'
14973d_oldsock='$d_oldsock'
14974d_open3='$d_open3'
14975d_pathconf='$d_pathconf'
14976d_pause='$d_pause'
14977d_phostname='$d_phostname'
14978d_pipe='$d_pipe'
14979d_poll='$d_poll'
14980d_portable='$d_portable'
14981d_pthread_yield='$d_pthread_yield'
14982d_pwage='$d_pwage'
14983d_pwchange='$d_pwchange'
14984d_pwclass='$d_pwclass'
14985d_pwcomment='$d_pwcomment'
14986d_pwexpire='$d_pwexpire'
14987d_pwgecos='$d_pwgecos'
14988d_pwpasswd='$d_pwpasswd'
14989d_pwquota='$d_pwquota'
14990d_quad='$d_quad'
14991d_readdir='$d_readdir'
14992d_readlink='$d_readlink'
14993d_rename='$d_rename'
14994d_rewinddir='$d_rewinddir'
14995d_rmdir='$d_rmdir'
14996d_safebcpy='$d_safebcpy'
14997d_safemcpy='$d_safemcpy'
14998d_sanemcmp='$d_sanemcmp'
14999d_sched_yield='$d_sched_yield'
15000d_scm_rights='$d_scm_rights'
15001d_seekdir='$d_seekdir'
15002d_select='$d_select'
15003d_sem='$d_sem'
15004d_semctl='$d_semctl'
15005d_semctl_semid_ds='$d_semctl_semid_ds'
15006d_semctl_semun='$d_semctl_semun'
15007d_semget='$d_semget'
15008d_semop='$d_semop'
15009d_setegid='$d_setegid'
15010d_seteuid='$d_seteuid'
15011d_setgrent='$d_setgrent'
15012d_setgrps='$d_setgrps'
15013d_sethent='$d_sethent'
15014d_setlinebuf='$d_setlinebuf'
15015d_setlocale='$d_setlocale'
15016d_setnent='$d_setnent'
15017d_setpent='$d_setpent'
15018d_setpgid='$d_setpgid'
15019d_setpgrp2='$d_setpgrp2'
15020d_setpgrp='$d_setpgrp'
15021d_setprior='$d_setprior'
15022d_setpwent='$d_setpwent'
15023d_setregid='$d_setregid'
15024d_setresgid='$d_setresgid'
15025d_setresuid='$d_setresuid'
15026d_setreuid='$d_setreuid'
15027d_setrgid='$d_setrgid'
15028d_setruid='$d_setruid'
15029d_setsent='$d_setsent'
15030d_setsid='$d_setsid'
15031d_setspent='$d_setspent'
15032d_setvbuf='$d_setvbuf'
15033d_sfio='$d_sfio'
15034d_shm='$d_shm'
15035d_shmat='$d_shmat'
15036d_shmatprototype='$d_shmatprototype'
15037d_shmctl='$d_shmctl'
15038d_shmdt='$d_shmdt'
15039d_shmget='$d_shmget'
15040d_sigaction='$d_sigaction'
15041d_sigsetjmp='$d_sigsetjmp'
15042d_socket='$d_socket'
15043d_socklen_t='$d_socklen_t'
15044d_sockpair='$d_sockpair'
15045d_sqrtl='$d_sqrtl'
15046d_statblks='$d_statblks'
15047d_statfs_f_flags='$d_statfs_f_flags'
15048d_statfs_s='$d_statfs_s'
15049d_statvfs='$d_statvfs'
15050d_stdio_cnt_lval='$d_stdio_cnt_lval'
15051d_stdio_ptr_lval='$d_stdio_ptr_lval'
15052d_stdio_stream_array='$d_stdio_stream_array'
15053d_stdiobase='$d_stdiobase'
15054d_stdstdio='$d_stdstdio'
15055d_strchr='$d_strchr'
15056d_strcoll='$d_strcoll'
15057d_strctcpy='$d_strctcpy'
15058d_strerrm='$d_strerrm'
15059d_strerror='$d_strerror'
15060d_strtod='$d_strtod'
15061d_strtol='$d_strtol'
15062d_strtold='$d_strtold'
15063d_strtoll='$d_strtoll'
15064d_strtoul='$d_strtoul'
15065d_strtoull='$d_strtoull'
15066d_strtouq='$d_strtouq'
15067d_strxfrm='$d_strxfrm'
15068d_suidsafe='$d_suidsafe'
15069d_symlink='$d_symlink'
15070d_syscall='$d_syscall'
15071d_sysconf='$d_sysconf'
15072d_sysernlst='$d_sysernlst'
15073d_syserrlst='$d_syserrlst'
15074d_system='$d_system'
15075d_tcgetpgrp='$d_tcgetpgrp'
15076d_tcsetpgrp='$d_tcsetpgrp'
15077d_telldir='$d_telldir'
15078d_telldirproto='$d_telldirproto'
15079d_time='$d_time'
15080d_times='$d_times'
15081d_truncate='$d_truncate'
15082d_tzname='$d_tzname'
15083d_umask='$d_umask'
15084d_uname='$d_uname'
15085d_union_semun='$d_union_semun'
15086d_ustat='$d_ustat'
15087d_vendorbin='$d_vendorbin'
15088d_vendorlib='$d_vendorlib'
15089d_vfork='$d_vfork'
15090d_void_closedir='$d_void_closedir'
15091d_voidsig='$d_voidsig'
15092d_voidtty='$d_voidtty'
15093d_volatile='$d_volatile'
15094d_vprintf='$d_vprintf'
15095d_wait4='$d_wait4'
15096d_waitpid='$d_waitpid'
15097d_wcstombs='$d_wcstombs'
15098d_wctomb='$d_wctomb'
15099d_xenix='$d_xenix'
15100date='$date'
15101db_hashtype='$db_hashtype'
15102db_prefixtype='$db_prefixtype'
15103defvoidused='$defvoidused'
15104direntrytype='$direntrytype'
15105dlext='$dlext'
15106dlsrc='$dlsrc'
15107doublesize='$doublesize'
15108drand01='$drand01'
15109dynamic_ext='$dynamic_ext'
15110eagain='$eagain'
15111ebcdic='$ebcdic'
15112echo='$echo'
15113egrep='$egrep'
15114emacs='$emacs'
15115eunicefix='$eunicefix'
15116exe_ext='$exe_ext'
15117expr='$expr'
15118extensions='$extensions'
15119fflushNULL='$fflushNULL'
15120fflushall='$fflushall'
15121find='$find'
15122firstmakefile='$firstmakefile'
15123flex='$flex'
15124fpossize='$fpossize'
15125fpostype='$fpostype'
15126freetype='$freetype'
15127full_ar='$full_ar'
15128full_csh='$full_csh'
15129full_sed='$full_sed'
15130gccversion='$gccversion'
15131gidformat='$gidformat'
15132gidsign='$gidsign'
15133gidsize='$gidsize'
15134gidtype='$gidtype'
15135glibpth='$glibpth'
15136grep='$grep'
15137groupcat='$groupcat'
15138groupstype='$groupstype'
15139gzip='$gzip'
15140h_fcntl='$h_fcntl'
15141h_sysfile='$h_sysfile'
15142hint='$hint'
15143hostcat='$hostcat'
15144huge='$huge'
15145i16size='$i16size'
15146i16type='$i16type'
15147i32size='$i32size'
15148i32type='$i32type'
15149i64size='$i64size'
15150i64type='$i64type'
15151i8size='$i8size'
15152i8type='$i8type'
15153i_arpainet='$i_arpainet'
15154i_bsdioctl='$i_bsdioctl'
15155i_db='$i_db'
15156i_dbm='$i_dbm'
15157i_dirent='$i_dirent'
15158i_dld='$i_dld'
15159i_dlfcn='$i_dlfcn'
15160i_fcntl='$i_fcntl'
15161i_float='$i_float'
15162i_gdbm='$i_gdbm'
15163i_grp='$i_grp'
15164i_iconv='$i_iconv'
15165i_inttypes='$i_inttypes'
15166i_limits='$i_limits'
15167i_locale='$i_locale'
15168i_machcthr='$i_machcthr'
15169i_malloc='$i_malloc'
15170i_math='$i_math'
15171i_memory='$i_memory'
15172i_mntent='$i_mntent'
15173i_ndbm='$i_ndbm'
15174i_netdb='$i_netdb'
15175i_neterrno='$i_neterrno'
15176i_netinettcp='$i_netinettcp'
15177i_niin='$i_niin'
15178i_poll='$i_poll'
15179i_pthread='$i_pthread'
15180i_pwd='$i_pwd'
15181i_rpcsvcdbm='$i_rpcsvcdbm'
15182i_sfio='$i_sfio'
15183i_sgtty='$i_sgtty'
15184i_shadow='$i_shadow'
15185i_socks='$i_socks'
15186i_stdarg='$i_stdarg'
15187i_stddef='$i_stddef'
15188i_stdlib='$i_stdlib'
15189i_string='$i_string'
15190i_sysaccess='$i_sysaccess'
15191i_sysdir='$i_sysdir'
15192i_sysfile='$i_sysfile'
15193i_sysfilio='$i_sysfilio'
15194i_sysin='$i_sysin'
15195i_sysioctl='$i_sysioctl'
15196i_syslog='$i_syslog'
15197i_sysmman='$i_sysmman'
15198i_sysmode='$i_sysmode'
15199i_sysmount='$i_sysmount'
15200i_sysndir='$i_sysndir'
15201i_sysparam='$i_sysparam'
15202i_sysresrc='$i_sysresrc'
15203i_syssecrt='$i_syssecrt'
15204i_sysselct='$i_sysselct'
15205i_syssockio='$i_syssockio'
15206i_sysstat='$i_sysstat'
15207i_sysstatfs='$i_sysstatfs'
15208i_sysstatvfs='$i_sysstatvfs'
15209i_systime='$i_systime'
15210i_systimek='$i_systimek'
15211i_systimes='$i_systimes'
15212i_systypes='$i_systypes'
15213i_sysuio='$i_sysuio'
15214i_sysun='$i_sysun'
15215i_sysutsname='$i_sysutsname'
15216i_sysvfs='$i_sysvfs'
15217i_syswait='$i_syswait'
15218i_termio='$i_termio'
15219i_termios='$i_termios'
15220i_time='$i_time'
15221i_unistd='$i_unistd'
15222i_ustat='$i_ustat'
15223i_utime='$i_utime'
15224i_values='$i_values'
15225i_varargs='$i_varargs'
15226i_varhdr='$i_varhdr'
15227i_vfork='$i_vfork'
15228ignore_versioned_solibs='$ignore_versioned_solibs'
15229inc_version_list='$inc_version_list'
15230inc_version_list_init='$inc_version_list_init'
15231incpath='$incpath'
15232inews='$inews'
15233installarchlib='$installarchlib'
15234installbin='$installbin'
15235installman1dir='$installman1dir'
15236installman3dir='$installman3dir'
15237installprefix='$installprefix'
15238installprefixexp='$installprefixexp'
15239installprivlib='$installprivlib'
15240installscript='$installscript'
15241installsitearch='$installsitearch'
15242installsitebin='$installsitebin'
15243installsitelib='$installsitelib'
15244installstyle='$installstyle'
15245installusrbinperl='$installusrbinperl'
15246installvendorbin='$installvendorbin'
15247installvendorlib='$installvendorlib'
15248intsize='$intsize'
15249ivdformat='$ivdformat'
15250ivsize='$ivsize'
15251ivtype='$ivtype'
15252known_extensions='$known_extensions'
15253ksh='$ksh'
15254large='$large'
15255ld='$ld'
15256lddlflags='$lddlflags'
15257ldflags='$ldflags'
15258ldlibpthname='$ldlibpthname'
15259less='$less'
15260lib_ext='$lib_ext'
15261libc='$libc'
15262libperl='$libperl'
15263libpth='$libpth'
15264libs='$libs'
15265libsdirs='$libsdirs'
15266libsfiles='$libsfiles'
15267libsfound='$libsfound'
15268libspath='$libspath'
15269libswanted='$libswanted'
15270line='$line'
15271lint='$lint'
15272lkflags='$lkflags'
15273ln='$ln'
15274lns='$lns'
15275locincpth='$locincpth'
15276loclibpth='$loclibpth'
15277longdblsize='$longdblsize'
15278longlongsize='$longlongsize'
15279longsize='$longsize'
15280lp='$lp'
15281lpr='$lpr'
15282ls='$ls'
15283lseeksize='$lseeksize'
15284lseektype='$lseektype'
15285mail='$mail'
15286mailx='$mailx'
15287make='$make'
15288make_set_make='$make_set_make'
15289mallocobj='$mallocobj'
15290mallocsrc='$mallocsrc'
15291malloctype='$malloctype'
15292man1dir='$man1dir'
15293man1direxp='$man1direxp'
15294man1ext='$man1ext'
15295man3dir='$man3dir'
15296man3direxp='$man3direxp'
15297man3ext='$man3ext'
15298medium='$medium'
15299mips_type='$mips_type'
15300mkdir='$mkdir'
15301mmaptype='$mmaptype'
15302models='$models'
15303modetype='$modetype'
15304more='$more'
15305multiarch='$multiarch'
15306mv='$mv'
15307myarchname='$myarchname'
15308mydomain='$mydomain'
15309myhostname='$myhostname'
15310myuname='$myuname'
15311n='$n'
15312netdb_hlen_type='$netdb_hlen_type'
15313netdb_host_type='$netdb_host_type'
15314netdb_name_type='$netdb_name_type'
15315netdb_net_type='$netdb_net_type'
15316nm='$nm'
15317nm_opt='$nm_opt'
15318nm_so_opt='$nm_so_opt'
15319nonxs_ext='$nonxs_ext'
15320nroff='$nroff'
15321nvsize='$nvsize'
15322nvtype='$nvtype'
15323o_nonblock='$o_nonblock'
15324obj_ext='$obj_ext'
15325old_pthread_create_joinable='$old_pthread_create_joinable'
15326optimize='$optimize'
15327orderlib='$orderlib'
15328osname='$osname'
15329osvers='$osvers'
15330package='$package'
15331pager='$pager'
15332passcat='$passcat'
15333patchlevel='$patchlevel'
15334path_sep='$path_sep'
15335perl5='$perl5'
15336perl='$perl'
15337perladmin='$perladmin'
15338perlpath='$perlpath'
15339pg='$pg'
15340phostname='$phostname'
15341pidtype='$pidtype'
15342plibpth='$plibpth'
15343pm_apiversion='$pm_apiversion'
15344pmake='$pmake'
15345pr='$pr'
15346prefix='$prefix'
15347prefixexp='$prefixexp'
15348privlib='$privlib'
15349privlibexp='$privlibexp'
15350prototype='$prototype'
15351ptrsize='$ptrsize'
15352quadkind='$quadkind'
15353quadtype='$quadtype'
15354randbits='$randbits'
15355randfunc='$randfunc'
15356randseedtype='$randseedtype'
15357ranlib='$ranlib'
15358rd_nodata='$rd_nodata'
15359revision='$revision'
15360rm='$rm'
15361rmail='$rmail'
15362runnm='$runnm'
15363sPRIEldbl='$sPRIEldbl'
15364sPRIFldbl='$sPRIFldbl'
15365sPRIGldbl='$sPRIGldbl'
15366sPRIX64='$sPRIX64'
15367sPRId64='$sPRId64'
15368sPRIeldbl='$sPRIeldbl'
15369sPRIfldbl='$sPRIfldbl'
15370sPRIgldbl='$sPRIgldbl'
15371sPRIi64='$sPRIi64'
15372sPRIo64='$sPRIo64'
15373sPRIu64='$sPRIu64'
15374sPRIx64='$sPRIx64'
15375sched_yield='$sched_yield'
15376scriptdir='$scriptdir'
15377scriptdirexp='$scriptdirexp'
15378sed='$sed'
15379seedfunc='$seedfunc'
15380selectminbits='$selectminbits'
15381selecttype='$selecttype'
15382sendmail='$sendmail'
15383sh='$sh'
15384shar='$shar'
15385sharpbang='$sharpbang'
15386shmattype='$shmattype'
15387shortsize='$shortsize'
15388shrpenv='$shrpenv'
15389shsharp='$shsharp'
15390sig_count='$sig_count'
15391sig_name='$sig_name'
15392sig_name_init='$sig_name_init'
15393sig_num='$sig_num'
15394sig_num_init='$sig_num_init'
15395signal_t='$signal_t'
15396sitearch='$sitearch'
15397sitearchexp='$sitearchexp'
15398sitebin='$sitebin'
15399sitebinexp='$sitebinexp'
15400sitelib='$sitelib'
15401sitelibexp='$sitelibexp'
15402siteprefix='$siteprefix'
15403siteprefixexp='$siteprefixexp'
15404sizetype='$sizetype'
15405sleep='$sleep'
15406smail='$smail'
15407small='$small'
15408so='$so'
15409sockethdr='$sockethdr'
15410socketlib='$socketlib'
15411socksizetype='$socksizetype'
15412sort='$sort'
15413spackage='$spackage'
15414spitshell='$spitshell'
15415split='$split'
15416src='$src'
15417ssizetype='$ssizetype'
15418startperl='$startperl'
15419startsh='$startsh'
15420static_ext='$static_ext'
15421stdchar='$stdchar'
15422stdio_base='$stdio_base'
15423stdio_bufsiz='$stdio_bufsiz'
15424stdio_cnt='$stdio_cnt'
15425stdio_filbuf='$stdio_filbuf'
15426stdio_ptr='$stdio_ptr'
15427stdio_stream_array='$stdio_stream_array'
15428strings='$strings'
15429submit='$submit'
15430subversion='$subversion'
15431sysman='$sysman'
15432tail='$tail'
15433tar='$tar'
15434tbl='$tbl'
15435tee='$tee'
15436test='$test'
15437timeincl='$timeincl'
15438timetype='$timetype'
15439touch='$touch'
15440tr='$tr'
15441trnl='$trnl'
15442troff='$troff'
15443u16size='$u16size'
15444u16type='$u16type'
15445u32size='$u32size'
15446u32type='$u32type'
15447u64size='$u64size'
15448u64type='$u64type'
15449u8size='$u8size'
15450u8type='$u8type'
15451uidformat='$uidformat'
15452uidsign='$uidsign'
15453uidsize='$uidsize'
15454uidtype='$uidtype'
15455uname='$uname'
15456uniq='$uniq'
15457uquadtype='$uquadtype'
15458use5005threads='$use5005threads'
15459use64bitall='$use64bitall'
15460use64bitint='$use64bitint'
15461usedl='$usedl'
15462useithreads='$useithreads'
15463uselargefiles='$uselargefiles'
15464uselongdouble='$uselongdouble'
15465usemorebits='$usemorebits'
15466usemultiplicity='$usemultiplicity'
15467usemymalloc='$usemymalloc'
15468usenm='$usenm'
15469useopcode='$useopcode'
15470useperlio='$useperlio'
15471useposix='$useposix'
15472usesfio='$usesfio'
15473useshrplib='$useshrplib'
15474usesocks='$usesocks'
15475usethreads='$usethreads'
15476usevendorprefix='$usevendorprefix'
15477usevfork='$usevfork'
15478usrinc='$usrinc'
15479uuname='$uuname'
15480uvoformat='$uvoformat'
15481uvsize='$uvsize'
15482uvtype='$uvtype'
15483uvuformat='$uvuformat'
15484uvxformat='$uvxformat'
15485vendorbin='$vendorbin'
15486vendorbinexp='$vendorbinexp'
15487vendorlib='$vendorlib'
15488vendorlibexp='$vendorlibexp'
15489vendorprefix='$vendorprefix'
15490vendorprefixexp='$vendorprefixexp'
15491version='$version'
15492vi='$vi'
15493voidflags='$voidflags'
15494xlibpth='$xlibpth'
15495xs_apiversion='$xs_apiversion'
15496zcat='$zcat'
15497zip='$zip'
15498EOT
15499
15500: Add in command line options if available
15501$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15502
15503: add special variables
15504$test -f $src/patchlevel.h && \
15505awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15506echo "CONFIGDOTSH=true" >>config.sh
15507
15508: propagate old symbols
15509if $test -f UU/config.sh; then
15510 <UU/config.sh sort | uniq >UU/oldconfig.sh
15511 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15512 sort | uniq -u >UU/oldsyms
15513 set X `cat UU/oldsyms`
15514 shift
15515 case $# in
15516 0) ;;
15517 *)
15518 cat <<EOM
15519Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15520EOM
15521 echo "# Variables propagated from previous config.sh file." >>config.sh
15522 for sym in `cat UU/oldsyms`; do
15523 echo " Propagating $hint variable "'$'"$sym..."
15524 eval 'tmp="$'"${sym}"'"'
15525 echo "$tmp" | \
15526 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15527 done
15528 ;;
15529 esac
15530fi
15531
15532: Finish up by extracting the .SH files
15533case "$alldone" in
15534exit)
15535 $rm -rf UU
15536 echo "Done."
15537 exit 0
15538 ;;
15539cont)
15540 ;;
15541'')
15542 dflt=''
15543 nostick=true
15544 $cat <<EOM
15545
15546If you'd like to make any changes to the config.sh file before I begin
15547to configure things, do it as a shell escape now (e.g. !vi config.sh).
15548
15549EOM
15550 rp="Press return or use a shell escape to edit config.sh:"
15551 . UU/myread
15552 nostick=''
15553 case "$ans" in
15554 '') ;;
15555 *) : in case they cannot read
15556 sh 1>&4 -c "$ans";;
15557 esac
15558 ;;
15559esac
15560
15561: if this fails, just run all the .SH files by hand
15562. ./config.sh
15563
15564echo " "
15565exec 1>&4
15566. ./UU/extract
15567
15568if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15569 dflt=y
15570 case "$silent" in
15571 true) ;;
15572 *)
15573 $cat <<EOM
15574
15575Now you need to generate make dependencies by running "$make depend".
15576You might prefer to run it in background: "$make depend > makedepend.out &"
15577It can take a while, so you might not want to run it right now.
15578
15579EOM
15580 ;;
15581 esac
15582 rp="Run $make depend now?"
15583 . UU/myread
15584 case "$ans" in
15585 y*)
15586 $make depend && echo "Now you must run a $make."
15587 ;;
15588 *)
15589 echo "You must run '$make depend' then '$make'."
15590 ;;
15591 esac
15592elif test -f [Mm]akefile; then
15593 echo " "
15594 echo "Now you must run a $make."
15595else
15596 echo "Done."
15597fi
15598
15599if $test -f Policy.sh; then
15600 $cat <<EOM
15601
15602If you compile $package on a different machine or from a different object
15603directory, copy the Policy.sh file from this object directory to the
15604new one before you run Configure -- this will help you with most of
15605the policy defaults.
15606
15607EOM
15608fi
15609if $test -f config.msg; then
15610 echo "Hmm. I also noted the following information while running:"
15611 echo " "
15612 $cat config.msg >&4
15613 $rm -f config.msg
15614fi
15615$rm -f kit*isdone ark*isdone
15616$rm -rf UU
15617
15618: End of Configure
15619