This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Changes.
[perl5.git] / Configure
CommitLineData
2304df62
AD
1#! /bin/sh
2#
3# If these # comments don't work, trim them. Don't worry about any other
4# shell scripts, Configure will trim # comments from them for you.
5#
6# (If you are trying to port this package to a machine without sh,
7# I would suggest you have a look at the prototypical config_h.SH file
8# and edit it to reflect your system. Some packages may include samples
9# of config.h for certain machines, so you might look for one of those.)
10#
11# Yes, you may rip this off to use in other distribution packages. This
12# script belongs to the public domain and cannot be copyrighted.
13#
14# (Note: this Configure script was generated automatically. Rather than
15# working with this copy of Configure, you may wish to get metaconfig.
16# The dist-3.0 package (which contains metaconfig) was posted in
dfe9444c
AD
17# comp.sources.misc and is available on CPAN under authors/id/RAM so
18# you may fetch it yourself from your nearest archive site.)
2304df62
AD
19#
20
dfe9444c 21# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
2304df62 22#
b4eb6b3d 23# Generated on Tue Sep 12 17:23:02 EET DST 2000 [metaconfig 3.0 PL70]
7f2de2d2 24# (with additional metaconfig patches by perlbug@perl.org)
2304df62
AD
25
26cat >/tmp/c1$$ <<EOF
27ARGGGHHHH!!!!!
28
29SCO csh still thinks true is false. Write to SCO today and tell them that next
30year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35[End of diatribe. We now return you to your regularly scheduled programming...]
36EOF
37cat >/tmp/c2$$ <<EOF
38
39OOPS! You naughty creature! You didn't run Configure with sh!
40I will attempt to remedy the situation by running sh for you...
41EOF
42
43true || cat /tmp/c1$$ /tmp/c2$$
44true || exec sh $0 $argv:q
45
46(exit $?0) || cat /tmp/c2$$
47(exit $?0) || exec sh $0 $argv:q
48rm -f /tmp/c1$$ /tmp/c2$$
49
a0d0e21e
LW
50: compute my invocation name
51me=$0
52case "$0" in
53*/*)
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55 test "$me" || me=$0
56 ;;
57esac
58
dfe9444c 59: Proper separator for the PATH environment variable
8e07c86e
AD
60p_=:
61: On OS/2 this directory should exist if this is not floppy only system :-]
dfe9444c
AD
62if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
64 p_=\;
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
c4f23d77 67 elif test -n "$DJGPP"; then
dfe9444c
AD
68 p_=\;
69 fi
39e571d4 70fi
a0d0e21e
LW
71
72: Proper PATH setting
73paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 74paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 75paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 76paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e
AD
77paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
81
82for p in $paths
83do
8e07c86e
AD
84 case "$p_$PATH$p_" in
85 *$p_$p$p_*) ;;
86 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
87 esac
88done
89
8e07c86e 90PATH=.$p_$PATH
2304df62
AD
91export PATH
92
dfe9444c
AD
93: shall we be using ksh?
94inksh=''
95needksh=''
96avoidksh=''
97newsh=/bin/ksh
98changesh=''
ff0cee69 99if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
100 inksh=true
101fi
102if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
104fi
105if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
108 newsh=/usr/bin/bsh
2304df62 109 fi
dfe9444c 110fi
cf04f91f
JH
111if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
114 newsh=/bin/sh
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116 fi
117fi
dfe9444c
AD
118case "$inksh/$needksh" in
119/[a-z]*)
c4f23d77 120 ENV=''
dfe9444c
AD
121 changesh=true
122 reason="$needksh"
123 ;;
124esac
125case "$inksh/$avoidksh" in
126true/[a-z]*)
127 changesh=true
128 reason="$avoidksh"
129 ;;
130esac
131case "$inksh/$needksh-$avoidksh-" in
132true/--)
a0d0e21e
LW
133 cat <<EOM
134(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 135mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 136EOM
dfe9444c
AD
137 ;;
138esac
139case "$changesh" in
140true)
141 echo "(Feeding myself to $newsh $reason.)"
142 case "$0" in
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
145 esac
146 ;;
147esac
2304df62 148
bfb7748a
AD
149: if needed set CDPATH to a harmless value that is not chatty
150: avoid bash 2.02 problems with empty CDPATH.
151case "$CDPATH" in
152'') ;;
153*) case "$SHELL" in
154 *bash*) CDPATH='.' ;;
155 *) CDPATH='' ;;
156 esac
157 ;;
158esac
2304df62
AD
159: Configure runs within the UU subdirectory
160test -d UU || mkdir UU
8e07c86e 161cd UU && rm -f ./*
2304df62 162
6b356c8e
JH
163ccname=''
164ccversion=''
b4eb6b3d
JH
165ccsymbols=''
166cppccsymbols=''
167cppsymbols=''
9c839522 168perllibs=''
b4eb6b3d
JH
169dynamic_ext=''
170extensions=''
171known_extensions=''
172nonxs_ext=''
173static_ext=''
174useopcode=''
175useposix=''
ecfc5424 176d_bsd=''
40a7a20a 177d_eunice=''
2304df62
AD
178d_xenix=''
179eunicefix=''
180Mcc=''
dfe9444c 181ar=''
2304df62
AD
182awk=''
183bash=''
184bison=''
185byacc=''
186cat=''
187chgrp=''
188chmod=''
189chown=''
ecfc5424 190comm=''
2304df62
AD
191compress=''
192cp=''
193cpio=''
194cpp=''
195csh=''
196date=''
197echo=''
198egrep=''
199emacs=''
200expr=''
201find=''
202flex=''
2304df62 203grep=''
8ff267be 204gzip=''
2304df62
AD
205inews=''
206ksh=''
207less=''
208line=''
209lint=''
210ln=''
211lp=''
212lpr=''
213ls=''
214mail=''
215mailx=''
dfe9444c 216make=''
2304df62
AD
217mkdir=''
218more=''
219mv=''
693762b4 220nm=''
2304df62
AD
221nroff=''
222perl=''
223pg=''
224pmake=''
225pr=''
226rm=''
227rmail=''
228sed=''
229sendmail=''
2304df62
AD
230shar=''
231sleep=''
232smail=''
233sort=''
234submit=''
235tail=''
236tar=''
237tbl=''
693762b4 238tee=''
2304df62
AD
239test=''
240touch=''
241tr=''
242troff=''
243uname=''
244uniq=''
245uuname=''
246vi=''
247zcat=''
8ff267be 248zip=''
b4eb6b3d
JH
249full_ar=''
250full_sed=''
a0d0e21e 251libswanted=''
2304df62
AD
252hint=''
253myuname=''
85e6fe83
LW
254osname=''
255osvers=''
2304df62
AD
256Author=''
257Date=''
258Header=''
259Id=''
260Locker=''
261Log=''
262RCSfile=''
263Revision=''
264Source=''
265State=''
dfe9444c
AD
266_a=''
267_exe=''
268_o=''
4633a7c4
LW
269archobjs=''
270exe_ext=''
271firstmakefile=''
272lib_ext=''
273obj_ext=''
274path_sep=''
b4eb6b3d
JH
275afs=''
276alignbytes=''
277ansi2knr=''
278archlib=''
279archlibexp=''
280d_archlib=''
281installarchlib=''
282archname=''
283myarchname=''
284d_atolf=''
285d_atoll=''
286baserev=''
287bin=''
288binexp=''
289installbin=''
290bincompat5005=''
291d_bincompat5005=''
292byteorder=''
2304df62 293cc=''
2304df62
AD
294ccflags=''
295cppflags=''
296ldflags=''
297lkflags=''
8e07c86e 298locincpth=''
2304df62 299optimize=''
b4eb6b3d 300cf_email=''
2304df62
AD
301cf_by=''
302cf_time=''
b4eb6b3d 303charsize=''
2304df62 304contains=''
b4eb6b3d 305cpp_stuff=''
2304df62
AD
306cpplast=''
307cppminus=''
308cpprun=''
309cppstdin=''
b4eb6b3d
JH
310crosscompile=''
311d_access=''
312d_accessx=''
313d_alarm=''
314d_attribut=''
315d_bcmp=''
316d_bcopy=''
317d_bzero=''
318d_casti32=''
319castflags=''
320d_castneg=''
321d_chown=''
322d_chroot=''
323d_chsize=''
324d_closedir=''
325d_void_closedir=''
326d_const=''
327cryptlib=''
328d_crypt=''
329d_csh=''
330full_csh=''
331d_cuserid=''
332d_dbl_dig=''
333d_difftime=''
334d_dlerror=''
a0d0e21e 335d_dlopen=''
b4eb6b3d
JH
336d_dlsymun=''
337d_dosuid=''
338d_suidsafe=''
339d_drand48proto=''
340d_dup2=''
341d_eaccess=''
342d_endgrent=''
343d_endhent=''
344d_endnent=''
345d_endpent=''
346d_endpwent=''
347d_endsent=''
348d_fchmod=''
349d_fchown=''
350d_fcntl=''
351d_fd_macros=''
352d_fd_set=''
353d_fds_bits=''
354d_fgetpos=''
355d_flexfnam=''
356d_flock=''
357d_fork=''
358d_fpos64_t=''
359d_frexpl=''
360d_fs_data_s=''
361d_fseeko=''
362d_fsetpos=''
363d_fstatfs=''
364d_ftello=''
365d_ftime=''
366d_gettimeod=''
367d_Gconvert=''
368d_getcwd=''
369d_getespwnam=''
370d_getfsstat=''
371d_getgrent=''
372d_getgrps=''
373d_gethbyaddr=''
374d_gethbyname=''
375d_gethent=''
376aphostname=''
377d_gethname=''
378d_phostname=''
379d_uname=''
380d_gethostprotos=''
381d_getlogin=''
382d_getmnt=''
383d_getmntent=''
384d_getnbyaddr=''
385d_getnbyname=''
386d_getnent=''
387d_getnetprotos=''
388d_getpent=''
389d_getpgid=''
390d_getpgrp2=''
391d_bsdgetpgrp=''
392d_getpgrp=''
393d_getppid=''
394d_getprior=''
395d_getpbyname=''
396d_getpbynumber=''
397d_getprotoprotos=''
398d_getprpwnam=''
399d_getpwent=''
400d_getsent=''
401d_getservprotos=''
402d_getspnam=''
403d_getsbyname=''
404d_getsbyport=''
a4f3eea9 405d_gnulibc=''
b4eb6b3d
JH
406d_hasmntopt=''
407d_htonl=''
408d_iconv=''
409d_inetaton=''
410d_int64_t=''
411d_isascii=''
412d_isnan=''
413d_isnanl=''
414d_killpg=''
415d_lchown=''
416d_ldbl_dig=''
417d_link=''
418d_locconv=''
419d_lockf=''
420d_longdbl=''
421longdblsize=''
422d_longlong=''
423longlongsize=''
424d_lseekproto=''
425d_lstat=''
426d_madvise=''
427d_mblen=''
428d_mbstowcs=''
429d_mbtowc=''
430d_memchr=''
431d_memcmp=''
432d_memcpy=''
433d_memmove=''
434d_memset=''
435d_mkdir=''
436d_mkdtemp=''
437d_mkfifo=''
438d_mkstemp=''
439d_mkstemps=''
440d_mktime=''
441d_mmap=''
442mmaptype=''
443d_modfl=''
444d_mprotect=''
445d_msg=''
446d_msgctl=''
447d_msgget=''
448d_msgrcv=''
449d_msgsnd=''
450d_msync=''
451d_munmap=''
452d_nice=''
453d_off64_t=''
454d_open3=''
455d_fpathconf=''
456d_pathconf=''
457d_pause=''
458d_pipe=''
459d_poll=''
2304df62 460d_portable=''
b4eb6b3d
JH
461d_old_pthread_create_joinable=''
462old_pthread_create_joinable=''
463d_pthread_yield=''
464d_sched_yield=''
465sched_yield=''
466d_qgcvt=''
467d_readdir=''
468d_rewinddir=''
469d_seekdir=''
470d_telldir=''
471d_readlink=''
472d_rename=''
473d_rmdir=''
474d_safebcpy=''
475d_safemcpy=''
476d_sanemcmp=''
477d_select=''
478d_sem=''
479d_semctl=''
480d_semget=''
481d_semop=''
482d_setegid=''
483d_seteuid=''
484d_setgrent=''
485d_setgrps=''
486d_sethent=''
487d_setlinebuf=''
488d_setlocale=''
489d_setnent=''
490d_setpent=''
491d_setpgid=''
492d_setpgrp2=''
493d_bsdsetpgrp=''
494d_setpgrp=''
495d_setprior=''
496d_setproctitle=''
497d_setpwent=''
498d_setregid=''
499d_setresgid=''
500d_setresuid=''
501d_setreuid=''
502d_setrgid=''
503d_setruid=''
504d_setsent=''
505d_setsid=''
506d_setvbuf=''
507d_sfio=''
508usesfio=''
509d_shm=''
510d_shmat=''
511d_shmatprototype=''
512shmattype=''
513d_shmctl=''
514d_shmdt=''
515d_shmget=''
516d_sigaction=''
517d_sigsetjmp=''
518d_msg_ctrunc=''
519d_msg_dontroute=''
520d_msg_oob=''
521d_msg_peek=''
522d_msg_proxy=''
523d_oldsock=''
524d_scm_rights=''
525d_socket=''
526d_sockpair=''
527sockethdr=''
528socketlib=''
529d_socklen_t=''
530d_socks5_init=''
531d_sqrtl=''
532d_statblks=''
533d_statfs_f_flags=''
534d_statfs_s=''
535d_fstatvfs=''
536d_statvfs=''
537d_stdio_cnt_lval=''
538d_stdio_ptr_lval=''
539d_stdiobase=''
540d_stdstdio=''
541stdio_base=''
542stdio_bufsiz=''
543stdio_cnt=''
544stdio_filbuf=''
545stdio_ptr=''
546d_index=''
547d_strchr=''
548d_strcoll=''
549d_strctcpy=''
550d_strerrm=''
551d_strerror=''
552d_sysernlst=''
553d_syserrlst=''
554d_strtod=''
555d_strtol=''
556d_strtold=''
557d_strtoll=''
558d_strtoul=''
559d_strtoull=''
560d_strtouq=''
561d_strxfrm=''
562d_symlink=''
563d_syscall=''
564d_sysconf=''
565d_system=''
566d_tcgetpgrp=''
567d_tcsetpgrp=''
568d_telldirproto=''
569d_time=''
570timetype=''
571clocktype=''
572d_times=''
573d_truncate=''
574d_tzname=''
575d_umask=''
576d_semctl_semid_ds=''
577d_semctl_semun=''
578d_union_semun=''
579d_ustat=''
580d_vfork=''
581usevfork=''
582d_voidsig=''
583signal_t=''
584d_volatile=''
585d_charvspr=''
586d_vprintf=''
587d_wait4=''
588d_waitpid=''
589d_wcstombs=''
590d_wctomb=''
591dlext=''
85e6fe83
LW
592cccdlflags=''
593ccdlflags=''
2304df62 594dlsrc=''
232e078e 595ld=''
85e6fe83 596lddlflags=''
2304df62 597usedl=''
b4eb6b3d
JH
598doublesize=''
599ebcdic=''
600fflushNULL=''
601fflushall=''
602fpossize=''
603fpostype=''
5b463ca7 604gccosandvers=''
8a27cf78 605gccversion=''
b4eb6b3d
JH
606gidformat=''
607gidsign=''
608gidsize=''
609gidtype=''
610groupstype=''
611h_fcntl=''
612h_sysfile=''
613i_arpainet=''
614db_hashtype=''
615db_prefixtype=''
616i_db=''
617i_dbm=''
618i_rpcsvcdbm=''
619d_dirnamlen=''
620direntrytype=''
621i_dirent=''
a0d0e21e 622i_dld=''
b4eb6b3d
JH
623i_dlfcn=''
624i_fcntl=''
625i_float=''
626i_gdbm=''
627d_grpasswd=''
628i_grp=''
629i_iconv=''
630i_ieeefp=''
631i_inttypes=''
632i_libutil=''
633i_limits=''
634i_locale=''
635i_machcthr=''
636i_malloc=''
637i_math=''
638i_memory=''
639i_mntent=''
640i_ndbm=''
641i_netdb=''
642i_neterrno=''
643i_netinettcp=''
644i_niin=''
645i_sysin=''
646i_poll=''
647i_prot=''
648i_pthread=''
649d_pwage=''
650d_pwchange=''
651d_pwclass=''
652d_pwcomment=''
653d_pwexpire=''
654d_pwgecos=''
655d_pwpasswd=''
656d_pwquota=''
657i_pwd=''
658i_sfio=''
659i_shadow=''
660i_socks=''
661i_stddef=''
662i_stdlib=''
663i_string=''
664strings=''
665i_sunmath=''
666i_sysaccess=''
667i_sysdir=''
668i_sysfile=''
669d_voidtty=''
670i_bsdioctl=''
671i_sysfilio=''
672i_sysioctl=''
673i_syssockio=''
674i_syslog=''
675i_sysmman=''
676i_sysmode=''
677i_sysmount=''
678i_sysndir=''
679i_sysparam=''
680i_sysresrc=''
681i_syssecrt=''
682i_sysselct=''
683i_sysstat=''
684i_sysstatfs=''
685i_sysstatvfs=''
686i_systimes=''
687i_systypes=''
688i_sysuio=''
689i_sysun=''
690i_sysutsname=''
691i_sysvfs=''
692i_syswait=''
693i_sgtty=''
694i_termio=''
695i_termios=''
696i_systime=''
697i_systimek=''
698i_time=''
699timeincl=''
700i_unistd=''
701i_ustat=''
702i_utime=''
703i_values=''
704i_stdarg=''
705i_varargs=''
706i_varhdr=''
707i_vfork=''
708inc_version_list=''
709inc_version_list_init=''
710installprefix=''
711installprefixexp=''
712installstyle=''
713installusrbinperl=''
714intsize=''
715longsize=''
716shortsize=''
2304df62 717libc=''
b4eb6b3d
JH
718ldlibpthname=''
719libperl=''
720shrpenv=''
721useshrplib=''
a0d0e21e 722glibpth=''
2304df62 723libpth=''
8e07c86e 724loclibpth=''
2304df62
AD
725plibpth=''
726xlibpth=''
1cfa4ec7 727ignore_versioned_solibs=''
2304df62 728libs=''
43999f95
JH
729libsdirs=''
730libsfiles=''
731libsfound=''
13b3f787 732libspath=''
85e6fe83 733lns=''
b4eb6b3d
JH
734d_PRIEUldbl=''
735d_PRIFUldbl=''
736d_PRIGUldbl=''
737d_PRIeldbl=''
738d_PRIfldbl=''
739d_PRIgldbl=''
740d_SCNfldbl=''
741sPRIEUldbl=''
742sPRIFUldbl=''
743sPRIGUldbl=''
744sPRIeldbl=''
745sPRIfldbl=''
746sPRIgldbl=''
747sSCNfldbl=''
748lseeksize=''
749lseektype=''
8ff267be 750make_set_make=''
b4eb6b3d
JH
751d_mymalloc=''
752freetype=''
753mallocobj=''
754mallocsrc=''
755malloctype=''
756usemymalloc=''
757installman1dir=''
758man1dir=''
759man1direxp=''
760man1ext=''
761installman3dir=''
762man3dir=''
763man3direxp=''
764man3ext=''
765modetype=''
766multiarch=''
767mydomain=''
768myhostname=''
769phostname=''
2304df62
AD
770c=''
771n=''
b4eb6b3d
JH
772d_eofnblk=''
773eagain=''
774o_nonblock=''
775rd_nodata=''
776netdb_hlen_type=''
777netdb_host_type=''
778netdb_name_type=''
779netdb_net_type=''
780groupcat=''
781hostcat=''
782passcat=''
783orderlib=''
784ranlib=''
785d_perl_otherlibdirs=''
786otherlibdirs=''
2304df62
AD
787package=''
788spackage=''
b4eb6b3d
JH
789pager=''
790api_revision=''
791api_subversion=''
792api_version=''
793api_versionstring=''
794patchlevel=''
795revision=''
796subversion=''
797version=''
798perl5=''
799perladmin=''
800perlpath=''
801d_nv_preserves_uv=''
802d_nv_preserves_uv_bits=''
803i16size=''
804i16type=''
805i32size=''
806i32type=''
807i64size=''
808i64type=''
809i8size=''
810i8type=''
811ivsize=''
812ivtype=''
813nvsize=''
814nvtype=''
815u16size=''
816u16type=''
817u32size=''
818u32type=''
819u64size=''
820u64type=''
821u8size=''
822u8type=''
823uvsize=''
824uvtype=''
825ivdformat=''
826nvEUformat=''
827nvFUformat=''
828nvGUformat=''
829nveformat=''
830nvfformat=''
831nvgformat=''
832uvXUformat=''
833uvoformat=''
834uvuformat=''
835uvxformat=''
836pidtype=''
837prefix=''
838prefixexp=''
839installprivlib=''
840privlib=''
841privlibexp=''
842prototype=''
843ptrsize=''
844d_PRIXU64=''
845d_PRId64=''
846d_PRIi64=''
847d_PRIo64=''
848d_PRIu64=''
849d_PRIx64=''
850sPRIXU64=''
851sPRId64=''
852sPRIi64=''
853sPRIo64=''
854sPRIu64=''
855sPRIx64=''
856d_quad=''
857quadkind=''
858quadtype=''
859uquadtype=''
860drand01=''
861randbits=''
862randfunc=''
863randseedtype=''
864seedfunc=''
865installscript=''
866scriptdir=''
867scriptdirexp=''
868selectminbits=''
869selecttype=''
8ff267be 870sh=''
b4eb6b3d
JH
871sig_count=''
872sig_name=''
873sig_name_init=''
874sig_num=''
875sig_num_init=''
876installsitearch=''
877sitearch=''
878sitearchexp=''
879installsitebin=''
880sitebin=''
881sitebinexp=''
882installsitelib=''
883sitelib=''
884sitelib_stem=''
885sitelibexp=''
886siteprefix=''
887siteprefixexp=''
888sizesize=''
889sizetype=''
a0d0e21e 890so=''
b4eb6b3d 891socksizetype=''
2304df62
AD
892sharpbang=''
893shsharp=''
894spitshell=''
dfe9444c 895src=''
b4eb6b3d
JH
896ssizetype=''
897startperl=''
2304df62 898startsh=''
b4eb6b3d
JH
899stdchar=''
900d_stdio_stream_array=''
901stdio_stream_array=''
902sysman=''
5ff3f7a4 903trnl=''
b4eb6b3d
JH
904uidformat=''
905uidsign=''
906uidsize=''
907uidtype=''
908archname64=''
909use64bitall=''
910use64bitint=''
911ccflags_uselargefiles=''
912ldflags_uselargefiles=''
913libswanted_uselargefiles=''
914uselargefiles=''
915uselongdouble=''
916usemorebits=''
917usemultiplicity=''
2304df62 918nm_opt=''
40a7a20a 919nm_so_opt=''
2304df62
AD
920runnm=''
921usenm=''
b4eb6b3d 922useperlio=''
29209bc5 923usesocks=''
b4eb6b3d
JH
924d_oldpthreads=''
925use5005threads=''
926useithreads=''
927usethreads=''
2304df62 928incpath=''
2304df62
AD
929mips_type=''
930usrinc=''
b4eb6b3d
JH
931d_vendorarch=''
932installvendorarch=''
933vendorarch=''
934vendorarchexp=''
935d_vendorbin=''
936installvendorbin=''
937vendorbin=''
938vendorbinexp=''
939d_vendorlib=''
940installvendorlib=''
941vendorlib=''
942vendorlib_stem=''
943vendorlibexp=''
944usevendorprefix=''
945vendorprefix=''
946vendorprefixexp=''
947defvoidused=''
948voidflags=''
949pm_apiversion=''
950xs_apiversion=''
2304df62
AD
951CONFIG=''
952
ecfc5424
AD
953define='define'
954undef='undef'
955smallmach='pdp11 i8086 z8000 i80286 iAPX286'
956rmlist=''
957
958: We must find out about Eunice early
959eunicefix=':'
960if test -f /etc/unixtovms; then
961 eunicefix=/etc/unixtovms
962fi
963if test -f /etc/unixtovms.exe; then
964 eunicefix=/etc/unixtovms.exe
965fi
966
b4eb6b3d 967i_whoami=''
6b356c8e
JH
968ccname=''
969ccversion=''
9c839522 970perllibs=''
b4eb6b3d
JH
971: set useposix=false in your hint file to disable the POSIX extension.
972useposix=true
973: set useopcode=false in your hint file to disable the Opcode extension.
974useopcode=true
dfe9444c 975: Trailing extension. Override this in a hint file, if needed.
4e2a5f63 976_exe=''
dfe9444c
AD
977: Extra object files, if any, needed on this platform.
978archobjs=''
b4eb6b3d 979archname=''
ff935051
JH
980: Possible local include directories to search.
981: Set locincpth to "" in a hint file to defeat local include searches.
982locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
983locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
984:
985: no include file wanted by default
986inclwanted=''
987
b4eb6b3d 988groupstype=''
732c9516
JH
989: change the next line if compiling for Xenix/286 on Xenix/386
990xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
991: Possible local library directories to search.
992loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
993loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
994
995: general looking path for locating libraries
5869b1f1 996glibpth="/lib /usr/lib $xlibpth"
732c9516 997glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
998test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
999test -f /shlib/libc.so && glibpth="/shlib $glibpth"
732c9516
JH
1000
1001: Private path used by Configure to find libraries. Its value
1002: is prepended to libpth. This variable takes care of special
1003: machines, like the mips. Usually, it should be empty.
1004plibpth=''
1005
1cfa4ec7
GS
1006: default library list
1007libswanted=''
921b2963 1008: some systems want to use only the non-versioned libso:s
1cfa4ec7 1009ignore_versioned_solibs=''
b4eb6b3d
JH
1010archname64=''
1011ccflags_uselargefiles=''
1012ldflags_uselargefiles=''
1013libswanted_uselargefiles=''
1014: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1015: set usesocks on the Configure command line to enable socks.
b4eb6b3d
JH
1016: set usethreads on the Configure command line to enable threads.
1017: full support for void wanted by default
1018defvoidused=15
1019
ecfc5424 1020: List of libraries we want.
693762b4 1021: If anyone needs -lnet, put it in a hint file.
997d70a2 1022libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
69e84d1d 1023libswanted="$libswanted dld ld sun m c cposix posix"
f1066039 1024libswanted="$libswanted ndir dir crypt sec"
0c9177ab 1025libswanted="$libswanted ucb bsd BSD PW x iconv util"
1aef975c 1026: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1027: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1028glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1029glibpth="/usr/shlib $glibpth"
1030: Do not use vfork unless overridden by a hint file.
1031usevfork=false
1032
8ff267be 1033: Find the basic shell for Bourne shell scripts
1034case "$sh" in
1035'')
8ff267be 1036 case "$SYSTYPE" in
1037 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1038 *) xxx='/bin/sh';;
1039 esac
1040 if test -f "$xxx"; then
1041 sh="$xxx"
1042 else
1043 : Build up a list and do a single loop so we can 'break' out.
1044 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1045 for xxx in sh bash ksh pdksh ash; do
1046 for p in $pth; do
1047 try="$try ${p}/${xxx}"
1048 done
1049 done
1050 for xxx in $try; do
1051 if test -f "$xxx"; then
1052 sh="$xxx";
8ff267be 1053 break
1054 elif test -f "$xxx.exe"; then
1055 sh="$xxx";
8ff267be 1056 break
1057 fi
1058 done
1059 fi
1060 ;;
1061esac
1062
1063case "$sh" in
1064'') cat <<EOM >&2
1065$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1066
8ff267be 1067Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1068Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1069we'll try to straighten this all out.
8ff267be 1070EOM
1071 exit 1
1072 ;;
1073esac
1074
760ac839 1075: see if sh knows # comments
8ff267be 1076if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1077 shsharp=true
1078 spitshell=cat
760ac839
LW
1079 xcat=/bin/cat
1080 test -f $xcat || xcat=/usr/bin/cat
1081 echo "#!$xcat" >try
1082 $eunicefix try
1083 chmod +x try
1084 ./try > today
1085 if test -s today; then
760ac839
LW
1086 sharpbang='#!'
1087 else
1088 echo "#! $xcat" > try
1089 $eunicefix try
1090 chmod +x try
1091 ./try > today
1092 if test -s today; then
760ac839
LW
1093 sharpbang='#! '
1094 else
760ac839
LW
1095 sharpbang=': use '
1096 fi
1097 fi
1098else
dfe9444c 1099 echo " "
8ff267be 1100 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1101 shsharp=false
1102 cd ..
1103 echo "exec grep -v '^[ ]*#'" >spitshell
1104 chmod +x spitshell
1105 $eunicefix spitshell
1106 spitshell=`pwd`/spitshell
1107 cd UU
1108 echo "I presume that if # doesn't work, #! won't work either!"
1109 sharpbang=': use '
1110fi
1111rm -f try today
1112
1113: figure out how to guarantee sh startup
8ff267be 1114case "$startsh" in
1115'') startsh=${sharpbang}${sh} ;;
1116*)
760ac839 1117esac
760ac839
LW
1118cat >try <<EOSS
1119$startsh
1120set abc
1121test "$?abc" != 1
1122EOSS
1123
1124chmod +x try
1125$eunicefix try
1126if ./try; then
8ff267be 1127 : echo "Yup, it does."
760ac839 1128else
dfe9444c
AD
1129 echo "Hmm... '$startsh' does not guarantee sh startup..."
1130 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839
LW
1131fi
1132rm -f try
1133
aebf16e7
AD
1134
1135: Save command line options in file UU/cmdline.opt for later use in
1136: generating config.sh.
1137cat > cmdline.opt <<EOSH
1138# Configure command line arguments.
1139config_arg0='$0'
1140config_args='$*'
1141config_argc=$#
1142EOSH
1143argn=1
1144for arg in "$@"; do
1145 cat >>cmdline.opt <<EOSH
1146config_arg$argn='$arg'
1147EOSH
1148 argn=`expr $argn + 1`
1149done
1150
2304df62
AD
1151: produce awk script to parse command line options
1152cat >options.awk <<'EOF'
1153BEGIN {
02e93a22 1154 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1155
1156 len = length(optstr);
1157 for (i = 1; i <= len; i++) {
1158 c = substr(optstr, i, 1);
1159 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1160 if (a == ":") {
1161 arg[c] = 1;
1162 i++;
1163 }
1164 opt[c] = 1;
1165 }
1166}
1167{
1168 expect = 0;
1169 str = $0;
1170 if (substr(str, 1, 1) != "-") {
1171 printf("'%s'\n", str);
1172 next;
1173 }
1174 len = length($0);
1175 for (i = 2; i <= len; i++) {
1176 c = substr(str, i, 1);
1177 if (!opt[c]) {
1178 printf("-%s\n", substr(str, i));
1179 next;
1180 }
1181 printf("-%s\n", c);
1182 if (arg[c]) {
1183 if (i < len)
1184 printf("'%s'\n", substr(str, i + 1));
1185 else
1186 expect = 1;
1187 next;
1188 }
1189 }
1190}
1191END {
1192 if (expect)
1193 print "?";
1194}
1195EOF
1196
1197: process the command line options
4633a7c4
LW
1198set X `for arg in "$@"; do echo "X$arg"; done |
1199 sed -e s/X// | awk -f options.awk`
2304df62
AD
1200eval "set $*"
1201shift
1202rm -f options.awk
1203
1204: set up default values
1205fastread=''
1206reuseval=false
1207config_sh=''
1208alldone=''
1209error=''
1210silent=''
1211extractsh=''
ecfc5424 1212override=''
16d20bd9 1213knowitall=''
02e93a22 1214rm -f optdef.sh posthint.sh
28757baa 1215cat >optdef.sh <<EOS
1216$startsh
1217EOS
2304df62 1218
dfe9444c 1219
2304df62
AD
1220: option parsing
1221while test $# -gt 0; do
1222 case "$1" in
1223 -d) shift; fastread=yes;;
1224 -e) shift; alldone=cont;;
1225 -f)
1226 shift
1227 cd ..
1228 if test -r "$1"; then
1229 config_sh="$1"
1230 else
a0d0e21e 1231 echo "$me: cannot read config file $1." >&2
2304df62
AD
1232 error=true
1233 fi
1234 cd UU
1235 shift;;
1236 -h) shift; error=true;;
1237 -r) shift; reuseval=true;;
dfe9444c 1238 -s) shift; silent=true; realsilent=true;;
2304df62 1239 -E) shift; alldone=exit;;
16d20bd9 1240 -K) shift; knowitall=true;;
ecfc5424 1241 -O) shift; override=true;;
dfe9444c 1242 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1243 -D)
1244 shift
1245 case "$1" in
1246 *=)
1247 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1248 echo "$me: ignoring -D $1" >&2
1249 ;;
ecfc5424 1250 *=*) echo "$1" | \
1aef975c
AD
1251 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1252 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1253 esac
1254 shift
1255 ;;
1256 -U)
1257 shift
1258 case "$1" in
1aef975c 1259 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1260 *=*)
1261 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1262 echo "$me: ignoring -U $1" >&2
1263 ;;
1aef975c 1264 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1265 esac
1266 shift
1267 ;;
02e93a22
JH
1268 -A)
1269 shift
1270 xxx=''
1271 yyy="$1"
02e93a22 1272 zzz=''
5f83a3e9 1273 uuu=undef
02e93a22 1274 case "$yyy" in
5f83a3e9
JH
1275 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1276 case "$zzz" in
1277 *:*) zzz='' ;;
1278 *) xxx=append
1279 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1280 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1281 esac
1282 ;;
1283 esac
1284 case "$xxx" in
1285 '') case "$yyy" in
1286 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1287 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1288 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1289 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1290 *) xxx=`echo $yyy|sed 's!:.*!!'`
1291 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1292 esac
1293 ;;
1294 esac
02e93a22
JH
1295 case "$xxx" in
1296 append)
5f83a3e9 1297 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1298 clear)
5f83a3e9 1299 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1300 define)
1301 case "$zzz" in
1302 '') zzz=define ;;
1303 esac
5f83a3e9 1304 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1305 eval)
5f83a3e9 1306 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1307 prepend)
5f83a3e9 1308 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1309 undef)
1310 case "$zzz" in
1311 '') zzz="$uuu" ;;
1312 esac
5f83a3e9
JH
1313 echo "$yyy=$zzz" >> posthint.sh ;;
1314 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1315 esac
bde6b06b 1316 shift
02e93a22 1317 ;;
dfe9444c 1318 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
5f83a3e9 1319 exit 0;;
2304df62 1320 --) break;;
a0d0e21e 1321 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1322 *) break;;
1323 esac
1324done
1325
1326case "$error" in
1327true)
1328 cat >&2 <<EOM
2afac517 1329Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1330 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1331 -d : use defaults for all answers.
1332 -e : go on without questioning past the production of config.sh.
1333 -f : specify an alternate default configuration file.
1334 -h : print this help message and exit (with an error status).
1335 -r : reuse C symbols value if possible (skips costly nm extraction).
1336 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1337 -D : define symbol to have some value:
1338 -D symbol symbol gets the value 'define'
1339 -D symbol=value symbol gets the value 'value'
2304df62 1340 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1341 -K : do not use unless you know what you are doing.
ecfc5424 1342 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1343 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1344 -U : undefine symbol:
1345 -U symbol symbol gets the value 'undef'
1346 -U symbol= symbol gets completely empty
02e93a22 1347 -A : manipulate symbol after the platform specific hints have been applied:
5f83a3e9 1348 -A symbol=value append " "value to symbol
02e93a22
JH
1349 -A append:symbol=value append value to symbol
1350 -A define:symbol=value define symbol to have value
02e93a22
JH
1351 -A clear:symbol define symbol to be ''
1352 -A define:symbol define symbol to be 'define'
1353 -A eval:symbol=value define symbol to be eval of value
1354 -A prepend:symbol=value prepend value to symbol
1355 -A undef:symbol define symbol to be 'undef'
1356 -A undef:symbol= define symbol to be ''
2304df62
AD
1357 -V : print version number and exit (with a zero status).
1358EOM
1359 exit 1
1360 ;;
1361esac
1362
dfe9444c
AD
1363: Sanity checks
1364case "$fastread$alldone" in
1365yescont|yesexit) ;;
1366*)
aaeb8e51
GS
1367 case "$extractsh" in
1368 true) ;;
1369 *)
1370 if test ! -t 0; then
1371 echo "Say 'sh Configure', not 'sh <Configure'"
1372 exit 1
1373 fi
1374 ;;
1375 esac
dfe9444c
AD
1376 ;;
1377esac
1378
2304df62
AD
1379exec 4>&1
1380case "$silent" in
1381true) exec 1>/dev/null;;
1382esac
1383
ecfc5424 1384: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1385touch optdef.sh
1386. ./optdef.sh
02e93a22
JH
1387: create the posthint manipulation script and leave the file out there...
1388touch posthint.sh
a0d0e21e 1389
2304df62 1390: set package name
85e6fe83 1391package=perl5
b4eb6b3d
JH
1392first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1393last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1394case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1395ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1396*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1397esac
2304df62 1398
2304df62
AD
1399: Some greps do not return status, grrr.
1400echo "grimblepritz" >grimble
1401if grep blurfldyick grimble >/dev/null 2>&1 ; then
1402 contains=contains
1403elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1404 contains=grep
1405else
1406 contains=contains
1407fi
1408rm -f grimble
1409: the following should work in any shell
1410case "$contains" in
1411contains*)
1412 echo " "
1413 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1414 cat >contains <<'EOSS'
1415grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1416EOSS
1417chmod +x contains
1418esac
1419
dfe9444c
AD
1420: Find the path to the source tree
1421case "$src" in
1422'') case "$0" in
b233458b
JH
1423 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1424 case "$src" in
1425 /*) ;;
1426 *) src=`cd ../$src && pwd` ;;
1427 esac
1428 ;;
dfe9444c
AD
1429 *) src='.';;
1430 esac;;
1431esac
1432case "$src" in
1433'') src=/
1434 rsrc=/
1435 ;;
1436/*) rsrc="$src";;
1437*) rsrc="../$src";;
1438esac
1439if test -f $rsrc/Configure && \
1440 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1441then
1442 : found it, so we are ok.
1443else
1444 rsrc=''
1445 for src in . .. ../.. ../../.. ../../../..; do
1446 if test -f ../$src/Configure && \
1447 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1448 then
1449 rsrc=../$src
1450 break
1451 fi
1452 done
1453fi
1454case "$rsrc" in
1455'')
1456 cat <<EOM >&4
1457
1458Sorry, I can't seem to locate the source dir for $package. Please start
1459Configure with an explicit path -- i.e. /some/path/Configure.
1460
1461EOM
1462 exit 1
1463 ;;
1464../.) rsrc='..';;
1465*)
1466 echo " "
1467 echo "Sources for $package found in \"$src\"." >&4
1468 ;;
1469esac
1470
1471: script used to extract .SH files with variable substitutions
1472cat >extract <<'EOS'
2000072c 1473CONFIGDOTSH=true
dfe9444c
AD
1474echo "Doing variable substitutions on .SH files..."
1475if test -f $src/MANIFEST; then
f7ab18e9 1476 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
dfe9444c
AD
1477else
1478 echo "(Looking for .SH files under the source directory.)"
1479 set x `(cd $src; find . -name "*.SH" -print)`
1480fi
1481shift
1482case $# in
14830) set x `(cd $src; echo *.SH)`; shift;;
1484esac
1485if test ! -f $src/$1; then
1486 shift
1487fi
1488mkdir_p='
1489name=$1;
1490create="";
1491while test $name; do
1492 if test ! -d "$name"; then
1493 create="$name $create";
1494 name=`echo $name | sed -e "s|^[^/]*$||"`;
1495 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1496 else
1497 name="";
1498 fi;
1499done;
1500for file in $create; do
1501 mkdir $file;
1502done
1503'
1504for file in $*; do
1505 case "$src" in
1506 ".")
1507 case "$file" in
1508 */*)
1509 dir=`expr X$file : 'X\(.*\)/'`
1510 file=`expr X$file : 'X.*/\(.*\)'`
1511 (cd $dir && . ./$file)
1512 ;;
1513 *)
1514 . ./$file
1515 ;;
1516 esac
1517 ;;
1518 *)
1519 case "$file" in
1520 */*)
1521 dir=`expr X$file : 'X\(.*\)/'`
1522 file=`expr X$file : 'X.*/\(.*\)'`
1523 (set x $dir; shift; eval $mkdir_p)
1524 sh <$src/$dir/$file
1525 ;;
1526 *)
1527 sh <$src/$file
1528 ;;
1529 esac
1530 ;;
1531 esac
1532done
1533if test -f $src/config_h.SH; then
1534 if test ! -f config.h; then
1535 : oops, they left it out of MANIFEST, probably, so do it anyway.
1536 . $src/config_h.SH
1537 fi
1538fi
1539EOS
1540
1541: extract files and exit if asked to do so
1542case "$extractsh" in
1543true)
1544 case "$realsilent" in
1545 true) ;;
1546 *) exec 1>&4;;
1547 esac
1548 case "$config_sh" in
1549 '') config_sh='config.sh';;
1550 esac
1551 echo " "
1552 echo "Fetching answers from $config_sh..."
1553 cd ..
1554 . $config_sh
1555 test "$override" && . ./optdef.sh
1556 echo " "
1557 . UU/extract
1558 rm -rf UU
1559 echo "Done."
1560 exit 0
1561 ;;
1562esac
1563
1564: Eunice requires " " instead of "", can you believe it
1565echo " "
1566: Here we go...
1567echo "Beginning of configuration questions for $package."
1568
1569trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1570
2304df62
AD
1571: first determine how to suppress newline on echo command
1572echo " "
1573echo "Checking echo to see how to suppress newlines..."
1574(echo "hi there\c" ; echo " ") >.echotmp
1575if $contains c .echotmp >/dev/null 2>&1 ; then
1576 echo "...using -n."
1577 n='-n'
1578 c=''
1579else
1580 cat <<'EOM'
1581...using \c
1582EOM
1583 n=''
1584 c='\c'
1585fi
1586echo $n "The star should be here-->$c"
1587echo '*'
1588rm -f .echotmp
1589
1590: Now test for existence of everything in MANIFEST
1591echo " "
dfe9444c 1592if test -f $rsrc/MANIFEST; then
2304df62 1593 echo "First let's make sure your kit is complete. Checking..." >&4
dfe9444c 1594 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
2304df62 1595 rm -f missing
dfe9444c 1596 tmppwd=`pwd`
2304df62 1597 for filelist in x??; do
dfe9444c 1598 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
2304df62
AD
1599 done
1600 if test -s missing; then
1601 cat missing >&4
1602 cat >&4 <<'EOM'
1603
1604THIS PACKAGE SEEMS TO BE INCOMPLETE.
1605
1606You have the option of continuing the configuration process, despite the
1607distinct possibility that your kit is damaged, by typing 'y'es. If you
1608do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1609and contact the author (perlbug@perl.org).
2304df62
AD
1610
1611EOM
1612 echo $n "Continue? [n] $c" >&4
1613 read ans
1614 case "$ans" in
1615 y*)
1616 echo "Continuing..." >&4
1617 rm -f missing
1618 ;;
1619 *)
1620 echo "ABORTING..." >&4
1621 kill $$
1622 ;;
1623 esac
1624 else
dfe9444c 1625 echo "Looks good..."
2304df62
AD
1626 fi
1627else
1628 echo "There is no MANIFEST file. I hope your kit is complete !"
1629fi
1630rm -f missing x??
1631
5ff3f7a4
GS
1632echo " "
1633: Find the appropriate value for a newline for tr
1634if test -n "$DJGPP"; then
1635 trnl='\012'
1636fi
1637if test X"$trnl" = X; then
1638 case "`echo foo|tr '\n' x 2>/dev/null`" in
1639 foox) trnl='\n' ;;
1640 esac
1641fi
1642if test X"$trnl" = X; then
1643 case "`echo foo|tr '\012' x 2>/dev/null`" in
1644 foox) trnl='\012' ;;
1645 esac
1646fi
1647if test X"$trnl" = X; then
1648 cat <<EOM >&2
1649
1650$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1651
1652EOM
1653 exit 1
1654fi
1655
2304df62
AD
1656: compute the number of columns on the terminal for proper question formatting
1657case "$COLUMNS" in
1658'') COLUMNS='80';;
1659esac
1660
1661: set up the echo used in my read
1662myecho="case \"\$xxxm\" in
1663'') echo $n \"\$rp $c\" >&4;;
1664*) case \"\$rp\" in
1665 '') echo $n \"[\$xxxm] $c\";;
1666 *)
1667 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1668 echo \"\$rp\" >&4
1669 echo $n \"[\$xxxm] $c\" >&4
1670 else
1671 echo $n \"\$rp [\$xxxm] $c\" >&4
1672 fi
1673 ;;
1674 esac;;
1675esac"
1676
1677: now set up to do reads with possible shell escape and default assignment
1678cat <<EOSC >myread
28757baa 1679$startsh
2304df62
AD
1680xxxm=\$dflt
1681$myecho
1682ans='!'
1683case "\$fastread" in
1684yes) case "\$dflt" in
1685 '') ;;
1686 *) ans='';
1687 case "\$silent-\$rp" in
1688 true-) ;;
1689 *) echo " " >&4;;
1690 esac;;
1691 esac;;
1692*) case "\$silent" in
1693 true) case "\$rp" in
1694 '') ans='';;
1695 esac;;
1696 esac;;
1697esac
1698while expr "X\$ans" : "X!" >/dev/null; do
1699 read answ
1700 set x \$xxxm
1701 shift
dfe9444c 1702 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 1703 case "\$answ" in
dfe9444c
AD
1704 "!")
1705 sh 1>&4
1706 echo " "
1707 $myecho
1708 ;;
1709 !*)
1710 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1711 shift
1712 sh 1>&4 -c "\$*"
1713 echo " "
1714 $myecho
1715 ;;
2304df62
AD
1716 "\$ans")
1717 case "\$ans" in
ecfc5424
AD
1718 \\&*)
1719 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1720 shift
1721 case "\$1" in
1722 -d)
1723 fastread=yes
40a7a20a 1724 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
1725 ;;
1726 -*)
40a7a20a 1727 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
1728 ;;
1729 esac
1730 $myecho
1731 ans=!
1732 ;;
2304df62
AD
1733 esac;;
1734 *)
1735 case "\$aok" in
1736 y)
1737 echo "*** Substitution done -- please confirm."
1738 xxxm="\$ans"
c9795ab7 1739 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
1740 xxxm="\$ans"
1741 ans=!
1742 ;;
1743 *)
1744 echo "*** Error -- try again."
1745 ans=!
1746 ;;
1747 esac
1748 $myecho
1749 ;;
1750 esac
1751 case "\$ans\$xxxm\$nostick" in
1752 '')
1753 ans=!
1754 $myecho
1755 ;;
1756 esac
1757done
1758case "\$ans" in
1759'') ans="\$xxxm";;
1760esac
1761EOSC
1762
1763: create .config dir to save info across Configure sessions
1764test -d ../.config || mkdir ../.config
1765cat >../.config/README <<EOF
1766This directory created by Configure to save information that should
dfe9444c 1767persist across sessions for $package.
2304df62
AD
1768
1769You may safely delete it if you wish.
1770EOF
1771
9507cadf 1772xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 1773case "$usedevel" in
0107c034 1774$define|true|[yY]*) ;;
9507cadf 1775*) case "$xversion" in
0107c034
JH
1776 *[13579])
1777 cat >&4 <<EOH
1778*** WHOA THERE!!! ***
1779
1780 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
1781 The version of this $package distribution is $xversion, that is, odd,
1782 (as opposed to even) and that signifies a development release.
3d5d58b1 1783 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
1784
1785 Do ***NOT*** install this into production use.
1786 Data corruption and crashes are possible.
1787
1788 It is most seriously suggested that you do not continue any further
1789 unless you want to help in developing and debugging Perl.
1790
1791EOH
1792 rp='Do you really want to continue?'
1793 dflt='n'
1794 . ./myread
1795 case "$ans" in
1796 [yY]) echo >&4 "Okay, continuing." ;;
1797 *) echo >&4 "Okay, bye."
1798 exit 1
1799 ;;
1800 esac
1801 ;;
1802 esac
1803 ;;
1804esac
1805
2304df62
AD
1806: general instructions
1807needman=true
1808firsttime=true
760ac839 1809user=`(logname) 2>/dev/null`
dfe9444c
AD
1810case "$user" in
1811'') user=`whoami 2>&1`;;
760ac839 1812esac
2304df62
AD
1813if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1814 firsttime=false
1815 echo " "
1816 rp='Would you like to see the instructions?'
1817 dflt=n
1818 . ./myread
1819 case "$ans" in
1820 [yY]*) ;;
1821 *) needman=false;;
1822 esac
1823fi
1824if $needman; then
1825 cat <<EOH
4e2a5f63 1826
2304df62 1827This installation shell script will examine your system and ask you questions
a0d0e21e 1828to determine how the perl5 package should be installed. If you get
2304df62
AD
1829stuck on a question, you may use a ! shell escape to start a subshell or
1830execute a command. Many of the questions will have default answers in square
1831brackets; typing carriage return will give you the default.
1832
1833On some of the questions which ask for file or directory names you are allowed
1834to use the ~name construct to specify the login directory belonging to "name",
1835even if you don't have a shell which knows about that. Questions where this is
1836allowed will be marked "(~name ok)".
1837
1838EOH
1839 rp=''
1840 dflt='Type carriage return to continue'
1841 . ./myread
1842 cat <<'EOH'
1843
1844The prompter used in this script allows you to use shell variables and
1845backticks in your answers. You may use $1, $2, etc... to refer to the words
1846in the default answer, as if the default line was a set of arguments given to a
1847script shell. This means you may also use $* to repeat the whole default line,
1848so you do not have to re-type everything to add something to the default.
1849
1850Everytime there is a substitution, you will have to confirm. If there is an
1851error (e.g. an unmatched backtick), the default answer will remain unchanged
1852and you will be prompted again.
1853
1854If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1855the questions and use the computed defaults (or the previous answers if there
1856was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 1857You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 1858on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
1859
1860EOH
1861 . ./myread
1862 cat <<EOH
1863
1864Much effort has been expended to ensure that this shell script will run on any
1865Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1866Configure and run it again. If you can't run Configure for some reason,
1867you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 1868have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
1869
1870This installation script affects things in two ways:
1871
18721) it may do direct variable substitutions on some of the files included
1873 in this kit.
18742) it builds a config.h file for inclusion in C programs. You may edit
1875 any of these files as the need arises after running this script.
1876
1877If you make a mistake on a question, there is no easy way to back up to it
1878currently. The easiest thing to do is to edit config.sh and rerun all the SH
1879files. Configure will offer to let you do this before it runs the SH files.
1880
1881EOH
1882 dflt='Type carriage return to continue'
1883 . ./myread
1884 case "$firsttime" in
1885 true) echo $user >>../.config/instruct;;
1886 esac
1887fi
1888
2304df62
AD
1889: find out where common programs are
1890echo " "
1891echo "Locating common programs..." >&4
1892cat <<EOSC >loc
1893$startsh
1894case \$# in
18950) exit 1;;
1896esac
1897thing=\$1
1898shift
1899dflt=\$1
1900shift
1901for dir in \$*; do
1902 case "\$thing" in
1903 .)
1904 if test -d \$dir/\$thing; then
1905 echo \$dir
1906 exit 0
1907 fi
1908 ;;
1909 *)
a0d0e21e 1910 for thisthing in \$dir/\$thing; do
ecfc5424 1911 : just loop through to pick last item
a0d0e21e 1912 done
25f94b33 1913 if test -f \$thisthing; then
a0d0e21e 1914 echo \$thisthing
2304df62
AD
1915 exit 0
1916 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
1917 if test -n "$DJGPP"; then
1918 echo \$dir/\$thing.exe
1919 else
1920 : on Eunice apparently
1921 echo \$dir/\$thing
1922 fi
2304df62
AD
1923 exit 0
1924 fi
1925 ;;
1926 esac
1927done
1928echo \$dflt
1929exit 1
1930EOSC
1931chmod +x loc
1932$eunicefix loc
1933loclist="
1934awk
1935cat
b4eb6b3d
JH
1936comm
1937cp
2304df62
AD
1938echo
1939expr
1940grep
a0d0e21e 1941ls
dfe9444c 1942make
b4eb6b3d 1943mkdir
2304df62
AD
1944rm
1945sed
b4eb6b3d 1946sort
85e6fe83 1947touch
2304df62 1948tr
b4eb6b3d 1949uniq
2304df62
AD
1950"
1951trylist="
1952Mcc
dfe9444c 1953ar
b4eb6b3d 1954byacc
2304df62 1955cpp
b4eb6b3d 1956csh
2304df62
AD
1957date
1958egrep
8ff267be 1959gzip
b4eb6b3d 1960less
8ff267be 1961ln
b4eb6b3d 1962more
693762b4 1963nm
b4eb6b3d
JH
1964nroff
1965pg
2304df62
AD
1966test
1967uname
8ff267be 1968zip
2304df62 1969"
8e07c86e 1970pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
1971pth="$pth /lib /usr/lib"
1972for file in $loclist; do
dfe9444c
AD
1973 eval xxx=\$$file
1974 case "$xxx" in
1975 /*|?:[\\/]*)
1976 if test -f "$xxx"; then
1977 : ok
1978 else
1979 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1980 xxx=`./loc $file $file $pth`
1981 fi
1982 ;;
1983 '') xxx=`./loc $file $file $pth`;;
1984 *) xxx=`./loc $xxx $xxx $pth`;;
1985 esac
2304df62
AD
1986 eval $file=$xxx
1987 eval _$file=$xxx
1988 case "$xxx" in
1989 /*)
1990 echo $file is in $xxx.
1991 ;;
8e07c86e
AD
1992 ?:[\\/]*)
1993 echo $file is in $xxx.
1994 ;;
2304df62 1995 *)
25f94b33
AD
1996 echo "I don't know where '$file' is, and my life depends on it." >&4
1997 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 1998 exit 1
2304df62
AD
1999 ;;
2000 esac
2001done
2002echo " "
2003echo "Don't worry if any of the following aren't found..."
2004say=offhand
2005for file in $trylist; do
dfe9444c
AD
2006 eval xxx=\$$file
2007 case "$xxx" in
2008 /*|?:[\\/]*)
2009 if test -f "$xxx"; then
2010 : ok
2011 else
2012 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2013 xxx=`./loc $file $file $pth`
2014 fi
2015 ;;
2016 '') xxx=`./loc $file $file $pth`;;
2017 *) xxx=`./loc $xxx $xxx $pth`;;
2018 esac
2304df62
AD
2019 eval $file=$xxx
2020 eval _$file=$xxx
2021 case "$xxx" in
2022 /*)
2023 echo $file is in $xxx.
2024 ;;
8e07c86e
AD
2025 ?:[\\/]*)
2026 echo $file is in $xxx.
2027 ;;
2304df62
AD
2028 *)
2029 echo "I don't see $file out there, $say."
2030 say=either
2031 ;;
2032 esac
2033done
2034case "$egrep" in
2035egrep)
2036 echo "Substituting grep for egrep."
2037 egrep=$grep
2038 ;;
2039esac
8ff267be 2040case "$ln" in
2041ln)
2042 echo "Substituting cp for ln."
2043 ln=$cp
2044 ;;
2045esac
2304df62
AD
2046case "$test" in
2047test)
2048 echo "Hopefully test is built into your sh."
2049 ;;
2050*)
ecfc5424 2051 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
2052 echo "Using the test built into your sh."
2053 test=test
2054 _test=test
2055 fi
2056 ;;
2057esac
2058case "$echo" in
2059echo)
2060 echo "Hopefully echo is built into your sh."
2061 ;;
2062'') ;;
2063*)
2064 echo " "
2065echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2066 $echo $n "hi there$c" >foo1
2067 echo $n "hi there$c" >foo2
2068 if cmp foo1 foo2 >/dev/null 2>&1; then
2069 echo "They are compatible. In fact, they may be identical."
2070 else
2071 case "$n" in
2072 '-n') n='' c='\c';;
2073 *) n='-n' c='';;
2074 esac
2075 cat <<FOO
2076They are not compatible! You are probably running ksh on a non-USG system.
2077I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2078have echo built in and we may have to run some Bourne shell scripts. That
2079means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2080
2081FOO
2082 $echo $n "The star should be here-->$c"
2083 $echo "*"
2084 fi
2085 $rm -f foo1 foo2
2086 ;;
2087esac
2088
2573c5f9
JH
2089cat <<EOS >checkcc
2090$startsh
2091EOS
2092cat <<'EOSC' >>checkcc
2093case "$cc" in
2094'') ;;
2095*) $rm -f try try.*
2096 $cat >try.c <<EOM
2097int main(int argc, char *argv[]) {
2098 return 0;
2099}
2100EOM
2101 if $cc -o try try.c; then
2102 :
2103 else
2104 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2105 despair=yes
2106 trygcc=yes
2107 case "$cc" in
2108 *gcc*) trygcc=no ;;
2109 esac
2110 case "`$cc -v -c try.c 2>&1`" in
2111 *gcc*) trygcc=no ;;
2112 esac
2113 if $test X"$trygcc" = Xyes; then
2114 if gcc -o try -c try.c; then
2115 echo " "
2116 echo "You seem to have a working gcc, though." >&4
2117 rp="Would you like to use it?"
2118 dflt=y
2119 if $test -f myread; then
2120 . ./myread
2121 else
2122 if $test -f UU/myread; then
2123 . ./UU/myread
2124 else
2125 echo "Cannot find myread, sorry. Aborting." >&2
2126 exit 1
2127 fi
2128 fi
2129 case "$ans" in
e723fc21 2130 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2573c5f9
JH
2131 esac
2132 fi
2133 fi
2134 if $test X"$despair" = Xyes; then
2135 echo "You need to find a working C compiler." >&4
2136 echo "I cannot continue any further, aborting." >&4
2137 exit 1
2138 fi
2139 fi
2140 $rm -f try try.*
2141 ;;
2142esac
2143EOSC
2144
a0d0e21e
LW
2145: determine whether symbolic links are supported
2146echo " "
2147$touch blurfl
2148if $ln -s blurfl sym > /dev/null 2>&1 ; then
2149 echo "Symbolic links are supported." >&4
2150 lns="$ln -s"
2151else
2152 echo "Symbolic links are NOT supported." >&4
2153 lns="$ln"
2154fi
2155$rm -f blurfl sym
2156
ecfc5424
AD
2157: see whether [:lower:] and [:upper:] are supported character classes
2158echo " "
ecfc5424
AD
2159case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2160ABYZ)
2161 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2162 up='[:upper:]'
2163 low='[:lower:]'
2164 ;;
28e8609d
JH
2165*) # There is a discontinuity in EBCDIC between 'I' and 'J'
2166 # (0xc9 and 0xd1), therefore that is a nice testing point.
2167 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2168 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
28e8609d
JH
2169 ij) up='[A-Z]'
2170 low='[a-z]'
2171 ;;
2172 esac
2173 fi
2174 if test "X$up" = X -o "X$low" = X; then
3eaeeeae 2175 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
28e8609d
JH
2176 ij) up='A-Z'
2177 low='a-z'
2178 ;;
2179 esac
2180 fi
2181 if test "X$up" = X -o "X$low" = X; then
2182 case "`echo IJ | od -x 2>/dev/null`" in
2183 *C9D1*|*c9d1*)
2184 echo "Hey, this might be EBCDIC." >&4
2185 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2186 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
28e8609d
JH
2187 ij) up='[A-IJ-RS-Z]'
2188 low='[a-ij-rs-z]'
2189 ;;
2190 esac
2191 fi
2192 if test "X$up" = X -o "X$low" = X; then
5ff3f7a4 2193 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
28e8609d
JH
2194 ij) up='A-IJ-RS-Z'
2195 low='a-ij-rs-z'
2196 ;;
2197 esac
2198 fi
2199 ;;
2200 esac
2201 fi
2202esac
3eaeeeae 2203case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
28e8609d
JH
2204ij)
2205 echo "Using $up and $low to convert case." >&4
2206 ;;
ecfc5424 2207*)
28e8609d
JH
2208 echo "I don't know how to translate letters from upper to lower case." >&4
2209 echo "Your tr is not acting any way I know of." >&4
2210 exit 1
2211 ;;
ecfc5424
AD
2212esac
2213: set up the translation script tr, must be called with ./tr of course
2214cat >tr <<EOSC
2215$startsh
2216case "\$1\$2" in
2217'[A-Z][a-z]') exec $tr '$up' '$low';;
2218'[a-z][A-Z]') exec $tr '$low' '$up';;
2219esac
2220exec $tr "\$@"
2221EOSC
2222chmod +x tr
2223$eunicefix tr
2224
2304df62
AD
2225: Try to determine whether config.sh was made on this system
2226case "$config_sh" in
2227'')
43999f95
JH
2228myuname=`$uname -a 2>/dev/null`
2229$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
2230# tr '[A-Z]' '[a-z]' would not work in EBCDIC
2231# because the A-Z/a-z are not consecutive.
a0d0e21e 2232myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3eaeeeae 2233 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 2234newmyuname="$myuname"
2304df62 2235dflt=n
16d20bd9
AD
2236case "$knowitall" in
2237'')
2238 if test -f ../config.sh; then
2239 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2240 eval "`grep myuname= ../config.sh`"
2241 fi
2242 if test "X$myuname" = "X$newmyuname"; then
2243 dflt=y
2244 fi
2304df62 2245 fi
16d20bd9
AD
2246 ;;
2247*) dflt=y;;
2248esac
2304df62
AD
2249
2250: Get old answers from old config file if Configure was run on the
2251: same system, otherwise use the hints.
2252hint=default
2253cd ..
2254if test -f config.sh; then
16d20bd9
AD
2255 echo " "
2256 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
2257 . UU/myread
2258 case "$ans" in
2259 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2260 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
2261 tmp_n="$n"
2262 tmp_c="$c"
85cad39c 2263 tmp_sh="$sh"
2304df62
AD
2264 . ./config.sh
2265 cp config.sh UU
ecfc5424
AD
2266 n="$tmp_n"
2267 c="$tmp_c"
85cad39c 2268 : Older versions did not always set $sh. Catch re-use of such
2269 : an old config.sh.
2270 case "$sh" in
2271 '') sh="$tmp_sh" ;;
2272 esac
2304df62
AD
2273 hint=previous
2274 ;;
2275 esac
2276fi
2573c5f9 2277. ./UU/checkcc
2304df62
AD
2278if test ! -f config.sh; then
2279 $cat <<EOM
2280
4e2a5f63
AD
2281First time through, eh? I have some defaults handy for some systems
2282that need some extra help getting the Configure answers right:
2304df62
AD
2283
2284EOM
dfe9444c 2285 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
2286 dflt=''
2287 : Half the following guesses are probably wrong... If you have better
7f2de2d2 2288 : tests or hints, please send them to perlbug@perl.org
2304df62 2289 : The metaconfig authors would also appreciate a copy...
a0d0e21e 2290 $test -f /irix && osname=irix
85e6fe83
LW
2291 $test -f /xenix && osname=sco_xenix
2292 $test -f /dynix && osname=dynix
2293 $test -f /dnix && osname=dnix
5f05dabc 2294 $test -f /lynx.os && osname=lynxos
2295 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 2296 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 2297 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 2298 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
2299 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2300 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
2301 $test -d /usr/apollo/bin && osname=apollo
2302 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 2303 $test -d /usr/include/minix && osname=minix
e060872b 2304 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 2305 osname=machten
4633a7c4 2306 if $test -x /sbin/version; then
dfe9444c 2307 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
2308 $sed -e 's/[A-Za-z]$//'`
2309 elif $test -x /usr/etc/version; then
dfe9444c 2310 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
2311 $sed -e 's/[A-Za-z]$//'`
2312 else
2313 osvers="$2.$3"
2314 fi
2315 fi
aaacdc8b
GS
2316
2317 $test -f /sys/posix.dll &&
2318 $test -f /usr/bin/what &&
2319 set X `/usr/bin/what /sys/posix.dll` &&
2320 $test "$3" = UWIN &&
2321 osname=uwin &&
2322 osvers="$5"
2323
2304df62
AD
2324 if $test -f $uname; then
2325 set X $myuname
2326 shift
2327
2304df62 2328 case "$5" in
85e6fe83 2329 fps*) osname=fps ;;
2304df62
AD
2330 mips*)
2331 case "$4" in
85e6fe83
LW
2332 umips) osname=umips ;;
2333 *) osname=mips ;;
2304df62 2334 esac;;
85e6fe83
LW
2335 [23]100) osname=mips ;;
2336 next*) osname=next ;;
ecfc5424 2337 i386*)
c6912327
JH
2338 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2339 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
2340 osname='sco'
2341 osvers=$tmp
2342 elif $test -f /etc/kconfig; then
ecfc5424 2343 osname=isc
bd628c73 2344 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
2345 osvers=4
2346 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2347 osvers=3
2304df62 2348 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 2349 osvers=2
ecfc5424
AD
2350 fi
2351 fi
2000072c 2352 tmp=''
ecfc5424 2353 ;;
c4f23d77
AD
2354 pc*)
2355 if test -n "$DJGPP"; then
2356 osname=dos
2357 osvers=djgpp
2358 fi
2359 ;;
2304df62
AD
2360 esac
2361
2362 case "$1" in
a0d0e21e
LW
2363 aix) osname=aix
2364 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2365 case "$tmp" in
1aef975c 2366 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
2367 '<3240'|'<>3240') osvers=3.2.0 ;;
2368 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2369 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 2370 *) osvers=$tmp;;
a0d0e21e
LW
2371 esac
2372 ;;
aaacdc8b
GS
2373 bsd386) osname=bsd386
2374 osvers=`$uname -r`
2375 ;;
2376 cygwin*) osname=cygwin
2377 osvers="$3"
2378 ;;
23f87696
SZ
2379 *dc.osx) osname=dcosx
2380 osvers="$3"
2381 ;;
a0d0e21e
LW
2382 dnix) osname=dnix
2383 osvers="$3"
2384 ;;
2385 domainos) osname=apollo
2386 osvers="$3"
2387 ;;
2388 dgux) osname=dgux
2389 osvers="$3"
2390 ;;
760ac839 2391 dynixptx*) osname=dynixptx
e58e581d 2392 osvers=`echo "$4"|sed 's/^v//'`
760ac839 2393 ;;
a0d0e21e
LW
2394 freebsd) osname=freebsd
2395 osvers="$3" ;;
2396 genix) osname=genix ;;
2397 hp*) osname=hpux
bfb7748a 2398 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 2399 ;;
a78b0d02 2400 irix*) osname=irix
a0d0e21e
LW
2401 case "$3" in
2402 4*) osvers=4 ;;
2403 5*) osvers=5 ;;
ecfc5424 2404 *) osvers="$3" ;;
a0d0e21e
LW
2405 esac
2406 ;;
2407 linux) osname=linux
2408 case "$3" in
a0d0e21e
LW
2409 *) osvers="$3" ;;
2410 esac
2411 ;;
28e8609d
JH
2412 MiNT) osname=mint
2413 ;;
2414 netbsd*) osname=netbsd
ecfc5424
AD
2415 osvers="$3"
2416 ;;
4e81affe
MM
2417 news-os) osvers="$3"
2418 case "$3" in
2419 4*) osname=newsos4 ;;
2420 *) osname=newsos ;;
2421 esac
2422 ;;
aaacdc8b
GS
2423 next*) osname=next ;;
2424 POSIX-BC | posix-bc ) osname=posix-bc
2425 osvers="$3"
a0d0e21e 2426 ;;
ae3afa4e
TH
2427 powerux | power_ux | powermax_os | powermaxos | \
2428 powerunix | power_unix) osname=powerux
2429 osvers="$3"
2430 ;;
aaacdc8b
GS
2431 qnx) osname=qnx
2432 osvers="$4"
2433 ;;
a0d0e21e
LW
2434 solaris) osname=solaris
2435 case "$3" in
2436 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 2437 *) osvers="$3" ;;
a0d0e21e
LW
2438 esac
2439 ;;
85e6fe83
LW
2440 sunos) osname=sunos
2441 case "$3" in
85e6fe83
LW
2442 5*) osname=solaris
2443 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 2444 *) osvers="$3" ;;
2304df62
AD
2445 esac
2446 ;;
a0d0e21e 2447 titanos) osname=titanos
85e6fe83 2448 case "$3" in
a0d0e21e
LW
2449 1*) osvers=1 ;;
2450 2*) osvers=2 ;;
2451 3*) osvers=3 ;;
2452 4*) osvers=4 ;;
ecfc5424 2453 *) osvers="$3" ;;
2304df62
AD
2454 esac
2455 ;;
85e6fe83 2456 ultrix) osname=ultrix
ecfc5424 2457 osvers="$3"
2304df62 2458 ;;
28757baa 2459 osf1|mls+) case "$5" in
fed7345c
AD
2460 alpha)
2461 osname=dec_osf
2aa76180
JH
2462 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2463 case "$osvers" in
2464 [1-9].[0-9]*) ;;
2465 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2466 esac
ecfc5424
AD
2467 ;;
2468 hp*) osname=hp_osf1 ;;
2469 mips) osname=mips_osf1 ;;
85e6fe83
LW
2470 esac
2471 ;;
0337d152
BG
2472 unixware) osname=svr5
2473 osvers="$4"
2474 ;;
2475 uts) osname=uts
a0d0e21e
LW
2476 osvers="$3"
2477 ;;
85e6fe83 2478 $2) case "$osname" in
2304df62 2479 *isc*) ;;
a0d0e21e 2480 *freebsd*) ;;
5f05dabc 2481 svr*)
a0d0e21e
LW
2482 : svr4.x or possibly later
2483 case "svr$3" in
2484 ${osname}*)
2485 osname=svr$3
2486 osvers=$4
2487 ;;
2488 esac
2489 case "$osname" in
2490 svr4.0)
2491 : Check for ESIX
2492 if test -f /stand/boot ; then
2493 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
2494 if test -n "$INITPROG" -a -f "$INITPROG"; then
2495 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2496 if test -n "$isesix"; then
a0d0e21e
LW
2497 osname=esix4
2498 fi
2499 fi
2500 fi
2501 ;;
2502 esac
2503 ;;
2304df62 2504 *) if test -f /etc/systemid; then
a0d0e21e
LW
2505 osname=sco
2506 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 2507 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 2508 osvers=$1.$2.$3
c4f23d77 2509 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 2510 osvers=$1.$2
c4f23d77 2511 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 2512 osvers=$1
2304df62 2513 fi
a0d0e21e
LW
2514 else
2515 case "$osname" in
2516 '') : Still unknown. Probably a generic Sys V.
2517 osname="sysv"
2518 osvers="$3"
2519 ;;
2520 esac
2304df62
AD
2521 fi
2522 ;;
2523 esac
2524 ;;
a0d0e21e
LW
2525 *) case "$osname" in
2526 '') : Still unknown. Probably a generic BSD.
2527 osname="$1"
2528 osvers="$3"
2529 ;;
2530 esac
2531 ;;
2304df62
AD
2532 esac
2533 else
dfe9444c
AD
2534 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2535 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2536 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2537 osname=news_os
2304df62 2538 fi
dfe9444c 2539 $rm -f UU/kernel.what
8e07c86e
AD
2540 elif test -d c:/.; then
2541 set X $myuname
2542 osname=os2
2543 osvers="$5"
2304df62
AD
2544 fi
2545 fi
85e6fe83 2546
a0d0e21e
LW
2547 : Now look for a hint file osname_osvers, unless one has been
2548 : specified already.
2549 case "$hintfile" in
2550 ''|' ')
1e127011 2551 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 2552 : Also try without trailing minor version numbers.
1e127011
DD
2553 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2554 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2555 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2556 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
2557 case "$file" in
2558 '') dflt=none ;;
2559 *) case "$osvers" in
2560 '') dflt=$file
2561 ;;
dfe9444c 2562 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 2563 dflt=$file
dfe9444c 2564 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 2565 dflt=$xfile
dfe9444c 2566 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 2567 dflt=$xxfile
dfe9444c 2568 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 2569 dflt=$xxxfile
dfe9444c 2570 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 2571 dflt=$xxxxfile
dfe9444c 2572 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
2573 dflt="${osname}"
2574 else
2575 dflt=none
2576 fi
2577 ;;
2578 esac
85e6fe83
LW
2579 ;;
2580 esac
4e2a5f63
AD
2581 if $test -f Policy.sh ; then
2582 case "$dflt" in
2583 *Policy*) ;;
2584 none) dflt="Policy" ;;
2585 *) dflt="Policy $dflt" ;;
2586 esac
2587 fi
85e6fe83 2588 ;;
a0d0e21e 2589 *)
ecfc5424 2590 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 2591 ;;
2304df62 2592 esac
1aef975c 2593
4e2a5f63
AD
2594 if $test -f Policy.sh ; then
2595 $cat <<EOM
2596
2597There's also a Policy hint file available, which should make the
2598site-specific (policy) questions easier to answer.
2599EOM
2600
2601 fi
2602
2304df62
AD
2603 $cat <<EOM
2604
2605You may give one or more space-separated answers, or "none" if appropriate.
4e2a5f63 2606A well-behaved OS will have no hints, so answering "none" or just "Policy"
a3635516 2607is a good thing. DO NOT give a wrong version or a wrong OS.
2304df62
AD
2608
2609EOM
4e2a5f63 2610
2304df62 2611 rp="Which of these apply, if any?"
dfe9444c 2612 . UU/myread
85e6fe83
LW
2613 tans=$ans
2614 for file in $tans; do
4e2a5f63
AD
2615 if $test X$file = XPolicy -a -f Policy.sh; then
2616 . Policy.sh
2617 $cat Policy.sh >> UU/config.sh
2618 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
2619 . $src/hints/$file.sh
2620 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83 2621 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
2622 : nothing
2623 else
85e6fe83
LW
2624 : Give one chance to correct a possible typo.
2625 echo "$file.sh does not exist"
2626 dflt=$file
2627 rp="hint to use instead?"
dfe9444c 2628 . UU/myread
85e6fe83 2629 for file in $ans; do
dfe9444c
AD
2630 if $test -f "$src/hints/$file.sh"; then
2631 . $src/hints/$file.sh
2632 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
2633 elif $test X$ans = X -o X$ans = Xnone ; then
2634 : nothing
2635 else
2636 echo "$file.sh does not exist -- ignored."
2637 fi
2638 done
2304df62
AD
2639 fi
2640 done
85e6fe83 2641
2304df62 2642 hint=recommended
85e6fe83 2643 : Remember our hint file for later.
dfe9444c 2644 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 2645 hintfile="$file"
85e6fe83 2646 else
a0d0e21e 2647 hintfile=''
85e6fe83 2648 fi
2304df62
AD
2649fi
2650cd UU
2651;;
2652*)
2653 echo " "
2654 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
2655 tmp_n="$n"
2656 tmp_c="$c"
2304df62
AD
2657 cd ..
2658 cp $config_sh config.sh 2>/dev/null
a78b0d02 2659 chmod +w config.sh
2304df62
AD
2660 . ./config.sh
2661 cd UU
2662 cp ../config.sh .
ecfc5424
AD
2663 n="$tmp_n"
2664 c="$tmp_c"
2304df62
AD
2665 hint=previous
2666 ;;
2667esac
1aef975c
AD
2668test "$override" && . ./optdef.sh
2669myuname="$newmyuname"
2304df62
AD
2670
2671: Restore computed paths
2672for file in $loclist $trylist; do
2673 eval $file="\$_$file"
2674done
2675
85e6fe83 2676cat << EOM
a0d0e21e 2677
85e6fe83 2678Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2679The default value is probably right if the name rings a bell. Otherwise,
2680since spelling matters for me, either accept the default or answer "none"
2681to leave it blank.
a0d0e21e 2682
85e6fe83 2683EOM
85e6fe83 2684case "$osname" in
a0d0e21e 2685 ''|' ')
85e6fe83 2686 case "$hintfile" in
a0d0e21e 2687 ''|' '|none) dflt=none ;;
ecfc5424 2688 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2689 esac
2690 ;;
2691 *) dflt="$osname" ;;
2692esac
2693rp="Operating system name?"
2694. ./myread
2695case "$ans" in
ecfc5424
AD
2696none) osname='' ;;
2697*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2698esac
8ff267be 2699echo " "
2700case "$osvers" in
2701 ''|' ')
2702 case "$hintfile" in
2703 ''|' '|none) dflt=none ;;
2704 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2705 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2706 case "$dflt" in
2707 ''|' ') dflt=none ;;
2708 esac
2709 ;;
2710 esac
2711 ;;
2712 *) dflt="$osvers" ;;
2713esac
2714rp="Operating system version?"
2715. ./myread
2716case "$ans" in
2717none) osvers='' ;;
2718*) osvers="$ans" ;;
2719esac
2720
02e93a22
JH
2721
2722. ./posthint.sh
2723
2304df62 2724: who configured the system
59b83a6f 2725cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
8ff267be 2726cf_by=`(logname) 2>/dev/null`
dfe9444c
AD
2727case "$cf_by" in
2728"")
8ff267be 2729 cf_by=`(whoami) 2>/dev/null`
dfe9444c
AD
2730 case "$cf_by" in
2731 "") cf_by=unknown ;;
8ff267be 2732 esac ;;
2733esac
2304df62 2734
b4eb6b3d
JH
2735: set up the script used to warn in case of inconsistency
2736cat <<EOS >whoa
2737$startsh
2738EOS
2739cat <<'EOSC' >>whoa
2740dflt=y
2741echo " "
2742echo "*** WHOA THERE!!! ***" >&4
2743echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2744rp=" Keep the $hint value?"
2745. ./myread
2746case "$ans" in
2747y) td=$was; tu=$was;;
2748esac
2749EOSC
2750
2751: function used to set $1 to $val
2752setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2753case "$val$was" in
2754$define$undef) . ./whoa; eval "$var=\$td";;
2755$undef$define) . ./whoa; eval "$var=\$tu";;
2756*) eval "$var=$val";;
2757esac'
2758
2759case "$usethreads" in
2760$define|true|[yY]*) dflt='y';;
2761*) dflt='n';;
2762esac
2763cat <<EOM
2764
2765Perl can be built to take advantage of threads on some systems.
2766To do so, Configure can be run with -Dusethreads.
2767
2768Note that threading is a highly experimental feature, and
2769some known race conditions still remain. If you choose to try
2770it, be very sure to not actually deploy it for production
2771purposes. README.threads has more details, and is required
2772reading if you enable threads.
2773
2774If this doesn't make any sense to you, just accept the default '$dflt'.
2775EOM
2776rp='Build a threading Perl?'
2777. ./myread
2778case "$ans" in
2779y|Y) val="$define" ;;
2780*) val="$undef" ;;
2781esac
2782set usethreads
2783eval $setvar
2784
2785case "$usethreads" in
2786$define)
2787 $cat <<EOM
2788
2789As of 5.5.640, Perl has two different internal threading implementations,
2790the 5.005 version (5005threads) and an interpreter-based version
2791(ithreads) that has one interpreter per thread. Both are very
2792experimental. This arrangement exists to help developers work out
2793which one is better.
2794
2795If you're a casual user, you probably don't want interpreter-threads
2796at this time. There doesn't yet exist a way to create threads from
2797within Perl in this model, i.e., "use Thread;" will NOT work.
2798EOM
2799 : Default to ithreads unless overridden on command line or with
2800 : old config.sh
2801 dflt='y'
2802 case "$use5005threads" in
2803 $define|true|[yY]*) dflt='n';;
2804 esac
2805 case "$useithreads" in
2806 $undef|false|[nN]*) dflt='n';;
2807 esac
2808 rp='Use interpreter-based ithreads?'
2809 . ./myread
2810 case "$ans" in
2811 y|Y) val="$define" ;;
2812 *) val="$undef" ;;
2813 esac
2814 set useithreads
2815 eval $setvar
2816 : Now set use5005threads to the opposite value.
2817 case "$useithreads" in
2818 $define) val="$undef" ;;
2819 *) val="$define" ;;
2820 esac
2821 set use5005threads
2822 eval $setvar
2823 ;;
2824*)
2825 useithreads="$undef"
2826 use5005threads="$undef"
2827 ;;
2828esac
2829
2830case "$d_oldpthreads" in
2831'') : Configure tests would be welcome here. For now, assume undef.
2832 val="$undef" ;;
2833*) val="$d_oldpthreads" ;;
2834esac
2835set d_oldpthreads
2836eval $setvar
2837
2838
2839case "$usethreads" in
2840"$define"|true|[yY]*)
2841: Look for a hint-file generated 'call-back-unit'. If the
2842: user has specified that a threading perl is to be built,
2843: we may need to set or change some other defaults.
2844 if $test -f usethreads.cbu; then
2845 echo "Your platform has some specific hints for threaded builds, using them..."
2846 . ./usethreads.cbu
2847 else
2848 $cat <<EOM
2849(Your platform doesn't have any specific hints for threaded builds.
2850 Assuming POSIX threads, then.)
2851EOM
2852 fi
2853 ;;
2854esac
2855
2856cat <<EOM
2857
2858Perl can be built so that multiple Perl interpreters can coexist
2859within the same Perl executable.
2860EOM
2861
2862case "$useithreads" in
2863$define)
2864 cat <<EOM
2865This multiple interpreter support is required for interpreter-based threads.
2866EOM
2867 val="$define"
2868 ;;
2869*) case "$usemultiplicity" in
2870 $define|true|[yY]*) dflt='y';;
2871 *) dflt='n';;
2872 esac
2873 echo " "
2874 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2875 rp='Build Perl for multiplicity?'
2876 . ./myread
2877 case "$ans" in
2878 y|Y) val="$define" ;;
2879 *) val="$undef" ;;
2880 esac
2881 ;;
2882esac
2883set usemultiplicity
2884eval $setvar
2885
e5e20432
JH
2886: make some quick guesses about what we are up against
2887echo " "
2888$echo $n "Hmm... $c"
2889echo exit 1 >bsd
2890echo exit 1 >usg
2891echo exit 1 >v7
2892echo exit 1 >osf1
2893echo exit 1 >eunice
2894echo exit 1 >xenix
2895echo exit 1 >venix
2896echo exit 1 >os2
2897d_bsd="$undef"
2898$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2899if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2900then
2901 echo "Looks kind of like an OSF/1 system, but we'll see..."
2902 echo exit 0 >osf1
2903elif test `echo abc | tr a-z A-Z` = Abc ; then
2904 xxx=`./loc addbib blurfl $pth`
2905 if $test -f $xxx; then
2906 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2907 echo exit 0 >bsd
2908 echo exit 0 >usg
2909 else
2910 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2911 echo "Looks kind of like an extended USG system, but we'll see..."
2912 else
2913 echo "Looks kind of like a USG system, but we'll see..."
2914 fi
2915 echo exit 0 >usg
2916 fi
2917elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2918 echo "Looks kind of like a BSD system, but we'll see..."
2919 d_bsd="$define"
2920 echo exit 0 >bsd
2921else
2922 echo "Looks kind of like a Version 7 system, but we'll see..."
2923 echo exit 0 >v7
2924fi
2925case "$eunicefix" in
2926*unixtovms*)
2927 $cat <<'EOI'
2928There is, however, a strange, musty smell in the air that reminds me of
2929something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2930EOI
2931 echo exit 0 >eunice
2932 d_eunice="$define"
2933: it so happens the Eunice I know will not run shell scripts in Unix format
2934 ;;
2935*)
2936 echo " "
2937 echo "Congratulations. You aren't running Eunice."
2938 d_eunice="$undef"
2939 ;;
2940esac
2941: Detect OS2. The p_ variable is set above in the Head.U unit.
3d5d58b1
JH
2942: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2943: semicolon as a patch separator
e5e20432
JH
2944case "$p_" in
2945:) ;;
2946*)
2947 $cat <<'EOI'
2948I have the feeling something is not exactly right, however...don't tell me...
2949lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3d5d58b1 2950(Or you may be running DOS with DJGPP.)
e5e20432
JH
2951EOI
2952 echo exit 0 >os2
2953 ;;
2954esac
2955if test -f /xenix; then
2956 echo "Actually, this looks more like a XENIX system..."
2957 echo exit 0 >xenix
2958 d_xenix="$define"
2959else
2960 echo " "
2961 echo "It's not Xenix..."
2962 d_xenix="$undef"
2963fi
2964chmod +x xenix
2965$eunicefix xenix
2966if test -f /venix; then
2967 echo "Actually, this looks more like a VENIX system..."
2968 echo exit 0 >venix
2969else
2970 echo " "
2971 if ./xenix; then
2972 : null
2973 else
2974 echo "Nor is it Venix..."
2975 fi
2976fi
2977chmod +x bsd usg v7 osf1 eunice xenix venix os2
2978$eunicefix bsd usg v7 osf1 eunice xenix venix os2
2979$rm -f foo
2980
5869b1f1
JH
2981case "$cc" in
2982'') dflt=cc;;
2983*) dflt="$cc";;
2984esac
2985rp="Use which C compiler?"
2986. ./myread
2987cc="$ans"
e5e20432
JH
2988: Look for a hint-file generated 'call-back-unit'. Now that the
2989: user has specified the compiler, we may need to set or change some
2990: other defaults.
2991if $test -f cc.cbu; then
2992 . ./cc.cbu
2993fi
2573c5f9 2994. ./checkcc
8a27cf78 2995
e5e20432
JH
2996echo " "
2997echo "Checking for GNU cc in disguise and/or its version number..." >&4
2998$cat >gccvers.c <<EOM
2999#include <stdio.h>
3000int main() {
3001#ifdef __GNUC__
3002#ifdef __VERSION__
3003 printf("%s\n", __VERSION__);
3004#else
3005 printf("%s\n", "1");
3006#endif
3007#endif
3008 exit(0);
3009}
3010EOM
bf0c440f 3011if $cc $ldflags -o gccvers gccvers.c; then
e5e20432
JH
3012 gccversion=`./gccvers`
3013 case "$gccversion" in
3014 '') echo "You are not using GNU cc." ;;
fc68435e 3015 *) echo "You are using GNU cc $gccversion."
e723fc21 3016 ccname=gcc
fc68435e 3017 ;;
e5e20432
JH
3018 esac
3019else
3020 echo " "
3021 echo "*** WHOA THERE!!! ***" >&4
3022 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3023 case "$knowitall" in
3024 '')
3025 echo " You'd better start hunting for one and let me know about it." >&4
3026 exit 1
3027 ;;
3028 esac
3029fi
3030$rm -f gccvers*
3031case "$gccversion" in
30321*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3033esac
5b463ca7
KS
3034case "$gccversion" in
3035'') gccosandvers='' ;;
10b4ebb5
JH
3036*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3037 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3038 gccshortvers=''
5b463ca7 3039 case "$gccosandvers" in
02903077
JH
3040 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3041 $osname$osvers) ;; # looking good
5b463ca7
KS
3042 $osname*) cat <<EOM >&4
3043
3044*** WHOA THERE!!! ***
3045
3046 Your gcc has not been compiled for the exact release of
3047 your operating system ($gccosandvers versus $osname$osvers).
3048
3049 In general it is a good idea to keep gcc synchronized with
3050 the operating system because otherwise serious problems
3051 may ensue when trying to compile software, like Perl.
3052
3053 I'm trying to be optimistic here, though, and will continue.
3054 If later during the configuration and build icky compilation
02903077
JH
3055 problems appear (headerfile conflicts being the most common
3056 manifestation), I suggest reinstalling the gcc to match
5b463ca7
KS
3057 your operating system release.
3058
3059EOM
3060 ;;
81575342 3061 *) gccosandvers='' ;; # failed to parse, better be silent
5b463ca7
KS
3062 esac
3063 ;;
3064esac
e723fc21
JH
3065case "$ccname" in
3066'') ccname="$cc" ;;
3067esac
e5e20432 3068
8a27cf78
JH
3069: see how we invoke the C preprocessor
3070echo " "
3071echo "Now, how can we feed standard input to your C preprocessor..." >&4
3072cat <<'EOT' >testcpp.c
3073#define ABC abc
3074#define XYZ xyz
3075ABC.XYZ
3076EOT
3077cd ..
3078if test ! -f cppstdin; then
3079 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3080 # AIX cc -E doesn't show the absolute headerfile
3081 # locations but we'll cheat by using the -M flag.
3082 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
3083 else
3084 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3085 fi
3086else
3087 echo "Keeping your $hint cppstdin wrapper."
3088fi
3089chmod 755 cppstdin
3090wrapper=`pwd`/cppstdin
3091ok='false'
3092cd UU
3093
3094if $test "X$cppstdin" != "X" && \
3095 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3096 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3097then
3098 echo "You used to use $cppstdin $cppminus so we'll use that again."
3099 case "$cpprun" in
3100 '') echo "But let's see if we can live without a wrapper..." ;;
3101 *)
3102 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3103 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3104 then
3105 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3106 ok='true'
3107 else
3108 echo "(However, $cpprun $cpplast does not work, let's see...)"
3109 fi
3110 ;;
3111 esac
3112else
3113 case "$cppstdin" in
3114 '') ;;
3115 *)
3116 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3117 ;;
3118 esac
3119fi
3120
3121if $ok; then
3122 : nothing
3123elif echo 'Maybe "'"$cc"' -E" will work...'; \
3124 $cc -E <testcpp.c >testcpp.out 2>&1; \
3125 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3126 echo "Yup, it does."
3127 x_cpp="$cc -E"
3128 x_minus='';
3129elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3130 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3131 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3132 echo "Yup, it does."
3133 x_cpp="$cc -E"
3134 x_minus='-';
3135elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3136 $cc -P <testcpp.c >testcpp.out 2>&1; \
3137 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3138 echo "Yipee, that works!"
3139 x_cpp="$cc -P"
3140 x_minus='';
3141elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3142 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3143 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3144 echo "At long last!"
3145 x_cpp="$cc -P"
3146 x_minus='-';
3147elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3148 $cpp <testcpp.c >testcpp.out 2>&1; \
3149 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3150 echo "It works!"
3151 x_cpp="$cpp"
3152 x_minus='';
3153elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3154 $cpp - <testcpp.c >testcpp.out 2>&1; \
3155 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3156 echo "Hooray, it works! I was beginning to wonder."
3157 x_cpp="$cpp"
3158 x_minus='-';
3159elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3160 $wrapper <testcpp.c >testcpp.out 2>&1; \
3161 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3162 x_cpp="$wrapper"
3163 x_minus=''
3164 echo "Eureka!"
3165else
3166 dflt=''
3167 rp="No dice. I can't find a C preprocessor. Name one:"
3168 . ./myread
3169 x_cpp="$ans"
3170 x_minus=''
3171 $x_cpp <testcpp.c >testcpp.out 2>&1
3172 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3173 echo "OK, that will do." >&4
3174 else
3175echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3176 exit 1
3177 fi
3178fi
3179
3180case "$ok" in
3181false)
3182 cppstdin="$x_cpp"
3183 cppminus="$x_minus"
3184 cpprun="$x_cpp"
3185 cpplast="$x_minus"
3186 set X $x_cpp
3187 shift
3188 case "$1" in
3189 "$cpp")
3190 echo "Perhaps can we force $cc -E using a wrapper..."
3191 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3192 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3193 then
3194 echo "Yup, we can."
3195 cppstdin="$wrapper"
3196 cppminus='';
3197 else
3198 echo "Nope, we'll have to live without it..."
3199 fi
3200 ;;
3201 esac
3202 case "$cpprun" in
3203 "$wrapper")
3204 cpprun=''
3205 cpplast=''
3206 ;;
3207 esac
3208 ;;
3209esac
3210
3211case "$cppstdin" in
3212"$wrapper"|'cppstdin') ;;
3213*) $rm -f $wrapper;;
3214esac
3215$rm -f testcpp.c testcpp.out
3216
bd9b35c9
JH
3217: decide how portable to be. Allow command line overrides.
3218case "$d_portable" in
3219"$undef") ;;
3220*) d_portable="$define" ;;
104d25b7 3221esac
85ab1d1d 3222
bd9b35c9
JH
3223: set up shell script to do ~ expansion
3224cat >filexp <<EOSS
3225$startsh
3226: expand filename
3227case "\$1" in
3228 ~/*|~)
3229 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3230 ;;
3231 ~*)
3232 if $test -f /bin/csh; then
3233 /bin/csh -f -c "glob \$1"
3234 failed=\$?
3235 echo ""
3236 exit \$failed
e5e20432 3237 else
bd9b35c9
JH
3238 name=\`$expr x\$1 : '..\([^/]*\)'\`
3239 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3240 if $test ! -d "\$dir"; then
3241 me=\`basename \$0\`
3242 echo "\$me: can't locate home directory for: \$name" >&2
3243 exit 1
3244 fi
3245 case "\$1" in
3246 */*)
3247 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3248 ;;
3249 *)
3250 echo \$dir
e5e20432
JH
3251 ;;
3252 esac
3253 fi
b691c02f 3254 ;;
4633a7c4 3255*)
bd9b35c9 3256 echo \$1
2304df62
AD
3257 ;;
3258esac
4633a7c4
LW
3259EOSS
3260chmod +x filexp
3261$eunicefix filexp
2304df62
AD
3262
3263: now set up to get a file name
28757baa 3264cat <<EOS >getfile
3265$startsh
3266EOS
3267cat <<'EOSC' >>getfile
2304df62
AD
3268tilde=''
3269fullpath=''
3270already=''
3271skip=''
3272none_ok=''
3273exp_file=''
a0d0e21e 3274nopath_ok=''
2304df62
AD
3275orig_rp="$rp"
3276orig_dflt="$dflt"
b233458b
JH
3277case "$gfpth" in
3278'') gfpth='.' ;;
3279esac
2304df62
AD
3280
3281case "$fn" in
ecfc5424 3282*\(*)
28e8609d 3283 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
ecfc5424
AD
3284 fn=`echo $fn | sed 's/(.*)//'`
3285 ;;
3286esac
3287
3288case "$fn" in
a0d0e21e
LW
3289*:*)
3290 loc_file=`expr $fn : '.*:\(.*\)'`
3291 fn=`expr $fn : '\(.*\):.*'`
3292 ;;
3293esac
3294
3295case "$fn" in
2304df62
AD
3296*~*) tilde=true;;
3297esac
3298case "$fn" in
3299*/*) fullpath=true;;
3300esac
3301case "$fn" in
3302*+*) skip=true;;
3303esac
3304case "$fn" in
3305*n*) none_ok=true;;
3306esac
3307case "$fn" in
3308*e*) exp_file=true;;
3309esac
a0d0e21e
LW
3310case "$fn" in
3311*p*) nopath_ok=true;;
3312esac
2304df62
AD
3313
3314case "$fn" in
3315*f*) type='File';;
3316*d*) type='Directory';;
a0d0e21e 3317*l*) type='Locate';;
2304df62
AD
3318esac
3319
3320what="$type"
3321case "$what" in
3322Locate) what='File';;
3323esac
3324
3325case "$exp_file" in
3326'')
3327 case "$d_portable" in
3328 "$define") ;;
3329 *) exp_file=true;;
3330 esac
3331 ;;
3332esac
3333
3334cd ..
3335while test "$type"; do
3336 redo=''
3337 rp="$orig_rp"
3338 dflt="$orig_dflt"
3339 case "$tilde" in
3340 true) rp="$rp (~name ok)";;
3341 esac
3342 . UU/myread
ecfc5424
AD
3343 if test -f UU/getfile.ok && \
3344 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3345 then
3346 value="$ans"
3347 ansexp="$ans"
3348 break
3349 fi
2304df62
AD
3350 case "$ans" in
3351 none)
3352 value=''
3353 ansexp=''
3354 case "$none_ok" in
3355 true) type='';;
3356 esac
3357 ;;
3358 *)
3359 case "$tilde" in
3360 '') value="$ans"
3361 ansexp="$ans";;
3362 *)
3363 value=`UU/filexp $ans`
3364 case $? in
3365 0)
3366 if test "$ans" != "$value"; then
ecfc5424 3367 echo "(That expands to $value on this system.)"
2304df62
AD
3368 fi
3369 ;;
3370 *) value="$ans";;
3371 esac
3372 ansexp="$value"
3373 case "$exp_file" in
3374 '') value="$ans";;
3375 esac
3376 ;;
3377 esac
3378 case "$fullpath" in
3379 true)
3380 case "$ansexp" in
3381 /*) value="$ansexp" ;;
23da6c43 3382 [a-zA-Z]:/*) value="$ansexp" ;;
2304df62
AD
3383 *)
3384 redo=true
3385 case "$already" in
3386 true)
3387 echo "I shall only accept a full path name, as in /bin/ls." >&4
3388 echo "Use a ! shell escape if you wish to check pathnames." >&4
3389 ;;
3390 *)
3391 echo "Please give a full path name, starting with slash." >&4
3392 case "$tilde" in
3393 true)
3394 echo "Note that using ~name is ok provided it expands well." >&4
3395 already=true
3396 ;;
3397 esac
3398 esac
3399 ;;
3400 esac
3401 ;;
3402 esac
3403 case "$redo" in
3404 '')
3405 case "$type" in
3406 File)
b233458b
JH
3407 for fp in $gfpth; do
3408 if test "X$fp" = X.; then
3409 pf="$ansexp"
3410 else
3411 pf="$fp/$ansexp"
3412 fi
3413 if test -f "$pf"; then
3414 type=''
3415 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3416 then
3417 echo "($value is not a plain file, but that's ok.)"
3418 type=''
3419 fi
3420 if test X"$type" = X; then
3421 value="$pf"
3422 break
3423 fi
3424 done
2304df62
AD
3425 ;;
3426 Directory)
b233458b
JH
3427 for fp in $gfpth; do
3428 if test "X$fp" = X.; then
f78bfc9c
JH
3429 dir="$ans"
3430 direxp="$ansexp"
b233458b 3431 else
dd858076 3432 dir="$fp/$ansexp"
f78bfc9c 3433 direxp="$fp/$ansexp"
b233458b 3434 fi
f78bfc9c 3435 if test -d "$direxp"; then
b233458b 3436 type=''
f78bfc9c 3437 value="$dir"
b233458b
JH
3438 break
3439 fi
3440 done
2304df62
AD
3441 ;;
3442 Locate)
40000a8c 3443 if test -d "$ansexp"; then
a0d0e21e
LW
3444 echo "(Looking for $loc_file in directory $value.)"
3445 value="$value/$loc_file"
40000a8c 3446 ansexp="$ansexp/$loc_file"
2304df62 3447 fi
40000a8c 3448 if test -f "$ansexp"; then
2304df62
AD
3449 type=''
3450 fi
a0d0e21e
LW
3451 case "$nopath_ok" in
3452 true) case "$value" in
3453 */*) ;;
3454 *) echo "Assuming $value will be in people's path."
3455 type=''
3456 ;;
3457 esac
3458 ;;
3459 esac
2304df62
AD
3460 ;;
3461 esac
3462
3463 case "$skip" in
3464 true) type='';
3465 esac
3466
3467 case "$type" in
3468 '') ;;
3469 *)
3470 if test "$fastread" = yes; then
3471 dflt=y
3472 else
3473 dflt=n
3474 fi
3475 rp="$what $value doesn't exist. Use that name anyway?"
3476 . UU/myread
3477 dflt=''
3478 case "$ans" in
3479 y*) type='';;
3480 *) echo " ";;
3481 esac
3482 ;;
3483 esac
3484 ;;
3485 esac
3486 ;;
3487 esac
3488done
3489cd UU
3490ans="$value"
3491rp="$orig_rp"
3492dflt="$orig_dflt"
ecfc5424 3493rm -f getfile.ok
b233458b 3494test "X$gfpthkeep" != Xy && gfpth=""
2304df62
AD
3495EOSC
3496
bd9b35c9
JH
3497: What should the include directory be ?
3498echo " "
3499$echo $n "Hmm... $c"
3500dflt='/usr/include'
3501incpath=''
3502mips_type=''
3503if $test -f /bin/mips && /bin/mips; then
3504 echo "Looks like a MIPS system..."
3505 $cat >usr.c <<'EOCP'
3506#ifdef SYSTYPE_BSD43
3507/bsd43
3508#endif
3509EOCP
8a27cf78 3510 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
bd9b35c9
JH
3511 dflt='/bsd43/usr/include'
3512 incpath='/bsd43'
3513 mips_type='BSD 4.3'
3514 else
3515 mips_type='System V'
3516 fi
3517 $rm -f usr.c usr.out
3518 echo "and you're compiling with the $mips_type compiler and libraries."
3519 xxx_prompt=y
3520 echo "exit 0" >mips
3521else
3522 echo "Doesn't look like a MIPS system."
3523 xxx_prompt=n
3524 echo "exit 1" >mips
3525fi
3526chmod +x mips
3527$eunicefix mips
3528case "$usrinc" in
3529'') ;;
3530*) dflt="$usrinc";;
3531esac
3532case "$xxx_prompt" in
3533y) fn=d/
3534 echo " "
3535 rp='Where are the include files you want to use?'
3536 . ./getfile
3537 usrinc="$ans"
8e07c86e 3538 ;;
bd9b35c9 3539*) usrinc="$dflt"
8e07c86e
AD
3540 ;;
3541esac
2304df62 3542
bd9b35c9
JH
3543: Set private lib path
3544case "$plibpth" in
3545'') if ./mips; then
3546 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3547 fi;;
3548esac
3549case "$libpth" in
3550' ') dlist='';;
3551'') dlist="$loclibpth $plibpth $glibpth";;
3552*) dlist="$libpth";;
3553esac
3554
3555: Now check and see which directories actually exist, avoiding duplicates
3556libpth=''
3557for xxx in $dlist
3558do
3559 if $test -d $xxx; then
3560 case " $libpth " in
3561 *" $xxx "*) ;;
3562 *) libpth="$libpth $xxx";;
3563 esac
3564 fi
3565done
3566$cat <<'EOM'
3567
3568Some systems have incompatible or broken versions of libraries. Among
3569the directories listed in the question below, please remove any you
3570know not to be holding relevant libraries, and add any that are needed.
3571Say "none" for none.
8e07c86e
AD
3572
3573EOM
bd9b35c9
JH
3574case "$libpth" in
3575'') dflt='none';;
8e07c86e 3576*)
bd9b35c9
JH
3577 set X $libpth
3578 shift
3579 dflt=${1+"$@"}
8e07c86e 3580 ;;
a0d0e21e 3581esac
bd9b35c9
JH
3582rp="Directories to use for library searches?"
3583. ./myread
3584case "$ans" in
3585none) libpth=' ';;
3586*) libpth="$ans";;
3587esac
a0d0e21e 3588
bd9b35c9
JH
3589: compute shared library extension
3590case "$so" in
3591'')
3592 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3593 dflt='sl'
dd4e71fd 3594 else
bd9b35c9 3595 dflt='so'
dd4e71fd
JH
3596 fi
3597 ;;
bd9b35c9 3598*) dflt="$so";;
dd4e71fd 3599esac
dd4e71fd
JH
3600$cat <<EOM
3601
bd9b35c9 3602On some systems, shared libraries may be available. Answer 'none' if
7f95ee77 3603you want to suppress searching of shared libraries for the remainder
bd9b35c9 3604of this configuration.
dd4e71fd
JH
3605
3606EOM
bd9b35c9
JH
3607rp='What is the file extension used for shared libraries?'
3608. ./myread
3609so="$ans"
dd4e71fd 3610
bd9b35c9
JH
3611: Define several unixisms.
3612: Hints files or command line option can be used to override them.
3613: The convoluted testing is in case hints files set either the old
3614: or the new name.
3615case "$_exe" in
3616'') case "$exe_ext" in
3617 '') ;;
3618 *) _exe="$exe_ext" ;;
dd4e71fd 3619 esac
bd9b35c9 3620 ;;
bfb7748a 3621esac
bd9b35c9
JH
3622case "$_a" in
3623'') case "$lib_ext" in
3624 '') _a='.a';;
3625 *) _a="$lib_ext" ;;
dd4e71fd
JH
3626 esac
3627 ;;
dd4e71fd 3628esac
bd9b35c9
JH
3629case "$_o" in
3630'') case "$obj_ext" in
3631 '') _o='.o';;
3632 *) _o="$obj_ext";;
3633 esac
3634 ;;
3635esac
3636case "$p_" in
3637'') case "$path_sep" in
3638 '') p_=':';;
3639 *) p_="$path_sep";;
3640 esac
3641 ;;
3642esac
3643exe_ext=$_exe
3644lib_ext=$_a
3645obj_ext=$_o
3646path_sep=$p_
dd4e71fd 3647
b4eb6b3d
JH
3648: Which makefile gets called first. This is used by make depend.
3649case "$firstmakefile" in
3650'') firstmakefile='makefile';;
4633a7c4 3651esac
4633a7c4 3652
0f0995ae
JH
3653case "$usesocks" in
3654$define|true|[yY]*) dflt='y';;
3655*) dflt='n';;
3656esac
bd9b35c9 3657cat <<EOM
4633a7c4 3658
bd9b35c9
JH
3659Perl can be built to use the SOCKS proxy protocol library. To do so,
3660Configure must be run with -Dusesocks.
4633a7c4 3661
0f0995ae 3662If this doesn't make any sense to you, just accept the default '$dflt'.
bd9b35c9 3663EOM
bd9b35c9
JH
3664rp='Build Perl for SOCKS?'
3665. ./myread
3666case "$ans" in
3667y|Y) val="$define" ;;
3668*) val="$undef" ;;
3669esac
3670set usesocks
3671eval $setvar
3672
3673: Looking for optional libraries
3674echo " "
3675echo "Checking for optional libraries..." >&4
3676case "$libs" in
3677' '|'') dflt='';;
3678*) dflt="$libs";;
3679esac
3680case "$libswanted" in
3681'') libswanted='c_s';;
3682esac
3683case "$usesocks" in
923fc586 3684"$define") libswanted="$libswanted socks5 socks5_sh" ;;
8e07c86e 3685esac
68435ea7
JH
3686libsfound=''
3687libsfiles=''
3688libsdirs=''
13b3f787
JH
3689libspath=''
3690for thisdir in $libpth $xlibpth; do
3691 test -d $thisdir && libspath="$libspath $thisdir"
3692done
bd9b35c9 3693for thislib in $libswanted; do
13b3f787 3694 for thisdir in $libspath; do
f7dd4e7f
JH
3695 xxx=''
3696 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3697 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3698 $test -f "$xxx" && eval $libscheck
3699 $test -f "$xxx" && libstyle=shared
3700 fi
3701 if test ! -f "$xxx"; then
3702 xxx=$thisdir/lib$thislib.$so
3703 $test -f "$xxx" && eval $libscheck
3704 $test -f "$xxx" && libstyle=shared
3705 fi
3706 if test ! -f "$xxx"; then
3707 xxx=$thisdir/lib$thislib$_a
3708 $test -f "$xxx" && eval $libscheck
3709 $test -f "$xxx" && libstyle=static
3710 fi
3711 if test ! -f "$xxx"; then
3712 xxx=$thisdir/$thislib$_a
3713 $test -f "$xxx" && eval $libscheck
3714 $test -f "$xxx" && libstyle=static
3715 fi
3716 if test ! -f "$xxx"; then
3717 xxx=$thisdir/lib${thislib}_s$_a
3718 $test -f "$xxx" && eval $libscheck
3719 $test -f "$xxx" && libstyle=static
09ea5ba9 3720 $test -f "$xxx" && thislib=${thislib}_s
f7dd4e7f
JH
3721 fi
3722 if test ! -f "$xxx"; then
3723 xxx=$thisdir/Slib$thislib$_a
3724 $test -f "$xxx" && eval $libscheck
3725 $test -f "$xxx" && libstyle=static
3726 fi
3727 if $test -f "$xxx"; then
43999f95 3728 case "$libstyle" in
f7dd4e7f
JH
3729 shared) echo "Found -l$thislib (shared)." ;;
3730 static) echo "Found -l$thislib." ;;
3731 *) echo "Found -l$thislib ($libstyle)." ;;
43999f95 3732 esac
bd9b35c9
JH
3733 case " $dflt " in
3734 *"-l$thislib "*);;
f7dd4e7f 3735 *) dflt="$dflt -l$thislib"
43999f95
JH
3736 libsfound="$libsfound $xxx"
3737 yyy=`basename $xxx`
3738 libsfiles="$libsfiles $yyy"
1e127011 3739 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
43999f95
JH
3740 case " $libsdirs " in
3741 *" $yyy "*) ;;
3742 *) libsdirs="$libsdirs $yyy" ;;
3743 esac
3744 ;;
bd9b35c9 3745 esac
f7dd4e7f
JH
3746 break
3747 fi
3748 done
3749 if $test ! -f "$xxx"; then
3750 echo "No -l$thislib."
bd9b35c9
JH
3751 fi
3752done
3753set X $dflt
3754shift
3755dflt="$*"
3756case "$libs" in
3757'') dflt="$dflt";;
3758*) dflt="$libs";;
3759esac
3760case "$dflt" in
3761' '|'') dflt='none';;
3762esac
4633a7c4 3763
bd9b35c9 3764$cat <<EOM
4633a7c4 3765
bd9b35c9
JH
3766In order to compile $package on your machine, a number of libraries
3767are usually needed. Include any other special libraries here as well.
3768Say "none" for none. The default list is almost always right.
8e07c86e 3769EOM
8e07c86e 3770
bd9b35c9
JH
3771echo " "
3772rp="What libraries to use?"
3773. ./myread
3774case "$ans" in
3775none) libs=' ';;
3776*) libs="$ans";;
3777esac
d71b2b6b 3778
bd9b35c9
JH
3779: determine optimization, if desired, or use for debug flag also
3780case "$optimize" in
3781' '|$undef) dflt='none';;
3782'') dflt='-O';;
3783*) dflt="$optimize";;
3784esac
3785$cat <<EOH
d71b2b6b 3786
bd9b35c9
JH
3787By default, $package compiles with the -O flag to use the optimizer.
3788Alternately, you might want to use the symbolic debugger, which uses
3789the -g flag (on traditional Unix systems). Either flag can be
3790specified here. To use neither flag, specify the word "none".
d71b2b6b 3791
bd9b35c9
JH
3792EOH
3793rp="What optimizer/debugger flag should be used?"
3794. ./myread
3795optimize="$ans"
3796case "$optimize" in
3797'none') optimize=" ";;
3798esac
3799
3800dflt=''
3801: We will not override a previous value, but we might want to
3802: augment a hint file
3803case "$hint" in
3804default|recommended)
3805 case "$gccversion" in
3806 1*) dflt='-fpcc-struct-return' ;;
d71b2b6b 3807 esac
bd9b35c9
JH
3808 case "$optimize" in
3809 *-g*) dflt="$dflt -DDEBUGGING";;
d71b2b6b 3810 esac
bd9b35c9
JH
3811 case "$gccversion" in
3812 2*) if test -d /etc/conf/kconfig.d &&
3813 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3814 then
3815 dflt="$dflt -posix"
3816 fi
f0d04425 3817 ;;
bd9b35c9
JH
3818 esac
3819 case "$gccversion" in
3820 1*) ;;
3821 2.[0-8]*) ;;
3822 ?*) echo " "
3823 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3824 echo 'int main(void) { return 0; }' > gcctest.c
3825 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3826 echo "Yes, it does." 2>&1
3827 case "$ccflags" in
3828 *strict-aliasing*)
3829 echo "Leaving current flags $ccflags alone." 2>&1
3830 ;;
3831 *) dflt="$dflt -fno-strict-aliasing" ;;
3832 esac
3833 else
3834 echo "Nope, it doesn't, but that's ok." 2>&1
3835 fi
f0d04425 3836 ;;
e5e20432
JH
3837 esac
3838 ;;
3839esac
3840
bd9b35c9
JH
3841case "$mips_type" in
3842*BSD*|'') inclwanted="$locincpth $usrinc";;
3843*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3844esac
3845for thisincl in $inclwanted; do
3846 if $test -d $thisincl; then
3847 if $test x$thisincl != x$usrinc; then
3848 case "$dflt" in
422af00a
LC
3849 *" -I$thisincl "*);;
3850 *) dflt="$dflt -I$thisincl ";;
bd9b35c9
JH
3851 esac
3852 fi
3853 fi
3854done
40a7a20a 3855
bd9b35c9
JH
3856inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3857 xxx=true;
3858elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3859 xxx=true;
3860else
3861 xxx=false;
3862fi;
3863if $xxx; then
3864 case "$dflt" in
3865 *$2*);;
3866 *) dflt="$dflt -D$2";;
3867 esac;
3868fi'
40a7a20a 3869
bd9b35c9 3870set signal.h LANGUAGE_C; eval $inctest
40a7a20a 3871
bd9b35c9
JH
3872case "$usesocks" in
3873$define)
3874 ccflags="$ccflags -DSOCKS"
3875 ;;
3876esac
40a7a20a 3877
bd9b35c9
JH
3878case "$hint" in
3879default|recommended) dflt="$ccflags $dflt" ;;
3880*) dflt="$ccflags";;
3881esac
40a7a20a 3882
bd9b35c9
JH
3883case "$dflt" in
3884''|' ') dflt=none;;
3885esac
422af00a 3886
bd9b35c9 3887$cat <<EOH
40a7a20a 3888
bd9b35c9
JH
3889Your C compiler may want other flags. For this question you should include
3890-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3891but you should NOT include libraries or ld flags like -lwhatever. If you
3892want $package to honor its debug switch, you should include -DDEBUGGING here.
3893Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
40a7a20a 3894
bd9b35c9 3895To use no flags, specify the word "none".
40a7a20a 3896
bd9b35c9
JH
3897EOH
3898set X $dflt
3899shift
3900dflt=${1+"$@"}
3901rp="Any additional cc flags?"
3902. ./myread
3903case "$ans" in
3904none) ccflags='';;
3905*) ccflags="$ans";;
3906esac
8e07c86e 3907
bd9b35c9
JH
3908: the following weeds options from ccflags that are of no interest to cpp
3909cppflags="$ccflags"
3910case "$gccversion" in
39111*) cppflags="$cppflags -D__GNUC__"
4633a7c4 3912esac
bd9b35c9
JH
3913case "$mips_type" in
3914'');;
3915*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3916esac
3917case "$cppflags" in
3918'');;
3919*)
3920 echo " "
3921 echo "Let me guess what the preprocessor flags are..." >&4
3922 set X $cppflags
3923 shift
3924 cppflags=''
3925 $cat >cpp.c <<'EOM'
3926#define BLURFL foo
8e07c86e 3927
bd9b35c9
JH
3928BLURFL xx LFRULB
3929EOM
3930 previous=''
3931 for flag in $*
3932 do
3933 case "$flag" in
3934 -*) ftry="$flag";;
3935 *) ftry="$previous $flag";;
3936 esac
3937 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3938 >cpp1.out 2>/dev/null && \
3939 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3940 >cpp2.out 2>/dev/null && \
3941 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3942 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3943 then
3944 cppflags="$cppflags $ftry"
3945 previous=''
3946 else
3947 previous="$flag"
3948 fi
3949 done
3950 set X $cppflags
3951 shift
3952 cppflags=${1+"$@"}
3953 case "$cppflags" in
3954 *-*) echo "They appear to be: $cppflags";;
3955 esac
3956 $rm -f cpp.c cpp?.out
2afac517 3957 ;;
3958esac
8e07c86e 3959
bd9b35c9
JH
3960: flags used in final linking phase
3961case "$ldflags" in
3962'') if ./venix; then
3963 dflt='-i -z'
10a23457 3964 else
bd9b35c9 3965 dflt=''
10a23457 3966 fi
bd9b35c9
JH
3967 case "$ccflags" in
3968 *-posix*) dflt="$dflt -posix" ;;
c4f23d77 3969 esac
bd9b35c9
JH
3970 ;;
3971*) dflt="$ldflags";;
3972esac
3973
3974: Try to guess additional flags to pick up local libraries.
3975for thislibdir in $libpth; do
3976 case " $loclibpth " in
3977 *" $thislibdir "*)
3978 case "$dflt " in
3979 *"-L$thislibdir "*) ;;
3980 *) dflt="$dflt -L$thislibdir" ;;
3981 esac
c4f23d77
AD
3982 ;;
3983 esac
bd9b35c9 3984done
c4f23d77 3985
bd9b35c9
JH
3986case "$dflt" in
3987'') dflt='none' ;;
3988esac
c4f23d77 3989
bd9b35c9
JH
3990$cat <<EOH
3991
3992Your C linker may need flags. For this question you should
3993include -L/whatever and any other flags used by the C linker, but you
3994should NOT include libraries like -lwhatever.
3995
3996Make sure you include the appropriate -L/path flags if your C linker
3997does not normally search all of the directories you specified above,
3998namely
3999 $libpth
4000To use no flags, specify the word "none".
4001
4002EOH
4003
4004rp="Any additional ld flags (NOT including libraries)?"
4005. ./myread
4006case "$ans" in
4007none) ldflags='';;
4008*) ldflags="$ans";;
4009esac
4010rmlist="$rmlist pdp11"
4011
4012: coherency check
4013echo " "
4014echo "Checking your choice of C compiler and flags for coherency..." >&4
4015$cat > try.c <<'EOF'
4016#include <stdio.h>
4017int main() { printf("Ok\n"); exit(0); }
4018EOF
4019set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4020shift
4021$cat >try.msg <<'EOM'
4022I've tried to compile and run the following simple program:
4023
4024EOM
4025$cat try.c >> try.msg
4026
4027$cat >> try.msg <<EOM
4028
4029I used the command:
4030
4031 $*
4032 ./try
4033
4034and I got the following output:
4035
4036EOM
4037dflt=y
4038if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4039 if sh -c './try' >>try.msg 2>&1; then
4040 xxx=`./try`
4041 case "$xxx" in
4042 "Ok") dflt=n ;;
4043 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4044 case " $libs " in
4045 *" -lsfio "*)
4046 cat >> try.msg <<'EOQS'
4047If $libs contains -lsfio, and sfio is mis-configured, then it
4048sometimes (apparently) runs and exits with a 0 status, but with no
4049output! It may have to do with sfio's use of _exit vs. exit.
4050
4051EOQS
4052 rp="You have a big problem. Shall I abort Configure"
4053 dflt=y
4054 ;;
4055 esac
4056 ;;
4057 esac
4058 else
4059 echo "The program compiled OK, but exited with status $?." >>try.msg
4060 rp="You have a problem. Shall I abort Configure"
4061 dflt=y
4062 fi
4063else
4064 echo "I can't compile the test program." >>try.msg
4065 rp="You have a BIG problem. Shall I abort Configure"
4066 dflt=y
4067fi
4068case "$dflt" in
4069y)
4070 $cat try.msg >&4
4071 case "$knowitall" in
4072 '')
4073 echo "(The supplied flags or libraries might be incorrect.)"
c4f23d77 4074 ;;
bd9b35c9 4075 *) dflt=n;;
c4f23d77 4076 esac
bd9b35c9
JH
4077 echo " "
4078 . ./myread
4079 case "$ans" in
4080 n*|N*) ;;
4081 *) echo "Ok. Stopping Configure." >&4
4082 exit 1
c4f23d77
AD
4083 ;;
4084 esac
4085 ;;
bd9b35c9 4086n) echo "OK, that should do.";;
c4f23d77 4087esac
bd9b35c9 4088$rm -f try try.* core
c4f23d77 4089
b4eb6b3d
JH
4090: define an is-a-typedef? function
4091typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4092case "$inclist" in
4093"") inclist="sys/types.h";;
4094esac;
4095eval "varval=\$$var";
4096case "$varval" in
4097"")
4098 $rm -f temp.c;
4099 for inc in $inclist; do
4100 echo "#include <$inc>" >>temp.c;
4101 done;
4102 echo "#ifdef $type" >> temp.c;
4103 echo "printf(\"We have $type\");" >> temp.c;
4104 echo "#endif" >> temp.c;
4105 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4106 if $contains $type temp.E >/dev/null 2>&1; then
4107 eval "$var=\$type";
4108 else
4109 eval "$var=\$def";
4110 fi;
4111 $rm -f temp.?;;
4112*) eval "$var=\$varval";;
4113esac'
4114
4115: define an is-a-typedef? function that prompts if the type is not available.
4116typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4117case "$inclist" in
4118"") inclist="sys/types.h";;
4119esac;
4120eval "varval=\$$var";
4121case "$varval" in
4122"")
4123 $rm -f temp.c;
4124 for inc in $inclist; do
4125 echo "#include <$inc>" >>temp.c;
4126 done;
4127 echo "#ifdef $type" >> temp.c;
4128 echo "printf(\"We have $type\");" >> temp.c;
4129 echo "#endif" >> temp.c;
4130 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4131 echo " " ;
4132 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4133 if $contains $type temp.E >/dev/null 2>&1; then
4134 echo "$type found." >&4;
4135 eval "$var=\$type";
4136 else
4137 echo "$type NOT found." >&4;
4138 dflt="$def";
4139 . ./myread ;
4140 eval "$var=\$ans";
4141 fi;
4142 $rm -f temp.?;;
4143*) eval "$var=\$varval";;
4144esac'
4145
bd9b35c9
JH
4146: define a shorthand compile call
4147compile='
4148mc_file=$1;
4149shift;
4150$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4151: define a shorthand compile call for compilations that should be ok.
4152compile_ok='
4153mc_file=$1;
4154shift;
4155$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
8e07c86e 4156
b4eb6b3d 4157: check for lengths of integral types
bd9b35c9 4158echo " "
b4eb6b3d
JH
4159case "$intsize" in
4160'')
4161 echo "Checking to see how big your integers are..." >&4
4162 $cat >intsize.c <<'EOCP'
bd9b35c9
JH
4163#include <stdio.h>
4164int main()
4165{
b4eb6b3d
JH
4166 printf("intsize=%d;\n", (int)sizeof(int));
4167 printf("longsize=%d;\n", (int)sizeof(long));
4168 printf("shortsize=%d;\n", (int)sizeof(short));
4169 exit(0);
bd9b35c9 4170}
b4eb6b3d
JH
4171EOCP
4172 set intsize
4173 if eval $compile_ok && ./intsize > /dev/null; then
4174 eval `./intsize`
4175 echo "Your integers are $intsize bytes long."
4176 echo "Your long integers are $longsize bytes long."
4177 echo "Your short integers are $shortsize bytes long."
4178 else
4179 $cat >&4 <<EOM
4180!
4181Help! I can't compile and run the intsize test program: please enlighten me!
4182(This is probably a misconfiguration in your system or libraries, and
4183you really ought to fix it. Still, I'll try anyway.)
4184!
bd9b35c9 4185EOM
b4eb6b3d
JH
4186 dflt=4
4187 rp="What is the size of an integer (in bytes)?"
4188 . ./myread
4189 intsize="$ans"
4190 dflt=$intsize
4191 rp="What is the size of a long integer (in bytes)?"
4192 . ./myread
4193 longsize="$ans"
4194 dflt=2
4195 rp="What is the size of a short integer (in bytes)?"
4196 . ./myread
4197 shortsize="$ans"
4198 fi
4199 ;;
4200esac
4201$rm -f intsize intsize.*
c1a7f87b 4202
b4eb6b3d
JH
4203: see what type lseek is declared as in the kernel
4204rp="What is the type used for lseek's offset on this system?"
4205set off_t lseektype long stdio.h sys/types.h
4206eval $typedef_ask
4207
4208echo " "
4209echo "Checking to see how big your file offsets are..." >&4
4210$cat >try.c <<EOCP
4211#include <sys/types.h>
4212#include <stdio.h>
4213int main()
4214{
4215 printf("%d\n", (int)sizeof($lseektype));
4216 return(0);
4217}
4218EOCP
4219set try
4220if eval $compile_ok; then
4221 lseeksize=`./try`
4222 echo "Your file offsets are $lseeksize bytes long."
4223else
4224 dflt=$longsize
4225 echo " "
4226 echo "(I can't seem to compile the test program. Guessing...)"
4227 rp="What is the size of your file offsets (in bytes)?"
4228 . ./myread
4229 lseeksize="$ans"
4230fi
4231$rm -f try.c try
4232
4233: see what type file positions are declared as in the library
4234rp="What is the type for file position used by fsetpos()?"
4235set fpos_t fpostype long stdio.h sys/types.h
4236eval $typedef_ask
4237
4238echo " "
4239case "$fpostype" in
4240*_t) zzz="$fpostype" ;;
4241*) zzz="fpos_t" ;;
4242esac
4243echo "Checking the size of $zzz..." >&4
4244cat > try.c <<EOCP
4245#include <sys/types.h>
4246#include <stdio.h>
4247int main() {
4248 printf("%d\n", (int)sizeof($fpostype));
4249 exit(0);
4250}
4251EOCP
4252set try
4253if eval $compile_ok; then
4254 yyy=`./try`
4255 case "$yyy" in
4256 '') fpossize=4
4257 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4258 ;;
4259 *) fpossize=$yyy
4260 echo "Your $zzz is $fpossize bytes long."
4261 ;;
4262 esac
4263else
4264 dflt="$longsize"
4265 echo " " >&4
4266 echo "(I can't compile the test program. Guessing...)" >&4
4267 rp="What is the size of your file positions (in bytes)?"
4268 . ./myread
4269 fpossize="$ans"
4270fi
4271
4272
4273
4274# Backward compatibility (uselfs is deprecated).
4275case "$uselfs" in
4276"$define"|true|[yY]*)
4277 cat <<EOM >&4
4278
4279*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4280EOM
4281 uselargefiles="$define"
4282 ;;
4283esac
4284
4285case "$lseeksize:$fpossize" in
42868:8) cat <<EOM
4287
4288You can have files larger than 2 gigabytes.
4289EOM
4290 val="$define" ;;
4291*) case "$uselargefiles" in
4292 "$undef"|false|[nN]*) dflt='n' ;;
4293 *) dflt='y' ;;
4294 esac
4295 cat <<EOM
4296
4297Perl can be built to understand large files (files larger than 2 gigabytes)
4298on some systems. To do so, Configure can be run with -Duselargefiles.
4299
4300If this doesn't make any sense to you, just accept the default '$dflt'.
4301EOM
4302 rp='Try to understand large files, if available?'
4303 . ./myread
4304 case "$ans" in
4305 y|Y) val="$define" ;;
4306 *) val="$undef" ;;
4307 esac
4308 ;;
4309esac
4310set uselargefiles
4311eval $setvar
4312case "$uselargefiles" in
4313"$define")
4314: Look for a hint-file generated 'call-back-unit'. If the
4315: user has specified that a large files perl is to be built,
4316: we may need to set or change some other defaults.
4317 if $test -f uselargefiles.cbu; then
4318 echo "Your platform has some specific hints for large file builds, using them..."
4319 . ./uselargefiles.cbu
4320 echo " "
4321 echo "Rechecking to see how big your file offsets are..." >&4
4322 $cat >try.c <<EOCP
4323#include <sys/types.h>
4324#include <stdio.h>
4325int main()
4326{
4327 printf("%d\n", (int)sizeof($lseektype));
4328 return(0);
4329}
4330EOCP
4331 set try
4332 if eval $compile_ok; then
4333 lseeksize=`./try`
4334 $echo "Your file offsets are now $lseeksize bytes long."
4335 else
4336 dflt="$lseeksize"
4337 echo " "
4338 echo "(I can't seem to compile the test program. Guessing...)"
4339 rp="What is the size of your file offsets (in bytes)?"
4340 . ./myread
4341 lseeksize="$ans"
4342 fi
4343 case "$fpostype" in
4344 *_t) zzz="$fpostype" ;;
4345 *) zzz="fpos_t" ;;
4346 esac
4347 $echo $n "Rechecking the size of $zzz...$c" >&4
4348 $cat > try.c <<EOCP
4349#include <sys/types.h>
4350#include <stdio.h>
4351int main() {
4352 printf("%d\n", (int)sizeof($fpostype));
4353 exit(0);
4354}
4355EOCP
4356 set try
4357 if eval $compile_ok; then
4358 yyy=`./try`
4359 dflt="$lseeksize"
4360 case "$yyy" in
4361 '') echo " "
4362 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4363 ;;
4364 *) fpossize=$yyy
4365 echo " $fpossize bytes." >&4
4366 ;;
4367 esac
4368 else
4369 dflt="$fpossize"
4370 echo " "
4371 echo "(I can't compile the test program. Guessing...)" >&4
4372 rp="What is the size of your file positions (in bytes)?"
4373 . ./myread
4374 fpossize="$ans"
4375 fi
4376 $rm -f try.c try
4377 fi
4378 ;;
4379esac
4380
4381
4382case "$usemorebits" in
4383"$define"|true|[yY]*)
4384 use64bitint="$define"
4385 uselongdouble="$define"
4386 usemorebits="$define"
4387 ;;
4388*) usemorebits="$undef"
4389 ;;
4390esac
4391
4392
4393case "$uselonglong" in
4394"$define"|true|[yY]*)
4395 cat <<EOM >&4
4396
4397*** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4398EOM
4399 use64bitint="$define"
4400 ;;
4401esac
4402case "$use64bits" in
4403"$define"|true|[yY]*)
4404 cat <<EOM >&4
4405
4406*** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4407EOM
4408 use64bitint="$define"
4409 ;;
4410esac
4411case "$use64bitints" in
4412"$define"|true|[yY]*)
4413 cat <<EOM >&4
4414
4415*** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4416EOM
4417 use64bitint="$define"
4418 ;;
4419esac
4420case "$use64bitsint" in
4421"$define"|true|[yY]*)
4422 cat <<EOM >&4
4423
4424*** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4425EOM
4426 use64bitint="$define"
4427 ;;
4428esac
4429case "$uselonglongs" in
4430"$define"|true|[yY]*)
4431 cat <<EOM >&4
4432
4433*** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4434EOM
4435 use64bitint="$define"
4436 ;;
4437esac
4438case "$use64bitsall" in
4439"$define"|true|[yY]*)
4440 cat <<EOM >&4
4441
4442*** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4443EOM
4444 use64bitall="$define"
4445 ;;
4446esac
4447
4448case "$ccflags" in
4449*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4450esac
4451case "$use64bitall" in
4452"$define"|true|[yY]*) use64bitint="$define" ;;
4453esac
4454
4455case "$longsize" in
44568) cat <<EOM
4457
4458You have natively 64-bit long integers.
4459EOM
4460 val="$define"
4461 ;;
4462*) case "$use64bitint" in
4463 "$define"|true|[yY]*) dflt='y';;
4464 *) dflt='n';;
4465 esac
4466 cat <<EOM
4467
4468Perl can be built to take advantage of 64-bit integer types
4469on some systems. To do so, Configure can be run with -Duse64bitint.
4470Choosing this option will most probably introduce binary incompatibilities.
4471
4472If this doesn't make any sense to you, just accept the default '$dflt'.
4473EOM
4474 rp='Try to use 64-bit integers, if available?'
4475 . ./myread
4476 case "$ans" in
4477 [yY]*) val="$define" ;;
4478 *) val="$undef" ;;
4479 esac
4480 ;;
4481esac
4482set use64bitint
4483eval $setvar
4484
4485case "$use64bitall" in
4486"$define"|true|[yY]*) dflt='y' ;;
4487*) case "$longsize" in
4488 8) dflt='y' ;;
4489 *) dflt='n' ;;
4490 esac
4491 ;;
4492esac
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?'
4503. ./myread
4504case "$ans" in
4505[yY]*) val="$define" ;;
4506*) val="$undef" ;;
4507esac
4508set use64bitall
4509eval $setvar
4510case "$use64bitall" in
4511"$define")
4512 case "$use64bitint" in
4513 "$undef")
4514 cat <<EOM
4515
4516Since you have chosen a maximally 64-bit build, I'm also turning on
4517the use of 64-bit integers.
4518EOM
4519 use64bitint="$define" ;;
4520 esac
4521 ;;
4522esac
4523
4524case "$use64bitint" in
4525"$define"|true|[yY]*)
4526: Look for a hint-file generated 'call-back-unit'. If the
4527: user has specified that a 64-bit perl is to be built,
4528: we may need to set or change some other defaults.
4529 if $test -f use64bitint.cbu; then
4530 echo "Your platform has some specific hints for 64-bit integers, using them..."
4531 . ./use64bitint.cbu
4532 fi
4533 case "$longsize" in
4534 4) case "$archname64" in
4535 '') archname64=64int ;;
4536 esac
4537 ;;
4538 esac
4539 ;;
4540esac
4541
4542case "$use64bitall" in
4543"$define"|true|[yY]*)
4544: Look for a hint-file generated 'call-back-unit'. If the
4545: user has specified that a maximally 64-bit perl is to be built,
4546: we may need to set or change some other defaults.
4547 if $test -f use64bitall.cbu; then
4548 echo "Your platform has some specific hints for 64-bit builds, using them..."
4549 . ./use64bitall.cbu
4550 fi
4551 case "$longsize" in
4552 4) case "$archname64" in
4553 ''|64int) archname64=64all ;;
4554 esac
4555 ;;
4556 esac
4557 ;;
4558esac
4559
4560echo " "
4561echo "Checking for GNU C Library..." >&4
4562cat >gnulibc.c <<EOM
4563#include <stdio.h>
4564int main()
4565{
4566#ifdef __GLIBC__
4567 exit(0);
4568#else
4569 exit(1);
4570#endif
4571}
4572EOM
4573set gnulibc
4574if eval $compile_ok && ./gnulibc; then
4575 val="$define"
4576 echo "You are using the GNU C Library"
4577else
4578 val="$undef"
4579 echo "You are not using the GNU C Library"
4580fi
4581$rm -f gnulibc*
4582set d_gnulibc
4583eval $setvar
4584
4585: see if nm is to be used to determine whether a symbol is defined or not
4586case "$usenm" in
4587'')
4588 dflt=''
c1a7f87b
JH
4589 case "$d_gnulibc" in
4590 "$define")
4591 echo " "
4592 echo "nm probably won't work on the GNU C Library." >&4
4593 dflt=n
bd9b35c9 4594 ;;
c1a7f87b
JH
4595 esac
4596 case "$dflt" in
4597 '')
4598 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4599 echo " "
4600 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4601 echo "'nm' won't be sufficient on this sytem." >&4
4602 dflt=n
4603 fi
4604 ;;
4605 esac
4606 case "$dflt" in
4607 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4608 if $test $dflt -gt 20; then
4609 dflt=y
4610 else
4611 dflt=n
4612 fi
bd9b35c9
JH
4613 ;;
4614 esac
bd9b35c9
JH
4615 ;;
4616*)
c1a7f87b
JH
4617 case "$usenm" in
4618 true|$define) dflt=y;;
4619 *) dflt=n;;
4620 esac
bd9b35c9
JH
4621 ;;
4622esac
4623$cat <<EOM
4624
c1a7f87b
JH
4625I can use $nm to extract the symbols from your C libraries. This
4626is a time consuming task which may generate huge output on the disk (up
4627to 3 megabytes) but that should make the symbols extraction faster. The
4628alternative is to skip the 'nm' extraction part and to compile a small
4629test program instead to determine whether each symbol is present. If
4630you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4631this may be the best solution.
4632
4633You probably shouldn't let me use 'nm' if you are using the GNU C Library.
bd9b35c9
JH
4634
4635EOM
c1a7f87b
JH
4636rp="Shall I use $nm to extract C symbols from the libraries?"
4637. ./myread
4638case "$ans" in
4639[Nn]*) usenm=false;;
4640*) usenm=true;;
bd9b35c9 4641esac
bd9b35c9 4642
c1a7f87b
JH
4643runnm=$usenm
4644case "$reuseval" in
4645true) runnm=false;;
8e07c86e 4646esac
29209bc5 4647
c1a7f87b
JH
4648: nm options which may be necessary
4649case "$nm_opt" in
4650'') if $test -f /mach_boot; then
4651 nm_opt='' # Mach
4652 elif $test -d /usr/ccs/lib; then
4653 nm_opt='-p' # Solaris (and SunOS?)
4654 elif $test -f /dgux; then
4655 nm_opt='-p' # DG-UX
4656 elif $test -f /lib64/rld; then
4657 nm_opt='-p' # 64-bit Irix
4658 else
4659 nm_opt=''
4660 fi;;
4661esac
bd9b35c9 4662
c1a7f87b
JH
4663: nm options which may be necessary for shared libraries but illegal
4664: for archive libraries. Thank you, Linux.
4665case "$nm_so_opt" in
4666'') case "$myuname" in
4667 *linux*)
4668 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4669 nm_so_opt='--dynamic'
4670 fi
4671 ;;
bd9b35c9 4672 esac
c1a7f87b
JH
4673 ;;
4674esac
8e07c86e 4675
c1a7f87b
JH
4676case "$runnm" in
4677true)
4678: get list of predefined functions in a handy place
4679echo " "
4680case "$libc" in
4681'') libc=unknown
4682 case "$libs" in
4683 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
bd9b35c9 4684 esac
ff935051
JH
4685 ;;
4686esac
c1a7f87b
JH
4687libnames='';
4688case "$libs" in
4689'') ;;
4690*) for thislib in $libs; do
4691 case "$thislib" in
4692 -lc|-lc_s)
4693 : Handle C library specially below.
4694 ;;
4695 -l*)
4696 thislib=`echo $thislib | $sed -e 's/^-l//'`
4697 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4698 :
4699 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4700 :
4701 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4702 :
4703 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4704 :
4705 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4706 :
4707 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4708 :
4709 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4710 :
4711 else
4712 try=''
4713 fi
4714 libnames="$libnames $try"
4715 ;;
4716 *) libnames="$libnames $thislib" ;;
34d1710f 4717 esac
c1a7f87b 4718 done
4633a7c4
LW
4719 ;;
4720esac
c1a7f87b
JH
4721xxx=normal
4722case "$libc" in
4723unknown)
4724 set /lib/libc.$so
4725 for xxx in $libpth; do
4726 $test -r $1 || set $xxx/libc.$so
4727 : The messy sed command sorts on library version numbers.
4728 $test -r $1 || \
4729 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4730 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4731 h
4732 s/[0-9][0-9]*/0000&/g
4733 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4734 G
4735 s/\n/ /' | \
4736 sort | $sed -e 's/^.* //'`
4737 eval set \$$#
4738 done
4739 $test -r $1 || set /usr/ccs/lib/libc.$so
4740 $test -r $1 || set /lib/libsys_s$_a
4741 ;;
4742*)
4743 set blurfl
4744 ;;
a4f3eea9 4745esac
c1a7f87b
JH
4746if $test -r "$1"; then
4747 echo "Your (shared) C library seems to be in $1."
4748 libc="$1"
4749elif $test -r /lib/libc && $test -r /lib/clib; then
4750 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4751 xxx=apollo
4752 libc='/lib/clib /lib/libc'
4753 if $test -r /lib/syslib; then
4754 echo "(Your math library is in /lib/syslib.)"
4755 libc="$libc /lib/syslib"
4756 fi
4757elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4758 echo "Your C library seems to be in $libc, as you said before."
4759elif $test -r $incpath/usr/lib/libc$_a; then
4760 libc=$incpath/usr/lib/libc$_a;
4761 echo "Your C library seems to be in $libc. That's fine."
4762elif $test -r /lib/libc$_a; then
4763 libc=/lib/libc$_a;
4764 echo "Your C library seems to be in $libc. You're normal."
4765else
4766 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4767 :
4768 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4769 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4770 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4771 :
4772 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4773 :
4774 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775 :
4776 else
4777 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4778 fi
4779 if $test -r "$tans"; then
4780 echo "Your C library seems to be in $tans, of all places."
4781 libc=$tans
4782 else
4783 libc='blurfl'
4784 fi
4785fi
4786if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4787 dflt="$libc"
4788 cat <<EOM
a4f3eea9 4789
c1a7f87b
JH
4790If the guess above is wrong (which it might be if you're using a strange
4791compiler, or your machine supports multiple models), you can override it here.
bd9b35c9
JH
4792
4793EOM
a4f3eea9 4794else
c1a7f87b
JH
4795 dflt=''
4796 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4797 cat >&4 <<EOM
4798I can't seem to find your C library. I've looked in the following places:
a4f3eea9 4799
c1a7f87b
JH
4800EOM
4801 $sed 's/^/ /' libpath
4802 cat <<EOM
29209bc5 4803
c1a7f87b 4804None of these seems to contain your C library. I need to get its name...
a4f3eea9 4805
bd9b35c9 4806EOM
bd9b35c9 4807fi
c1a7f87b
JH
4808fn=f
4809rp='Where is your C library?'
4810. ./getfile
4811libc="$ans"
a4f3eea9 4812
c1a7f87b
JH
4813echo " "
4814echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4815set X `cat libnames`
4816shift
4817xxx=files
4818case $# in 1) xxx=file; esac
4819echo "Extracting names from the following $xxx for later perusal:" >&4
4820echo " "
4821$sed 's/^/ /' libnames >&4
4822echo " "
4823$echo $n "This may take a while...$c" >&4
a4f3eea9 4824
c1a7f87b
JH
4825for file in $*; do
4826 case $file in
4827 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4828 *) $nm $nm_opt $file 2>/dev/null;;
a4f3eea9 4829 esac
c1a7f87b 4830done >libc.tmp
a4f3eea9 4831
c1a7f87b
JH
4832$echo $n ".$c"
4833$grep fprintf libc.tmp > libc.ptf
4834xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4835xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4836xxx='[ADTSIW]'
4837if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4838 eval $xscan;\
4839 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4840 eval $xrun
4841elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4842 eval $xscan;\
4843 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4844 eval $xrun
4845elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4846 eval $xscan;\
4847 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848 eval $xrun
4849elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4850 eval $xscan;\
4851 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852 eval $xrun
4853elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4854 eval $xscan;\
4855 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856 eval $xrun
4857elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4858 eval $xscan;\
4859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860 eval $xrun
4861elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4862 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4863 eval $xscan;\
4864 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865 eval $xrun
4866elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4867 eval $xscan;\
4868 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869 eval $xrun
4870elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4871 eval $xscan;\
4872 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873 eval $xrun
4874elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4875 eval $xscan;\
4876 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877 eval $xrun
4878elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4879 eval $xscan;\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881 eval $xrun
4882elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4883 eval $xscan;\
4884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885 eval $xrun
4886elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4887 eval $xscan;\
4888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889 eval $xrun
4890elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4891 eval $xscan;\
4892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893 eval $xrun
4894else
4895 $nm -p $* 2>/dev/null >libc.tmp
4896 $grep fprintf libc.tmp > libc.ptf
4897 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4898 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4899 then
4900 nm_opt='-p'
4901 eval $xrun
bd9b35c9 4902 else
c1a7f87b
JH
4903 echo " "
4904 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4905 com=''
4906 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4907 for thisname in $libnames $libc; do
4908 $ar t $thisname >>libc.tmp
4909 done
4910 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4911 echo "Ok." >&4
4912 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4913 # Repeat libc to extract forwarders to DLL entries too
4914 for thisname in $libnames $libc; do
4915 $ar tv $thisname >>libc.tmp
4916 # Revision 50 of EMX has bug in $ar.
4917 # it will not extract forwarders to DLL entries
4918 # Use emximp which will extract exactly them.
4919 emximp -o tmp.imp $thisname \
4920 2>/dev/null && \
4921 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4922 < tmp.imp >>libc.tmp
4923 $rm tmp.imp
4924 done
4925 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4926 echo "Ok." >&4
4927 else
4928 echo "$ar didn't seem to work right." >&4
4929 echo "Maybe this is a Cray...trying bld instead..." >&4
4930 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4931 then
4932 for thisname in $libnames; do
4933 bld t $libnames | \
4934 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4935 $ar t $thisname >>libc.tmp
4936 done
4937 echo "Ok." >&4
bd9b35c9 4938 else
c1a7f87b
JH
4939 echo "That didn't work either. Giving up." >&4
4940 exit 1
bd9b35c9 4941 fi
c1a7f87b 4942 fi
a4f3eea9 4943 fi
a4f3eea9 4944fi
c1a7f87b
JH
4945nm_extract="$com"
4946if $test -f /lib/syscalls.exp; then
4947 echo " "
4948 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4949 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4950fi
4951;;
4952esac
4953$rm -f libnames libpath
bd9b35c9 4954
c1a7f87b
JH
4955: is a C symbol defined?
4956csym='tlook=$1;
4957case "$3" in
4958-v) tf=libc.tmp; tc=""; tdc="";;
4959-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4960*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4961esac;
4962tx=yes;
4963case "$reuseval-$4" in
4964true-) ;;
4965true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4966esac;
4967case "$tx" in
4968yes)
4969 case "$runnm" in
4970 true)
4971 if $contains $tlook $tf >/dev/null 2>&1;
4972 then tval=true;
4973 else tval=false;
4974 fi;;
4975 *)
4976 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4977 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4978 then tval=true;
4979 else tval=false;
4980 fi;
4981 $rm -f t t.c;;
4982 esac;;
4983*)
4984 case "$tval" in
4985 $define) tval=true;;
4986 *) tval=false;;
4987 esac;;
4988esac;
4989eval "$2=$tval"'
bd9b35c9 4990
c1a7f87b
JH
4991: define an is-in-libc? function
4992inlibc='echo " "; td=$define; tu=$undef;
4993sym=$1; var=$2; eval "was=\$$2";
4994tx=yes;
4995case "$reuseval$was" in
4996true) ;;
4997true*) tx=no;;
4998esac;
4999case "$tx" in
5000yes)
5001 set $sym tres -f;
5002 eval $csym;
5003 case "$tres" in
5004 true)
5005 echo "$sym() found." >&4;
5006 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5007 *)
5008 echo "$sym() NOT found." >&4;
5009 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5010 esac;;
bd9b35c9 5011*)
c1a7f87b
JH
5012 case "$was" in
5013 $define) echo "$sym() found." >&4;;
5014 *) echo "$sym() NOT found." >&4;;
5015 esac;;
5016esac'
5017
b4eb6b3d
JH
5018: see if sqrtl exists
5019set sqrtl d_sqrtl
c1a7f87b
JH
5020eval $inlibc
5021
b4eb6b3d
JH
5022case "$ccflags" in
5023*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
c1a7f87b 5024esac
b4eb6b3d
JH
5025
5026case "$uselongdouble" in
5027$define|true|[yY]*) dflt='y';;
5028*) dflt='n';;
5029esac
5030cat <<EOM
5031
5032Perl can be built to take advantage of long doubles which
5033(if available) may give more accuracy and range for floating point numbers.
5034
5035If this doesn't make any sense to you, just accept the default '$dflt'.
5036EOM
5037rp='Try to use long doubles if available?'
c1a7f87b
JH
5038. ./myread
5039case "$ans" in
b4eb6b3d
JH
5040y|Y) val="$define" ;;
5041*) val="$undef" ;;
5042esac
5043set uselongdouble
5044eval $setvar
bfb7748a 5045
b4eb6b3d
JH
5046case "$uselongdouble" in
5047true|[yY]*) uselongdouble="$define" ;;
5048esac
bfb7748a 5049
b4eb6b3d
JH
5050case "$uselongdouble" in
5051$define)
5052: Look for a hint-file generated 'call-back-unit'. If the
5053: user has specified that long doubles should be used,
5054: we may need to set or change some other defaults.
5055 if $test -f uselongdouble.cbu; then
5056 echo "Your platform has some specific hints for long doubles, using them..."
5057 . ./uselongdouble.cbu
5058 else
5059 $cat <<EOM
5060(Your platform doesn't have any specific hints for long doubles.)
c1a7f87b 5061EOM
b4eb6b3d
JH
5062 fi
5063 ;;
5064esac
5065
5066case "$uselongdouble:$d_sqrtl" in
5067$define:$undef)
5068 $cat <<EOM >&4
5069
5070*** You requested the use of long doubles but you do not seem to have
5071*** the mathematic functions for long doubles. I'm disabling the use
5072*** of long doubles.
5073
5074EOM
5075 uselongdouble=$undef
5076 ;;
5077esac
5078
5079: check for length of double
5080echo " "
5081case "$doublesize" in
5082'')
5083 echo "Checking to see how big your double precision numbers are..." >&4
5084 $cat >try.c <<'EOCP'
5085#include <stdio.h>
5086int main()
5087{
5088 printf("%d\n", (int)sizeof(double));
5089 exit(0);
5090}
5091EOCP
5092 set try
5093 if eval $compile_ok; then
5094 doublesize=`./try`
5095 echo "Your double is $doublesize bytes long."
5096 else
5097 dflt='8'
5098 echo "(I can't seem to compile the test program. Guessing...)"
5099 rp="What is the size of a double precision number (in bytes)?"
5100 . ./myread
5101 doublesize="$ans"
5102 fi
5103 ;;
5104esac
5105$rm -f try.c try
5106
5107: check for long doubles
5108echo " "
5109echo "Checking to see if you have long double..." >&4
5110echo 'int main() { long double x = 7.0; }' > try.c
5111set try
5112if eval $compile; then
5113 val="$define"
5114 echo "You have long double."
5115else
5116 val="$undef"
5117 echo "You do not have long double."
5118fi
5119$rm try.*
5120set d_longdbl
5121eval $setvar
5122
5123: check for length of long double
5124case "${d_longdbl}${longdblsize}" in
5125$define)
5126 echo " "
5127 echo "Checking to see how big your long doubles are..." >&4
5128 $cat >try.c <<'EOCP'
5129#include <stdio.h>
5130int main()
5131{
5132 printf("%d\n", sizeof(long double));
5133}
5134EOCP
5135 set try
5136 set try
5137 if eval $compile; then
5138 longdblsize=`./try$exe_ext`
5139 echo "Your long doubles are $longdblsize bytes long."
5140 else
5141 dflt='8'
5142 echo " "
5143 echo "(I can't seem to compile the test program. Guessing...)" >&4
5144 rp="What is the size of a long double (in bytes)?"
5145 . ./myread
5146 longdblsize="$ans"
5147 fi
5148 if $test "X$doublesize" = "X$longdblsize"; then
5149 echo "(That isn't any different from an ordinary double.)"
5150 fi
5151 ;;
5152esac
5153$rm -f try.* try
5154
5155: determine the architecture name
5156echo " "
5157if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5158 tarch=`arch`"-$osname"
5159elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5160 if uname -m > tmparch 2>&1 ; then
5161 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5162 -e 's/$/'"-$osname/" tmparch`
5163 else
5164 tarch="$osname"
5165 fi
5166 $rm -f tmparch
5167else
5168 tarch="$osname"
5169fi
5170case "$myarchname" in
5171''|"$tarch") ;;
5172*)
5173 echo "(Your architecture name used to be $myarchname.)"
5174 archname=''
5175 ;;
5176esac
5177myarchname="$tarch"
5178case "$archname" in
5179'') dflt="$tarch";;
5180*) dflt="$archname";;
5181esac
5182rp='What is your architecture name'
5183. ./myread
5184archname="$ans"
5185case "$usethreads" in
5186$define)
5187 echo "Threads selected." >&4
5188 case "$archname" in
5189 *-thread*) echo "...and architecture name already has -thread." >&4
5190 ;;
5191 *) archname="$archname-thread"
5192 echo "...setting architecture name to $archname." >&4
5193 ;;
5194 esac
5195 ;;
5196esac
5197case "$usemultiplicity" in
5198$define)
5199 echo "Multiplicity selected." >&4
5200 case "$archname" in
5201 *-multi*) echo "...and architecture name already has -multi." >&4
5202 ;;
5203 *) archname="$archname-multi"
5204 echo "...setting architecture name to $archname." >&4
5205 ;;
5206 esac
5207 ;;
5208esac
5209case "$use64bitint$use64bitall" in
5210*"$define"*)
5211 case "$archname64" in
5212 '')
5213 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5214 ;;
5215 *)
5216 case "$use64bitint" in
5217 "$define") echo "64 bit integers selected." >&4 ;;
5218 esac
5219 case "$use64bitall" in
5220 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5221 esac
5222 case "$archname" in
5223 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5224 ;;
5225 *) archname="$archname-$archname64"
5226 echo "...setting architecture name to $archname." >&4
5227 ;;
5228 esac
5229 ;;
5230 esac
5231esac
5232case "$uselongdouble" in
5233$define)
5234 echo "Long doubles selected." >&4
5235 case "$longdblsize" in
5236 $doublesize)
5237 "...but long doubles are equal to doubles, not changing architecture name." >&4
5238 ;;
5239 *)
5240 case "$archname" in
5241 *-ld*) echo "...and architecture name already has -ld." >&4
5242 ;;
5243 *) archname="$archname-ld"
5244 echo "...setting architecture name to $archname." >&4
5245 ;;
5246 esac
5247 ;;
5248 esac
5249 ;;
5250esac
5251
5252: determine root of directory hierarchy where package will be installed.
5253case "$prefix" in
5254'')
5255 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5256 ;;
5257*)
5258 dflt="$prefix"
5259 ;;
5260esac
5261$cat <<EOM
5262
5263By default, $package will be installed in $dflt/bin, manual pages
5264under $dflt/man, etc..., i.e. with $dflt as prefix for all
5265installation directories. Typically this is something like /usr/local.
5266If you wish to have binaries under /usr/bin but other parts of the
5267installation under /usr/local, that's ok: you will be prompted
5268separately for each of the installation directories, the prefix being
5269only used to set the defaults.
5270
5271EOM
5272fn=d~
5273rp='Installation prefix to use?'
5274. ./getfile
5275oldprefix=''
5276case "$prefix" in
5277'') ;;
5278*)
5279 case "$ans" in
5280 "$prefix") ;;
5281 *) oldprefix="$prefix";;
5282 esac
5283 ;;
5284esac
5285prefix="$ans"
5286prefixexp="$ansexp"
5287
5288: is AFS running?
5289echo " "
5290case "$afs" in
5291$define|true) afs=true ;;
5292$undef|false) afs=false ;;
5293*) if test -d /afs; then
5294 afs=true
5295 else
5296 afs=false
5297 fi
5298 ;;
5299esac
5300if $afs; then
5301 echo "AFS may be running... I'll be extra cautious then..." >&4
5302else
5303 echo "AFS does not seem to be running..." >&4
5304fi
5305
5306: determine installation prefix for where package is to be installed.
5307if $afs; then
5308$cat <<EOM
5309
5310Since you are running AFS, I need to distinguish the directory in which
5311files will reside from the directory in which they are installed (and from
5312which they are presumably copied to the former directory by occult means).
5313
5314EOM
5315 case "$installprefix" in
5316 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5317 *) dflt="$installprefix";;
5318 esac
5319else
5320$cat <<EOM
5321
5322In some special cases, particularly when building $package for distribution,
5323it is convenient to distinguish between the directory in which files should
5324be installed from the directory ($prefix) in which they
5325will eventually reside. For most users, these two directories are the same.
5326
5327EOM
5328 case "$installprefix" in
5329 '') dflt=$prefix ;;
5330 *) dflt=$installprefix;;
5331 esac
5332fi
5333fn=d~
5334rp='What installation prefix should I use for installing files?'
5335. ./getfile
5336installprefix="$ans"
5337installprefixexp="$ansexp"
5338
5339: set the prefixit variable, to compute a suitable default value
5340prefixit='case "$3" in
5341""|none)
5342 case "$oldprefix" in
5343 "") eval "$1=\"\$$2\"";;
5344 *)
5345 case "$3" in
5346 "") eval "$1=";;
5347 none)
5348 eval "tp=\"\$$2\"";
5349 case "$tp" in
5350 ""|" ") eval "$1=\"\$$2\"";;
5351 *) eval "$1=";;
5352 esac;;
5353 esac;;
5354 esac;;
5355*)
5356 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5357 case "$tp" in
5358 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5359 /*-$oldprefix/*|\~*-$oldprefix/*)
5360 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5361 *) eval "$1=\"\$$2\"";;
5362 esac;;
5363esac'
5364
5365
5366: get the patchlevel
5367echo " "
5368echo "Getting the current patchlevel..." >&4
5369if $test -r $rsrc/patchlevel.h;then
5370 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5371 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5372 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5373 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5374 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5375 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5376else
5377 revision=0
5378 patchlevel=0
5379 subversion=0
5380 api_revision=0
5381 api_version=0
5382 api_subversion=0
5383fi
5384$echo "(You have $package version $patchlevel subversion $subversion.)"
5385case "$osname" in
5386dos|vms)
5387 : XXX Should be a Configure test for double-dots in filenames.
5388 version=`echo $revision $patchlevel $subversion | \
5389 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5390 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5391 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5392 ;;
5393*)
5394 version=`echo $revision $patchlevel $subversion | \
5395 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5396 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5397 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5398 ;;
5399esac
5400: Special case the 5.005_xx maintenance series, which used 5.005
5401: without any subversion label as a subdirectory in $sitelib
5402if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5403 api_versionstring='5.005'
5404fi
5405
5406: determine installation style
5407: For now, try to deduce it from prefix unless it is already set.
5408: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5409case "$installstyle" in
5410'') case "$prefix" in
5411 *perl*) dflt='lib';;
5412 *) dflt='lib/perl5' ;;
5413 esac
5414 ;;
5415*) dflt="$installstyle" ;;
5416esac
5417: Probably not worth prompting for this since we prompt for all
5418: the directories individually, and the prompt would be too long and
5419: confusing anyway.
5420installstyle=$dflt
5421
5422: determine where private library files go
5423: Usual default is /usr/local/lib/perl5/$version.
5424: Also allow things like /opt/perl/lib/$version, since
5425: /opt/perl/lib/perl5... would be redundant.
5426: The default "style" setting is made in installstyle.U
5427case "$installstyle" in
5428*lib/perl5*) set dflt privlib lib/$package/$version ;;
5429*) set dflt privlib lib/$version ;;
5430esac
5431eval $prefixit
5432$cat <<EOM
5433
5434There are some auxiliary files for $package that need to be put into a
5435private library directory that is accessible by everyone.
5436
5437EOM
5438fn=d~+
5439rp='Pathname where the private library files will reside?'
5440. ./getfile
5441privlib="$ans"
5442privlibexp="$ansexp"
5443: Change installation prefix, if necessary.
5444if $test X"$prefix" != X"$installprefix"; then
5445 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5446else
5447 installprivlib="$privlibexp"
5448fi
5449
5450: set the prefixup variable, to restore leading tilda escape
5451prefixup='case "$prefixexp" in
5452"$prefix") ;;
5453*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5454esac'
5455
5456: determine where public architecture dependent libraries go
5457set archlib archlib
5458eval $prefixit
5459: privlib default is /usr/local/lib/$package/$version
5460: archlib default is /usr/local/lib/$package/$version/$archname
5461: privlib may have an optional trailing /share.
5462tdflt=`echo $privlib | $sed 's,/share$,,'`
5463tdflt=$tdflt/$archname
5464case "$archlib" in
5465'') dflt=$tdflt
5466 ;;
5467*) dflt="$archlib"
5468 ;;
5469esac
5470$cat <<EOM
5471
5472$spackage contains architecture-dependent library files. If you are
5473sharing libraries in a heterogeneous environment, you might store
5474these files in a separate location. Otherwise, you can just include
5475them with the rest of the public library files.
5476
5477EOM
5478fn=d+~
5479rp='Where do you want to put the public architecture-dependent libraries?'
5480. ./getfile
5481archlib="$ans"
5482archlibexp="$ansexp"
5483if $test X"$archlib" = X"$privlib"; then
5484 d_archlib="$undef"
5485else
5486 d_archlib="$define"
5487fi
5488: Change installation prefix, if necessary.
5489if $test X"$prefix" != X"$installprefix"; then
5490 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5491else
5492 installarchlib="$archlibexp"
5493fi
5494
5495
5496: Binary compatibility with 5.005 is not possible for builds
5497: with advanced features
5498case "$usethreads$usemultiplicity" in
5499*define*)
5500 bincompat5005="$undef"
5501 d_bincompat5005="$undef"
5502 ;;
5503*) $cat <<EOM
5504
5505This version of Perl can be compiled for binary compatibility with 5.005.
5506If you decide to do so, you will be able to continue using most of the
5507extensions that were compiled for Perl 5.005.
5508
5509EOM
5510 case "$bincompat5005$d_bincompat5005" in
5511 *"$undef"*) dflt=n ;;
5512 *) dflt=y ;;
5513 esac
5514 rp='Binary compatibility with Perl 5.005?'
5515 . ./myread
5516 case "$ans" in
5517 y*) val="$define" ;;
5518 *) val="$undef" ;;
5519 esac
5520 set d_bincompat5005
5521 eval $setvar
5522 case "$d_bincompat5005" in
5523 "$define")
5524 bincompat5005="$define"
5525 ;;
5526 *) bincompat5005="$undef"
5527 d_bincompat5005="$undef"
5528 ;;
5529 esac
5530 ;;
5531esac
5532
5533
5534: see if setuid scripts can be secure
5535$cat <<EOM
5536
5537Some kernels have a bug that prevents setuid #! scripts from being
5538secure. Some sites have disabled setuid #! scripts because of this.
5539
5540First let's decide if your kernel supports secure setuid #! scripts.
5541(If setuid #! scripts would be secure but have been disabled anyway,
5542don't say that they are secure if asked.)
5543
5544EOM
5545
5546val="$undef"
5547if $test -d /dev/fd; then
5548 echo "#!$ls" >reflect
5549 chmod +x,u+s reflect
5550 ./reflect >flect 2>&1
5551 if $contains "/dev/fd" flect >/dev/null; then
5552 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5553 val="$define"
5554 else
5555 $cat <<EOM
5556If you are not sure if they are secure, I can check but I'll need a
5557username and password different from the one you are using right now.
5558If you don't have such a username or don't want me to test, simply
5559enter 'none'.
5560
5561EOM
5562 rp='Other username to test security of setuid scripts with?'
5563 dflt='none'
5564 . ./myread
5565 case "$ans" in
5566 n|none)
5567 case "$d_suidsafe" in
5568 '') echo "I'll assume setuid scripts are *not* secure." >&4
5569 dflt=n;;
5570 "$undef")
5571 echo "Well, the $hint value is *not* secure." >&4
5572 dflt=n;;
5573 *) echo "Well, the $hint value *is* secure." >&4
5574 dflt=y;;
5575 esac
c1a7f87b 5576 ;;
b4eb6b3d
JH
5577 *)
5578 $rm -f reflect flect
5579 echo "#!$ls" >reflect
5580 chmod +x,u+s reflect
5581 echo >flect
5582 chmod a+w flect
5583 echo '"su" will (probably) prompt you for '"$ans's password."
5584 su $ans -c './reflect >flect'
5585 if $contains "/dev/fd" flect >/dev/null; then
5586 echo "Okay, it looks like setuid scripts are secure." >&4
5587 dflt=y
5588 else
5589 echo "I don't think setuid scripts are secure." >&4
5590 dflt=n
5591 fi
5592 ;;
5593 esac
5594 rp='Does your kernel have *secure* setuid scripts?'
5595 . ./myread
5596 case "$ans" in
5597 [yY]*) val="$define";;
5598 *) val="$undef";;
5599 esac
5600 fi
5601else
5602 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5603 echo "(That's for file descriptors, not floppy disks.)"
5604 val="$undef"
5605fi
5606set d_suidsafe
5607eval $setvar
5608
5609$rm -f reflect flect
5610
5611: now see if they want to do setuid emulation
5612echo " "
5613val="$undef"
5614case "$d_suidsafe" in
5615"$define")
5616 val="$undef"
5617 echo "No need to emulate SUID scripts since they are secure here." >& 4
5618 ;;
5619*)
5620 $cat <<EOM
5621Some systems have disabled setuid scripts, especially systems where
5622setuid scripts cannot be secure. On systems where setuid scripts have
5623been disabled, the setuid/setgid bits on scripts are currently
5624useless. It is possible for $package to detect those bits and emulate
5625setuid/setgid in a secure fashion. This emulation will only work if
5626setuid scripts have been disabled in your kernel.
5627
5628EOM
5629 case "$d_dosuid" in
5630 "$define") dflt=y ;;
5631 *) dflt=n ;;
5632 esac
5633 rp="Do you want to do setuid/setgid emulation?"
5634 . ./myread
5635 case "$ans" in
5636 [yY]*) val="$define";;
5637 *) val="$undef";;
5638 esac
5639 ;;
5640esac
5641set d_dosuid
5642eval $setvar
5643
5644: determine filename position in cpp output
5645echo " "
5646echo "Computing filename position in cpp output for #include directives..." >&4
5647echo '#include <stdio.h>' > foo.c
5648$cat >fieldn <<EOF
5649$startsh
5650$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5651$grep '^[ ]*#.*stdio\.h' | \
5652while read cline; do
5653 pos=1
5654 set \$cline
5655 while $test \$# -gt 0; do
5656 if $test -r \`echo \$1 | $tr -d '"'\`; then
5657 echo "\$pos"
5658 exit 0
5659 fi
5660 shift
5661 pos=\`expr \$pos + 1\`
5662 done
5663done
5664EOF
5665chmod +x fieldn
5666fieldn=`./fieldn`
5667$rm -f foo.c fieldn
5668case $fieldn in
5669'') pos='???';;
56701) pos=first;;
56712) pos=second;;
56723) pos=third;;
5673*) pos="${fieldn}th";;
5674esac
5675echo "Your cpp writes the filename in the $pos field of the line."
5676
5677: locate header file
5678$cat >findhdr <<EOF
5679$startsh
5680wanted=\$1
5681name=''
5682for usrincdir in $usrinc
5683do
5684 if test -f \$usrincdir/\$wanted; then
5685 echo "\$usrincdir/\$wanted"
5686 exit 0
5687 fi
5688done
5689awkprg='{ print \$$fieldn }'
5690echo "#include <\$wanted>" > foo\$\$.c
5691$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5692$grep "^[ ]*#.*\$wanted" | \
5693while read cline; do
5694 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5695 case "\$name" in
5696 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5697 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5698 *) exit 2;;
5699 esac;
5700done;
5701#
5702# status = 0: grep returned 0 lines, case statement not executed
5703# status = 1: headerfile found
5704# status = 2: while loop executed, no headerfile found
5705#
5706status=\$?
5707$rm -f foo\$\$.c;
5708if test \$status -eq 1; then
5709 exit 0;
5710fi
5711exit 1
5712EOF
5713chmod +x findhdr
5714
5715: define an alternate in-header-list? function
5716inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5717cont=true; xxf="echo \"<\$1> found.\" >&4";
5718case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5719*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5720esac;
5721case $# in 4) instead=instead;; *) instead="at last";; esac;
5722while $test "$cont"; do
5723 xxx=`./findhdr $1`
5724 var=$2; eval "was=\$$2";
5725 if $test "$xxx" && $test -r "$xxx";
5726 then eval $xxf;
5727 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5728 cont="";
5729 else eval $xxnf;
5730 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5731 set $yyy; shift; shift; yyy=$@;
5732 case $# in 0) cont="";;
5733 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5734 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5735 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5736 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5737 esac;
5738done;
5739while $test "$yyy";
5740do set $yyy; var=$2; eval "was=\$$2";
5741 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5742 set $yyy; shift; shift; yyy=$@;
5743done'
5744
5745: see if this is a malloc.h system
5746set malloc.h i_malloc
5747eval $inhdr
5748
5749: see if stdlib is available
5750set stdlib.h i_stdlib
5751eval $inhdr
5752
5753: determine which malloc to compile in
5754echo " "
5755case "$usemymalloc" in
5756''|[yY]*|true|$define) dflt='y' ;;
5757*) dflt='n' ;;
5758esac
5759rp="Do you wish to attempt to use the malloc that comes with $package?"
5760. ./myread
5761usemymalloc="$ans"
5762case "$ans" in
5763y*|true)
5764 usemymalloc='y'
5765 mallocsrc='malloc.c'
5766 mallocobj="malloc$_o"
5767 d_mymalloc="$define"
5768 case "$libs" in
5769 *-lmalloc*)
5770 : Remove malloc from list of libraries to use
5771 echo "Removing unneeded -lmalloc from library list" >&4
5772 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5773 shift
5774 libs="$*"
5775 echo "libs = $libs" >&4
5776 ;;
5777 esac
5778 ;;
5779*)
5780 usemymalloc='n'
5781 mallocsrc=''
5782 mallocobj=''
5783 d_mymalloc="$undef"
5784 ;;
5785esac
5786
5787: compute the return types of malloc and free
5788echo " "
5789$cat >malloc.c <<END
5790#$i_malloc I_MALLOC
5791#$i_stdlib I_STDLIB
5792#include <stdio.h>
5793#include <sys/types.h>
5794#ifdef I_MALLOC
5795#include <malloc.h>
5796#endif
5797#ifdef I_STDLIB
5798#include <stdlib.h>
5799#endif
5800#ifdef TRY_MALLOC
5801void *malloc();
5802#endif
5803#ifdef TRY_FREE
5804void free();
5805#endif
5806END
5807case "$malloctype" in
5808'')
5809 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5810 malloctype='void *'
5811 else
5812 malloctype='char *'
5813 fi
5814 ;;
5815esac
5816echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5817
5818case "$freetype" in
5819'')
5820 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5821 freetype='void'
5822 else
5823 freetype='int'
5824 fi
5825 ;;
5826esac
5827echo "Your system uses $freetype free(), it would seem." >&4
5828$rm -f malloc.[co]
5829$cat <<EOM
5830
5831After $package is installed, you may wish to install various
5832add-on modules and utilities. Typically, these add-ons will
5833be installed under $prefix with the rest
5834of this package. However, you may wish to install such add-ons
5835elsewhere under a different prefix.
5836
5837If you do not wish to put everything under a single prefix, that's
5838ok. You will be prompted for the individual locations; this siteprefix
5839is only used to suggest the defaults.
5840
5841The default should be fine for most people.
5842
5843EOM
5844fn=d~+
5845rp='Installation prefix to use for add-on modules and utilities?'
5846: XXX Here might be another good place for an installstyle setting.
5847case "$siteprefix" in
5848'') dflt=$prefix ;;
5849*) dflt=$siteprefix ;;
5850esac
5851. ./getfile
5852: XXX Prefixit unit does not yet support siteprefix and vendorprefix
5853oldsiteprefix=''
5854case "$siteprefix" in
5855'') ;;
5856*) case "$ans" in
5857 "$prefix") ;;
5858 *) oldsiteprefix="$prefix";;
5859 esac
5860 ;;
5861esac
5862siteprefix="$ans"
5863siteprefixexp="$ansexp"
5864
5865: determine where site specific libraries go.
5866: Usual default is /usr/local/lib/perl5/site_perl/$version
5867: The default "style" setting is made in installstyle.U
5868: XXX No longer works with Prefixit stuff.
5869prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5870case "$sitelib" in
5871'') case "$installstyle" in
5872 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5873 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5874 esac
5875 ;;
5876*) dflt="$sitelib"
5877 ;;
5878esac
5879$cat <<EOM
5880
5881The installation process will create a directory for
5882site-specific extensions and modules. Most users find it convenient
5883to place all site-specific files in this directory rather than in the
5884main distribution directory.
5885
5886EOM
5887fn=d~+
5888rp='Pathname for the site-specific library files?'
5889. ./getfile
5890sitelib="$ans"
5891sitelibexp="$ansexp"
5892sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5893: Change installation prefix, if necessary.
5894if $test X"$prefix" != X"$installprefix"; then
5895 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5896else
5897 installsitelib="$sitelibexp"
5898fi
5899
5900: determine where site specific architecture-dependent libraries go.
5901: sitelib default is /usr/local/lib/perl5/site_perl/$version
5902: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5903: sitelib may have an optional trailing /share.
5904case "$sitearch" in
5905'') dflt=`echo $sitelib | $sed 's,/share$,,'`
5906 dflt="$dflt/$archname"
5907 ;;
5908*) dflt="$sitearch"
5909 ;;
5910esac
5911set sitearch sitearch none
5912eval $prefixit
5913$cat <<EOM
5914
5915The installation process will also create a directory for
5916architecture-dependent site-specific extensions and modules.
5917
5918EOM
5919fn=d~+
5920rp='Pathname for the site-specific architecture-dependent library files?'
5921. ./getfile
5922sitearch="$ans"
5923sitearchexp="$ansexp"
5924: Change installation prefix, if necessary.
5925if $test X"$prefix" != X"$installprefix"; then
5926 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5927else
5928 installsitearch="$sitearchexp"
5929fi
5930
5931$cat <<EOM
5932
5933The installation process will also create a directory for
5934vendor-supplied add-ons. Vendors who supply perl with their system
5935may find it convenient to place all vendor-supplied files in this
5936directory rather than in the main distribution directory. This will
5937ease upgrades between binary-compatible maintenance versions of perl.
5938
5939Of course you may also use these directories in whatever way you see
5940fit. For example, you might use them to access modules shared over a
5941company-wide network.
5942
5943The default answer should be fine for most people.
5944This causes further questions about vendor add-ons to be skipped
5945and no vendor-specific directories will be configured for perl.
5946
5947EOM
5948rp='Do you want to configure vendor-specific add-on directories?'
5949case "$usevendorprefix" in
5950define|true|[yY]*) dflt=y ;;
5951*) : User may have set vendorprefix directly on Configure command line.
5952 case "$vendorprefix" in
5953 ''|' ') dflt=n ;;
5954 *) dflt=y ;;
5955 esac
5956 ;;
5957esac
5958. ./myread
5959case "$ans" in
5960[yY]*) fn=d~+
5961 rp='Installation prefix to use for vendor-supplied add-ons?'
5962 case "$vendorprefix" in
5963 '') dflt='' ;;
5964 *) dflt=$vendorprefix ;;
5965 esac
5966 . ./getfile
5967 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5968 oldvendorprefix=''
5969 case "$vendorprefix" in
5970 '') ;;
5971 *) case "$ans" in
5972 "$prefix") ;;
5973 *) oldvendorprefix="$prefix";;
5974 esac
5975 ;;
5976 esac
5977 usevendorprefix="$define"
5978 vendorprefix="$ans"
5979 vendorprefixexp="$ansexp"
5980 ;;
5981*) usevendorprefix="$undef"
5982 vendorprefix=''
5983 vendorprefixexp=''
5984 ;;
5985esac
5986
5987case "$vendorprefix" in
5988'') d_vendorlib="$undef"
5989 vendorlib=''
5990 vendorlibexp=''
5991 ;;
5992*) d_vendorlib="$define"
5993 : determine where vendor-supplied modules go.
5994 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5995 case "$vendorlib" in
5996 '')
5997 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5998 case "$installstyle" in
5999 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6000 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6001 esac
6002 ;;
6003 *) dflt="$vendorlib"
6004 ;;
6005 esac
6006 fn=d~+
6007 rp='Pathname for the vendor-supplied library files?'
6008 . ./getfile
6009 vendorlib="$ans"
6010 vendorlibexp="$ansexp"
6011 ;;
6012esac
6013vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6014: Change installation prefix, if necessary.
6015if $test X"$prefix" != X"$installprefix"; then
6016 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6017else
6018 installvendorlib="$vendorlibexp"
6019fi
6020
6021case "$vendorprefix" in
6022'') d_vendorarch="$undef"
6023 vendorarch=''
6024 vendorarchexp=''
6025 ;;
6026*) d_vendorarch="$define"
6027 : determine where vendor-supplied architecture-dependent libraries go.
6028 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6029 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6030 : vendorlib may have an optional trailing /share.
6031 case "$vendorarch" in
6032 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6033 dflt="$dflt/$archname"
6034 ;;
6035 *) dflt="$vendorarch" ;;
6036 esac
6037 fn=d~+
6038 rp='Pathname for vendor-supplied architecture-dependent files?'
6039 . ./getfile
6040 vendorarch="$ans"
6041 vendorarchexp="$ansexp"
6042 ;;
6043esac
6044: Change installation prefix, if necessary.
6045if $test X"$prefix" != X"$installprefix"; then
6046 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6047else
6048 installvendorarch="$vendorarchexp"
6049fi
6050
6051: Final catch-all directories to search
6052$cat <<EOM
6053
6054Lastly, you can have perl look in other directories for extensions and
6055modules in addition to those already specified.
6056These directories will be searched after
6057 $sitearch
6058 $sitelib
6059EOM
6060test X"$vendorlib" != "X" && echo ' ' $vendorlib
6061test X"$vendorarch" != "X" && echo ' ' $vendorarch
6062echo ' '
6063case "$otherlibdirs" in
6064''|' ') dflt='none' ;;
6065*) dflt="$otherlibdirs" ;;
6066esac
6067$cat <<EOM
6068Enter a colon-separated set of extra paths to include in perl's @INC
6069search path, or enter 'none' for no extra paths.
6070
6071EOM
6072
6073rp='Colon-separated list of additional directories for perl to search?'
6074. ./myread
6075case "$ans" in
6076' '|''|none) otherlibdirs=' ' ;;
6077*) otherlibdirs="$ans" ;;
6078esac
6079case "$otherlibdirs" in
6080' ') val=$undef ;;
6081*) val=$define ;;
6082esac
6083set d_perl_otherlibdirs
6084eval $setvar
6085
6086: Cruising for prototypes
6087echo " "
6088echo "Checking out function prototypes..." >&4
6089$cat >prototype.c <<'EOCP'
6090int main(int argc, char *argv[]) {
6091 exit(0);}
6092EOCP
6093if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6094 echo "Your C compiler appears to support function prototypes."
6095 val="$define"
6096else
6097 echo "Your C compiler doesn't seem to understand function prototypes."
6098 val="$undef"
6099fi
6100set prototype
6101eval $setvar
6102$rm -f prototype*
6103
6104case "$prototype" in
6105"$define") ;;
6106*) ansi2knr='ansi2knr'
6107 echo " "
6108 cat <<EOM >&4
6109
6110$me: FATAL ERROR:
6111This version of $package can only be compiled by a compiler that
6112understands function prototypes. Unfortunately, your C compiler
6113 $cc $ccflags
6114doesn't seem to understand them. Sorry about that.
6115
6116If GNU cc is available for your system, perhaps you could try that instead.
6117
6118Eventually, we hope to support building Perl with pre-ANSI compilers.
6119If you would like to help in that effort, please contact <perlbug@perl.org>.
6120
6121Aborting Configure now.
6122EOM
6123 exit 2
6124 ;;
6125esac
6126
6127: determine where public executables go
6128echo " "
6129set dflt bin bin
6130eval $prefixit
6131fn=d~
6132rp='Pathname where the public executables will reside?'
6133. ./getfile
6134if $test "X$ansexp" != "X$binexp"; then
6135 installbin=''
6136fi
6137bin="$ans"
6138binexp="$ansexp"
6139: Change installation prefix, if necessary.
6140: XXX Bug? -- ignores Configure -Dinstallprefix setting.
6141if $test X"$prefix" != X"$installprefix"; then
6142 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6143else
6144 installbin="$binexp"
6145fi
6146
6147: Find perl5.005 or later.
6148echo "Looking for a previously installed perl5.005 or later... "
6149case "$perl5" in
6150'') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6151 : Check if this perl is recent and can load a simple module
6152 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6153 perl5=$tdir/perl
6154 break;
6155 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6156 perl5=$tdir/perl
6157 break;
6158 fi
6159 done
6160 ;;
6161*) perl5="$perl5"
6162 ;;
6163esac
6164case "$perl5" in
6165'') echo "None found. That's ok.";;
6166*) echo "Using $perl5." ;;
6167esac
6168
6169: Determine list of previous versions to include in @INC
6170$cat > getverlist <<EOPL
6171#!$perl5 -w
6172use File::Basename;
6173\$api_versionstring = "$api_versionstring";
6174\$version = "$version";
6175\$stem = "$sitelib_stem";
6176\$archname = "$archname";
6177EOPL
6178 $cat >> getverlist <<'EOPL'
6179# Can't have leading @ because metaconfig interprets it as a command!
6180;@inc_version_list=();
6181# XXX Redo to do opendir/readdir?
6182if (-d $stem) {
6183 chdir($stem);
6184 ;@candidates = glob("5.*");
6185}
6186else {
6187 ;@candidates = ();
6188}
6189
6190# XXX ToDo: These comparisons must be reworked when two-digit
6191# subversions come along, so that 5.7.10 compares as greater than
6192# 5.7.3! By that time, hope that 5.6.x is sufficiently
6193# widespread that we can use the built-in version vectors rather
6194# than reinventing them here. For 5.6.0, however, we must
6195# assume this script will likely be run by 5.005_0x. --AD 1/2000.
6196foreach $d (@candidates) {
6197 if ($d lt $version) {
6198 if ($d ge $api_versionstring) {
6199 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6200 }
6201 elsif ($d ge "5.005") {
6202 unshift(@inc_version_list, grep { -d } $d);
6203 }
6204 }
6205 else {
6206 # Skip newer version. I.e. don't look in
6207 # 5.7.0 if we're installing 5.6.1.
6208 }
6209}
6210
6211if (@inc_version_list) {
6212 print join(' ', @inc_version_list);
6213}
6214else {
6215 # Blank space to preserve value for next Configure run.
6216 print " ";
6217}
6218EOPL
6219chmod +x getverlist
6220case "$inc_version_list" in
6221'') if test -x "$perl5"; then
6222 dflt=`$perl5 getverlist`
6223 else
6224 dflt='none'
6225 fi
6226 ;;
6227$undef) dflt='none' ;;
6228*) dflt="$inc_version_list" ;;
6229esac
6230case "$dflt" in
6231''|' ') dflt=none ;;
6232esac
6233case "$dflt" in
62345.005) case "$bincompat5005" in
6235 $define|true|[yY]*) ;;
6236 *) dflt=none ;;
6237 esac
6238 ;;
6239esac
6240$cat <<'EOM'
6241
6242In order to ease the process of upgrading, this version of perl
6243can be configured to use modules built and installed with earlier
6244versions of perl that were installed under $prefix. Specify here
6245the list of earlier versions that this version of perl should check.
6246If Configure detected no earlier versions of perl installed under
6247$prefix, then the list will be empty. Answer 'none' to tell perl
6248to not search earlier versions.
6249
6250The default should almost always be sensible, so if you're not sure,
6251just accept the default.
6252EOM
6253
6254rp='List of earlier versions to include in @INC?'
6255. ./myread
6256case "$ans" in
6257[Nn]one|''|' ') inc_version_list=' ' ;;
6258*) inc_version_list="$ans" ;;
6259esac
6260case "$inc_version_list" in
6261''|' ')
6262 inc_version_list_init='0';;
6263*) inc_version_list_init=`echo $inc_version_list |
6264 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6265 ;;
6266esac
6267$rm -f getverlist
6268
6269: determine whether to install perl also as /usr/bin/perl
6270
6271echo " "
6272if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6273 $cat <<EOM
6274Many scripts expect perl to be installed as /usr/bin/perl.
6275I can install the perl you are about to compile also as /usr/bin/perl
6276(in addition to $installbin/perl).
6277EOM
6278 case "$installusrbinperl" in
6279 "$undef"|[nN]*) dflt='n';;
6280 *) dflt='y';;
6281 esac
6282 rp="Do you want to install perl as /usr/bin/perl?"
6283 . ./myread
6284 case "$ans" in
6285 [yY]*) val="$define";;
6286 *) val="$undef" ;;
6287 esac
6288else
6289 val="$undef"
6290fi
6291set installusrbinperl
6292eval $setvar
6293
6294: see if dld is available
6295set dld.h i_dld
6296eval $inhdr
6297
6298: see if dlopen exists
6299xxx_runnm="$runnm"
6300runnm=false
6301set dlopen d_dlopen
6302eval $inlibc
6303runnm="$xxx_runnm"
6304
6305: determine which dynamic loading, if any, to compile in
6306echo " "
6307dldir="ext/DynaLoader"
6308case "$usedl" in
6309$define|y|true)
6310 dflt='y'
6311 usedl="$define"
6312 ;;
6313$undef|n|false)
6314 dflt='n'
6315 usedl="$undef"
6316 ;;
6317*)
6318 dflt='n'
6319 case "$d_dlopen" in
6320 $define) dflt='y' ;;
6321 esac
6322 case "$i_dld" in
6323 $define) dflt='y' ;;
6324 esac
6325 : Does a dl_xxx.xs file exist for this operating system
6326 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6327 ;;
6328esac
6329rp="Do you wish to use dynamic loading?"
6330. ./myread
6331usedl="$ans"
6332case "$ans" in
6333y*) usedl="$define"
6334 case "$dlsrc" in
6335 '')
6336 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6337 dflt="$dldir/dl_${osname}.xs"
6338 elif $test "$d_dlopen" = "$define" ; then
6339 dflt="$dldir/dl_dlopen.xs"
6340 elif $test "$i_dld" = "$define" ; then
6341 dflt="$dldir/dl_dld.xs"
6342 else
6343 dflt=''
6344 fi
6345 ;;
6346 *) dflt="$dldir/$dlsrc"
6347 ;;
6348 esac
6349 echo "The following dynamic loading files are available:"
6350 : Can not go over to $dldir because getfile has path hard-coded in.
6351 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6352 rp="Source file to use for dynamic loading"
6353 fn="fne"
6354 gfpth="$src"
6355 . ./getfile
6356 usedl="$define"
6357 : emulate basename
6358 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6359
6360 $cat << EOM
6361
6362Some systems may require passing special flags to $cc -c to
6363compile modules that will be used to create a shared library.
6364To use no flags, say "none".
6365
6366EOM
6367 case "$cccdlflags" in
6368 '') case "$gccversion" in
6369 '') case "$osname" in
6370 hpux) dflt='+z' ;;
6371 next) dflt='none' ;;
6372 irix*) dflt='-KPIC' ;;
6373 svr4*|esix*|solaris) dflt='-KPIC' ;;
6374 sunos) dflt='-pic' ;;
6375 *) dflt='none' ;;
6376 esac
6377 ;;
6378 *) case "$osname" in
6379 svr4*|esix*|solaris) dflt='-fPIC' ;;
6380 *) dflt='-fpic' ;;
6381 esac ;;
6382 esac ;;
6383 ' ') dflt='none' ;;
6384 *) dflt="$cccdlflags" ;;
6385 esac
6386 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6387 . ./myread
6388 case "$ans" in
6389 none) cccdlflags=' ' ;;
6390 *) cccdlflags="$ans" ;;
6391 esac
6392
6393 cat << EOM
6394
6395Some systems use ld to create libraries that can be dynamically loaded,
6396while other systems (such as those using ELF) use $cc.
6397
6398EOM
6399 case "$ld" in
6400 '') $cat >try.c <<'EOM'
6401/* Test for whether ELF binaries are produced */
6402#include <fcntl.h>
6403#include <stdlib.h>
6404int main() {
6405 char b[4];
6406 int i = open("a.out",O_RDONLY);
6407 if(i == -1)
6408 exit(1); /* fail */
6409 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6410 exit(0); /* succeed (yes, it's ELF) */
6411 else
6412 exit(1); /* fail */
6413}
6414EOM
6415 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6416 cat <<EOM
6417You appear to have ELF support. I'll use $cc to build dynamic libraries.
6418EOM
6419 dflt="$cc"
6420 else
6421 echo "I'll use ld to build dynamic libraries."
6422 dflt='ld'
6423 fi
6424 rm -f try.c a.out
6425 ;;
6426 *) dflt="$ld"
6427 ;;
6428 esac
6429
6430 rp="What command should be used to create dynamic libraries?"
6431 . ./myread
6432 ld="$ans"
6433
6434 cat << EOM
6435
6436Some systems may require passing special flags to $ld to create a
6437library that can be dynamically loaded. If your ld flags include
6438-L/other/path options to locate libraries outside your loader's normal
6439search path, you may need to specify those -L options here as well. To
6440use no flags, say "none".
6441
6442EOM
6443 case "$lddlflags" in
6444 '') case "$osname" in
6445 beos) dflt='-nostart' ;;
6446 hpux) dflt='-b';
6447 case "$gccversion" in
6448 '') dflt="$dflt +vnocompatwarnings" ;;
6449 esac
6450 ;;
6451 linux|irix*) dflt='-shared' ;;
6452 next) dflt='none' ;;
6453 solaris) dflt='-G' ;;
6454 sunos) dflt='-assert nodefinitions' ;;
6455 svr4*|esix*) dflt="-G $ldflags" ;;
6456 *) dflt='none' ;;
6457 esac
6458 ;;
6459 *) dflt="$lddlflags" ;;
6460 esac
6461
6462 : Try to guess additional flags to pick up local libraries.
6463 : Be careful not to append to a plain 'none'
6464 case "$dflt" in
6465 none) dflt='' ;;
6466 esac
6467 for thisflag in $ldflags; do
6468 case "$thisflag" in
6469 -L*|-R*)
6470 case " $dflt " in
6471 *" $thisflag "*) ;;
6472 *) dflt="$dflt $thisflag" ;;
6473 esac
6474 ;;
6475 esac
6476 done
6477
6478 case "$dflt" in
6479 ''|' ') dflt='none' ;;
6480 esac
6481
6482 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6483 . ./myread
6484 case "$ans" in
6485 none) lddlflags=' ' ;;
6486 *) lddlflags="$ans" ;;
6487 esac
6488
6489 cat <<EOM
6490
6491Some systems may require passing special flags to $cc to indicate that
6492the resulting executable will use dynamic linking. To use no flags,
6493say "none".
6494
6495EOM
6496 case "$ccdlflags" in
6497 '') case "$osname" in
6498 hpux) dflt='-Wl,-E' ;;
6499 linux) dflt='-rdynamic' ;;
6500 next) dflt='none' ;;
6501 sunos) dflt='none' ;;
6502 *) dflt='none' ;;
6503 esac ;;
6504 ' ') dflt='none' ;;
6505 *) dflt="$ccdlflags" ;;
6506 esac
6507 rp="Any special flags to pass to $cc to use dynamic linking?"
6508 . ./myread
6509 case "$ans" in
6510 none) ccdlflags=' ' ;;
6511 *) ccdlflags="$ans" ;;
6512 esac
6513 ;;
6514*) usedl="$undef"
6515 ld='ld'
6516 dlsrc='dl_none.xs'
6517 lddlflags=''
6518 ccdlflags=''
6519 ;;
6520esac
6521
6522also=''
6523case "$usedl" in
6524$undef)
6525 # No dynamic loading being used, so don't bother even to prompt.
6526 useshrplib='false'
6527 ;;
6528*) case "$useshrplib" in
6529 '') case "$osname" in
6530 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6531 dflt=y
6532 also='Building a shared libperl is required for dynamic loading to work on your system.'
6533 ;;
6534 next*)
6535 case "$osvers" in
6536 4*) dflt=y
6537 also='Building a shared libperl is needed for MAB support.'
6538 ;;
6539 *) dflt=n
6540 ;;
6541 esac
6542 ;;
6543 *) dflt=n
6544 ;;
6545 esac
6546 ;;
6547 $define|true|[Yy]*)
6548 dflt=y
6549 ;;
6550 *) dflt=n
6551 ;;
6552 esac
6553 $cat << EOM
6554
6555The perl executable is normally obtained by linking perlmain.c with
6556libperl${_a}, any static extensions (usually just DynaLoader), and
6557any other libraries needed on this system (such as -lm, etc.). Since
6558your system supports dynamic loading, it is probably possible to build
6559a shared libperl.$so. If you will have more than one executable linked
6560to libperl.$so, this will significantly reduce the size of each
6561executable, but it may have a noticeable affect on performance. The
6562default is probably sensible for your system.
6563$also
6564
6565EOM
6566 rp="Build a shared libperl.$so (y/n)"
6567 . ./myread
6568 case "$ans" in
6569 true|$define|[Yy]*)
6570 useshrplib='true' ;;
6571 *) useshrplib='false' ;;
6572 esac
6573 ;;
6574esac
6575
6576case "$useshrplib" in
6577true)
6578 case "$libperl" in
6579 '')
6580 # Figure out a good name for libperl.so. Since it gets stored in
6581 # a version-specific architecture-dependent library, the version
6582 # number isn't really that important, except for making cc/ld happy.
6583 #
6584 # A name such as libperl.so.3.1
6585 majmin="libperl.$so.$patchlevel.$subversion"
6586 # A name such as libperl.so.301
6587 majonly=`echo $patchlevel $subversion |
6588 $awk '{printf "%d%02d", $1, $2}'`
6589 majonly=libperl.$so.$majonly
6590 # I'd prefer to keep the os-specific stuff here to a minimum, and
6591 # rely on figuring it out from the naming of libc.
6592 case "${osname}${osvers}" in
6593 next4*)
6594 dflt=libperl.5.$so
6595 # XXX How handle the --version stuff for MAB?
6596 ;;
6597 linux*) # ld won't link with a bare -lperl otherwise.
6598 dflt=libperl.$so
6599 ;;
6600 cygwin*) # include version
6601 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6602 ;;
6603 *) # Try to guess based on whether libc has major.minor.
6604 case "$libc" in
6605 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6606 *libc.$so.[0-9]*) dflt=$majonly ;;
6607 *) dflt=libperl.$so ;;
6608 esac
6609 ;;
6610 esac
6611 ;;
6612 *) dflt=$libperl
6613 ;;
6614 esac
6615 cat << EOM
6616
6617I need to select a good name for the shared libperl. If your system uses
6618library names with major and minor numbers, then you might want something
6619like $majmin. Alternatively, if your system uses a single version
6620number for shared libraries, then you might want to use $majonly.
6621Or, your system might be quite happy with a simple libperl.$so.
6622
6623Since the shared libperl will get installed into a version-specific
6624architecture-dependent directory, the version number of the shared perl
6625library probably isn't important, so the default should be o.k.
6626
6627EOM
6628 rp='What name do you want to give to the shared libperl?'
6629 . ./myread
6630 libperl=$ans
6631 echo "Ok, I'll use $libperl"
6632 ;;
6633*)
6634 libperl="libperl${_a}"
6635 ;;
6636esac
6637
6638# Detect old use of shrpdir via undocumented Configure -Dshrpdir
6639case "$shrpdir" in
6640'') ;;
6641*) $cat >&4 <<EOM
6642WARNING: Use of the shrpdir variable for the installation location of
6643the shared $libperl is not supported. It was never documented and
6644will not work in this version. Let me (perlbug@perl.org)
6645know of any problems this may cause.
6646
6647EOM
6648 case "$shrpdir" in
6649 "$archlibexp/CORE")
6650 $cat >&4 <<EOM
6651But your current setting of $shrpdir is
6652the default anyway, so it's harmless.
6653EOM
6654 ;;
6655 *)
6656 $cat >&4 <<EOM
6657Further, your current attempted setting of $shrpdir
6658conflicts with the value of $archlibexp/CORE
6659that installperl will use.
6660EOM
6661 ;;
6662 esac
6663 ;;
6664esac
6665
6666# How will the perl executable find the installed shared $libperl?
6667# Add $xxx to ccdlflags.
6668# If we can't figure out a command-line option, use $shrpenv to
6669# set env LD_RUN_PATH. The main perl makefile uses this.
6670shrpdir=$archlibexp/CORE
6671xxx=''
6672tmp_shrpenv=''
6673if "$useshrplib"; then
6674 case "$osname" in
6675 aix)
6676 # We'll set it in Makefile.SH...
6677 ;;
6678 solaris|netbsd)
6679 xxx="-R $shrpdir"
6680 ;;
6681 freebsd)
6682 xxx="-Wl,-R$shrpdir"
6683 ;;
6684 linux|irix*|dec_osf)
6685 xxx="-Wl,-rpath,$shrpdir"
6686 ;;
6687 next)
6688 # next doesn't like the default...
6689 ;;
6690 beos)
6691 # beos doesn't like the default, either.
6692 ;;
6693 hpux*)
6694 # hpux doesn't like the default, either.
6695 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6696 ;;
6697 *)
6698 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6699 ;;
6700 esac
6701 case "$xxx" in
6702 '') ;;
6703 *)
6704 # Only add $xxx if it isn't already in ccdlflags.
6705 case " $ccdlflags " in
6706 *" $xxx "*) ;;
6707 *) ccdlflags="$ccdlflags $xxx"
6708 cat <<EOM >&4
6709
6710Adding $xxx to the flags
6711passed to $ld so that the perl executable will find the
6712installed shared $libperl.
6713
6714EOM
6715 ;;
6716 esac
6717 ;;
6718 esac
6719fi
6720# Fix ccdlflags in AIX for building external extensions.
6721# (For building Perl itself bare -bE:perl.exp is needed,
6722# Makefile.SH takes care of this.)
6723case "$osname" in
6724aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6725esac
6726# Respect a hint or command-line value.
6727case "$shrpenv" in
6728'') shrpenv="$tmp_shrpenv" ;;
6729esac
6730case "$ldlibpthname" in
6731'') ldlibpthname=LD_LIBRARY_PATH ;;
6732none) ldlibpthname='' ;;
6733esac
6734
6735: determine where manual pages are on this system
6736echo " "
6737case "$sysman" in
6738'')
6739 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6740 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6741 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6742 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6743 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6744 sysman=`./loc . /usr/man/man1 $syspath`
6745 ;;
6746esac
6747if $test -d "$sysman"; then
6748 echo "System manual is in $sysman." >&4
6749else
6750 echo "Could not find manual pages in source form." >&4
6751fi
6752
6753: determine where manual pages go
6754set man1dir man1dir none
6755eval $prefixit
6756$cat <<EOM
6757
6758$spackage has manual pages available in source form.
6759EOM
6760case "$nroff" in
6761nroff)
6762 echo "However, you don't have nroff, so they're probably useless to you."
6763 case "$man1dir" in
6764 '') man1dir="none";;
6765 esac;;
6766esac
6767echo "If you don't want the manual sources installed, answer 'none'."
6768case "$man1dir" in
6769' ') dflt=none
6770 ;;
6771'')
6772 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6773 lookpath="$lookpath $prefixexp/man/p_man/man1"
6774 lookpath="$lookpath $prefixexp/man/u_man/man1"
6775 lookpath="$lookpath $prefixexp/man/man.1"
6776 case "$sysman" in
6777 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6778 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6779 esac
6780 set dflt
6781 eval $prefixup
6782 ;;
6783*) dflt="$man1dir"
6784 ;;
6785esac
6786echo " "
6787fn=dn+~
6788rp="Where do the main $spackage manual pages (source) go?"
6789. ./getfile
6790if $test "X$man1direxp" != "X$ansexp"; then
6791 installman1dir=''
6792fi
6793man1dir="$ans"
6794man1direxp="$ansexp"
6795case "$man1dir" in
6796'') man1dir=' '
6797 installman1dir='';;
6798esac
6799
6800: Change installation prefix, if necessary.
6801if $test X"$prefix" != X"$installprefix"; then
6802 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6803else
6804 installman1dir="$man1direxp"
6805fi
6806
6807: What suffix to use on installed man pages
6808
6809case "$man1dir" in
6810' ')
6811 man1ext='0'
6812 ;;
6813*)
6814 rp="What suffix should be used for the main $spackage man pages?"
6815 case "$man1ext" in
6816 '') case "$man1dir" in
6817 *1) dflt=1 ;;
6818 *1p) dflt=1p ;;
6819 *1pm) dflt=1pm ;;
6820 *l) dflt=l;;
6821 *n) dflt=n;;
6822 *o) dflt=o;;
6823 *p) dflt=p;;
6824 *C) dflt=C;;
6825 *L) dflt=L;;
6826 *L1) dflt=L1;;
6827 *) dflt=1;;
6828 esac
6829 ;;
6830 *) dflt="$man1ext";;
6831 esac
6832 . ./myread
6833 man1ext="$ans"
6834 ;;
6835esac
6836
6837: see if we can have long filenames
6838echo " "
6839first=123456789abcdef
6840$rm -f $first
6841if (echo hi >$first) 2>/dev/null; then
6842 if $test -f 123456789abcde; then
6843 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6844 val="$undef"
6845 else
6846 echo 'You can have filenames longer than 14 characters.'>&4
6847 val="$define"
6848 fi
6849else
6850 $cat <<'EOM'
6851You can't have filenames longer than 14 chars.
6852You can't even think about them!
6853EOM
6854 val="$undef"
6855fi
6856set d_flexfnam
6857eval $setvar
6858$rm -rf 123456789abcde*
6859
6860: determine where library module manual pages go
6861set man3dir man3dir none
6862eval $prefixit
6863$cat <<EOM
6864
6865$spackage has manual pages for many of the library modules.
6866EOM
6867
6868case "$nroff" in
6869nroff)
6870 $cat <<'EOM'
6871However, you don't have nroff, so they're probably useless to you.
6872EOM
6873 case "$man3dir" in
6874 '') man3dir="none";;
6875 esac;;
6876esac
6877
6878case "$d_flexfnam" in
6879undef)
6880 $cat <<'EOM'
6881However, your system can't handle the long file names like File::Basename.3.
6882EOM
6883 case "$man3dir" in
6884 '') man3dir="none";;
6885 esac;;
6886esac
6887
6888echo "If you don't want the manual sources installed, answer 'none'."
6889prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6890case "$man3dir" in
6891'') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6892 if $test -d "$privlib/man/man3"; then
6893 cat <<EOM >&4
6894
6895WARNING: Previous versions of perl installed man3 pages into
6896$privlib/man/man3. This version will suggest a
6897new default of $dflt.
6898EOM
6899 tdflt=$dflt
6900 dflt='n'
6901 rp='Do you wish to preserve the old behavior?(y/n)'
6902 . ./myread
6903 case "$ans" in
6904 y*) dflt="$privlib/man/man3" ;;
6905 *) dflt=$tdflt ;;
6906 esac
6907 fi
6908 ;;
6909*) dflt="$man3dir" ;;
6910esac
6911case "$dflt" in
6912' ') dflt=none ;;
6913esac
6914echo " "
6915fn=dn+~
6916rp="Where do the $package library man pages (source) go?"
6917. ./getfile
6918man3dir="$ans"
6919man3direxp="$ansexp"
6920case "$man3dir" in
6921'') man3dir=' '
6922 installman3dir='';;
6923esac
6924
6925: Change installation prefix, if necessary.
6926if $test X"$prefix" != X"$installprefix"; then
6927 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6928else
6929 installman3dir="$man3direxp"
6930fi
6931
6932: What suffix to use on installed man pages
6933case "$man3dir" in
6934' ')
6935 man3ext='0'
6936 ;;
6937*)
6938 rp="What suffix should be used for the $package library man pages?"
6939 case "$man3ext" in
6940 '') case "$man3dir" in
6941 *3) dflt=3 ;;
6942 *3p) dflt=3p ;;
6943 *3pm) dflt=3pm ;;
6944 *l) dflt=l;;
6945 *n) dflt=n;;
6946 *o) dflt=o;;
6947 *p) dflt=p;;
6948 *C) dflt=C;;
6949 *L) dflt=L;;
6950 *L3) dflt=L3;;
6951 *) dflt=3;;
6952 esac
6953 ;;
6954 *) dflt="$man3ext";;
6955 esac
6956 . ./myread
6957 man3ext="$ans"
6958 ;;
6959esac
6960
6961: see if we have to deal with yellow pages, now NIS.
6962if $test -d /usr/etc/yp || $test -d /etc/yp; then
6963 if $test -f /usr/etc/nibindd; then
6964 echo " "
6965 echo "I'm fairly confident you're on a NeXT."
6966 echo " "
6967 rp='Do you get the hosts file via NetInfo?'
6968 dflt=y
6969 case "$hostcat" in
6970 nidump*) ;;
6971 '') ;;
6972 *) dflt=n;;
6973 esac
6974 . ./myread
6975 case "$ans" in
6976 y*) hostcat='nidump hosts .';;
6977 *) case "$hostcat" in
6978 nidump*) hostcat='';;
6979 esac
6980 ;;
6981 esac
6982 fi
6983 case "$hostcat" in
6984 nidump*) ;;
6985 *)
6986 case "$hostcat" in
6987 *ypcat*) dflt=y;;
6988 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6989 dflt=y
6990 else
6991 dflt=n
6992 fi;;
6993 *) dflt=n;;
6994 esac
6995 echo " "
6996 rp='Are you getting the hosts file via yellow pages?'
6997 . ./myread
6998 case "$ans" in
6999 y*) hostcat='ypcat hosts';;
7000 *) hostcat='cat /etc/hosts';;
7001 esac
7002 ;;
7003 esac
7004fi
7005case "$hostcat" in
7006'') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7007esac
7008case "$groupcat" in
7009'') test -f /etc/group && groupcat='cat /etc/group';;
7010esac
7011case "$passcat" in
7012'') test -f /etc/passwd && passcat='cat /etc/passwd';;
7013esac
7014
7015: now get the host name
7016echo " "
7017echo "Figuring out host name..." >&4
7018case "$myhostname" in
7019'') cont=true
7020 echo 'Maybe "hostname" will work...'
7021 if tans=`sh -c hostname 2>&1` ; then
7022 myhostname=$tans
7023 phostname=hostname
7024 cont=''
7025 fi
7026 ;;
7027*) cont='';;
7028esac
7029if $test "$cont"; then
7030 if ./xenix; then
7031 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7032 if tans=`cat /etc/systemid 2>&1` ; then
7033 myhostname=$tans
7034 phostname='cat /etc/systemid'
7035 echo "Whadyaknow. Xenix always was a bit strange..."
7036 cont=''
7037 fi
7038 elif $test -r /etc/systemid; then
7039 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7040 fi
7041fi
7042if $test "$cont"; then
7043 echo 'No, maybe "uuname -l" will work...'
7044 if tans=`sh -c 'uuname -l' 2>&1` ; then
7045 myhostname=$tans
7046 phostname='uuname -l'
7047 else
7048 echo 'Strange. Maybe "uname -n" will work...'
7049 if tans=`sh -c 'uname -n' 2>&1` ; then
7050 myhostname=$tans
7051 phostname='uname -n'
7052 else
7053 echo 'Oh well, maybe I can mine it out of whoami.h...'
7054 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7055 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7056 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7057 else
7058 case "$myhostname" in
7059 '') echo "Does this machine have an identity crisis or something?"
7060 phostname='';;
7061 *)
7062 echo "Well, you said $myhostname before..."
7063 phostname='echo $myhostname';;
7064 esac
7065 fi
7066 fi
7067 fi
7068fi
7069: you do not want to know about this
7070set $myhostname
7071myhostname=$1
7072
7073: verify guess
7074if $test "$myhostname" ; then
7075 dflt=y
7076 rp='Your host name appears to be "'$myhostname'".'" Right?"
7077 . ./myread
7078 case "$ans" in
7079 y*) ;;
7080 *) myhostname='';;
7081 esac
7082fi
7083
7084: bad guess or no guess
7085while $test "X$myhostname" = X ; do
7086 dflt=''
7087 rp="Please type the (one word) name of your host:"
7088 . ./myread
7089 myhostname="$ans"
7090done
7091
7092: translate upper to lower if necessary
7093case "$myhostname" in
7094*[A-Z]*)
7095 echo "(Normalizing case in your host name)"
7096 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7097 ;;
7098esac
7099
7100case "$myhostname" in
7101*.*)
7102 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7103 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7104 echo "(Trimming domain name from host name--host name is now $myhostname)"
7105 ;;
7106*) case "$mydomain" in
7107 '')
7108 {
7109 test "X$hostcat" = "Xypcat hosts" &&
7110 ypmatch "$myhostname" hosts 2>/dev/null |\
7111 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7112 $test -s hosts
7113 } || {
7114 test "X$hostcat" != "X" &&
7115 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7116 /[ ]$myhostname[ . ]/p" > hosts
7117 }
7118 tmp_re="[ . ]"
7119 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7120 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7121 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7122 hosts | $sort | $uniq | \
7123 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7124 case `$echo X$dflt` in
7125 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
7126 dflt=.
7127 ;;
7128 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7129 ;;
7130 esac
7131 case "$dflt" in
7132 .)
7133 tans=`./loc resolv.conf X /etc /usr/etc`
7134 if $test -f "$tans"; then
7135 echo "(Attempting domain name extraction from $tans)"
7136 dflt=.`$sed -n -e 's/ / /g' \
7137 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7138 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7139 case "$dflt" in
7140 .) dflt=.`$sed -n -e 's/ / /g' \
7141 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7142 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7143 ;;
7144 esac
7145 fi
7146 ;;
7147 esac
7148 case "$dflt" in
7149 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7150 dflt=.`sh -c domainname 2>/dev/null`
7151 case "$dflt" in
7152 '') dflt='.';;
7153 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7154 esac
7155 ;;
7156 esac
7157 case "$dflt" in
7158 .) echo "(Lost all hope -- silly guess then)"
7159 dflt='.uucp'
7160 ;;
7161 esac
7162 $rm -f hosts
7163 ;;
7164 *) dflt="$mydomain";;
7165 esac;;
7166esac
7167echo " "
7168rp="What is your domain name?"
7169. ./myread
7170tans="$ans"
7171case "$ans" in
7172'') ;;
7173.*) ;;
7174*) tans=".$tans";;
7175esac
7176mydomain="$tans"
7177
7178: translate upper to lower if necessary
7179case "$mydomain" in
7180*[A-Z]*)
7181 echo "(Normalizing case in your domain name)"
7182 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7183 ;;
7184esac
7185
7186: a little sanity check here
7187case "$phostname" in
7188'') ;;
7189*)
7190 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7191 $myhostname$mydomain|$myhostname) ;;
7192 *)
7193 case "$phostname" in
7194 sed*)
7195 echo "(That doesn't agree with your whoami.h file, by the way.)"
7196 ;;
7197 *)
7198 echo "(That doesn't agree with your $phostname command, by the way.)"
7199 ;;
7200 esac
7201 ;;
7202 esac
7203 ;;
7204esac
7205
7206$cat <<EOM
7207
7208I need to get your e-mail address in Internet format if possible, i.e.
7209something like user@host.domain. Please answer accurately since I have
7210no easy means to double check it. The default value provided below
7211is most probably close to reality but may not be valid from outside
7212your organization...
7213
7214EOM
7215cont=x
7216while test "$cont"; do
7217 case "$cf_email" in
7218 '') dflt="$cf_by@$myhostname$mydomain";;
7219 *) dflt="$cf_email";;
7220 esac
7221 rp='What is your e-mail address?'
7222 . ./myread
7223 cf_email="$ans"
7224 case "$cf_email" in
7225 *@*.*) cont='' ;;
7226 *)
7227 rp='Address does not look like an Internet one. Use it anyway?'
7228 case "$fastread" in
7229 yes) dflt=y ;;
7230 *) dflt=n ;;
7231 esac
7232 . ./myread
7233 case "$ans" in
7234 y*) cont='' ;;
7235 *) echo " " ;;
7236 esac
7237 ;;
7238 esac
7239done
7240
7241$cat <<EOM
7242
7243If you or somebody else will be maintaining perl at your site, please
7244fill in the correct e-mail address here so that they may be contacted
7245if necessary. Currently, the "perlbug" program included with perl
7246will send mail to this address in addition to perlbug@perl.org. You may
7247enter "none" for no administrator.
7248
7249EOM
7250case "$perladmin" in
7251'') dflt="$cf_email";;
7252*) dflt="$perladmin";;
7253esac
7254rp='Perl administrator e-mail address'
7255. ./myread
7256perladmin="$ans"
7257
7258: figure out how to guarantee perl startup
7259case "$startperl" in
7260'')
7261 case "$sharpbang" in
7262 *!)
7263 $cat <<EOH
7264
7265I can use the #! construct to start perl on your system. This will
7266make startup of perl scripts faster, but may cause problems if you
7267want to share those scripts and perl is not in a standard place
7268($binexp/perl) on all your platforms. The alternative is to force
7269a shell by starting the script with a single ':' character.
7270
7271EOH
7272 dflt="$binexp/perl"
7273 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7274 . ./myread
7275 case "$ans" in
7276 none) startperl=": # use perl";;
7277 *) startperl="#!$ans"
7278 if $test 30 -lt `echo "$ans" | wc -c`; then
7279 $cat >&4 <<EOM
7280
7281WARNING: Some systems limit the #! command to 32 characters.
7282If you experience difficulty running Perl scripts with #!, try
7283installing Perl in a directory with a shorter pathname.
7284
7285EOM
7286 fi ;;
7287 esac
7288 ;;
7289 *) startperl=": # use perl"
7290 ;;
7291 esac
7292 ;;
7293esac
7294echo "I'll use $startperl to start perl scripts."
7295
7296: figure best path for perl in scripts
7297case "$perlpath" in
7298'')
7299 perlpath="$binexp/perl"
7300 case "$startperl" in
7301 *!*) ;;
7302 *)
7303 $cat <<EOH
7304
7305I will use the "eval 'exec'" idiom to start Perl on your system.
7306I can use the full path of your Perl binary for this purpose, but
7307doing so may cause problems if you want to share those scripts and
7308Perl is not always in a standard place ($binexp/perl).
7309
7310EOH
7311 dflt="$binexp/perl"
7312 rp="What path shall I use in \"eval 'exec'\"?"
7313 . ./myread
7314 perlpath="$ans"
7315 ;;
7316 esac
7317 ;;
7318esac
7319case "$startperl" in
7320*!*) ;;
7321*) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7322esac
7323
7324: determine where public executable scripts go
7325set scriptdir scriptdir
7326eval $prefixit
7327case "$scriptdir" in
7328'')
7329 dflt="$bin"
7330 : guess some guesses
7331 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7332 $test -d /usr/share/bin && dflt=/usr/share/bin
7333 $test -d /usr/local/script && dflt=/usr/local/script
7334 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7335 $test -d $prefixexp/script && dflt=$prefixexp/script
7336 set dflt
7337 eval $prefixup
7338 ;;
7339*) dflt="$scriptdir"
7340 ;;
7341esac
7342$cat <<EOM
7343
7344Some installations have a separate directory just for executable scripts so
7345that they can mount it across multiple architectures but keep the scripts in
7346one spot. You might, for example, have a subdirectory of /usr/share for this.
7347Or you might just lump your scripts in with all your other executables.
7348
7349EOM
7350fn=d~
7351rp='Where do you keep publicly executable scripts?'
7352. ./getfile
7353if $test "X$ansexp" != "X$scriptdirexp"; then
7354 installscript=''
7355fi
7356scriptdir="$ans"
7357scriptdirexp="$ansexp"
7358: Change installation prefix, if necessary.
7359if $test X"$prefix" != X"$installprefix"; then
7360 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7361else
7362 installscript="$scriptdirexp"
7363fi
7364
7365: determine where add-on public executables go
7366case "$sitebin" in
7367'') dflt=$siteprefix/bin ;;
7368*) dflt=$sitebin ;;
7369esac
7370fn=d~
7371rp='Pathname where the add-on public executables should be installed?'
7372. ./getfile
7373sitebin="$ans"
7374sitebinexp="$ansexp"
7375: Change installation prefix, if necessary.
7376if $test X"$prefix" != X"$installprefix"; then
7377 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7378else
7379 installsitebin="$sitebinexp"
7380fi
7381
7382case "$useperlio" in
7383$define|true|[yY]*) dflt='y';;
7384*) dflt='n';;
7385esac
7386cat <<EOM
7387
7388Previous version of $package used the standard IO mechanisms as defined
7389in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7390mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7391the default. This abstraction layer can use AT&T's sfio (if you already
7392have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7393problems with some extension modules. Using PerlIO with stdio is safe,
7394but it is slower than plain stdio and therefore is not the default.
7395
7396If this doesn't make any sense to you, just accept the default '$dflt'.
7397EOM
7398rp='Use the experimental PerlIO abstraction layer?'
7399. ./myread
7400case "$ans" in
7401y|Y)
7402 val="$define"
7403 ;;
7404*)
7405 echo "Ok, doing things the stdio way"
7406 val="$undef"
7407 ;;
7408esac
7409set useperlio
7410eval $setvar
7411
7412case "$vendorprefix" in
7413'') d_vendorbin="$undef"
7414 vendorbin=''
7415 vendorbinexp=''
7416 ;;
7417*) d_vendorbin="$define"
7418 : determine where vendor-supplied executables go.
7419 case "$vendorbin" in
7420 '') dflt=$vendorprefix/bin ;;
7421 *) dflt="$vendorbin" ;;
7422 esac
7423 fn=d~+
7424 rp='Pathname for the vendor-supplied executables directory?'
7425 . ./getfile
7426 vendorbin="$ans"
7427 vendorbinexp="$ansexp"
7428 ;;
7429esac
7430: Change installation prefix, if necessary.
7431if $test X"$prefix" != X"$installprefix"; then
7432 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7433else
7434 installvendorbin="$vendorbinexp"
7435fi
7436
7437: see if qgcvt exists
7438set qgcvt d_qgcvt
7439eval $inlibc
7440
7441echo " "
7442
7443if $test X"$d_longdbl" = X"$define"; then
7444
7445echo "Checking how to print long doubles..." >&4
7446
7447if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7448 $cat >try.c <<'EOCP'
7449#include <sys/types.h>
7450#include <stdio.h>
7451int main() {
7452 double d = 123.456;
7453 printf("%.3f\n", d);
7454}
7455EOCP
7456 set try
7457 if eval $compile; then
7458 yyy=`./try$exe_ext`
7459 case "$yyy" in
7460 123.456)
7461 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7462 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7463 echo "We will use %f."
7464 ;;
7465 esac
7466 fi
7467fi
7468
7469if $test X"$sPRIfldbl" = X; then
7470 $cat >try.c <<'EOCP'
7471#include <sys/types.h>
7472#include <stdio.h>
7473int main() {
7474 long double d = 123.456;
7475 printf("%.3llf\n", d);
7476}
7477EOCP
7478 set try
7479 if eval $compile; then
7480 yyy=`./try$exe_ext`
7481 case "$yyy" in
7482 123.456)
7483 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7484 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7485 echo "We will use %llf."
7486 ;;
7487 esac
7488 fi
7489fi
7490
7491if $test X"$sPRIfldbl" = X; then
7492 $cat >try.c <<'EOCP'
7493#include <sys/types.h>
7494#include <stdio.h>
7495int main() {
7496 long double d = 123.456;
7497 printf("%.3Lf\n", d);
7498}
7499EOCP
7500 set try
7501 if eval $compile; then
7502 yyy=`./try$exe_ext`
7503 case "$yyy" in
7504 123.456)
7505 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7506 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7507 echo "We will use %Lf."
7508 ;;
7509 esac
7510 fi
7511fi
7512
7513if $test X"$sPRIfldbl" = X; then
7514 $cat >try.c <<'EOCP'
7515#include <sys/types.h>
7516#include <stdio.h>
7517int main() {
7518 long double d = 123.456;
7519 printf("%.3lf\n", d);
7520}
7521EOCP
7522 set try
7523 if eval $compile; then
7524 yyy=`./try$exe_ext`
7525 case "$yyy" in
7526 123.456)
7527 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7528 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7529 echo "We will use %lf."
7530 ;;
7531 esac
7532 fi
7533fi
7534
7535if $test X"$sPRIfldbl" = X; then
7536 echo "Cannot figure out how to print long doubles." >&4
7537else
7538 sSCNfldbl=$sPRIfldbl # expect consistency
7539fi
7540
7541$rm -f try try.*
7542
7543fi # d_longdbl
7544
7545case "$sPRIfldbl" in
7546'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7547 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7548 d_SCNfldbl="$undef";
7549 ;;
7550*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7551 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7552 d_SCNfldbl="$define";
7553 ;;
7554esac
7555
7556: Check how to convert floats to strings.
7557echo " "
7558echo "Checking for an efficient way to convert floats to strings."
7559echo " " > try.c
7560case "$uselongdouble" in
7561"$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7562esac
7563case "$d_longdbl" in
7564"$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7565esac
7566case "$d_PRIgldbl" in
7567"$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7568esac
7569$cat >>try.c <<EOP
7570#ifdef TRY_gconvert
7571#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7572char *myname = "gconvert";
7573#endif
7574#ifdef TRY_gcvt
7575#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7576char *myname = "gcvt";
7577#endif
7578#ifdef TRY_qgcvt
7579#define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7580char *myname = "qgcvt";
7581#define DOUBLETYPE long double
7582#endif
7583#ifdef TRY_sprintf
7584#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7585#define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7586#else
7587#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7588#endif
7589char *myname = "sprintf";
7590#endif
7591
7592#ifndef DOUBLETYPE
7593#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7594#define DOUBLETYPE long double
7595#else
7596#define DOUBLETYPE double
7597#endif
7598#endif
7599
7600#include <stdio.h>
7601
7602#define I_STDLIB $i_stdlib
7603#ifdef I_STDLIB
7604#include <stdlib.h>
7605#endif
7606
7607int
7608checkit(expect, got)
7609char *expect;
7610char *got;
7611{
7612 if (strcmp(expect, got)) {
7613 printf("%s oddity: Expected %s, got %s\n",
7614 myname, expect, got);
7615 exit(1);
7616 }
7617}
7618
7619int main()
7620{
7621 char buf[64];
7622 buf[63] = '\0';
7623
7624 /* This must be 1st test on (which?) platform */
7625 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7626 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7627 checkit("0.1", buf);
7628
7629 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7630 checkit("1", buf);
7631
7632 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7633 checkit("1.1", buf);
7634
7635 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7636 checkit("1.01", buf);
7637
7638 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7639 checkit("1.001", buf);
7640
7641 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7642 checkit("1.0001", buf);
7643
7644 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7645 checkit("1.00001", buf);
7646
7647 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7648 checkit("1.000001", buf);
7649
7650 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7651 checkit("0", buf);
7652
7653 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7654 checkit("-1", buf);
7655
7656 /* Some Linux gcvt's give 1.e+5 here. */
7657 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7658 checkit("100000", buf);
7659
7660 /* Some Linux gcvt's give -1.e+5 here. */
7661 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7662 checkit("-100000", buf);
7663
7664 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7665 checkit("123.456", buf);
7666
7667 exit(0);
7668}
7669EOP
7670case "$d_Gconvert" in
7671gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7672gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7673sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7674*) xxx_list='gconvert gcvt sprintf' ;;
7675esac
7676
7677case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7678"$define$define$define")
7679 # for long doubles prefer first qgcvt, then sprintf
7680 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7681 xxx_list="sprintf $xxx_list"
7682 case "$d_qgcvt" in
7683 "$define") xxx_list="qgcvt $xxx_list" ;;
7684 esac
7685 ;;
7686esac
7687
7688for xxx_convert in $xxx_list; do
7689 echo "Trying $xxx_convert..."
7690 $rm -f try try$_o
7691 set try -DTRY_$xxx_convert
7692 if eval $compile; then
7693 echo "$xxx_convert() found." >&4
7694 if ./try; then
7695 echo "I'll use $xxx_convert to convert floats into a string." >&4
7696 break;
7697 else
7698 echo "...But $xxx_convert didn't work as I expected."
7699 fi
7700 else
7701 echo "$xxx_convert NOT found." >&4
7702 fi
7703done
7704
7705case "$xxx_convert" in
7706gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7707gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7708qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7709*) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7710 "$define$define$define")
7711 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7712 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7713 esac
7714 ;;
7715esac
7716
7717: Initialize h_fcntl
7718h_fcntl=false
7719
7720: Initialize h_sysfile
7721h_sysfile=false
7722
7723: access call always available on UNIX
7724set access d_access
7725eval $inlibc
7726
7727: locate the flags for 'access()'
7728case "$d_access" in
7729"$define")
7730 echo " "
7731 $cat >access.c <<'EOCP'
7732#include <sys/types.h>
7733#ifdef I_FCNTL
7734#include <fcntl.h>
7735#endif
7736#ifdef I_SYS_FILE
7737#include <sys/file.h>
7738#endif
7739#ifdef I_UNISTD
7740#include <unistd.h>
7741#endif
7742int main() {
7743 exit(R_OK);
7744}
7745EOCP
7746 : check sys/file.h first, no particular reason here
7747 if $test `./findhdr sys/file.h` && \
7748 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7749 h_sysfile=true;
7750 echo "<sys/file.h> defines the *_OK access constants." >&4
7751 elif $test `./findhdr fcntl.h` && \
7752 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7753 h_fcntl=true;
7754 echo "<fcntl.h> defines the *_OK access constants." >&4
7755 elif $test `./findhdr unistd.h` && \
7756 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7757 echo "<unistd.h> defines the *_OK access constants." >&4
7758 else
7759 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7760 fi
7761 ;;
7762esac
7763$rm -f access*
7764
7765: see if accessx exists
7766set accessx d_accessx
7767eval $inlibc
7768
7769: see if alarm exists
7770set alarm d_alarm
7771eval $inlibc
7772
7773: see if atolf exists
7774set atolf d_atolf
7775eval $inlibc
7776
7777: see if atoll exists
7778set atoll d_atoll
7779eval $inlibc
7780
7781: Look for GNU-cc style attribute checking
7782echo " "
7783echo "Checking whether your compiler can handle __attribute__ ..." >&4
7784$cat >attrib.c <<'EOCP'
7785#include <stdio.h>
7786void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7787EOCP
7788if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7789 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7790 echo "Your C compiler doesn't fully support __attribute__."
7791 val="$undef"
7792 else
7793 echo "Your C compiler supports __attribute__."
7794 val="$define"
7795 fi
7796else
7797 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7798 val="$undef"
7799fi
7800set d_attribut
7801eval $setvar
7802$rm -f attrib*
7803
7804: see if bcmp exists
7805set bcmp d_bcmp
7806eval $inlibc
7807
7808: see if bcopy exists
7809set bcopy d_bcopy
7810eval $inlibc
7811
7812: see if this is a unistd.h system
7813set unistd.h i_unistd
7814eval $inhdr
7815
7816: see if getpgrp exists
7817set getpgrp d_getpgrp
7818eval $inlibc
7819
7820case "$d_getpgrp" in
7821"$define")
7822 echo " "
7823 echo "Checking to see which flavor of getpgrp is in use..."
7824 $cat >set.c <<EOP
7825#$i_unistd I_UNISTD
7826#include <sys/types.h>
7827#ifdef I_UNISTD
7828# include <unistd.h>
7829#endif
7830int main()
7831{
7832 if (getuid() == 0) {
7833 printf("(I see you are running Configure as super-user...)\n");
7834 setuid(1);
7835 }
7836#ifdef TRY_BSD_PGRP
7837 if (getpgrp(1) == 0)
7838 exit(0);
7839#else
7840 if (getpgrp() > 0)
7841 exit(0);
7842#endif
7843 exit(1);
7844}
7845EOP
7846 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7847 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7848 val="$define"
7849 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7850 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7851 val="$undef"
7852 else
7853 echo "I can't seem to compile and run the test program."
7854 if ./usg; then
7855 xxx="a USG one, i.e. you use getpgrp()."
7856 else
7857 # SVR4 systems can appear rather BSD-ish.
7858 case "$i_unistd" in
7859 $undef)
7860 xxx="a BSD one, i.e. you use getpgrp(pid)."
7861 val="$define"
7862 ;;
7863 $define)
7864 xxx="probably a USG one, i.e. you use getpgrp()."
7865 val="$undef"
7866 ;;
7867 esac
7868 fi
7869 echo "Assuming your getpgrp is $xxx" >&4
7870 fi
7871 ;;
7872*) val="$undef";;
7873esac
7874set d_bsdgetpgrp
7875eval $setvar
7876$rm -f set set.c
7877
7878: see if setpgrp exists
7879set setpgrp d_setpgrp
7880eval $inlibc
7881
7882case "$d_setpgrp" in
7883"$define")
7884 echo " "
7885 echo "Checking to see which flavor of setpgrp is in use..."
7886 $cat >set.c <<EOP
7887#$i_unistd I_UNISTD
7888#include <sys/types.h>
7889#ifdef I_UNISTD
7890# include <unistd.h>
7891#endif
7892int main()
7893{
7894 if (getuid() == 0) {
7895 printf("(I see you are running Configure as super-user...)\n");
7896 setuid(1);
7897 }
7898#ifdef TRY_BSD_PGRP
7899 if (-1 == setpgrp(1, 1))
7900 exit(0);
7901#else
7902 if (setpgrp() != -1)
7903 exit(0);
7904#endif
7905 exit(1);
7906}
7907EOP
7908 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7909 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7910 val="$define"
7911 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7912 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7913 val="$undef"
7914 else
7915 echo "(I can't seem to compile and run the test program.)"
7916 if ./usg; then
7917 xxx="a USG one, i.e. you use setpgrp()."
7918 else
7919 # SVR4 systems can appear rather BSD-ish.
7920 case "$i_unistd" in
7921 $undef)
7922 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7923 val="$define"
7924 ;;
7925 $define)
7926 xxx="probably a USG one, i.e. you use setpgrp()."
7927 val="$undef"
7928 ;;
7929 esac
7930 fi
7931 echo "Assuming your setpgrp is $xxx" >&4
7932 fi
7933 ;;
7934*) val="$undef";;
7935esac
7936set d_bsdsetpgrp
7937eval $setvar
7938$rm -f set set.c
7939: see if bzero exists
7940set bzero d_bzero
7941eval $inlibc
7942
7943: see if signal is declared as pointer to function returning int or void
7944echo " "
7945xxx=`./findhdr signal.h`
7946$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7947if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7948 echo "You have int (*signal())() instead of void." >&4
7949 val="$undef"
7950elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7951 echo "You have void (*signal())()." >&4
7952 val="$define"
7953elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7954 echo "You have int (*signal())() instead of void." >&4
7955 val="$undef"
7956elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7957 echo "You have void (*signal())()." >&4
7958 val="$define"
7959else
7960 case "$d_voidsig" in
7961 '')
7962 echo "I can't determine whether signal handler returns void or int..." >&4
7963 dflt=void
7964 rp="What type does your signal handler return?"
7965 . ./myread
7966 case "$ans" in
7967 v*) val="$define";;
7968 *) val="$undef";;
7969 esac;;
7970 "$define")
7971 echo "As you already told me, signal handler returns void." >&4
7972 val="$define"
7973 ;;
7974 *) echo "As you already told me, signal handler returns int." >&4
7975 val="$undef"
7976 ;;
7977 esac
7978fi
7979set d_voidsig
7980eval $setvar
7981case "$d_voidsig" in
7982"$define") signal_t="void";;
7983*) signal_t="int";;
7984esac
7985$rm -f $$.tmp
7986
7987: check for ability to cast large floats to 32-bit ints.
7988echo " "
7989echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7990if $test "$intsize" -ge 4; then
7991 xxx=int
7992else
7993 xxx=long
7994fi
7995$cat >try.c <<EOCP
7996#include <stdio.h>
7997#include <sys/types.h>
7998#include <signal.h>
7999$signal_t blech(s) int s; { exit(3); }
8000int main()
8001{
8002 $xxx i32;
8003 double f, g;
8004 int result = 0;
8005 char str[16];
8006 signal(SIGFPE, blech);
8007
8008 /* Don't let compiler optimize the test away. Store the number
8009 in a writable string for gcc to pass to sscanf under HP/UX.
8010 */
8011 sprintf(str, "2147483647");
8012 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8013 g = 10 * f;
8014 i32 = ($xxx) g;
8015
8016 /* x86 processors will probably give 0x8000 0000, which is a
8017 sign change. We don't want that. We want to mimic SPARC
8018 behavior here, which is to preserve the sign and give
8019 back 0x7fff ffff.
8020 */
8021 if (i32 != ($xxx) f)
8022 result |= 1;
8023 exit(result);
8024}
8025EOCP
8026set try
8027if eval $compile_ok; then
8028 ./try
8029 yyy=$?
8030else
8031 echo "(I can't seem to compile the test program--assuming it can't)"
8032 yyy=1
8033fi
8034case "$yyy" in
80350) val="$define"
8036 echo "Yup, it can."
8037 ;;
8038*) val="$undef"
8039 echo "Nope, it can't."
8040 ;;
8041esac
8042set d_casti32
8043eval $setvar
8044$rm -f try try.*
8045
8046: check for ability to cast negative floats to unsigned
8047echo " "
8048echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8049$cat >try.c <<EOCP
8050#include <stdio.h>
8051#include <sys/types.h>
8052#include <signal.h>
8053$signal_t blech(s) int s; { exit(7); }
8054$signal_t blech_in_list(s) int s; { exit(4); }
8055unsigned long dummy_long(p) unsigned long p; { return p; }
8056unsigned int dummy_int(p) unsigned int p; { return p; }
8057unsigned short dummy_short(p) unsigned short p; { return p; }
8058int main()
8059{
8060 double f;
8061 unsigned long along;
8062 unsigned int aint;
8063 unsigned short ashort;
8064 int result = 0;
8065 char str[16];
8066
8067 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8068 a direct f = -123. assignment. gcc-2.8.0 reportedly
8069 optimized the whole file away
8070 */
8071 /* Store the number in a writable string for gcc to pass to
8072 sscanf under HP/UX.
8073 */
8074 sprintf(str, "-123");
8075 sscanf(str, "%lf", &f); /* f = -123.; */
8076
8077 signal(SIGFPE, blech);
8078 along = (unsigned long)f;
8079 aint = (unsigned int)f;
8080 ashort = (unsigned short)f;
8081 if (along != (unsigned long)-123)
8082 result |= 1;
8083 if (aint != (unsigned int)-123)
8084 result |= 1;
8085 if (ashort != (unsigned short)-123)
8086 result |= 1;
8087 sprintf(str, "1073741824.");
8088 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8089 f = f + f;
8090 along = 0;
8091 along = (unsigned long)f;
8092 if (along != 0x80000000)
8093 result |= 2;
8094 f -= 1.;
8095 along = 0;
8096 along = (unsigned long)f;
8097 if (along != 0x7fffffff)
8098 result |= 1;
8099 f += 2.;
8100 along = 0;
8101 along = (unsigned long)f;
8102 if (along != 0x80000001)
8103 result |= 2;
8104 if (result)
8105 exit(result);
8106 signal(SIGFPE, blech_in_list);
8107 sprintf(str, "123.");
8108 sscanf(str, "%lf", &f); /* f = 123.; */
8109 along = dummy_long((unsigned long)f);
8110 aint = dummy_int((unsigned int)f);
8111 ashort = dummy_short((unsigned short)f);
8112 if (along != (unsigned long)123)
8113 result |= 4;
8114 if (aint != (unsigned int)123)
8115 result |= 4;
8116 if (ashort != (unsigned short)123)
8117 result |= 4;
8118 exit(result);
8119
8120}
8121EOCP
8122set try
8123if eval $compile_ok; then
8124 ./try
8125 castflags=$?
8126else
8127 echo "(I can't seem to compile the test program--assuming it can't)"
8128 castflags=7
8129fi
8130case "$castflags" in
81310) val="$define"
8132 echo "Yup, it can."
8133 ;;
8134*) val="$undef"
8135 echo "Nope, it can't."
8136 ;;
8137esac
8138set d_castneg
8139eval $setvar
8140$rm -f try.*
8141
8142: see if vprintf exists
8143echo " "
8144if set vprintf val -f d_vprintf; eval $csym; $val; then
8145 echo 'vprintf() found.' >&4
8146 val="$define"
8147 $cat >vprintf.c <<'EOF'
8148#include <varargs.h>
8149
8150int main() { xxx("foo"); }
8151
8152xxx(va_alist)
8153va_dcl
8154{
8155 va_list args;
8156 char buf[10];
8157
8158 va_start(args);
8159 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8160}
8161EOF
8162 set vprintf
8163 if eval $compile && ./vprintf; then
8164 echo "Your vsprintf() returns (int)." >&4
8165 val2="$undef"
8166 else
8167 echo "Your vsprintf() returns (char*)." >&4
8168 val2="$define"
8169 fi
8170else
8171 echo 'vprintf() NOT found.' >&4
8172 val="$undef"
8173 val2="$undef"
8174fi
8175set d_vprintf
8176eval $setvar
8177val=$val2
8178set d_charvspr
8179eval $setvar
8180
8181: see if chown exists
8182set chown d_chown
8183eval $inlibc
8184
8185: see if chroot exists
8186set chroot d_chroot
8187eval $inlibc
8188
8189: see if chsize exists
8190set chsize d_chsize
8191eval $inlibc
8192
8193: check for const keyword
8194echo " "
8195echo 'Checking to see if your C compiler knows about "const"...' >&4
8196$cat >const.c <<'EOCP'
8197typedef struct spug { int drokk; } spug;
8198int main()
8199{
8200 const char *foo;
8201 const spug y;
8202}
8203EOCP
8204if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8205 val="$define"
8206 echo "Yup, it does."
8207else
8208 val="$undef"
8209 echo "Nope, it doesn't."
8210fi
8211set d_const
8212eval $setvar
8213
8214: see if crypt exists
8215echo " "
8216if set crypt val -f d_crypt; eval $csym; $val; then
8217 echo 'crypt() found.' >&4
8218 val="$define"
8219 cryptlib=''
8220else
8221 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8222 if $test -z "$cryptlib"; then
8223 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8224 else
8225 cryptlib=-lcrypt
8226 fi
8227 if $test -z "$cryptlib"; then
8228 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8229 else
8230 cryptlib=-lcrypt
8231 fi
8232 if $test -z "$cryptlib"; then
8233 cryptlib=`./loc libcrypt$_a "" $libpth`
8234 else
8235 cryptlib=-lcrypt
8236 fi
8237 if $test -z "$cryptlib"; then
8238 echo 'crypt() NOT found.' >&4
8239 val="$undef"
8240 else
8241 val="$define"
8242 fi
8243fi
8244set d_crypt
8245eval $setvar
8246
8247: get csh whereabouts
8248case "$csh" in
8249'csh') val="$undef" ;;
8250*) val="$define" ;;
8251esac
8252set d_csh
8253eval $setvar
8254: Respect a hint or command line value for full_csh.
8255case "$full_csh" in
8256'') full_csh=$csh ;;
8257esac
8258
8259: see if cuserid exists
8260set cuserid d_cuserid
8261eval $inlibc
8262
8263: see if this is a limits.h system
8264set limits.h i_limits
8265eval $inhdr
8266
8267: see if this is a float.h system
8268set float.h i_float
8269eval $inhdr
8270
8271: See if number of significant digits in a double precision number is known
8272echo " "
8273$cat >dbl_dig.c <<EOM
8274#$i_limits I_LIMITS
8275#$i_float I_FLOAT
8276#ifdef I_LIMITS
8277#include <limits.h>
8278#endif
8279#ifdef I_FLOAT
8280#include <float.h>
8281#endif
8282#ifdef DBL_DIG
8283printf("Contains DBL_DIG");
8284#endif
8285EOM
8286$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8287if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8288 echo "DBL_DIG found." >&4
8289 val="$define"
8290else
8291 echo "DBL_DIG NOT found." >&4
8292 val="$undef"
8293fi
8294$rm -f dbl_dig.?
8295set d_dbl_dig
8296eval $setvar
8297
8298: see if difftime exists
8299set difftime d_difftime
8300eval $inlibc
8301
8302: see if this is a dirent system
8303echo " "
8304if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8305 val="$define"
8306 echo "<dirent.h> found." >&4
8307else
8308 val="$undef"
8309 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8310 echo "<sys/dir.h> found." >&4
8311 echo " "
8312 else
8313 xinc=`./findhdr sys/ndir.h`
8314 fi
8315 echo "<dirent.h> NOT found." >&4
8316fi
8317set i_dirent
8318eval $setvar
8319
8320: Look for type of directory structure.
8321echo " "
8322$cppstdin $cppflags $cppminus < "$xinc" > try.c
8323
8324case "$direntrytype" in
8325''|' ')
8326 case "$i_dirent" in
8327 $define) guess1='struct dirent' ;;
8328 *) guess1='struct direct' ;;
8329 esac
8330 ;;
8331*) guess1="$direntrytype"
8332 ;;
8333esac
8334
8335case "$guess1" in
8336'struct dirent') guess2='struct direct' ;;
8337*) guess2='struct dirent' ;;
8338esac
8339
8340if $contains "$guess1" try.c >/dev/null 2>&1; then
8341 direntrytype="$guess1"
8342 echo "Your directory entries are $direntrytype." >&4
8343elif $contains "$guess2" try.c >/dev/null 2>&1; then
8344 direntrytype="$guess2"
8345 echo "Your directory entries seem to be $direntrytype." >&4
8346else
8347 echo "I don't recognize your system's directory entries." >&4
8348 rp="What type is used for directory entries on this system?"
8349 dflt="$guess1"
8350 . ./myread
8351 direntrytype="$ans"
8352fi
8353$rm -f try.c
8354
8355
8356: see if the directory entry stores field length
8357echo " "
8358$cppstdin $cppflags $cppminus < "$xinc" > try.c
8359if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8360 echo "Good, your directory entry keeps length information in d_namlen." >&4
8361 val="$define"
8362else
8363 echo "Your directory entry does not know about the d_namlen field." >&4
8364 val="$undef"
8365fi
8366set d_dirnamlen
8367eval $setvar
8368$rm -f try.c
8369
8370: see if dlerror exists
8371xxx_runnm="$runnm"
8372runnm=false
8373set dlerror d_dlerror
8374eval $inlibc
8375runnm="$xxx_runnm"
8376
8377: see if dlfcn is available
8378set dlfcn.h i_dlfcn
8379eval $inhdr
8380
8381case "$usedl" in
8382$define|y|true)
8383 $cat << EOM
8384
8385On a few systems, the dynamically loaded modules that perl generates and uses
8386will need a different extension than shared libs. The default will probably
8387be appropriate.
8388
8389EOM
8390 case "$dlext" in
8391 '') dflt="$so" ;;
8392 *) dflt="$dlext" ;;
8393 esac
8394 rp='What is the extension of dynamically loaded modules'
8395 . ./myread
8396 dlext="$ans"
8397 ;;
8398*)
8399 dlext="none"
8400 ;;
8401esac
8402
8403: Check if dlsym need a leading underscore
8404echo " "
8405val="$undef"
8406
8407case "$dlsrc" in
8408dl_dlopen.xs)
8409 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8410 $cat >dyna.c <<'EOM'
8411fred () { }
8412EOM
8413
8414$cat >fred.c<<EOM
8415
8416#include <stdio.h>
8417#$i_dlfcn I_DLFCN
8418#ifdef I_DLFCN
8419#include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8420#else
8421#include <sys/types.h>
8422#include <nlist.h>
8423#include <link.h>
8424#endif
8425
8426extern int fred() ;
8427
8428int main()
8429{
8430 void * handle ;
8431 void * symbol ;
8432#ifndef RTLD_LAZY
8433 int mode = 1 ;
8434#else
8435 int mode = RTLD_LAZY ;
8436#endif
8437 handle = dlopen("./dyna.$dlext", mode) ;
8438 if (handle == NULL) {
8439 printf ("1\n") ;
8440 fflush (stdout) ;
8441 exit(0);
8442 }
8443 symbol = dlsym(handle, "fred") ;
8444 if (symbol == NULL) {
8445 /* try putting a leading underscore */
8446 symbol = dlsym(handle, "_fred") ;
8447 if (symbol == NULL) {
8448 printf ("2\n") ;
8449 fflush (stdout) ;
8450 exit(0);
8451 }
8452 printf ("3\n") ;
8453 }
8454 else
8455 printf ("4\n") ;
8456 fflush (stdout) ;
8457 exit(0);
8458}
8459EOM
8460 : Call the object file tmp-dyna.o in case dlext=o.
8461 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8462 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8463 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8464 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8465 xxx=`./fred`
8466 case $xxx in
8467 1) echo "Test program failed using dlopen." >&4
8468 echo "Perhaps you should not use dynamic loading." >&4;;
8469 2) echo "Test program failed using dlsym." >&4
8470 echo "Perhaps you should not use dynamic loading." >&4;;
8471 3) echo "dlsym needs a leading underscore" >&4
8472 val="$define" ;;
8473 4) echo "dlsym doesn't need a leading underscore." >&4;;
8474 esac
8475 else
8476 echo "I can't compile and run the test program." >&4
8477 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8478 fi
8479 ;;
8480esac
8481
8482$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8483
8484set d_dlsymun
8485eval $setvar
8486
8487hasproto='varname=$1; func=$2; shift; shift;
8488while $test $# -ge 2; do
8489 case "$1" in
8490 $define) echo "#include <$2>";;
8491 esac ;
8492 shift 2;
8493done > try.c;
8494$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8495if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8496 echo "$func() prototype found.";
8497 val="$define";
8498else
8499 echo "$func() prototype NOT found.";
8500 val="$undef";
8501fi;
8502set $varname;
8503eval $setvar;
8504$rm -f try.c tryout.c'
8505
8506: see if prototype for drand48 is available
8507echo " "
8508set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8509eval $hasproto
8510
8511: see if dup2 exists
8512set dup2 d_dup2
8513eval $inlibc
8514
8515: see if eaccess exists
8516set eaccess d_eaccess
8517eval $inlibc
8518
8519: see if endgrent exists
8520set endgrent d_endgrent
8521eval $inlibc
8522
8523: see if endhostent exists
8524set endhostent d_endhent
8525eval $inlibc
8526
8527: see if endnetent exists
8528set endnetent d_endnent
8529eval $inlibc
8530
8531: see if endprotoent exists
8532set endprotoent d_endpent
8533eval $inlibc
8534
8535: see if endpwent exists
8536set endpwent d_endpwent
8537eval $inlibc
8538
8539: see if endservent exists
8540set endservent d_endsent
8541eval $inlibc
8542
8543: Locate the flags for 'open()'
8544echo " "
8545$cat >open3.c <<'EOCP'
8546#include <sys/types.h>
8547#ifdef I_FCNTL
8548#include <fcntl.h>
8549#endif
8550#ifdef I_SYS_FILE
8551#include <sys/file.h>
8552#endif
8553int main() {
8554 if(O_RDONLY);
8555#ifdef O_TRUNC
8556 exit(0);
8557#else
8558 exit(1);
8559#endif
8560}
8561EOCP
8562: check sys/file.h first to get FREAD on Sun
8563if $test `./findhdr sys/file.h` && \
8564 set open3 -DI_SYS_FILE && eval $compile; then
8565 h_sysfile=true;
8566 echo "<sys/file.h> defines the O_* constants..." >&4
8567 if ./open3; then
8568 echo "and you have the 3 argument form of open()." >&4
8569 val="$define"
8570 else
8571 echo "but not the 3 argument form of open(). Oh, well." >&4
8572 val="$undef"
8573 fi
8574elif $test `./findhdr fcntl.h` && \
8575 set open3 -DI_FCNTL && eval $compile; then
8576 h_fcntl=true;
8577 echo "<fcntl.h> defines the O_* constants..." >&4
8578 if ./open3; then
8579 echo "and you have the 3 argument form of open()." >&4
8580 val="$define"
8581 else
8582 echo "but not the 3 argument form of open(). Oh, well." >&4
8583 val="$undef"
8584 fi
8585else
8586 val="$undef"
8587 echo "I can't find the O_* constant definitions! You got problems." >&4
8588fi
8589set d_open3
8590eval $setvar
8591$rm -f open3*
8592
8593: see which of string.h or strings.h is needed
8594echo " "
8595strings=`./findhdr string.h`
8596if $test "$strings" && $test -r "$strings"; then
8597 echo "Using <string.h> instead of <strings.h>." >&4
8598 val="$define"
8599else
8600 val="$undef"
8601 strings=`./findhdr strings.h`
8602 if $test "$strings" && $test -r "$strings"; then
8603 echo "Using <strings.h> instead of <string.h>." >&4
8604 else
8605 echo "No string header found -- You'll surely have problems." >&4
8606 fi
8607fi
8608set i_string
8609eval $setvar
8610case "$i_string" in
8611"$undef") strings=`./findhdr strings.h`;;
8612*) strings=`./findhdr string.h`;;
8613esac
8614
8615: check for non-blocking I/O stuff
8616case "$h_sysfile" in
8617true) echo "#include <sys/file.h>" > head.c;;
8618*)
8619 case "$h_fcntl" in
8620 true) echo "#include <fcntl.h>" > head.c;;
8621 *) echo "#include <sys/fcntl.h>" > head.c;;
8622 esac
8623 ;;
8624esac
8625echo " "
8626echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8627case "$o_nonblock" in
8628'')
8629 $cat head.c > try.c
8630 $cat >>try.c <<'EOCP'
8631#include <stdio.h>
8632int main() {
8633#ifdef O_NONBLOCK
8634 printf("O_NONBLOCK\n");
8635 exit(0);
8636#endif
8637#ifdef O_NDELAY
8638 printf("O_NDELAY\n");
8639 exit(0);
8640#endif
8641#ifdef FNDELAY
8642 printf("FNDELAY\n");
8643 exit(0);
8644#endif
8645 exit(0);
8646}
8647EOCP
8648 set try
8649 if eval $compile_ok; then
8650 o_nonblock=`./try`
8651 case "$o_nonblock" in
8652 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8653 *) echo "Seems like we can use $o_nonblock.";;
8654 esac
8655 else
8656 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8657 fi
8658 ;;
8659*) echo "Using $hint value $o_nonblock.";;
8660esac
8661$rm -f try try.* .out core
8662
8663echo " "
8664echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8665case "$eagain" in
8666'')
8667 $cat head.c > try.c
8668 $cat >>try.c <<EOCP
8669#include <errno.h>
8670#include <sys/types.h>
8671#include <signal.h>
8672#include <stdio.h>
8673#define MY_O_NONBLOCK $o_nonblock
8674#ifndef errno /* XXX need better Configure test */
8675extern int errno;
8676#endif
8677#$i_unistd I_UNISTD
8678#ifdef I_UNISTD
8679#include <unistd.h>
8680#endif
8681#$i_string I_STRING
8682#ifdef I_STRING
8683#include <string.h>
8684#else
8685#include <strings.h>
8686#endif
8687$signal_t blech(x) int x; { exit(3); }
8688EOCP
8689 $cat >> try.c <<'EOCP'
8690int main()
8691{
8692 int pd[2];
8693 int pu[2];
8694 char buf[1];
8695 char string[100];
8696
8697 pipe(pd); /* Down: child -> parent */
8698 pipe(pu); /* Up: parent -> child */
8699 if (0 != fork()) {
8700 int ret;
8701 close(pd[1]); /* Parent reads from pd[0] */
8702 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8703 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8704 exit(1);
8705 signal(SIGALRM, blech);
8706 alarm(5);
8707 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8708 exit(2);
8709 sprintf(string, "%d\n", ret);
8710 write(2, string, strlen(string));
8711 alarm(0);
8712#ifdef EAGAIN
8713 if (errno == EAGAIN) {
8714 printf("EAGAIN\n");
8715 goto ok;
8716 }
8717#endif
8718#ifdef EWOULDBLOCK
8719 if (errno == EWOULDBLOCK)
8720 printf("EWOULDBLOCK\n");
8721#endif
8722 ok:
8723 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8724 sleep(2); /* Give it time to close our pipe */
8725 alarm(5);
8726 ret = read(pd[0], buf, 1); /* Should read EOF */
8727 alarm(0);
8728 sprintf(string, "%d\n", ret);
8729 write(3, string, strlen(string));
8730 exit(0);
8731 }
8732
8733 close(pd[0]); /* We write to pd[1] */
8734 close(pu[1]); /* We read from pu[0] */
8735 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8736 close(pd[1]); /* Pipe pd is now fully closed! */
8737 exit(0); /* Bye bye, thank you for playing! */
8738}
8739EOCP
8740 set try
8741 if eval $compile_ok; then
8742 echo "$startsh" >mtry
8743 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8744 chmod +x mtry
8745 ./mtry >/dev/null 2>&1
8746 case $? in
8747 0) eagain=`$cat try.out`;;
8748 1) echo "Could not perform non-blocking setting!";;
8749 2) echo "I did a successful read() for something that was not there!";;
8750 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8751 *) echo "Something terribly wrong happened during testing.";;
8752 esac
8753 rd_nodata=`$cat try.ret`
8754 echo "A read() system call with no data present returns $rd_nodata."
8755 case "$rd_nodata" in
8756 0|-1) ;;
8757 *)
8758 echo "(That's peculiar, fixing that to be -1.)"
8759 rd_nodata=-1
8760 ;;
8761 esac
8762 case "$eagain" in
8763 '')
8764 echo "Forcing errno EAGAIN on read() with no data available."
8765 eagain=EAGAIN
8766 ;;
8767 *)
8768 echo "Your read() sets errno to $eagain when no data is available."
8769 ;;
8770 esac
8771 status=`$cat try.err`
8772 case "$status" in
8773 0) echo "And it correctly returns 0 to signal EOF.";;
8774 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8775 *) echo "However, your read() returns '$status' on EOF??";;
8776 esac
8777 val="$define"
8778 if test "$status" = "$rd_nodata"; then
8779 echo "WARNING: you can't distinguish between EOF and no data!"
8780 val="$undef"
8781 fi
8782 else
8783 echo "I can't compile the test program--assuming errno EAGAIN will do."
8784 eagain=EAGAIN
8785 fi
8786 set d_eofnblk
8787 eval $setvar
8788 ;;
8789*)
8790 echo "Using $hint value $eagain."
8791 echo "Your read() returns $rd_nodata when no data is present."
8792 case "$d_eofnblk" in
8793 "$define") echo "And you can see EOF because read() returns 0.";;
8794 "$undef") echo "But you can't see EOF status from read() returned value.";;
8795 *)
8796 echo "(Assuming you can't see EOF status from read anyway.)"
8797 d_eofnblk=$undef
8798 ;;
8799 esac
8800 ;;
8801esac
8802$rm -f try try.* .out core head.c mtry
8803
8804: see if fchmod exists
8805set fchmod d_fchmod
8806eval $inlibc
8807
8808: see if fchown exists
8809set fchown d_fchown
8810eval $inlibc
8811
8812: see if this is an fcntl system
8813set fcntl d_fcntl
8814eval $inlibc
8815
8816hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8817while $test $# -ge 2; do
8818 case "$1" in
8819 $define) echo "#include <$2>";;
8820 esac ;
8821 shift 2;
8822done > try.c;
8823echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8824set try;
8825if eval $compile; then
8826 val="$define";
8827else
8828 val="$undef";
8829fi;
8830set $varname;
8831eval $setvar;
8832$rm -f try.c try.o'
8833
8834socketlib=''
8835sockethdr=''
8836: see whether socket exists
8837echo " "
8838$echo $n "Hmm... $c" >&4
8839if set socket val -f d_socket; eval $csym; $val; then
8840 echo "Looks like you have Berkeley networking support." >&4
8841 d_socket="$define"
8842 if set setsockopt val -f; eval $csym; $val; then
8843 d_oldsock="$undef"
8844 else
8845 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8846 d_oldsock="$define"
8847 fi
8848else
8849 if $contains socklib libc.list >/dev/null 2>&1; then
8850 echo "Looks like you have Berkeley networking support." >&4
8851 d_socket="$define"
8852 : we will have to assume that it supports the 4.2 BSD interface
8853 d_oldsock="$undef"
8854 else
8855 echo "You don't have Berkeley networking in libc$_a..." >&4
8856 if test "X$d_socket" = "X$define"; then
8857 echo "...but you seem to believe that you have sockets." >&4
8858 else
8859 for net in net socket
8860 do
8861 if test -f /usr/lib/lib$net$_a; then
8862 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8863 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8864 if $contains socket libc.list >/dev/null 2>&1; then
8865 d_socket="$define"
8866 socketlib="-l$net"
8867 case "$net" in
8868 net)
8869 echo "...but the Wollongong group seems to have hacked it in." >&4
8870 sockethdr="-I/usr/netinclude"
8871 ;;
8872 esac
8873 echo "Found Berkeley sockets interface in lib$net." >& 4
8874 if $contains setsockopt libc.list >/dev/null 2>&1; then
8875 d_oldsock="$undef"
8876 else
8877 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8878 d_oldsock="$define"
8879 fi
8880 break
8881 fi
8882 fi
8883 done
8884 if test "X$d_socket" != "X$define"; then
8885 echo "or anywhere else I see." >&4
8886 d_socket="$undef"
8887 d_oldsock="$undef"
8888 fi
8889 fi
8890 fi
8891fi
8892
8893: see if socketpair exists
8894set socketpair d_sockpair
8895eval $inlibc
8896
8897
8898echo " "
8899echo "Checking the availability of certain socket constants..." >& 4
8900for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8901 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8902 $cat >try.c <<EOF
8903#include <sys/types.h>
8904#include <sys/socket.h>
8905int main() {
8906 int i = $ENUM;
8907}
8908EOF
8909 val="$undef"
8910 set try; if eval $compile; then
8911 val="$define"
8912 fi
8913 set d_${enum}; eval $setvar
8914 $rm -f try.c try
8915done
8916
8917: see if sys/select.h has to be included
8918set sys/select.h i_sysselct
8919eval $inhdr
8920
8921: see if we should include time.h, sys/time.h, or both
8922echo " "
8923if test "X$timeincl" = X; then
8924 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8925 $echo $n "I'm now running the test program...$c"
8926 $cat >try.c <<'EOCP'
8927#include <sys/types.h>
8928#ifdef I_TIME
8929#include <time.h>
8930#endif
8931#ifdef I_SYSTIME
8932#ifdef SYSTIMEKERNEL
8933#define KERNEL
8934#endif
8935#include <sys/time.h>
8936#endif
8937#ifdef I_SYSSELECT
8938#include <sys/select.h>
8939#endif
8940int main()
8941{
8942 struct tm foo;
8943#ifdef S_TIMEVAL
8944 struct timeval bar;
8945#endif
8946#ifdef S_TIMEZONE
8947 struct timezone tzp;
8948#endif
8949 if (foo.tm_sec == foo.tm_sec)
8950 exit(0);
8951#ifdef S_TIMEVAL
8952 if (bar.tv_sec == bar.tv_sec)
8953 exit(0);
8954#endif
8955 exit(1);
8956}
8957EOCP
8958 flags=''
8959 for s_timezone in '-DS_TIMEZONE' ''; do
8960 sysselect=''
8961 for s_timeval in '-DS_TIMEVAL' ''; do
8962 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8963 for i_time in '' '-DI_TIME'; do
8964 for i_systime in '-DI_SYSTIME' ''; do
8965 case "$flags" in
8966 '') $echo $n ".$c"
8967 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8968 if eval $compile; then
8969 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8970 shift
8971 flags="$*"
8972 echo " "
8973 $echo $n "Succeeded with $flags$c"
8974 fi
8975 ;;
8976 esac
8977 done
8978 done
8979 done
8980 done
8981 done
8982 timeincl=''
8983 echo " "
8984 case "$flags" in
8985 *SYSTIMEKERNEL*) i_systimek="$define"
8986 timeincl=`./findhdr sys/time.h`
8987 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8988 *) i_systimek="$undef";;
8989 esac
8990 case "$flags" in
8991 *I_TIME*) i_time="$define"
8992 timeincl=`./findhdr time.h`" $timeincl"
8993 echo "We'll include <time.h>." >&4;;
8994 *) i_time="$undef";;
8995 esac
8996 case "$flags" in
8997 *I_SYSTIME*) i_systime="$define"
8998 timeincl=`./findhdr sys/time.h`" $timeincl"
8999 echo "We'll include <sys/time.h>." >&4;;
9000 *) i_systime="$undef";;
9001 esac
9002 $rm -f try.c try
9003fi
9004
9005: check for fd_set items
9006$cat <<EOM
9007
9008Checking to see how well your C compiler handles fd_set and friends ...
9009EOM
9010$cat >fd_set.c <<EOCP
9011#$i_systime I_SYS_TIME
9012#$i_sysselct I_SYS_SELECT
9013#$d_socket HAS_SOCKET
9014#include <sys/types.h>
9015#ifdef HAS_SOCKET
9016#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9017#endif
9018#ifdef I_SYS_TIME
9019#include <sys/time.h>
9020#endif
9021#ifdef I_SYS_SELECT
9022#include <sys/select.h>
9023#endif
9024int main() {
9025 fd_set fds;
9026
9027#ifdef TRYBITS
9028 if(fds.fds_bits);
9029#endif
9030
9031#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9032 exit(0);
9033#else
9034 exit(1);
9035#endif
9036}
9037EOCP
9038set fd_set -DTRYBITS
9039if eval $compile; then
9040 d_fds_bits="$define"
9041 d_fd_set="$define"
9042 echo "Well, your system knows about the normal fd_set typedef..." >&4
9043 if ./fd_set; then
9044 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9045 d_fd_macros="$define"
9046 else
9047 $cat >&4 <<'EOM'
9048but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9049EOM
9050 d_fd_macros="$undef"
9051 fi
9052else
9053 $cat <<'EOM'
9054Hmm, your compiler has some difficulty with fd_set. Checking further...
9055EOM
9056 set fd_set
9057 if eval $compile; then
9058 d_fds_bits="$undef"
9059 d_fd_set="$define"
9060 echo "Well, your system has some sort of fd_set available..." >&4
9061 if ./fd_set; then
9062 echo "and you have the normal fd_set macros." >&4
9063 d_fd_macros="$define"
9064 else
9065 $cat <<'EOM'
9066but not the normal fd_set macros! Gross! More work for me...
9067EOM
9068 d_fd_macros="$undef"
9069 fi
9070 else
9071 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9072 d_fd_set="$undef"
9073 d_fds_bits="$undef"
9074 d_fd_macros="$undef"
9075 fi
9076fi
9077$rm -f fd_set*
9078
9079: see if fgetpos exists
9080set fgetpos d_fgetpos
9081eval $inlibc
9082
9083: see if flock exists
9084set flock d_flock
9085eval $inlibc
9086
9087: see if fork exists
9088set fork d_fork
9089eval $inlibc
9090
9091: see if pathconf exists
9092set pathconf d_pathconf
9093eval $inlibc
9094
9095: see if fpathconf exists
9096set fpathconf d_fpathconf
9097eval $inlibc
9098
9099
9100: check for fpos64_t
9101echo " "
9102echo "Checking to see if you have fpos64_t..." >&4
9103$cat >try.c <<EOCP
9104#include <stdio.h>
9105int main() { fpos64_t x = 7; }
9106EOCP
9107set try
9108if eval $compile; then
9109 val="$define"
9110 echo "You have fpos64_t."
9111else
9112 val="$undef"
9113 echo "You do not have fpos64_t."
9114 case "$fpossize" in
9115 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9116 esac
9117fi
9118$rm -f try.* try
9119set d_fpos64_t
9120eval $setvar
9121
9122: see if frexpl exists
9123set frexpl d_frexpl
9124eval $inlibc
9125
9126hasstruct='varname=$1; struct=$2; shift; shift;
9127while $test $# -ge 2; do
9128 case "$1" in
9129 $define) echo "#include <$2>";;
9130 esac ;
9131 shift 2;
9132done > try.c;
9133echo "int main () { struct $struct foo; }" >> try.c;
9134set try;
9135if eval $compile; then
9136 val="$define";
9137else
9138 val="$undef";
9139fi;
9140set $varname;
9141eval $setvar;
9142$rm -f try.c try.o'
9143
9144: see if this is a sys/param system
9145set sys/param.h i_sysparam
9146eval $inhdr
9147
9148: see if this is a sys/mount.h system
9149set sys/mount.h i_sysmount
9150eval $inhdr
9151
9152: see if sys/types.h has to be included
9153set sys/types.h i_systypes
9154eval $inhdr
9155
9156
9157echo " "
9158echo "Checking to see if your system supports struct fs_data..." >&4
9159set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9160eval $hasstruct
9161case "$d_fs_data_s" in
9162"$define") echo "Yes, it does." ;;
9163*) echo "No, it doesn't." ;;
9164esac
9165
9166: see if fseeko exists
9167set fseeko d_fseeko
9168eval $inlibc
9169case "$longsize" in
91708) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9171esac
9172
9173: see if fsetpos exists
9174set fsetpos d_fsetpos
9175eval $inlibc
9176
9177
9178: see if fstatfs exists
9179set fstatfs d_fstatfs
9180eval $inlibc
9181
9182
9183: see if statvfs exists
9184set statvfs d_statvfs
9185eval $inlibc
9186
9187: see if fstatvfs exists
9188set fstatvfs d_fstatvfs
9189eval $inlibc
9190
9191
9192: see if ftello exists
9193set ftello d_ftello
9194eval $inlibc
9195case "$longsize" in
91968) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9197esac
9198
9199: see if getcwd exists
9200set getcwd d_getcwd
9201eval $inlibc
9202
9203: see if getespwnam exists
9204set getespwnam d_getespwnam
9205eval $inlibc
9206
9207
9208: see if getfsstat exists
9209set getfsstat d_getfsstat
9210eval $inlibc
9211
9212: see if getgrent exists
9213set getgrent d_getgrent
9214eval $inlibc
9215
9216: see if gethostbyaddr exists
9217set gethostbyaddr d_gethbyaddr
9218eval $inlibc
9219
9220: see if gethostbyname exists
9221set gethostbyname d_gethbyname
9222eval $inlibc
9223
9224: see if gethostent exists
9225set gethostent d_gethent
9226eval $inlibc
9227
9228: see how we will look up host name
9229echo " "
9230call=''
9231if set gethostname val -f d_gethname; eval $csym; $val; then
9232 echo 'gethostname() found.' >&4
9233 d_gethname="$define"
9234 call=gethostname
9235fi
9236if set uname val -f d_uname; eval $csym; $val; then
9237 if ./xenix; then
9238 $cat <<'EOM'
9239uname() was found, but you're running xenix, and older versions of xenix
9240have a broken uname(). If you don't really know whether your xenix is old
9241enough to have a broken system call, use the default answer.
9242
9243EOM
9244 dflt=y
9245 case "$d_uname" in
9246 "$define") dflt=n;;
9247 esac
9248 rp='Is your uname() broken?'
9249 . ./myread
9250 case "$ans" in
9251 n*) d_uname="$define"; call=uname;;
9252 esac
9253 else
9254 echo 'uname() found.' >&4
9255 d_uname="$define"
9256 case "$call" in
9257 '') call=uname ;;
9258 esac
9259 fi
9260fi
9261case "$d_gethname" in
9262'') d_gethname="$undef";;
9263esac
9264case "$d_uname" in
9265'') d_uname="$undef";;
9266esac
9267case "$d_uname$d_gethname" in
9268*define*)
9269 dflt=n
9270 cat <<EOM
9271
9272Every now and then someone has a $call() that lies about the hostname
9273but can't be fixed for political or economic reasons. If you wish, I can
9274pretend $call() isn't there and maybe compute hostname at run-time
9275thanks to the '$phostname' command.
9276
9277EOM
9278 rp="Shall I ignore $call() from now on?"
9279 . ./myread
9280 case "$ans" in
9281 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9282 esac;;
9283esac
9284case "$phostname" in
9285'') aphostname='';;
9286*) case "$aphostname" in
9287 /*) ;;
9288 *) set X $phostname
9289 shift
9290 file=$1
9291 shift
9292 file=`./loc $file $file $pth`
9293 aphostname=`echo $file $*`
9294 ;;
9295 esac
9296 ;;
9297esac
9298case "$d_uname$d_gethname" in
9299*define*) ;;
9300*)
9301 case "$phostname" in
9302 '')
9303 echo "There will be no way for $package to get your hostname." >&4;;
9304 *)
9305 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9306 ;;
9307 esac;;
9308esac
9309case "$d_phostname" in
9310'') d_phostname="$undef";;
9311esac
9312
9313: see if this is a netdb.h system
9314set netdb.h i_netdb
9315eval $inhdr
9316
9317: see if prototypes for various gethostxxx netdb.h functions are available
9318echo " "
9319set d_gethostprotos gethostent $i_netdb netdb.h
9320eval $hasproto
9321
9322: see if getlogin exists
9323set getlogin d_getlogin
9324eval $inlibc
9325
9326: see if getmnt exists
9327set getmnt d_getmnt
9328eval $inlibc
9329
9330: see if getmntent exists
9331set getmntent d_getmntent
9332eval $inlibc
9333
9334: see if getnetbyaddr exists
9335set getnetbyaddr d_getnbyaddr
9336eval $inlibc
9337
9338: see if getnetbyname exists
9339set getnetbyname d_getnbyname
9340eval $inlibc
9341
9342: see if getnetent exists
9343set getnetent d_getnent
9344eval $inlibc
9345
9346: see if prototypes for various getnetxxx netdb.h functions are available
9347echo " "
9348set d_getnetprotos getnetent $i_netdb netdb.h
9349eval $hasproto
9350
9351
9352: see if getprotobyname exists
9353set getprotobyname d_getpbyname
9354eval $inlibc
9355
9356: see if getprotobynumber exists
9357set getprotobynumber d_getpbynumber
9358eval $inlibc
9359
9360: see if getprotoent exists
9361set getprotoent d_getpent
9362eval $inlibc
9363
9364: see if getpgid exists
9365set getpgid d_getpgid
9366eval $inlibc
9367
9368: see if getpgrp2 exists
9369set getpgrp2 d_getpgrp2
9370eval $inlibc
9371
9372: see if getppid exists
9373set getppid d_getppid
9374eval $inlibc
9375
9376: see if getpriority exists
9377set getpriority d_getprior
9378eval $inlibc
9379
9380: see if prototypes for various getprotoxxx netdb.h functions are available
9381echo " "
9382set d_getprotoprotos getprotoent $i_netdb netdb.h
9383eval $hasproto
9384
9385: see if getprpwnam exists
9386set getprpwnam d_getprpwnam
9387eval $inlibc
9388
9389: see if getpwent exists
9390set getpwent d_getpwent
9391eval $inlibc
9392
9393
9394: see if getservbyname exists
9395set getservbyname d_getsbyname
9396eval $inlibc
9397
9398: see if getservbyport exists
9399set getservbyport d_getsbyport
9400eval $inlibc
9401
9402: see if getservent exists
9403set getservent d_getsent
9404eval $inlibc
9405
9406: see if prototypes for various getservxxx netdb.h functions are available
9407echo " "
9408set d_getservprotos getservent $i_netdb netdb.h
9409eval $hasproto
9410
9411: see if getspnam exists
9412set getspnam d_getspnam
9413eval $inlibc
9414
9415: see if gettimeofday or ftime exists
9416set gettimeofday d_gettimeod
9417eval $inlibc
9418case "$d_gettimeod" in
9419"$undef")
9420 set ftime d_ftime
9421 eval $inlibc
9422 ;;
9423*)
9424 val="$undef"; set d_ftime; eval $setvar
9425 ;;
9426esac
9427case "$d_gettimeod$d_ftime" in
9428"$undef$undef")
9429 echo " "
9430 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9431 ;;
9432esac
9433
9434: see if this is an grp system
9435set grp.h i_grp
9436eval $inhdr
9437
9438case "$i_grp" in
9439$define)
9440 xxx=`./findhdr grp.h`
9441 $cppstdin $cppflags $cppminus < $xxx >$$.h
9442
9443 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9444 val="$define"
9445 else
9446 val="$undef"
9447 fi
9448 set d_grpasswd
9449 eval $setvar
9450
9451 $rm -f $$.h
9452 ;;
9453*)
9454 val="$undef";
9455 set d_grpasswd; eval $setvar
9456 ;;
9457esac
9458
9459: see if hasmntopt exists
9460set hasmntopt d_hasmntopt
9461eval $inlibc
9462
9463: see if this is a netinet/in.h or sys/in.h system
9464set netinet/in.h i_niin sys/in.h i_sysin
9465eval $inhdr
9466
9467: see if arpa/inet.h has to be included
9468set arpa/inet.h i_arpainet
9469eval $inhdr
9470
9471: see if htonl --and friends-- exists
9472val=''
9473set htonl val
9474eval $inlibc
9475
9476: Maybe they are macros.
9477case "$val" in
9478$undef)
9479 $cat >htonl.c <<EOM
9480#include <stdio.h>
9481#include <sys/types.h>
9482#$i_niin I_NETINET_IN
9483#$i_sysin I_SYS_IN
9484#$i_arpainet I_ARPA_INET
9485#ifdef I_NETINET_IN
9486#include <netinet/in.h>
9487#endif
9488#ifdef I_SYS_IN
9489#include <sys/in.h>
9490#endif
9491#ifdef I_ARPA_INET
9492#include <arpa/inet.h>
9493#endif
9494#ifdef htonl
9495printf("Defined as a macro.");
9496#endif
9497EOM
9498 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9499 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9500 val="$define"
9501 echo "But it seems to be defined as a macro." >&4
9502 fi
9503 $rm -f htonl.?
9504 ;;
9505esac
9506set d_htonl
9507eval $setvar
9508
9509: see if iconv exists
9510set iconv d_iconv
9511eval $inlibc
9512
9513: index or strchr
9514echo " "
9515if set index val -f; eval $csym; $val; then
9516 if set strchr val -f d_strchr; eval $csym; $val; then
9517 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9518 val="$define"
9519 vali="$undef"
9520 echo "strchr() found." >&4
9521 else
9522 val="$undef"
9523 vali="$define"
9524 echo "index() found." >&4
9525 fi
9526 else
9527 val="$undef"
9528 vali="$define"
9529 echo "index() found." >&4
9530 fi
9531else
9532 if set strchr val -f d_strchr; eval $csym; $val; then
9533 val="$define"
9534 vali="$undef"
9535 echo "strchr() found." >&4
9536 else
9537 echo "No index() or strchr() found!" >&4
9538 val="$undef"
9539 vali="$undef"
9540 fi
9541fi
9542set d_strchr; eval $setvar
9543val="$vali"
9544set d_index; eval $setvar
9545
9546: check whether inet_aton exists
9547set inet_aton d_inetaton
9548eval $inlibc
9549
9550: see if inttypes.h is available
9551: we want a real compile instead of Inhdr because some systems
9552: have an inttypes.h which includes non-existent headers
9553echo " "
9554$cat >try.c <<EOCP
9555#include <inttypes.h>
9556int main() {
9557 static int32_t foo32 = 0x12345678;
9558}
9559EOCP
9560set try
9561if eval $compile; then
9562 echo "<inttypes.h> found." >&4
9563 val="$define"
9564else
9565 echo "<inttypes.h> NOT found." >&4
9566 val="$undef"
9567fi
9568$rm -f try.c try
9569set i_inttypes
9570eval $setvar
9571
9572: check for int64_t
9573echo " "
9574echo "Checking to see if you have int64_t..." >&4
9575$cat >try.c <<EOCP
9576#include <sys/types.h>
9577#$i_inttypes I_INTTYPES
9578#ifdef I_INTTYPES
9579#include <inttypes.h>
9580#endif
9581int main() { int64_t x = 7; }
9582EOCP
9583set try
9584if eval $compile; then
9585 val="$define"
9586 echo "You have int64_t."
9587else
9588 val="$undef"
9589 echo "You do not have int64_t."
9590fi
9591$rm -f try try.*
9592set d_int64_t
9593eval $setvar
9594
9595: Look for isascii
9596echo " "
9597$cat >isascii.c <<'EOCP'
9598#include <stdio.h>
9599#include <ctype.h>
9600int main() {
9601 int c = 'A';
9602 if (isascii(c))
9603 exit(0);
9604 else
9605 exit(1);
9606}
9607EOCP
9608set isascii
9609if eval $compile; then
9610 echo "isascii() found." >&4
9611 val="$define"
9612else
9613 echo "isascii() NOT found." >&4
9614 val="$undef"
9615fi
9616set d_isascii
9617eval $setvar
9618$rm -f isascii*
9619
9620: see if isnan exists
9621set isnan d_isnan
9622eval $inlibc
9623
9624: see if isnanl exists
9625set isnanl d_isnanl
9626eval $inlibc
9627
9628: see if killpg exists
9629set killpg d_killpg
9630eval $inlibc
9631
9632: see if lchown exists
9633echo " "
9634$cat > try.c <<'EOCP'
9635/* System header to define __stub macros and hopefully few prototypes,
9636 which can conflict with char lchown(); below. */
9637#include <assert.h>
9638/* Override any gcc2 internal prototype to avoid an error. */
9639/* We use char because int might match the return type of a gcc2
9640 builtin and then its argument prototype would still apply. */
9641char lchown();
9642int main() {
9643 /* The GNU C library defines this for functions which it implements
9644 to always fail with ENOSYS. Some functions are actually named
9645 something starting with __ and the normal name is an alias. */
9646#if defined (__stub_lchown) || defined (__stub___lchown)
9647choke me
9648#else
9649lchown();
9650#endif
9651; return 0; }
9652EOCP
9653set try
9654if eval $compile; then
9655 $echo "lchown() found." >&4
9656 val="$define"
9657else
9658 $echo "lchown() NOT found." >&4
9659 val="$undef"
9660fi
9661set d_lchown
9662eval $setvar
9663
9664: See if number of significant digits in a double precision number is known
9665echo " "
9666$cat >ldbl_dig.c <<EOM
9667#$i_limits I_LIMITS
9668#$i_float I_FLOAT
9669#ifdef I_LIMITS
9670#include <limits.h>
9671#endif
9672#ifdef I_FLOAT
9673#include <float.h>
9674#endif
9675#ifdef LDBL_DIG
9676printf("Contains LDBL_DIG");
9677#endif
9678EOM
9679$cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9680if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9681 echo "LDBL_DIG found." >&4
9682 val="$define"
9683else
9684 echo "LDBL_DIG NOT found." >&4
9685 val="$undef"
9686fi
9687$rm -f ldbl_dig.?
9688set d_ldbl_dig
9689eval $setvar
9690
9691: see if link exists
9692set link d_link
9693eval $inlibc
9694
9695: see if localeconv exists
9696set localeconv d_locconv
9697eval $inlibc
9698
9699: see if lockf exists
9700set lockf d_lockf
9701eval $inlibc
9702
9703: check for long long
9704echo " "
9705echo "Checking to see if you have long long..." >&4
9706echo 'int main() { long long x = 7; return 0; }' > try.c
9707set try
9708if eval $compile; then
9709 val="$define"
9710 echo "You have long long."
9711else
9712 val="$undef"
9713 echo "You do not have long long."
9714fi
9715$rm try.*
9716set d_longlong
9717eval $setvar
9718
9719: check for length of long long
9720case "${d_longlong}${longlongsize}" in
9721$define)
9722 echo " "
9723 echo "Checking to see how big your long longs are..." >&4
9724 $cat >try.c <<'EOCP'
9725#include <stdio.h>
9726int main()
9727{
9728 printf("%d\n", (int)sizeof(long long));
9729 return(0);
9730}
9731EOCP
9732 set try
9733 if eval $compile_ok; then
9734 longlongsize=`./try$exe_ext`
9735 echo "Your long longs are $longlongsize bytes long."
9736 else
9737 dflt='8'
9738 echo " "
9739 echo "(I can't seem to compile the test program. Guessing...)"
9740 rp="What is the size of a long long (in bytes)?"
9741 . ./myread
9742 longlongsize="$ans"
9743 fi
9744 if $test "X$longsize" = "X$longlongsize"; then
9745 echo "(That isn't any different from an ordinary long.)"
9746 fi
9747 ;;
9748esac
9749$rm -f try.* try
9750
9751: see if prototype for lseek is available
9752echo " "
9753set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9754eval $hasproto
9755
9756: see if lstat exists
9757set lstat d_lstat
9758eval $inlibc
9759
9760: see if madvise exists
9761set madvise d_madvise
9762eval $inlibc
9763
9764: see if mblen exists
9765set mblen d_mblen
9766eval $inlibc
9767
9768: see if mbstowcs exists
9769set mbstowcs d_mbstowcs
9770eval $inlibc
9771
9772: see if mbtowc exists
9773set mbtowc d_mbtowc
9774eval $inlibc
9775
9776: see if memchr exists
9777set memchr d_memchr
9778eval $inlibc
9779
9780: see if memcmp exists
9781set memcmp d_memcmp
9782eval $inlibc
9783
9784: see if memcpy exists
9785set memcpy d_memcpy
9786eval $inlibc
9787
9788: see if memmove exists
9789set memmove d_memmove
9790eval $inlibc
9791
9792: see if memset exists
9793set memset d_memset
9794eval $inlibc
9795
9796: see if mkdir exists
9797set mkdir d_mkdir
9798eval $inlibc
9799
9800: see if mkdtemp exists
9801set mkdtemp d_mkdtemp
9802eval $inlibc
9803
9804: see if mkfifo exists
9805set mkfifo d_mkfifo
9806eval $inlibc
9807
9808: see if mkstemp exists
9809set mkstemp d_mkstemp
9810eval $inlibc
9811
9812: see if mkstemps exists
9813set mkstemps d_mkstemps
9814eval $inlibc
9815
9816: see if mktime exists
9817set mktime d_mktime
9818eval $inlibc
9819
9820: see if this is a sys/mman.h system
9821set sys/mman.h i_sysmman
9822eval $inhdr
9823
9824: see if mmap exists
9825set mmap d_mmap
9826eval $inlibc
9827: see what shmat returns
9828: default to something harmless
9829mmaptype='void *'
9830case "$i_sysmman$d_mmap" in
9831"$define$define")
9832 $cat >mmap.c <<'END'
9833#include <sys/mman.h>
9834void *mmap();
9835END
9836 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9837 mmaptype='void *'
9838 else
9839 mmaptype='caddr_t'
9840 fi
9841 echo "and it returns ($mmaptype)." >&4
9842 ;;
9843esac
9844
9845
9846
9847: see if modfl exists
9848set modfl d_modfl
9849eval $inlibc
9850
9851: see if mprotect exists
9852set mprotect d_mprotect
9853eval $inlibc
9854
9855: see if msgctl exists
9856set msgctl d_msgctl
9857eval $inlibc
9858
9859: see if msgget exists
9860set msgget d_msgget
9861eval $inlibc
9862
9863: see if msgsnd exists
9864set msgsnd d_msgsnd
9865eval $inlibc
9866
9867: see if msgrcv exists
9868set msgrcv d_msgrcv
9869eval $inlibc
9870
9871: see how much of the 'msg*(2)' library is present.
9872h_msg=true
9873echo " "
9874case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9875*"$undef"*) h_msg=false;;
9876esac
9877case "$osname" in
9878freebsd)
9879 case "`ipcs 2>&1`" in
9880 "SVID messages"*"not configured"*)
9881 echo "Your $osname does not have the msg*(2) configured." >&4
9882 h_msg=false
9883 val="$undef"
9884 set msgctl d_msgctl
9885 eval $setvar
9886 set msgget d_msgget
9887 eval $setvar
9888 set msgsnd d_msgsnd
9889 eval $setvar
9890 set msgrcv d_msgrcv
9891 eval $setvar
9892 ;;
9893 esac
9894 ;;
9895esac
9896: we could also check for sys/ipc.h ...
9897if $h_msg && $test `./findhdr sys/msg.h`; then
9898 echo "You have the full msg*(2) library." >&4
9899 val="$define"
9900else
9901 echo "You don't have the full msg*(2) library." >&4
9902 val="$undef"
9903fi
9904set d_msg
9905eval $setvar
9906
9907: see if msync exists
9908set msync d_msync
9909eval $inlibc
9910
9911: see if munmap exists
9912set munmap d_munmap
9913eval $inlibc
9914
9915: see if nice exists
9916set nice d_nice
9917eval $inlibc
9918
9919
9920echo " "
9921echo "Checking which 64-bit integer type we could use..." >&4
9922
9923case "$intsize" in
99248) val=int
9925 set quadtype
9926 eval $setvar
9927 val='"unsigned int"'
9928 set uquadtype
9929 eval $setvar
9930 quadkind=1
9931 ;;
9932*) case "$longsize" in
9933 8) val=long
9934 set quadtype
9935 eval $setvar
9936 val='"unsigned long"'
9937 set uquadtype
9938 eval $setvar
9939 quadkind=2
9940 ;;
9941 *) case "$d_longlong:$longlongsize" in
9942 define:8)
9943 val='"long long"'
9944 set quadtype
9945 eval $setvar
9946 val='"unsigned long long"'
9947 set uquadtype
9948 eval $setvar
9949 quadkind=3
9950 ;;
9951 *) case "$d_int64_t" in
9952 define)
9953 val=int64_t
9954 set quadtype
9955 eval $setvar
9956 val=uint64_t
9957 set uquadtype
9958 eval $setvar
9959 quadkind=4
9960 ;;
9961 esac
9962 ;;
9963 esac
9964 ;;
9965 esac
9966 ;;
9967esac
9968
9969case "$quadtype" in
9970'') echo "Alas, no 64-bit integer types in sight." >&4
9971 d_quad="$undef"
9972 ;;
9973*) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9974 verb="will"
9975 else
9976 verb="could"
9977 fi
9978 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9979 d_quad="$define"
9980 ;;
9981esac
9982
9983: check for length of character
9984echo " "
9985case "$charsize" in
9986'')
9987 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9988 $cat >try.c <<'EOCP'
9989#include <stdio.h>
9990int main()
9991{
9992 printf("%d\n", (int)sizeof(char));
9993 exit(0);
9994}
9995EOCP
9996 set try
9997 if eval $compile_ok; then
9998 dflt=`./try`
9999 else
10000 dflt='1'
10001 echo "(I can't seem to compile the test program. Guessing...)"
10002 fi
10003 ;;
10004*)
10005 dflt="$charsize"
10006 ;;
10007esac
10008rp="What is the size of a character (in bytes)?"
10009. ./myread
10010charsize="$ans"
10011$rm -f try.c try
10012
10013
10014echo " "
10015$echo "Choosing the C types to be used for Perl's internal types..." >&4
10016
10017case "$use64bitint:$d_quad:$quadtype" in
10018define:define:?*)
10019 ivtype="$quadtype"
10020 uvtype="$uquadtype"
10021 ivsize=8
10022 uvsize=8
10023 ;;
10024*) ivtype="long"
10025 uvtype="unsigned long"
10026 ivsize=$longsize
10027 uvsize=$longsize
10028 ;;
10029esac
10030
10031case "$uselongdouble:$d_longdbl" in
10032define:define)
10033 nvtype="long double"
10034 nvsize=$longdblsize
10035 ;;
10036*) nvtype=double
10037 nvsize=$doublesize
10038 ;;
10039esac
10040
10041$echo "(IV will be "$ivtype", $ivsize bytes)"
10042$echo "(UV will be "$uvtype", $uvsize bytes)"
10043$echo "(NV will be "$nvtype", $nvsize bytes)"
10044
10045$cat >try.c <<EOCP
10046#$i_inttypes I_INTTYPES
10047#ifdef I_INTTYPES
10048#include <inttypes.h>
10049#endif
10050#include <stdio.h>
10051int main() {
10052#ifdef INT8
10053 int8_t i = INT8_MAX;
10054 uint8_t u = UINT8_MAX;
10055 printf("int8_t\n");
10056#endif
10057#ifdef INT16
10058 int16_t i = INT16_MAX;
10059 uint16_t i = UINT16_MAX;
10060 printf("int16_t\n");
10061#endif
10062#ifdef INT32
10063 int32_t i = INT32_MAX;
10064 uint32_t u = UINT32_MAX;
10065 printf("int32_t\n");
10066#endif
10067}
10068EOCP
10069
10070case "$i8type" in
10071'') case "$charsize" in
10072 1) i8type=char
10073 u8type="unsigned char"
10074 i8size=$charsize
10075 u8size=$charsize
10076 ;;
10077 esac
10078 ;;
10079esac
10080case "$i8type" in
10081'') set try -DINT8
10082 if eval $compile; then
10083 case "`./try$exe_ext`" in
10084 int8_t) i8type=int8_t
10085 u8type=uint8_t
10086 i8size=1
10087 u8size=1
10088 ;;
10089 esac
10090 fi
10091 ;;
10092esac
10093case "$i8type" in
10094'') if $test $charsize -ge 1; then
10095 i8type=char
10096 u8type="unsigned char"
10097 i8size=$charsize
10098 u8size=$charsize
10099 fi
10100 ;;
10101esac
10102
10103case "$i16type" in
10104'') case "$shortsize" in
10105 2) i16type=short
10106 u16type="unsigned short"
10107 i16size=$shortsize
10108 u16size=$shortsize
10109 ;;
10110 esac
10111 ;;
10112esac
10113case "$i16type" in
10114'') set try -DINT16
10115 if eval $compile; then
10116 case "`./try$exe_ext`" in
10117 int16_t)
10118 i16type=int16_t
10119 u16type=uint16_t
10120 i16size=2
10121 u16size=2
10122 ;;
10123 esac
10124 fi
10125 ;;
10126esac
10127case "$i16type" in
10128'') if $test $shortsize -ge 2; then
10129 i16type=short
10130 u16type="unsigned short"
10131 i16size=$shortsize
10132 u16size=$shortsize
10133 fi
10134 ;;
10135esac
10136
10137case "$i32type" in
10138'') case "$longsize" in
10139 4) i32type=long
10140 u32type="unsigned long"
10141 i32size=$longsize
10142 u32size=$longsize
10143 ;;
10144 *) case "$intsize" in
10145 4) i32type=int
10146 u32type="unsigned int"
10147 i32size=$intsize
10148 u32size=$intsize
10149 ;;
10150 esac
10151 ;;
10152 esac
10153 ;;
10154esac
10155case "$i32type" in
10156'') set try -DINT32
10157 if eval $compile; then
10158 case "`./try$exe_ext`" in
10159 int32_t)
10160 i32type=int32_t
10161 u32type=uint32_t
10162 i32size=4
10163 u32size=4
10164 ;;
10165 esac
10166 fi
10167 ;;
10168esac
10169case "$i32type" in
10170'') if $test $intsize -ge 4; then
10171 i32type=int
10172 u32type="unsigned int"
10173 i32size=$intsize
10174 u32size=$intsize
10175 fi
10176 ;;
10177esac
10178
10179case "$i64type" in
10180'') case "$d_quad:$quadtype" in
10181 define:?*)
10182 i64type="$quadtype"
10183 u64type="$uquadtype"
10184 i64size=8
10185 u64size=8
10186 ;;
10187 esac
10188 ;;
10189esac
10190
10191$echo "Checking whether your NVs can preserve your UVs..." >&4
10192$cat <<EOP >try.c
10193#include <stdio.h>
10194int main() {
10195 $uvtype k = ($uvtype)~0, l;
10196 $nvtype d;
10197 l = k;
10198 d = ($nvtype)l;
10199 l = ($uvtype)d;
10200 if (l == k)
10201 printf("preserve\n");
10202 exit(0);
10203}
10204EOP
10205set try
10206if eval $compile; then
10207 case "`./try$exe_ext`" in
10208 preserve) d_nv_preserves_uv="$define" ;;
10209 esac
10210fi
10211case "$d_nv_preserves_uv" in
10212$define) $echo "Yes, they can." 2>&1 ;;
10213*) $echo "No, they can't." 2>&1
10214 d_nv_preserves_uv="$undef"
10215 ;;
10216esac
10217
10218$rm -f try.* try
10219
10220case "$d_nv_preserves_uv" in
10221"$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10222*) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10223 $cat <<EOP >try.c
10224#include <stdio.h>
10225int main() {
10226 $uvtype u = 0;
10227 int n = 8 * $uvsize;
10228 int i;
10229 for (i = 0; i < n; i++) {
10230 u = u << 1 | ($uvtype)1;
10231 if (($uvtype)($nvtype)u != u)
10232 break;
10233 }
10234 printf("%d\n", i);
10235 exit(0);
10236}
10237EOP
10238 set try
10239 if eval $compile; then
10240 d_nv_preserves_uv_bits="`./try$exe_ext`"
10241 fi
10242 case "$d_nv_preserves_uv_bits" in
10243 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10244 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10245 d_nv_preserves_uv_bits="$undef"
10246 ;;
10247 esac
10248 $rm -f try.* try
10249 ;;
10250esac
10251
10252
10253: check for off64_t
10254echo " "
10255echo "Checking to see if you have off64_t..." >&4
10256$cat >try.c <<EOCP
10257#include <sys/types.h>
10258#include <unistd.h>
10259int main() { off64_t x = 7; }
10260EOCP
10261set try
10262if eval $compile; then
10263 val="$define"
10264 echo "You have off64_t."
10265else
10266 val="$undef"
10267 echo "You do not have off64_t."
10268 case "$lseeksize" in
10269 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10270 esac
10271fi
10272$rm -f try.* try
10273set d_off64_t
10274eval $setvar
10275
10276: see if POSIX threads are available
10277set pthread.h i_pthread
10278eval $inhdr
10279
10280
10281
10282
10283: how to create joinable pthreads
10284if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10285 echo " "
10286 echo "Checking what constant to use for creating joinable pthreads..." >&4
10287 $cat >try.c <<'EOCP'
10288#include <pthread.h>
10289int main() {
10290 int detachstate = JOINABLE;
10291}
10292EOCP
10293 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10294 if eval $compile; then
10295 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10296 val="$undef" # Yes, undef.
10297 set d_old_pthread_create_joinable
10298 eval $setvar
10299 val=""
10300 set old_pthread_create_joinable
10301 eval $setvar
10302 else
10303 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10304 if eval $compile; then
10305 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10306 val="$define"
10307 set d_old_pthread_create_joinable
10308 eval $setvar
10309 val=PTHREAD_CREATE_UNDETACHED
10310 set old_pthread_create_joinable
10311 eval $setvar
10312 else
10313 set try -DJOINABLE=__UNDETACHED
10314 if eval $compile; then
10315 echo "You seem to use __UNDETACHED." >&4
10316 val="$define"
10317 set d_old_pthread_create_joinable
10318 eval $setvar
10319 val=__UNDETACHED
10320 set old_pthread_create_joinable
10321 eval $setvar
10322 else
10323 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10324 val="$define"
10325 set d_old_pthread_create_joinable
10326 eval $setvar
10327 val=0
10328 set old_pthread_create_joinable
10329 eval $setvar
10330 fi
10331 fi
10332 fi
10333 $rm -f try try.*
10334else
10335 d_old_pthread_create_joinable="$undef"
10336 old_pthread_create_joinable=""
10337fi
10338
10339: see if pause exists
10340set pause d_pause
10341eval $inlibc
10342
10343: see if pipe exists
10344set pipe d_pipe
10345eval $inlibc
10346
10347: see if poll exists
10348set poll d_poll
10349eval $inlibc
10350
10351
10352: see whether the various POSIXish _yields exist
10353$cat >try.c <<EOP
10354#include <pthread.h>
10355#include <stdio.h>
10356int main() {
10357#ifdef SCHED_YIELD
10358 sched_yield();
10359#else
10360#ifdef PTHREAD_YIELD
10361 pthread_yield();
10362#else
10363#ifdef PTHREAD_YIELD_NULL
10364 pthread_yield(NULL);
10365#endif
10366#endif
10367#endif
10368}
10369EOP
10370: see if sched_yield exists
10371set try -DSCHED_YIELD
10372if eval $compile; then
10373 val="$define"
10374 sched_yield='sched_yield()'
10375else
10376 val="$undef"
10377fi
10378case "$usethreads" in
10379$define)
10380 case "$val" in
10381 $define) echo 'sched_yield() found.' >&4 ;;
10382 *) echo 'sched_yield() NOT found.' >&4 ;;
10383 esac
10384esac
10385set d_sched_yield
10386eval $setvar
10387
10388: see if pthread_yield exists
10389set try -DPTHREAD_YIELD
10390if eval $compile; then
10391 val="$define"
10392 case "$sched_yield" in
10393 '') sched_yield='pthread_yield()' ;;
10394 esac
10395else
10396 set try -DPTHREAD_YIELD_NULL
10397 if eval $compile; then
10398 val="$define"
10399 case "$sched_yield" in
10400 '') sched_yield='pthread_yield(NULL)' ;;
10401 esac
10402 else
10403 val="$undef"
10404 fi
10405fi
10406case "$usethreads" in
10407$define)
10408 case "$val" in
10409 $define) echo 'pthread_yield() found.' >&4 ;;
10410 *) echo 'pthread_yield() NOT found.' >&4 ;;
10411 esac
10412 ;;
10413esac
10414set d_pthread_yield
10415eval $setvar
10416
10417case "$sched_yield" in
10418'') sched_yield=undef ;;
10419esac
10420
10421$rm -f try try.*
10422
10423: see if this is a pwd.h system
10424set pwd.h i_pwd
10425eval $inhdr
10426
10427case "$i_pwd" in
10428$define)
10429 xxx=`./findhdr pwd.h`
10430 $cppstdin $cppflags $cppminus < $xxx >$$.h
10431
10432 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10433 val="$define"
10434 else
10435 val="$undef"
10436 fi
10437 set d_pwquota
10438 eval $setvar
10439
10440 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10441 val="$define"
10442 else
10443 val="$undef"
10444 fi
10445 set d_pwage
10446 eval $setvar
10447
10448 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10449 val="$define"
10450 else
10451 val="$undef"
10452 fi
10453 set d_pwchange
10454 eval $setvar
10455
10456 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10457 val="$define"
10458 else
10459 val="$undef"
10460 fi
10461 set d_pwclass
10462 eval $setvar
10463
10464 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10465 val="$define"
10466 else
10467 val="$undef"
10468 fi
10469 set d_pwexpire
10470 eval $setvar
10471
10472 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10473 val="$define"
10474 else
10475 val="$undef"
10476 fi
10477 set d_pwcomment
10478 eval $setvar
10479
10480 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10481 val="$define"
10482 else
10483 val="$undef"
10484 fi
10485 set d_pwgecos
10486 eval $setvar
10487
10488 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10489 val="$define"
10490 else
10491 val="$undef"
10492 fi
10493 set d_pwpasswd
10494 eval $setvar
10495
10496 $rm -f $$.h
10497 ;;
10498*)
10499 val="$undef";
10500 set d_pwquota; eval $setvar
10501 set d_pwage; eval $setvar
10502 set d_pwchange; eval $setvar
10503 set d_pwclass; eval $setvar
10504 set d_pwexpire; eval $setvar
10505 set d_pwcomment; eval $setvar
10506 set d_pwgecos; eval $setvar
10507 set d_pwpasswd; eval $setvar
10508 ;;
10509esac
10510
10511: see if readdir and friends exist
10512set readdir d_readdir
10513eval $inlibc
10514set seekdir d_seekdir
10515eval $inlibc
10516set telldir d_telldir
10517eval $inlibc
10518set rewinddir d_rewinddir
10519eval $inlibc
10520
10521: see if readlink exists
10522set readlink d_readlink
10523eval $inlibc
10524
10525: see if rename exists
10526set rename d_rename
10527eval $inlibc
10528
10529: see if rmdir exists
10530set rmdir d_rmdir
10531eval $inlibc
10532
10533: see if memory.h is available.
10534val=''
10535set memory.h val
10536eval $inhdr
10537
10538: See if it conflicts with string.h
10539case "$val" in
10540$define)
10541 case "$strings" in
10542 '') ;;
10543 *)
10544 $cppstdin $cppflags $cppminus < $strings > mem.h
10545 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10546 echo " "
10547 echo "We won't be including <memory.h>."
10548 val="$undef"
10549 fi
10550 $rm -f mem.h
10551 ;;
10552 esac
10553esac
10554set i_memory
10555eval $setvar
10556
10557: can bcopy handle overlapping blocks?
10558val="$undef"
10559case "$d_bcopy" in
10560"$define")
10561 echo " "
10562 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10563 $cat >try.c <<EOCP
10564#$i_memory I_MEMORY
10565#$i_stdlib I_STDLIB
10566#$i_string I_STRING
10567#$i_unistd I_UNISTD
10568EOCP
10569 $cat >>try.c <<'EOCP'
10570#include <stdio.h>
10571#ifdef I_MEMORY
10572# include <memory.h>
10573#endif
10574#ifdef I_STDLIB
10575# include <stdlib.h>
10576#endif
10577#ifdef I_STRING
10578# include <string.h>
10579#else
10580# include <strings.h>
10581#endif
10582#ifdef I_UNISTD
10583# include <unistd.h> /* Needed for NetBSD */
10584#endif
10585int main()
10586{
10587char buf[128], abc[128];
10588char *b;
10589int len;
10590int off;
10591int align;
10592
10593bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10594
10595for (align = 7; align >= 0; align--) {
10596 for (len = 36; len; len--) {
10597 b = buf+align;
10598 bcopy(abc, b, len);
10599 for (off = 1; off <= len; off++) {
10600 bcopy(b, b+off, len);
10601 bcopy(b+off, b, len);
10602 if (bcmp(b, abc, len))
10603 exit(1);
10604 }
10605 }
10606}
10607exit(0);
10608}
10609EOCP
10610 set try
10611 if eval $compile_ok; then
10612 if ./try 2>/dev/null; then
10613 echo "Yes, it can."
10614 val="$define"
10615 else
10616 echo "It can't, sorry."
10617 case "$d_memmove" in
10618 "$define") echo "But that's Ok since you have memmove()." ;;
10619 esac
10620 fi
10621 else
10622 echo "(I can't compile the test program, so we'll assume not...)"
10623 case "$d_memmove" in
10624 "$define") echo "But that's Ok since you have memmove()." ;;
10625 esac
10626 fi
10627 ;;
10628esac
10629$rm -f try.* try core
10630set d_safebcpy
10631eval $setvar
10632
10633: can memcpy handle overlapping blocks?
10634val="$undef"
10635case "$d_memcpy" in
10636"$define")
10637 echo " "
10638 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10639 $cat >try.c <<EOCP
10640#$i_memory I_MEMORY
10641#$i_stdlib I_STDLIB
10642#$i_string I_STRING
10643#$i_unistd I_UNISTD
10644EOCP
10645 $cat >>try.c <<'EOCP'
10646#include <stdio.h>
10647#ifdef I_MEMORY
10648# include <memory.h>
10649#endif
10650#ifdef I_STDLIB
10651# include <stdlib.h>
10652#endif
10653#ifdef I_STRING
10654# include <string.h>
10655#else
10656# include <strings.h>
10657#endif
10658#ifdef I_UNISTD
10659# include <unistd.h> /* Needed for NetBSD */
10660#endif
10661int main()
10662{
10663char buf[128], abc[128];
10664char *b;
10665int len;
10666int off;
10667int align;
10668
10669/* Copy "abcde..." string to char abc[] so that gcc doesn't
10670 try to store the string in read-only memory. */
10671memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10672
10673for (align = 7; align >= 0; align--) {
10674 for (len = 36; len; len--) {
10675 b = buf+align;
10676 memcpy(b, abc, len);
10677 for (off = 1; off <= len; off++) {
10678 memcpy(b+off, b, len);
10679 memcpy(b, b+off, len);
10680 if (memcmp(b, abc, len))
10681 exit(1);
10682 }
10683 }
10684}
10685exit(0);
10686}
10687EOCP
10688 set try
10689 if eval $compile_ok; then
10690 if ./try 2>/dev/null; then
10691 echo "Yes, it can."
10692 val="$define"
10693 else
10694 echo "It can't, sorry."
10695 case "$d_memmove" in
10696 "$define") echo "But that's Ok since you have memmove()." ;;
10697 esac
10698 fi
10699 else
10700 echo "(I can't compile the test program, so we'll assume not...)"
10701 case "$d_memmove" in
10702 "$define") echo "But that's Ok since you have memmove()." ;;
10703 esac
10704 fi
10705 ;;
10706esac
10707$rm -f try.* try core
10708set d_safemcpy
10709eval $setvar
10710
10711: can memcmp be trusted to compare relative magnitude?
10712val="$undef"
10713case "$d_memcmp" in
10714"$define")
10715 echo " "
10716 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10717 $cat >try.c <<EOCP
10718#$i_memory I_MEMORY
10719#$i_stdlib I_STDLIB
10720#$i_string I_STRING
10721#$i_unistd I_UNISTD
10722EOCP
10723 $cat >>try.c <<'EOCP'
10724#include <stdio.h>
10725#ifdef I_MEMORY
10726# include <memory.h>
10727#endif
10728#ifdef I_STDLIB
10729# include <stdlib.h>
10730#endif
10731#ifdef I_STRING
10732# include <string.h>
10733#else
10734# include <strings.h>
10735#endif
10736#ifdef I_UNISTD
10737# include <unistd.h> /* Needed for NetBSD */
10738#endif
10739int main()
10740{
10741char a = -1;
10742char b = 0;
10743if ((a < b) && memcmp(&a, &b, 1) < 0)
10744 exit(1);
10745exit(0);
10746}
10747EOCP
10748 set try
10749 if eval $compile_ok; then
10750 if ./try 2>/dev/null; then
10751 echo "Yes, it can."
10752 val="$define"
10753 else
10754 echo "No, it can't (it uses signed chars)."
10755 fi
10756 else
10757 echo "(I can't compile the test program, so we'll assume not...)"
10758 fi
10759 ;;
10760esac
10761$rm -f try.* try core
10762set d_sanemcmp
10763eval $setvar
10764
10765: see if select exists
10766set select d_select
10767eval $inlibc
10768
10769: see if semctl exists
10770set semctl d_semctl
10771eval $inlibc
10772
10773: see if semget exists
10774set semget d_semget
10775eval $inlibc
10776
10777: see if semop exists
10778set semop d_semop
10779eval $inlibc
10780
10781: see how much of the 'sem*(2)' library is present.
10782h_sem=true
10783echo " "
10784case "$d_semctl$d_semget$d_semop" in
10785*"$undef"*) h_sem=false;;
10786esac
10787case "$osname" in
10788freebsd)
10789 case "`ipcs 2>&1`" in
10790 "SVID messages"*"not configured"*)
10791 echo "Your $osname does not have the sem*(2) configured." >&4
10792 h_sem=false
10793 val="$undef"
10794 set semctl d_semctl
10795 eval $setvar
10796 set semget d_semget
10797 eval $setvar
10798 set semop d_semop
10799 eval $setvar
10800 ;;
10801 esac
10802 ;;
10803esac
10804: we could also check for sys/ipc.h ...
10805if $h_sem && $test `./findhdr sys/sem.h`; then
10806 echo "You have the full sem*(2) library." >&4
10807 val="$define"
10808else
10809 echo "You don't have the full sem*(2) library." >&4
10810 val="$undef"
10811fi
10812set d_sem
10813eval $setvar
10814
10815: see whether sys/sem.h defines union semun
10816echo " "
10817$cat > try.c <<'END'
10818#include <sys/types.h>
10819#include <sys/ipc.h>
10820#include <sys/sem.h>
10821int main () { union semun semun; semun.buf = 0; }
10822END
10823set try
10824if eval $compile; then
10825 echo "You have union semun in <sys/sem.h>." >&4
10826 val="$define"
10827else
10828 echo "You do not have union semun in <sys/sem.h>." >&4
10829 val="$undef"
10830fi
10831$rm -f try try.c try.h
10832set d_union_semun
10833eval $setvar
10834
10835: see how to do semctl IPC_STAT
10836case "$d_sem" in
10837$define)
10838 : see whether semctl IPC_STAT can use union semun
10839 echo " "
10840 $cat > try.h <<END
10841#ifndef S_IRUSR
10842# ifdef S_IREAD
10843# define S_IRUSR S_IREAD
10844# define S_IWUSR S_IWRITE
10845# define S_IXUSR S_IEXEC
10846# else
10847# define S_IRUSR 0400
10848# define S_IWUSR 0200
10849# define S_IXUSR 0100
10850# endif
10851# define S_IRGRP (S_IRUSR>>3)
10852# define S_IWGRP (S_IWUSR>>3)
10853# define S_IXGRP (S_IXUSR>>3)
10854# define S_IROTH (S_IRUSR>>6)
10855# define S_IWOTH (S_IWUSR>>6)
10856# define S_IXOTH (S_IXUSR>>6)
10857#endif
10858#ifndef S_IRWXU
10859# define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10860# define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10861# define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10862#endif
10863END
10864
10865 $cat > try.c <<END
10866#include <sys/types.h>
10867#include <sys/ipc.h>
10868#include <sys/sem.h>
10869#include <sys/stat.h>
10870#include <stdio.h>
10871#include <errno.h>
10872#include "try.h"
10873#ifndef errno
10874extern int errno;
10875#endif
10876#$d_union_semun HAS_UNION_SEMUN
10877int main() {
10878 union semun
10879#ifndef HAS_UNION_SEMUN
10880 {
10881 int val;
10882 struct semid_ds *buf;
10883 unsigned short *array;
10884 }
10885#endif
10886 arg;
10887 int sem, st;
10888
10889#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10890 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10891 if (sem > -1) {
10892 struct semid_ds argbuf;
10893 arg.buf = &argbuf;
10894# ifdef IPC_STAT
10895 st = semctl(sem, 0, IPC_STAT, arg);
10896 if (st == 0)
10897 printf("semun\n");
10898 else
10899# endif /* IPC_STAT */
10900 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10901# ifdef IPC_RMID
10902 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10903# endif /* IPC_RMID */
10904 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10905 } else
10906#endif /* IPC_PRIVATE && ... */
10907 printf("semget failed: errno = %d\n", errno);
10908 return 0;
10909}
10910END
10911 val="$undef"
10912 set try
10913 if eval $compile; then
10914 xxx=`./try`
10915 case "$xxx" in
10916 semun) val="$define" ;;
10917 esac
10918 fi
10919 $rm -f try try.c
10920 set d_semctl_semun
10921 eval $setvar
10922 case "$d_semctl_semun" in
10923 $define)
10924 echo "You can use union semun for semctl IPC_STAT." >&4
10925 also='also'
10926 ;;
10927 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10928 also=''
10929 ;;
10930 esac
10931
10932 : see whether semctl IPC_STAT can use struct semid_ds pointer
10933 $cat > try.c <<'END'
10934#include <sys/types.h>
10935#include <sys/ipc.h>
10936#include <sys/sem.h>
10937#include <sys/stat.h>
10938#include "try.h"
10939#include <stdio.h>
10940#include <errno.h>
10941#ifndef errno
10942extern int errno;
10943#endif
10944int main() {
10945 struct semid_ds arg;
10946 int sem, st;
10947
10948#if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10949 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10950 if (sem > -1) {
10951# ifdef IPC_STAT
10952 st = semctl(sem, 0, IPC_STAT, &arg);
10953 if (st == 0)
10954 printf("semid_ds\n");
10955 else
10956# endif /* IPC_STAT */
10957 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10958# ifdef IPC_RMID
10959 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10960# endif /* IPC_RMID */
10961 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10962 } else
10963#endif /* IPC_PRIVATE && ... */
10964 printf("semget failed: errno = %d\n", errno);
10965
10966 return 0;
10967}
10968END
10969 val="$undef"
10970 set try
10971 if eval $compile; then
10972 xxx=`./try`
10973 case "$xxx" in
10974 semid_ds) val="$define" ;;
10975 esac
10976 fi
10977 $rm -f try try.c
10978 set d_semctl_semid_ds
10979 eval $setvar
10980 case "$d_semctl_semid_ds" in
10981 $define)
10982 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10983 ;;
10984 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10985 ;;
10986 esac
10987 $rm -f try.h
10988 ;;
10989*) val="$undef"
10990
10991 # We do not have the full sem*(2) library, so assume we can not
10992 # use either.
10993
10994 set d_semctl_semun
10995 eval $setvar
10996
10997 set d_semctl_semid_ds
10998 eval $setvar
10999 ;;
11000esac
11001
11002: see if setegid exists
11003set setegid d_setegid
11004eval $inlibc
11005
11006: see if seteuid exists
11007set seteuid d_seteuid
11008eval $inlibc
11009
11010: see if setgrent exists
11011set setgrent d_setgrent
11012eval $inlibc
11013
11014: see if sethostent exists
11015set sethostent d_sethent
11016eval $inlibc
11017
11018: see if setlinebuf exists
11019set setlinebuf d_setlinebuf
11020eval $inlibc
11021
11022: see if setlocale exists
11023set setlocale d_setlocale
11024eval $inlibc
11025
11026: see if setnetent exists
11027set setnetent d_setnent
11028eval $inlibc
11029
11030: see if setprotoent exists
11031set setprotoent d_setpent
11032eval $inlibc
11033
11034: see if setpgid exists
11035set setpgid d_setpgid
11036eval $inlibc
11037
11038: see if setpgrp2 exists
11039set setpgrp2 d_setpgrp2
11040eval $inlibc
11041
11042: see if setpriority exists
11043set setpriority d_setprior
11044eval $inlibc
11045
11046: see if setproctitle exists
11047set setproctitle d_setproctitle
11048eval $inlibc
11049
11050: see if setpwent exists
11051set setpwent d_setpwent
11052eval $inlibc
11053
11054: see if setregid exists
11055set setregid d_setregid
11056eval $inlibc
11057set setresgid d_setresgid
11058eval $inlibc
11059
11060: see if setreuid exists
11061set setreuid d_setreuid
11062eval $inlibc
11063set setresuid d_setresuid
11064eval $inlibc
11065
11066: see if setrgid exists
11067set setrgid d_setrgid
11068eval $inlibc
11069
11070: see if setruid exists
11071set setruid d_setruid
11072eval $inlibc
11073
11074: see if setservent exists
11075set setservent d_setsent
11076eval $inlibc
11077
11078: see if setsid exists
11079set setsid d_setsid
11080eval $inlibc
11081
11082: see if setvbuf exists
11083set setvbuf d_setvbuf
11084eval $inlibc
11085
11086: see if sfio.h is available
11087set sfio.h i_sfio
11088eval $inhdr
11089
11090
11091: see if sfio library is available
11092case "$i_sfio" in
11093$define)
11094 val=''
11095 set sfreserve val
11096 eval $inlibc
11097 ;;
11098*)
11099 val="$undef"
11100 ;;
11101esac
11102: Ok, but do we want to use it.
11103case "$val" in
11104$define)
11105 case "$usesfio" in
11106 true|$define|[yY]*) dflt='y';;
11107 *) dflt='n';;
11108 esac
11109 echo "$package can use the sfio library, but it is experimental."
11110 case "$useperlio" in
11111 "$undef")
11112 echo "For sfio also the PerlIO abstraction layer is needed."
11113 echo "Earlier you said you wouldn't want that."
11114 ;;
11115 esac
11116 rp="You seem to have sfio available, do you want to try using it?"
11117 . ./myread
11118 case "$ans" in
11119 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11120 useperlio="$define"
11121 val="$define"
11122 ;;
11123 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11124 val="$undef"
11125 : Remove sfio from list of libraries to use
11126 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11127 shift
11128 libs="$*"
11129 echo "libs = $libs" >&4
11130 ;;
11131 esac
11132 ;;
11133*) case "$usesfio" in
11134 true|$define|[yY]*)
11135 echo "Sorry, cannot find sfio on this machine." >&4
11136 echo "Ignoring your setting of usesfio=$usesfio." >&4
11137 val="$undef"
11138 ;;
11139 esac
11140 ;;
11141esac
11142set d_sfio
11143eval $setvar
11144case "$d_sfio" in
11145$define) usesfio='true';;
11146*) usesfio='false';;
11147esac
11148
11149: see if shmctl exists
11150set shmctl d_shmctl
11151eval $inlibc
11152
11153: see if shmget exists
11154set shmget d_shmget
11155eval $inlibc
11156
11157: see if shmat exists
11158set shmat d_shmat
11159eval $inlibc
11160: see what shmat returns
11161case "$d_shmat" in
11162"$define")
11163 $cat >shmat.c <<'END'
11164#include <sys/shm.h>
11165void *shmat();
11166END
11167 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11168 shmattype='void *'
11169 else
11170 shmattype='char *'
11171 fi
11172 echo "and it returns ($shmattype)." >&4
11173 : see if a prototype for shmat is available
11174 xxx=`./findhdr sys/shm.h`
11175 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11176 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11177 val="$define"
11178 else
11179 val="$undef"
11180 fi
11181 $rm -f shmat.[co]
11182 ;;
11183*)
11184 val="$undef"
11185 ;;
11186esac
11187set d_shmatprototype
11188eval $setvar
11189
11190: see if shmdt exists
11191set shmdt d_shmdt
11192eval $inlibc
11193
11194: see how much of the 'shm*(2)' library is present.
11195h_shm=true
11196echo " "
11197case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11198*"$undef"*) h_shm=false;;
11199esac
11200case "$osname" in
11201freebsd)
11202 case "`ipcs 2>&1`" in
11203 "SVID shared memory"*"not configured"*)
11204 echo "Your $osname does not have the shm*(2) configured." >&4
11205 h_shm=false
11206 val="$undef"
11207 set shmctl d_shmctl
11208 evat $setvar
11209 set shmget d_shmget
11210 evat $setvar
11211 set shmat d_shmat
11212 evat $setvar
11213 set shmdt d_shmdt
11214 evat $setvar
11215 ;;
11216 esac
11217 ;;
11218esac
11219: we could also check for sys/ipc.h ...
11220if $h_shm && $test `./findhdr sys/shm.h`; then
11221 echo "You have the full shm*(2) library." >&4
11222 val="$define"
11223else
11224 echo "You don't have the full shm*(2) library." >&4
11225 val="$undef"
11226fi
11227set d_shm
11228eval $setvar
11229
11230echo " "
11231: see if we have sigaction
11232if set sigaction val -f d_sigaction; eval $csym; $val; then
11233 echo 'sigaction() found.' >&4
11234 $cat > try.c <<'EOP'
11235#include <stdio.h>
11236#include <sys/types.h>
11237#include <signal.h>
11238int main()
11239{
11240 struct sigaction act, oact;
11241 act.sa_flags = 0;
11242 oact.sa_handler = 0;
11243 /* so that act and oact are used */
11244 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11245}
11246EOP
11247 set try
11248 if eval $compile_ok; then
11249 val="$define"
11250 else
11251 echo "But you don't seem to have a useable struct sigaction." >&4
11252 val="$undef"
11253 fi
11254else
11255 echo 'sigaction NOT found.' >&4
11256 val="$undef"
11257fi
11258set d_sigaction; eval $setvar
11259$rm -f try try$_o try.c
11260
11261: see if sigsetjmp exists
11262echo " "
11263case "$d_sigsetjmp" in
11264'')
11265 $cat >try.c <<'EOP'
11266#include <setjmp.h>
11267sigjmp_buf env;
11268int set = 1;
11269int main()
11270{
11271 if (sigsetjmp(env,1))
11272 exit(set);
11273 set = 0;
11274 siglongjmp(env, 1);
11275 exit(1);
11276}
11277EOP
11278 set try
11279 if eval $compile; then
11280 if ./try >/dev/null 2>&1; then
11281 echo "POSIX sigsetjmp found." >&4
11282 val="$define"
11283 else
11284 $cat >&4 <<EOM
11285Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11286I'll ignore them.
11287EOM
11288 val="$undef"
11289 fi
11290 else
11291 echo "sigsetjmp not found." >&4
11292 val="$undef"
11293 fi
11294 ;;
11295*) val="$d_sigsetjmp"
11296 case "$d_sigsetjmp" in
11297 $define) echo "POSIX sigsetjmp found." >&4;;
11298 $undef) echo "sigsetjmp not found." >&4;;
11299 esac
11300 ;;
11301esac
11302set d_sigsetjmp
11303eval $setvar
11304$rm -f try.c try
11305
11306: see if socks5_init exists
11307set socks5_init d_socks5_init
11308eval $inlibc
11309
11310: see if sys/stat.h is available
11311set sys/stat.h i_sysstat
11312eval $inhdr
11313
11314
11315: see if stat knows about block sizes
11316echo " "
11317echo "Checking to see if your struct stat has st_blocks field..." >&4
11318set d_statblks stat st_blocks $i_sysstat sys/stat.h
11319eval $hasfield
11320
11321
11322: see if this is a sys/vfs.h system
11323set sys/vfs.h i_sysvfs
11324eval $inhdr
11325
11326
11327: see if this is a sys/statfs.h system
11328set sys/statfs.h i_sysstatfs
11329eval $inhdr
11330
11331
11332echo " "
11333echo "Checking to see if your system supports struct statfs..." >&4
11334set 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
11335eval $hasstruct
11336case "$d_statfs_s" in
11337"$define") echo "Yes, it does." ;;
11338*) echo "No, it doesn't." ;;
11339esac
11340
11341
11342
11343: see if struct statfs knows about f_flags
11344case "$d_statfs_s" in
11345define)
11346 echo " "
11347 echo "Checking to see if your struct statfs has f_flags field..." >&4
11348 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
11349 eval $hasfield
11350 ;;
11351*) val="$undef"
11352 set d_statfs_f_flags
11353 eval $setvar
11354 ;;
11355esac
11356case "$d_statfs_f_flags" in
11357"$define") echo "Yes, it does." ;;
11358*) echo "No, it doesn't." ;;
11359esac
11360
11361: see if _ptr and _cnt from stdio act std
11362echo " "
11363if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11364 echo "(Looks like you have stdio.h from Linux.)"
11365 case "$stdio_ptr" in
11366 '') stdio_ptr='((fp)->_IO_read_ptr)'
11367 ptr_lval=$define
11368 ;;
11369 *) ptr_lval=$d_stdio_ptr_lval;;
11370 esac
11371 case "$stdio_cnt" in
11372 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11373 cnt_lval=$undef
11374 ;;
11375 *) cnt_lval=$d_stdio_cnt_lval;;
11376 esac
11377 case "$stdio_base" in
11378 '') stdio_base='((fp)->_IO_read_base)';;
11379 esac
11380 case "$stdio_bufsiz" in
11381 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11382 esac
11383else
11384 case "$stdio_ptr" in
11385 '') stdio_ptr='((fp)->_ptr)'
11386 ptr_lval=$define
11387 ;;
11388 *) ptr_lval=$d_stdio_ptr_lval;;
11389 esac
11390 case "$stdio_cnt" in
11391 '') stdio_cnt='((fp)->_cnt)'
11392 cnt_lval=$define
11393 ;;
11394 *) cnt_lval=$d_stdio_cnt_lval;;
11395 esac
11396 case "$stdio_base" in
11397 '') stdio_base='((fp)->_base)';;
11398 esac
11399 case "$stdio_bufsiz" in
11400 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11401 esac
11402fi
11403: test whether _ptr and _cnt really work
11404echo "Checking how std your stdio is..." >&4
11405$cat >try.c <<EOP
11406#include <stdio.h>
11407#define FILE_ptr(fp) $stdio_ptr
11408#define FILE_cnt(fp) $stdio_cnt
11409int main() {
11410 FILE *fp = fopen("try.c", "r");
11411 char c = getc(fp);
11412 if (
11413 18 <= FILE_cnt(fp) &&
11414 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11415 )
11416 exit(0);
11417 exit(1);
11418}
11419EOP
11420val="$undef"
11421set try
11422if eval $compile; then
11423 if ./try; then
11424 echo "Your stdio acts pretty std."
11425 val="$define"
11426 else
11427 echo "Your stdio isn't very std."
11428 fi
11429else
11430 echo "Your stdio doesn't appear very std."
11431fi
11432$rm -f try.c try
11433set d_stdstdio
11434eval $setvar
11435
11436: Can _ptr be used as an lvalue?
11437case "$d_stdstdio$ptr_lval" in
11438$define$define) val=$define ;;
11439*) val=$undef ;;
11440esac
11441set d_stdio_ptr_lval
11442eval $setvar
11443
11444: Can _cnt be used as an lvalue?
11445case "$d_stdstdio$cnt_lval" in
11446$define$define) val=$define ;;
11447*) val=$undef ;;
11448esac
11449set d_stdio_cnt_lval
11450eval $setvar
11451
11452: see if _base is also standard
11453val="$undef"
11454case "$d_stdstdio" in
11455$define)
11456 $cat >try.c <<EOP
11457#include <stdio.h>
11458#define FILE_base(fp) $stdio_base
11459#define FILE_bufsiz(fp) $stdio_bufsiz
11460int main() {
11461 FILE *fp = fopen("try.c", "r");
11462 char c = getc(fp);
11463 if (
11464 19 <= FILE_bufsiz(fp) &&
11465 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11466 )
11467 exit(0);
11468 exit(1);
11469}
11470EOP
11471 set try
11472 if eval $compile; then
11473 if ./try; then
11474 echo "And its _base field acts std."
11475 val="$define"
11476 else
11477 echo "But its _base field isn't std."
11478 fi
11479 else
11480 echo "However, it seems to be lacking the _base field."
11481 fi
11482 $rm -f try.c try
11483 ;;
11484esac
11485set d_stdiobase
11486eval $setvar
11487
11488$cat >&4 <<EOM
11489Checking how to access stdio streams by file descriptor number...
11490EOM
11491case "$stdio_stream_array" in
11492'') $cat >try.c <<EOCP
11493#include <stdio.h>
11494int main() {
11495 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11496 printf("yes\n");
11497}
11498EOCP
11499 for s in _iob __iob __sF
11500 do
11501 set try -DSTDIO_STREAM_ARRAY=$s
11502 if eval $compile; then
11503 case "`./try$exe_ext`" in
11504 yes) stdio_stream_array=$s; break ;;
11505 esac
11506 fi
11507 done
11508 $rm -f try.* try$exe_ext
11509esac
11510case "$stdio_stream_array" in
11511'') $cat >&4 <<EOM
11512I can't figure out how to access stdio streams by file descriptor number.
11513EOM
11514 d_stdio_stream_array="$undef"
11515 ;;
11516*) $cat >&4 <<EOM
11517You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11518EOM
11519 d_stdio_stream_array="$define"
11520 ;;
11521esac
11522
11523: see if strcoll exists
11524set strcoll d_strcoll
11525eval $inlibc
11526
11527: check for structure copying
11528echo " "
11529echo "Checking to see if your C compiler can copy structs..." >&4
11530$cat >try.c <<'EOCP'
11531int main()
11532{
11533 struct blurfl {
11534 int dyick;
11535 } foo, bar;
11536
11537 foo = bar;
11538}
11539EOCP
11540if $cc -c try.c >/dev/null 2>&1 ; then
11541 val="$define"
11542 echo "Yup, it can."
11543else
11544 val="$undef"
11545 echo "Nope, it can't."
11546fi
11547set d_strctcpy
11548eval $setvar
11549$rm -f try.*
11550
11551: see if strerror and/or sys_errlist[] exist
11552echo " "
11553if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11554 if set strerror val -f d_strerror; eval $csym; $val; then
11555 echo 'strerror() found.' >&4
11556 d_strerror="$define"
11557 d_strerrm='strerror(e)'
11558 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11559 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11560 d_syserrlst="$define"
11561 else
11562 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11563 d_syserrlst="$undef"
11564 fi
11565 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11566 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11567 echo 'strerror() found in string header.' >&4
11568 d_strerror="$define"
11569 d_strerrm='strerror(e)'
11570 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11571 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11572 d_syserrlst="$define"
11573 else
11574 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11575 d_syserrlst="$undef"
11576 fi
11577 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11578 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11579 d_strerror="$undef"
11580 d_syserrlst="$define"
11581 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11582 else
11583 echo 'strerror() and sys_errlist[] NOT found.' >&4
11584 d_strerror="$undef"
11585 d_syserrlst="$undef"
11586 d_strerrm='"unknown"'
11587 fi
11588fi
11589
11590: see if strtod exists
11591set strtod d_strtod
11592eval $inlibc
11593
11594: see if strtol exists
11595set strtol d_strtol
11596eval $inlibc
11597
11598: see if strtold exists
11599set strtold d_strtold
11600eval $inlibc
11601
11602: see if strtoll exists
11603set strtoll d_strtoll
11604eval $inlibc
11605
11606case "$d_longlong-$d_strtoll" in
11607"$define-$define")
11608 $cat <<EOM
11609Checking whether your strtoll() works okay...
11610EOM
11611 $cat >try.c <<'EOCP'
11612#include <errno.h>
11613#ifdef __hpux
11614#define strtoll __strtoll
11615#endif
11616#include <stdio.h>
11617extern long long int strtoll(char *s, char **, int);
11618static int bad = 0;
11619int check(char *s, long long ell, int een) {
11620 long long gll;
11621 errno = 0;
11622 gll = strtoll(s, 0, 10);
11623 if (!((gll == ell) && (errno == een)))
11624 bad++;
11625}
11626int main() {
11627 check(" 1", 1LL, 0);
11628 check(" 0", 0LL, 0);
11629 check("-1", -1LL, 0);
11630 check("-9223372036854775808", -9223372036854775808LL, 0);
11631 check("-9223372036854775808", -9223372036854775808LL, 0);
11632 check(" 9223372036854775807", 9223372036854775807LL, 0);
11633 check("-9223372036854775808", -9223372036854775808LL, 0);
11634 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11635 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11636 if (!bad)
11637 printf("ok\n");
11638}
11639EOCP
11640 set try
11641 if eval $compile; then
11642 case "`./try`" in
11643 ok) echo "Your strtoll() seems to be working okay." ;;
11644 *) cat <<EOM >&4
11645Your strtoll() doesn't seem to be working okay.
11646EOM
11647 d_strtoll="$undef"
11648 ;;
11649 esac
11650 fi
11651 ;;
11652esac
11653
11654: see if strtoul exists
11655set strtoul d_strtoul
11656eval $inlibc
11657
11658: see if strtoull exists
11659set strtoull d_strtoull
11660eval $inlibc
11661
11662case "$d_longlong-$d_strtoull" in
11663"$define-$define")
11664 $cat <<EOM
11665Checking whether your strtoull() works okay...
11666EOM
11667 $cat >try.c <<'EOCP'
11668#include <errno.h>
11669#ifdef __hpux
11670#define strtoull __strtoull
11671#endif
11672#include <stdio.h>
11673extern unsigned long long int strtoull(char *s, char **, int);
11674static int bad = 0;
11675int check(char *s, long long eull, int een) {
11676 long long gull;
11677 errno = 0;
11678 gull = strtoull(s, 0, 10);
11679 if (!((gull == eull) && (errno == een)))
11680 bad++;
11681}
11682int main() {
11683 check(" 1", 1LL, 0);
11684 check(" 0", 0LL, 0);
11685 check("18446744073709551615", 18446744073709551615ULL, 0);
11686 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11687 if (!bad)
11688 printf("ok\n");
11689}
11690EOCP
11691 set try
11692 if eval $compile; then
11693 case "`./try`" in
11694 ok) echo "Your strtoull() seems to be working okay." ;;
11695 *) cat <<EOM >&4
11696Your strtoull() doesn't seem to be working okay.
11697EOM
11698 d_strtoull="$undef"
11699 ;;
11700 esac
11701 fi
11702 ;;
11703esac
11704
11705: see if strtouq exists
11706set strtouq d_strtouq
11707eval $inlibc
11708
11709: see if strxfrm exists
11710set strxfrm d_strxfrm
11711eval $inlibc
11712
11713: see if symlink exists
11714set symlink d_symlink
11715eval $inlibc
11716
11717: see if syscall exists
11718set syscall d_syscall
11719eval $inlibc
11720
11721: see if sysconf exists
11722set sysconf d_sysconf
11723eval $inlibc
11724
11725: see if system exists
11726set system d_system
11727eval $inlibc
11728
11729: see if tcgetpgrp exists
11730set tcgetpgrp d_tcgetpgrp
11731eval $inlibc
11732
11733: see if tcsetpgrp exists
11734set tcsetpgrp d_tcsetpgrp
11735eval $inlibc
11736
11737: see if prototype for telldir is available
11738echo " "
11739set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11740eval $hasproto
11741
11742: see if this is a sys/times.h system
11743set sys/times.h i_systimes
11744eval $inhdr
11745
11746: see if times exists
11747echo " "
11748if set times val -f d_times; eval $csym; $val; then
11749 echo 'times() found.' >&4
11750 d_times="$define"
11751 inc=''
11752 case "$i_systimes" in
11753 "$define") inc='sys/times.h';;
11754 esac
11755 rp="What is the type returned by times() on this system?"
11756 set clock_t clocktype long stdio.h sys/types.h $inc
11757 eval $typedef_ask
11758else
11759 echo 'times() NOT found, hope that will do.' >&4
11760 d_times="$undef"
11761 clocktype='int'
11762fi
11763
11764: see if truncate exists
11765set truncate d_truncate
11766eval $inlibc
11767
11768: see if tzname[] exists
11769echo " "
11770if set tzname val -a d_tzname; eval $csym; $val; then
11771 val="$define"
11772 echo 'tzname[] found.' >&4
11773else
11774 val="$undef"
11775 echo 'tzname[] NOT found.' >&4
11776fi
11777set d_tzname
11778eval $setvar
11779
11780: see if umask exists
11781set umask d_umask
11782eval $inlibc
11783
11784: see if ustat exists
11785set ustat d_ustat
11786eval $inlibc
11787
11788: backward compatibility for d_hvfork
11789if test X$d_hvfork != X; then
11790 d_vfork="$d_hvfork"
11791 d_hvfork=''
11792fi
11793: see if there is a vfork
11794val=''
11795set vfork val
11796eval $inlibc
11797
11798: Ok, but do we want to use it. vfork is reportedly unreliable in
11799: perl on Solaris 2.x, and probably elsewhere.
11800case "$val" in
11801$define)
11802 echo " "
11803 case "$usevfork" in
11804 false) dflt='n';;
11805 *) dflt='y';;
11806 esac
11807 cat <<'EOM'
11808
11809Perl can only use a vfork() that doesn't suffer from strict
11810restrictions on calling functions or modifying global data in
11811the child. For example, glibc-2.1 contains such a vfork()
11812that is unsuitable. If your system provides a proper fork()
11813call, chances are that you do NOT want perl to use vfork().
11814
11815EOM
11816 rp="Do you still want to use vfork()?"
11817 . ./myread
11818 case "$ans" in
11819 y|Y) ;;
11820 *)
11821 echo "Ok, we won't use vfork()."
11822 val="$undef"
11823 ;;
11824 esac
11825 ;;
11826esac
11827set d_vfork
11828eval $setvar
11829case "$d_vfork" in
11830$define) usevfork='true';;
11831*) usevfork='false';;
11832esac
11833
11834: see if this is an sysdir system
11835set sys/dir.h i_sysdir
11836eval $inhdr
11837
11838: see if this is an sysndir system
11839set sys/ndir.h i_sysndir
11840eval $inhdr
11841
11842: see if closedir exists
11843set closedir d_closedir
11844eval $inlibc
11845
11846case "$d_closedir" in
11847"$define")
11848 echo " "
11849 echo "Checking whether closedir() returns a status..." >&4
11850 cat > closedir.c <<EOM
11851#$i_dirent I_DIRENT /**/
11852#$i_sysdir I_SYS_DIR /**/
11853#$i_sysndir I_SYS_NDIR /**/
11854#$i_systypes I_SYS_TYPES /**/
11855
11856#if defined(I_SYS_TYPES)
11857#include <sys/types.h>
11858#endif
11859#if defined(I_DIRENT)
11860#include <dirent.h>
11861#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11862#include <sys/dir.h>
11863#endif
11864#else
11865#ifdef I_SYS_NDIR
11866#include <sys/ndir.h>
11867#else
11868#ifdef I_SYS_DIR
11869#ifdef hp9000s500
11870#include <ndir.h> /* may be wrong in the future */
11871#else
11872#include <sys/dir.h>
11873#endif
11874#endif
11875#endif
11876#endif
11877int main() { return closedir(opendir(".")); }
11878EOM
11879 set closedir
11880 if eval $compile_ok; then
11881 if ./closedir > /dev/null 2>&1 ; then
11882 echo "Yes, it does."
11883 val="$undef"
11884 else
11885 echo "No, it doesn't."
11886 val="$define"
11887 fi
11888 else
11889 echo "(I can't seem to compile the test program--assuming it doesn't)"
11890 val="$define"
11891 fi
11892 ;;
11893*)
11894 val="$undef";
11895 ;;
11896esac
11897set d_void_closedir
11898eval $setvar
11899$rm -f closedir*
11900: check for volatile keyword
11901echo " "
11902echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11903$cat >try.c <<'EOCP'
11904int main()
11905{
11906 typedef struct _goo_struct goo_struct;
11907 goo_struct * volatile goo = ((goo_struct *)0);
11908 struct _goo_struct {
11909 long long_int;
11910 int reg_int;
11911 char char_var;
11912 };
11913 typedef unsigned short foo_t;
11914 char *volatile foo;
11915 volatile int bar;
11916 volatile foo_t blech;
11917 foo = foo;
11918}
11919EOCP
11920if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11921 val="$define"
11922 echo "Yup, it does."
11923else
11924 val="$undef"
11925 echo "Nope, it doesn't."
11926fi
11927set d_volatile
11928eval $setvar
11929$rm -f try.*
11930
11931: see if there is a wait4
11932set wait4 d_wait4
11933eval $inlibc
11934
11935: see if waitpid exists
11936set waitpid d_waitpid
11937eval $inlibc
11938
11939: see if wcstombs exists
11940set wcstombs d_wcstombs
11941eval $inlibc
11942
11943: see if wctomb exists
11944set wctomb d_wctomb
11945eval $inlibc
11946
11947: preserve RCS keywords in files with variable substitution, grrr
11948Date='$Date'
11949Id='$Id'
11950Log='$Log'
11951RCSfile='$RCSfile'
11952Revision='$Revision'
11953
11954case "$crosscompile" in
11955''|[nN]*) crosscompile="$undef" ;;
11956esac
11957
11958case "$osname" in
11959next|rhapsody|darwin) multiarch="$define" ;;
11960esac
11961case "$multiarch" in
11962''|[nN]*) multiarch="$undef" ;;
11963esac
11964
11965: check for alignment requirements
11966echo " "
11967case "$crosscompile$multiarch" in
11968*$define*)
11969 $cat <<EOM
11970You seem to be either cross-compiling or doing a multiarchitecture build,
11971skipping the memory alignment check.
11972
11973EOM
11974 case "$alignbytes" in
11975 '') alignbytes=8 ;;
11976 esac
11977 ;;
11978*)
11979 case "$alignbytes" in
11980 '') echo "Checking alignment constraints..." >&4
11981 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11982 $cat >try.c <<'EOCP'
11983typedef long double NV;
11984EOCP
11985 else
11986 $cat >try.c <<'EOCP'
11987typedef double NV;
11988EOCP
11989 fi
11990 $cat >>try.c <<'EOCP'
11991#include <stdio.h>
11992struct foobar {
11993 char foo;
11994 NV bar;
11995} try_algn;
11996int main()
11997{
11998 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11999 return(0);
12000}
12001EOCP
12002 set try
12003 if eval $compile_ok; then
12004 dflt=`./try`
12005 else
12006 dflt='8'
12007 echo "(I can't seem to compile the test program...)"
12008 fi
12009 ;;
12010 *) dflt="$alignbytes"
12011 ;;
12012 esac
12013 rp="Doubles must be aligned on a how-many-byte boundary?"
12014 . ./myread
12015 alignbytes="$ans"
12016 $rm -f try.c try
12017 ;;
12018esac
12019
12020
12021: set the base revision
12022baserev=5.0
12023
12024: check for ordering of bytes in a long
12025echo " "
12026case "$crosscompile$multiarch" in
12027*$define*)
12028 $cat <<EOM
12029You seem to be either cross-compiling or doing a multiarchitecture build,
12030skipping the byteorder check.
12031
12032EOM
12033 byteorder='0xffff'
12034 ;;
12035*)
12036 case "$byteorder" in
12037 '')
12038 $cat <<'EOM'
12039In the following, larger digits indicate more significance. A big-endian
12040machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12041little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12042machines may have weird orders like 3412. A Cray will report 87654321,
12043an Alpha will report 12345678. If the test program works the default is
12044probably right.
12045I'm now running the test program...
12046EOM
12047 $cat >try.c <<'EOCP'
12048#include <stdio.h>
12049int main()
12050{
12051 int i;
12052 union {
12053 unsigned long l;
12054 char c[sizeof(long)];
12055 } u;
12056
12057 if (sizeof(long) > 4)
12058 u.l = (0x08070605L << 32) | 0x04030201L;
12059 else
12060 u.l = 0x04030201L;
12061 for (i = 0; i < sizeof(long); i++)
12062 printf("%c", u.c[i]+'0');
12063 printf("\n");
12064 exit(0);
12065}
12066EOCP
12067 xxx_prompt=y
12068 set try
12069 if eval $compile && ./try > /dev/null; then
12070 dflt=`./try`
12071 case "$dflt" in
12072 [1-4][1-4][1-4][1-4]|12345678|87654321)
12073 echo "(The test program ran ok.)"
12074 echo "byteorder=$dflt"
12075 xxx_prompt=n
12076 ;;
12077 ????|????????) echo "(The test program ran ok.)" ;;
12078 *) echo "(The test program didn't run right for some reason.)" ;;
12079 esac
12080 else
12081 dflt='4321'
12082 cat <<'EOM'
12083(I can't seem to compile the test program. Guessing big-endian...)
12084EOM
12085 fi
12086 case "$xxx_prompt" in
12087 y)
12088 rp="What is the order of bytes in a long?"
12089 . ./myread
12090 byteorder="$ans"
12091 ;;
12092 *) byteorder=$dflt
12093 ;;
12094 esac
12095 ;;
12096 esac
12097 $rm -f try.c try
12098 ;;
12099esac
12100
12101
12102: how do we catenate cpp tokens here?
12103echo " "
12104echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12105$cat >cpp_stuff.c <<'EOCP'
12106#define RCAT(a,b)a/**/b
12107#define ACAT(a,b)a ## b
12108RCAT(Rei,ser)
12109ACAT(Cir,cus)
12110EOCP
12111$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12112if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12113 echo "Oh! Smells like ANSI's been here." >&4
12114 echo "We can catify or stringify, separately or together!"
12115 cpp_stuff=42
12116elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12117 echo "Ah, yes! The good old days!" >&4
12118 echo "However, in the good old days we don't know how to stringify and"
12119 echo "catify at the same time."
12120 cpp_stuff=1
12121else
12122 $cat >&4 <<EOM
12123Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12124to have to edit the values of CAT[2-5] in config.h...
12125EOM
12126 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12127fi
12128$rm -f cpp_stuff.*
12129
12130: see if this is a db.h system
12131set db.h i_db
12132eval $inhdr
12133
12134case "$i_db" in
12135$define)
12136 : Check db version.
12137 echo " "
12138 echo "Checking Berkeley DB version ..." >&4
12139 $cat >try.c <<EOCP
12140#$d_const HASCONST
12141#ifndef HASCONST
12142#define const
12143#endif
12144#include <sys/types.h>
12145#include <stdio.h>
12146#include <db.h>
12147int main()
12148{
12149#ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12150 int Major, Minor, Patch ;
12151 unsigned long Version ;
12152 (void)db_version(&Major, &Minor, &Patch) ;
12153 printf("You have Berkeley DB Version 2 or greater\n");
12154
12155 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12156 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12157 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12158 Major, Minor, Patch) ;
12159
12160 /* check that db.h & libdb are compatible */
12161 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12162 printf("db.h and libdb are incompatible\n") ;
12163 exit(3);
12164 }
12165
12166 printf("db.h and libdb are compatible\n") ;
12167
12168 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12169 + DB_VERSION_PATCH ;
12170
12171 /* needs to be >= 2.3.4 */
12172 if (Version < 2003004) {
12173 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12174 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12175 exit(2);
12176 }
12177
12178 exit(0);
12179#else
12180#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12181 printf("You have Berkeley DB Version 1\n");
12182 exit(0); /* DB version < 2: the coast is clear. */
12183#else
12184 exit(1); /* <db.h> not Berkeley DB? */
12185#endif
12186#endif
12187}
12188EOCP
12189 set try
12190 if eval $compile_ok && ./try; then
12191 echo 'Looks OK.' >&4
12192 else
12193 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12194 i_db=$undef
12195 case " $libs " in
12196 *"-ldb "*)
12197 : Remove db from list of libraries to use
12198 echo "Removing unusable -ldb from library list" >&4
12199 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12200 shift
12201 libs="$*"
12202 echo "libs = $libs" >&4
12203 ;;
12204 esac
12205 fi
12206 $rm -f try.*
12207 ;;
12208esac
12209
12210case "$i_db" in
12211define)
12212 : Check the return type needed for hash
12213 echo " "
12214 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12215 $cat >try.c <<EOCP
12216#$d_const HASCONST
12217#ifndef HASCONST
12218#define const
12219#endif
12220#include <sys/types.h>
12221#include <db.h>
12222
12223#ifndef DB_VERSION_MAJOR
12224u_int32_t hash_cb (ptr, size)
12225const void *ptr;
12226size_t size;
12227{
12228}
12229HASHINFO info;
12230int main()
12231{
12232 info.hash = hash_cb;
12233}
12234#endif
12235EOCP
12236 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12237 if $contains warning try.out >>/dev/null 2>&1 ; then
12238 db_hashtype='int'
12239 else
12240 db_hashtype='u_int32_t'
12241 fi
12242 else
12243 : XXX Maybe we should just give up here.
12244 db_hashtype=u_int32_t
12245 $cat try.out >&4
12246 echo "Help: I can't seem to compile the db test program." >&4
12247 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12248 fi
12249 $rm -f try.*
12250 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12251 ;;
12252*) db_hashtype=u_int32_t
12253 ;;
12254esac
12255case "$i_db" in
12256define)
12257 : Check the return type needed for prefix
12258 echo " "
12259 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12260 cat >try.c <<EOCP
12261#$d_const HASCONST
12262#ifndef HASCONST
12263#define const
12264#endif
12265#include <sys/types.h>
12266#include <db.h>
12267
12268#ifndef DB_VERSION_MAJOR
12269size_t prefix_cb (key1, key2)
12270const DBT *key1;
12271const DBT *key2;
12272{
12273}
12274BTREEINFO info;
12275int main()
12276{
12277 info.prefix = prefix_cb;
12278}
12279#endif
12280EOCP
12281 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12282 if $contains warning try.out >>/dev/null 2>&1 ; then
12283 db_prefixtype='int'
12284 else
12285 db_prefixtype='size_t'
12286 fi
12287 else
12288 db_prefixtype='size_t'
12289 : XXX Maybe we should just give up here.
12290 $cat try.out >&4
12291 echo "Help: I can't seem to compile the db test program." >&4
12292 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12293 fi
12294 $rm -f try.*
12295 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12296 ;;
12297*) db_prefixtype='size_t'
12298 ;;
12299esac
12300
12301: check for void type
12302echo " "
12303echo "Checking to see how well your C compiler groks the void type..." >&4
12304case "$voidflags" in
12305'')
12306 $cat >try.c <<'EOCP'
12307#if TRY & 1
12308void sub() {
12309#else
12310sub() {
12311#endif
12312 extern void moo(); /* function returning void */
12313 void (*goo)(); /* ptr to func returning void */
12314#if TRY & 8
12315 void *hue; /* generic ptr */
12316#endif
12317#if TRY & 2
12318 void (*foo[10])();
12319#endif
12320
12321#if TRY & 4
12322 if(goo == moo) {
12323 exit(0);
12324 }
12325#endif
12326 exit(0);
12327}
12328int main() { sub(); }
12329EOCP
12330 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12331 voidflags=$defvoidused
12332 echo "Good. It appears to support void to the level $package wants.">&4
12333 if $contains warning .out >/dev/null 2>&1; then
12334 echo "However, you might get some warnings that look like this:"
12335 $cat .out
12336 fi
12337 else
12338echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12339 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12340 echo "It supports 1..."
12341 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12342 echo "It also supports 2..."
12343 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12344 voidflags=7
12345 echo "And it supports 4 but not 8 definitely."
12346 else
12347 echo "It doesn't support 4..."
12348 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12349 voidflags=11
12350 echo "But it supports 8."
12351 else
12352 voidflags=3
12353 echo "Neither does it support 8."
12354 fi
12355 fi
12356 else
12357 echo "It does not support 2..."
12358 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12359 voidflags=13
12360 echo "But it supports 4 and 8."
12361 else
12362 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12363 voidflags=5
12364 echo "And it supports 4 but has not heard about 8."
12365 else
12366 echo "However it supports 8 but not 4."
12367 fi
12368 fi
12369 fi
12370 else
12371 echo "There is no support at all for void."
12372 voidflags=0
12373 fi
12374 fi
12375esac
12376case "$voidflags" in
12377"$defvoidused") ;;
12378*) $cat >&4 <<'EOM'
12379 Support flag bits are:
12380 1: basic void declarations.
12381 2: arrays of pointers to functions returning void.
12382 4: operations between pointers to and addresses of void functions.
12383 8: generic void pointers.
12384EOM
12385 dflt="$voidflags";
12386 rp="Your void support flags add up to what?"
12387 . ./myread
12388 voidflags="$ans"
12389 ;;
12390esac
12391$rm -f try.* .out
12392
12393
12394: How can we generate normalized random numbers ?
12395echo " "
12396echo "Looking for a random number function..." >&4
12397case "$randfunc" in
12398'')
12399 if set drand48 val -f; eval $csym; $val; then
12400 dflt="drand48"
12401 echo "Good, found drand48()." >&4
12402 elif set random val -f; eval $csym; $val; then
12403 dflt="random"
12404 echo "OK, found random()." >&4
12405 else
12406 dflt="rand"
12407 echo "Yick, looks like I have to use rand()." >&4
12408 fi
12409 echo " "
12410 ;;
12411*)
12412 dflt="$randfunc"
12413 ;;
12414esac
12415cont=true
12416
12417case "$ccflags" in
12418*-Dmy_rand=*|*-Dmy_srand=*)
12419 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12420 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12421 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12422 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12423 ;;
12424esac
12425
12426while $test "$cont"; do
12427 rp="Use which function to generate random numbers?"
12428 . ./myread
12429 if $test "$ans" = "$dflt"; then
12430 : null
12431 else
12432 randbits=''
12433 fi
12434 randfunc="$ans"
12435 if set $ans val -f; eval $csym; $val; then
12436 cont=''
12437 else
12438 dflt=y
12439 rp="I cannot find function $ans. Use that name anyway?"
12440 . ./myread
12441 dflt=rand
12442 case "$ans" in
12443 [yY]*) cont='';;
12444 esac
12445 fi
12446 case "$cont" in
12447 '')
12448 case "$randfunc" in
12449 drand48)
12450 drand01="drand48()"
12451 seedfunc="srand48"
12452 randbits=48
12453 randseedtype=long
12454 ;;
12455 rand|random)
12456 case "$randbits" in
12457 '')
12458echo "Checking to see how many bits your $randfunc() function produces..." >&4
12459 $cat >try.c <<EOCP
12460#$i_unistd I_UNISTD
12461#$i_stdlib I_STDLIB
12462#include <stdio.h>
12463#ifdef I_UNISTD
12464# include <unistd.h>
12465#endif
12466#ifdef I_STDLIB
12467# include <stdlib.h>
12468#endif
12469int main()
12470{
12471 register int i;
12472 register unsigned long tmp;
12473 register unsigned long max = 0L;
12474
12475 for (i = 1000; i; i--) {
12476 tmp = (unsigned long) $randfunc();
12477 if (tmp > max) max = tmp;
12478 }
12479 for (i = 0; max; i++)
12480 max /= 2;
12481 printf("%d\n",i);
12482}
12483EOCP
12484 set try
12485 if eval $compile_ok; then
12486 dflt=`try`
12487 else
12488 dflt='?'
12489 echo "(I can't seem to compile the test program...)"
12490 fi
12491 ;;
12492 *)
12493 dflt="$randbits"
12494 ;;
12495 esac
12496 rp="How many bits does your $randfunc() function produce?"
12497 . ./myread
12498 randbits="$ans"
12499 $rm -f try.c try
12500 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12501 seedfunc="s$randfunc"
12502 randseedtype=unsigned
12503 ;;
12504 *)
12505 dflt="31"
12506 rp="How many bits does your $randfunc() function produce?"
12507 . ./myread
12508 randbits="$ans"
12509 seedfunc="s$randfunc"
12510 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12511 if set $seedfunc val -f; eval $csym; $val; then
12512 echo "(Using $seedfunc() to seed random generator)"
12513 else
12514 echo "(Warning: no $seedfunc() to seed random generator)"
12515 seedfunc=rand
12516 fi
12517 randseedtype=unsigned
12518 ;;
12519 esac
12520 ;;
12521 esac
12522done
12523
12524echo " "
12525echo "Determining whether or not we are on an EBCDIC system..." >&4
12526$cat >tebcdic.c <<'EOM'
12527int main()
12528{
12529 if ('M'==0xd4) return 0;
12530 return 1;
12531}
12532EOM
12533
12534val=$undef
12535set tebcdic
12536if eval $compile_ok; then
12537 if ./tebcdic; then
12538 echo "You seem to speak EBCDIC." >&4
12539 val="$define"
12540 else
12541 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12542 fi
12543else
12544 echo "I'm unable to compile the test program." >&4
12545 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12546fi
12547$rm -f tebcdic.c tebcdic
12548set ebcdic
12549eval $setvar
12550
12551echo " "
12552$cat >&4 <<EOM
12553Checking how to flush all pending stdio output...
12554EOM
12555# I only know how to find the first 32 possibly open files on SunOS.
12556# See also hints/sunos_4_1.sh and util.c --AD
12557case "$osname" in
12558sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12559esac
12560$cat >>try.c <<EOCP
12561#include <stdio.h>
12562#$i_unistd I_UNISTD
12563#ifdef I_UNISTD
12564# include <unistd.h>
12565#endif
12566#$d_sysconf HAS_SYSCONF
12567#$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12568#ifdef HAS_STDIO_STREAM_ARRAY
12569# define STDIO_STREAM_ARRAY $stdio_stream_array
12570#endif
12571int main() {
12572 FILE* p = fopen("try.out", "w");
12573#ifdef TRY_FPUTC
12574 fputc('x', p);
12575#else
12576# ifdef TRY_FPRINTF
12577 fprintf(p, "x");
12578# endif
12579#endif
12580#ifdef TRY_FFLUSH_NULL
12581 fflush(NULL);
12582#endif
12583#ifdef TRY_FFLUSH_ALL
12584 {
12585 long open_max = -1;
12586# ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12587 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12588# else
12589# if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12590 open_max = sysconf(_SC_OPEN_MAX);
12591# else
12592# ifdef FOPEN_MAX
12593 open_max = FOPEN_MAX;
12594# else
12595# ifdef OPEN_MAX
12596 open_max = OPEN_MAX;
12597# else
12598# ifdef _NFILE
12599 open_max = _NFILE;
12600# endif
12601# endif
12602# endif
12603# endif
12604# endif
12605# ifdef HAS_STDIO_STREAM_ARRAY
12606 if (open_max > 0) {
12607 long i;
12608 for (i = 0; i < open_max; i++)
12609 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12610 STDIO_STREAM_ARRAY[i]._file < open_max &&
12611 STDIO_STREAM_ARRAY[i]._flag)
12612 fflush(&STDIO_STREAM_ARRAY[i]);
12613 }
12614 }
12615# endif
12616#endif
12617 _exit(42);
12618}
12619EOCP
12620: first we have to find out how _not_ to flush
12621if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12622 output=''
12623 set try -DTRY_FPUTC
12624 if eval $compile; then
12625 $rm -f try.out
12626 ./try$exe_ext 2>/dev/null
12627 if $test ! -s try.out -a "X$?" = X42; then
12628 output=-DTRY_FPUTC
12629 fi
12630 fi
12631 case "$output" in
12632 '')
12633 set try -DTRY_FPRINTF
12634 $rm -f try.out
12635 if eval $compile; then
12636 $rm -f try.out
12637 ./try$exe_ext 2>/dev/null
12638 if $test ! -s try.out -a "X$?" = X42; then
12639 output=-DTRY_FPRINTF
12640 fi
12641 fi
12642 ;;
12643 esac
12644fi
12645: check for fflush NULL behaviour
12646case "$fflushNULL" in
12647'') set try -DTRY_FFLUSH_NULL $output
12648 if eval $compile; then
12649 $rm -f try.out
12650 ./try$exe_ext 2>/dev/null
12651 code="$?"
12652 if $test -s try.out -a "X$code" = X42; then
12653 fflushNULL="`$cat try.out`"
12654 else
12655 if $test "X$code" != X42; then
12656 $cat >&4 <<EOM
12657(If this test failed, don't worry, we'll try another method shortly.)
12658EOM
12659 fi
12660 fi
12661 fi
12662 $rm -f core try.core core.try.*
12663 case "$fflushNULL" in
12664 x) $cat >&4 <<EOM
12665Your fflush(NULL) works okay for output streams.
12666Let's see if it clobbers input pipes...
12667EOM
12668# As of mid-March 2000 all versions of Solaris appear to have a stdio
12669# bug that improperly flushes the input end of pipes. So we avoid the
12670# autoflush on fork/system/exec support for now. :-(
12671$cat >tryp.c <<EOCP
12672#include <stdio.h>
12673int
12674main(int argc, char **argv)
12675{
12676 char buf[1024];
12677 int i;
12678 char *bp = buf;
12679 while (1) {
12680 while ((i = getc(stdin)) != -1
12681 && (*bp++ = i) != '\n'
12682 && bp < &buf[1024])
12683 /* DO NOTHING */ ;
12684 *bp = '\0';
12685 fprintf(stdout, "%s", buf);
12686 fflush(NULL);
12687 if (i == -1)
12688 return 0;
12689 bp = buf;
12690 }
12691}
12692EOCP
12693 fflushNULL="$define"
12694 set tryp
12695 if eval $compile; then
12696 $rm -f tryp.out
12697 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12698 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12699 $cat >&4 <<EOM
12700fflush(NULL) seems to behave okay with input streams.
12701EOM
12702 fflushNULL="$define"
12703 else
12704 $cat >&4 <<EOM
12705Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12706EOM
12707 fflushNULL="$undef"
12708 fi
12709 fi
12710 $rm -f core tryp.c tryp.core core.tryp.*
12711 ;;
12712 '') $cat >&4 <<EOM
12713Your fflush(NULL) isn't working (contrary to ANSI C).
12714EOM
12715 fflushNULL="$undef"
12716 ;;
12717 *) $cat >&4 <<EOM
12718Cannot figure out whether your fflush(NULL) works or not.
12719I'm assuming it doesn't (contrary to ANSI C).
12720EOM
12721 fflushNULL="$undef"
12722 ;;
12723 esac
12724 ;;
12725$define|true|[yY]*)
12726 fflushNULL="$define"
12727 ;;
12728*)
12729 fflushNULL="$undef"
12730 ;;
12731esac
12732: check explicit looping only if NULL did not work, and if the pipe
12733: bug does not show up on an explicit flush too
12734case "$fflushNULL" in
12735"$undef")
12736 $cat >tryp.c <<EOCP
12737#include <stdio.h>
12738int
12739main(int argc, char **argv)
12740{
12741 char buf[1024];
12742 int i;
12743 char *bp = buf;
12744 while (1) {
12745 while ((i = getc(stdin)) != -1
12746 && (*bp++ = i) != '\n'
12747 && bp < &buf[1024])
12748 /* DO NOTHING */ ;
12749 *bp = '\0';
12750 fprintf(stdout, "%s", buf);
12751 fflush(stdin);
12752 if (i == -1)
12753 return 0;
12754 bp = buf;
12755 }
12756}
12757EOCP
12758 set tryp
12759 if eval $compile; then
12760 $rm -f tryp.out
12761 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12762 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12763 $cat >&4 <<EOM
12764Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12765EOM
12766 : now check for fflushall behaviour
12767 case "$fflushall" in
12768 '') set try -DTRY_FFLUSH_ALL $output
12769 if eval $compile; then
12770 $cat >&4 <<EOM
12771(Now testing the other method--but note that this also may fail.)
12772EOM
12773 $rm -f try.out
12774 ./try$exe_ext 2>/dev/null
12775 if $test -s try.out -a "X$?" = X42; then
12776 fflushall="`$cat try.out`"
12777 fi
12778 fi
12779 $rm -f core try.core core.try.*
12780 case "$fflushall" in
12781 x) $cat >&4 <<EOM
12782Whew. Flushing explicitly all the stdio streams works.
12783EOM
12784 fflushall="$define"
12785 ;;
12786 '') $cat >&4 <<EOM
12787Sigh. Flushing explicitly all the stdio streams doesn't work.
12788EOM
12789 fflushall="$undef"
12790 ;;
12791 *) $cat >&4 <<EOM
12792Cannot figure out whether flushing stdio streams explicitly works or not.
12793I'm assuming it doesn't.
12794EOM
12795 fflushall="$undef"
12796 ;;
12797 esac
12798 ;;
12799 "$define"|true|[yY]*)
12800 fflushall="$define"
12801 ;;
12802 *)
12803 fflushall="$undef"
12804 ;;
12805 esac
12806 else
12807 $cat >&4 <<EOM
12808All is futile. Even fflush(stdin) clobbers input pipes!
12809EOM
12810 fflushall="$undef"
12811 fi
12812 else
12813 fflushall="$undef"
12814 fi
12815 $rm -f core tryp.c tryp.core core.tryp.*
12816 ;;
12817*) fflushall="$undef"
12818 ;;
12819esac
12820
12821case "$fflushNULL$fflushall" in
12822undefundef)
12823 $cat <<EOM
12824OK, I give up. I cannot figure out how to flush pending stdio output.
12825We won't be flushing handles at all before fork/exec/popen.
12826EOM
12827 ;;
12828esac
12829$rm -f try.* try$exe_ext
12830
12831: Store the full pathname to the ar program for use in the C program
12832: Respect a hint or command line value for full_ar.
12833case "$full_ar" in
12834'') full_ar=$ar ;;
12835esac
12836
12837: Store the full pathname to the sed program for use in the C program
12838full_sed=$sed
12839
12840: see what type gids are declared as in the kernel
12841echo " "
12842echo "Looking for the type for group ids returned by getgid()."
12843set gid_t gidtype xxx stdio.h sys/types.h
12844eval $typedef
12845case "$gidtype" in
12846xxx)
12847 xxx=`./findhdr sys/user.h`
12848 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12849 case $1 in
12850 unsigned) dflt="$1 $2" ;;
12851 *) dflt="$1" ;;
12852 esac
12853 ;;
12854*) dflt="$gidtype";;
12855esac
12856case "$gidtype" in
12857gid_t) echo "gid_t found." ;;
12858*) rp="What is the type for group ids returned by getgid()?"
12859 . ./myread
12860 gidtype="$ans"
12861 ;;
12862esac
12863
12864echo " "
12865case "$gidtype" in
12866*_t) zzz="$gidtype" ;;
12867*) zzz="gid" ;;
12868esac
12869echo "Checking the size of $zzz..." >&4
12870cat > try.c <<EOCP
12871#include <sys/types.h>
12872#include <stdio.h>
12873int main() {
12874 printf("%d\n", (int)sizeof($gidtype));
12875 exit(0);
12876}
12877EOCP
12878set try
12879if eval $compile_ok; then
12880 yyy=`./try`
12881 case "$yyy" in
12882 '') gidsize=4
12883 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12884 ;;
12885 *) gidsize=$yyy
12886 echo "Your $zzz is $gidsize bytes long."
12887 ;;
12888 esac
12889else
12890 gidsize=4
12891 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12892fi
12893
12894
12895echo " "
12896case "$gidtype" in
12897*_t) zzz="$gidtype" ;;
12898*) zzz="gid" ;;
12899esac
12900echo "Checking the sign of $zzz..." >&4
12901cat > try.c <<EOCP
12902#include <sys/types.h>
12903#include <stdio.h>
12904int main() {
12905 $gidtype foo = -1;
12906 if (foo < 0)
12907 printf("-1\n");
12908 else
12909 printf("1\n");
12910}
12911EOCP
12912set try
12913if eval $compile; then
12914 yyy=`./try`
12915 case "$yyy" in
12916 '') gidsign=1
12917 echo "(I can't execute the test program--guessing unsigned.)" >&4
12918 ;;
12919 *) gidsign=$yyy
12920 case "$gidsign" in
12921 1) echo "Your $zzz is unsigned." ;;
12922 -1) echo "Your $zzz is signed." ;;
12923 esac
12924 ;;
12925 esac
12926else
12927 gidsign=1
12928 echo "(I can't compile the test program--guessing unsigned.)" >&4
12929fi
12930
12931
12932echo " "
12933
12934if $test X"$quadtype" != X; then
12935
12936echo "Checking how to print 64-bit integers..." >&4
12937
12938if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12939 $cat >try.c <<'EOCP'
12940#include <sys/types.h>
12941#include <stdio.h>
12942int main() {
12943 int q = 12345678901;
12944 printf("%ld\n", q);
12945}
12946EOCP
12947 set try
12948 if eval $compile; then
12949 yyy=`./try$exe_ext`
12950 case "$yyy" in
12951 12345678901)
12952 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12953 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12954 echo "We will use %d."
12955 ;;
12956 esac
12957 fi
12958fi
12959
12960if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12961 $cat >try.c <<'EOCP'
12962#include <sys/types.h>
12963#include <stdio.h>
12964int main() {
12965 long q = 12345678901;
12966 printf("%ld\n", q);
12967}
12968EOCP
12969 set try
12970 if eval $compile; then
12971 yyy=`./try$exe_ext`
12972 case "$yyy" in
12973 12345678901)
12974 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12975 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
12976 echo "We will use %ld."
12977 ;;
12978 esac
12979 fi
12980fi
12981
12982if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12983 $cat >try.c <<'EOCP'
12984#include <sys/types.h>
12985#include <inttypes.h>
12986#include <stdio.h>
12987int main() {
12988 int64_t q = 12345678901;
12989 printf("%" PRId64 "\n", q);
12990}
12991EOCP
12992 set try
12993 if eval $compile; then
12994 yyy=`./try$exe_ext`
12995 case "$yyy" in
12996 12345678901)
12997 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12998 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
12999 echo "We will use the C9X style."
13000 ;;
13001 esac
13002 fi
13003fi
13004
13005if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13006 $cat >try.c <<'EOCP'
13007#include <sys/types.h>
13008#include <stdio.h>
13009int main() {
13010 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13011 printf("%lld\n", q);
13012}
13013EOCP
13014 set try
13015 if eval $compile; then
13016 yyy=`./try$exe_ext`
13017 case "$yyy" in
13018 12345678901)
13019 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13020 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13021 echo "We will use the %lld style."
13022 ;;
13023 esac
13024 fi
13025fi
13026
13027if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13028 $cat >try.c <<EOCP
13029#include <sys/types.h>
13030#include <stdio.h>
13031int main() {
13032 $quadtype q = 12345678901;
13033 printf("%Ld\n", q);
13034}
13035EOCP
13036 set try
13037 if eval $compile; then
13038 yyy=`./try$exe_ext`
13039 case "$yyy" in
13040 12345678901)
13041 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13042 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13043 echo "We will use %Ld."
13044 ;;
13045 esac
13046 fi
13047fi
13048
13049if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13050 $cat >try.c <<EOCP
13051#include <sys/types.h>
13052#include <stdio.h>
13053int main() {
13054 $quadtype q = 12345678901;
13055 printf("%qd\n", q);
13056}
13057EOCP
13058 set try
13059 if eval $compile; then
13060 yyy=`./try$exe_ext`
13061 case "$yyy" in
13062 12345678901)
13063 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13064 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13065 echo "We will use %qd."
13066 ;;
13067 esac
13068 fi
13069fi
13070
13071if $test X"$sPRId64" = X; then
13072 echo "Cannot figure out how to print 64-bit integers." >&4
13073fi
13074
13075$rm -f try try.*
13076
13077fi
13078
13079case "$sPRId64" in
13080'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13081 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13082 ;;
13083*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13084 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13085 ;;
13086esac
13087
13088
13089echo " "
13090$echo "Checking the format strings to be used for Perl's internal types..." >&4
13091
13092if $test X"$ivsize" = X8; then
13093 ivdformat="$sPRId64"
13094 uvuformat="$sPRIu64"
13095 uvoformat="$sPRIo64"
13096 uvxformat="$sPRIx64"
13097 uvXUformat="$sPRIXU64"
13098else
13099 if $test X"$ivsize" = X"$longsize"; then
13100 ivdformat='"ld"'
13101 uvuformat='"lu"'
13102 uvoformat='"lo"'
13103 uvxformat='"lx"'
13104 uvXUformat='"lX"'
13105 else
13106 if $test X"$ivsize" = X"$intsize"; then
13107 ivdformat='"d"'
13108 uvuformat='"u"'
13109 uvoformat='"o"'
13110 uvxformat='"x"'
13111 uvXUformat='"X"'
13112 else
13113 : far out
13114 if $test X"$ivsize" = X"$shortsize"; then
13115 ivdformat='"hd"'
13116 uvuformat='"hu"'
13117 uvoformat='"ho"'
13118 uvxformat='"hx"'
13119 uvXUformat='"hX"'
13120 fi
13121 fi
13122 fi
13123fi
13124
13125if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13126 nveformat="$sPRIeldbl"
13127 nvfformat="$sPRIfldbl"
13128 nvgformat="$sPRIgldbl"
13129 nvEUformat="$sPRIEUldbl"
13130 nvFUformat="$sPRIFUldbl"
13131 nvGUformat="$sPRIGUldbl"
13132else
13133 nveformat='"e"'
13134 nvfformat='"f"'
13135 nvgformat='"g"'
13136 nvEUformat='"E"'
13137 nvFUformat='"F"'
13138 nvGUformat='"G"'
13139fi
13140
13141case "$ivdformat" in
13142'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13143 exit 1
13144 ;;
13145esac
13146
13147
13148echo " "
13149$echo "Checking the format string to be used for gids..." >&4
13150
13151case "$gidsign" in
13152-1) if $test X"$gidsize" = X"$ivsize"; then
13153 gidformat="$ivdformat"
13154 else
13155 if $test X"$gidsize" = X"$longsize"; then
13156 gidformat='"ld"'
13157 else
13158 if $test X"$gidsize" = X"$intsize"; then
13159 gidformat='"d"'
13160 else
13161 if $test X"$gidsize" = X"$shortsize"; then
13162 gidformat='"hd"'
13163 fi
13164 fi
13165 fi
13166 fi
13167 ;;
13168*) if $test X"$gidsize" = X"$uvsize"; then
13169 gidformat="$uvuformat"
13170 else
13171 if $test X"$gidsize" = X"$longsize"; then
13172 gidformat='"lu"'
13173 else
13174 if $test X"$gidsize" = X"$intsize"; then
13175 gidformat='"u"'
13176 else
13177 if $test X"$gidsize" = X"$shortsize"; then
13178 gidformat='"hu"'
13179 fi
13180 fi
13181 fi
13182 fi
13183 ;;
13184esac
13185
13186: see if getgroups exists
13187set getgroups d_getgrps
13188eval $inlibc
13189
13190: see if setgroups exists
13191set setgroups d_setgrps
13192eval $inlibc
13193
13194
13195: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13196echo " "
13197case "$d_getgrps$d_setgrps" in
13198*define*)
13199 case "$groupstype" in
13200 '') dflt="$gidtype" ;;
13201 *) dflt="$groupstype" ;;
13202 esac
13203 $cat <<EOM
13204What type of pointer is the second argument to getgroups() and setgroups()?
13205Usually this is the same as group ids, $gidtype, but not always.
13206
13207EOM
13208 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13209 . ./myread
13210 groupstype="$ans"
13211 ;;
13212*) groupstype="$gidtype";;
13213esac
13214
13215echo " "
13216echo "Checking if your $make program sets \$(MAKE)..." >&4
13217case "$make_set_make" in
13218'')
13219 $sed 's/^X //' > testmake.mak << 'EOF'
13220Xall:
13221X @echo 'maketemp="$(MAKE)"'
13222EOF
13223 case "`$make -f testmake.mak 2>/dev/null`" in
13224 *maketemp=*) make_set_make='#' ;;
13225 *) make_set_make="MAKE=$make" ;;
13226 esac
13227 $rm -f testmake.mak
13228 ;;
13229esac
13230case "$make_set_make" in
13231'#') echo "Yup, it does.";;
13232*) echo "Nope, it doesn't.";;
13233esac
13234
13235: see what type is used for mode_t
13236rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13237set mode_t modetype int stdio.h sys/types.h
13238eval $typedef_ask
13239
13240: define a fucntion to check prototypes
13241$cat > protochk <<EOSH
13242$startsh
13243cc="$cc"
13244optimize="$optimize"
13245ccflags="$ccflags"
13246prototype="$prototype"
13247define="$define"
13248rm=$rm
13249EOSH
13250
13251$cat >> protochk <<'EOSH'
13252
13253$rm -f try.c
13254foo="$1"
13255shift
13256while test $# -ge 2; do
13257 case "$1" in
13258 $define) echo "#include <$2>" >> try.c ;;
13259 literal) echo "$2" >> try.c ;;
13260 esac
13261 shift 2
13262done
13263test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13264cat >> try.c <<'EOCP'
13265#ifdef CAN_PROTOTYPE
13266#define _(args) args
13267#else
13268#define _(args) ()
13269#endif
13270EOCP
13271echo "$foo" >> try.c
13272echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13273$cc $optimize $ccflags -c try.c > /dev/null 2>&1
13274status=$?
13275$rm -f try.[co]
13276exit $status
13277EOSH
13278chmod +x protochk
13279$eunicefix protochk
13280
13281: see what type is used for size_t
13282rp="What is the type used for the length parameter for string functions?"
13283set size_t sizetype 'unsigned int' stdio.h sys/types.h
13284eval $typedef_ask
13285
13286: check for type of arguments to gethostbyaddr.
13287if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13288 case "$d_gethbyaddr" in
13289 $define)
13290 $cat <<EOM
13291
13292Checking to see what type of arguments are accepted by gethostbyaddr().
13293EOM
13294 hdrs="$define sys/types.h
13295 $d_socket sys/socket.h
13296 $i_niin netinet/in.h
13297 $i_netdb netdb.h
13298 $i_unistd unistd.h"
13299 : The first arg can 'char *' or 'void *'
13300 : The second arg is some of integral type
13301 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13302 for yyy in size_t long int; do
13303 case "$netdb_host_type" in
13304 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13305 if ./protochk "$try" $hdrs; then
13306 echo "Your system accepts $xxx for the first arg."
13307 echo "...and $yyy for the second arg."
13308 netdb_host_type="$xxx"
13309 netdb_hlen_type="$yyy"
13310 fi
13311 ;;
13312 esac
13313 done
13314 done
13315 : In case none of those worked, prompt the user.
13316 case "$netdb_host_type" in
13317 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13318 dflt='char *'
13319 . ./myread
13320 netdb_host_type=$ans
13321 rp='What is the type for the 2nd argument to gethostbyaddr?'
13322 dflt="$sizetype"
13323 . ./myread
13324 netdb_hlen_type=$ans
13325 ;;
13326 esac
13327 ;;
13328 *) : no gethostbyaddr, so pick harmless defaults
13329 netdb_host_type='char *'
13330 netdb_hlen_type="$sizetype"
13331 ;;
13332 esac
13333 # Remove the "const" if needed. -- but then we'll have a
13334 # prototype clash!
13335 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13336fi
13337
13338: check for type of argument to gethostbyname.
13339if test "X$netdb_name_type" = X ; then
13340 case "$d_gethbyname" in
13341 $define)
13342 $cat <<EOM
13343
13344Checking to see what type of argument is accepted by gethostbyname().
13345EOM
13346 hdrs="$define sys/types.h
13347 $d_socket sys/socket.h
13348 $i_niin netinet/in.h
13349 $i_netdb netdb.h
13350 $i_unistd unistd.h"
13351 for xxx in "const char *" "char *"; do
13352 case "$netdb_name_type" in
13353 '') try="extern struct hostent *gethostbyname($xxx);"
13354 if ./protochk "$try" $hdrs; then
13355 echo "Your system accepts $xxx."
13356 netdb_name_type="$xxx"
13357 fi
13358 ;;
13359 esac
13360 done
13361 : In case none of those worked, prompt the user.
13362 case "$netdb_name_type" in
13363 '') rp='What is the type for the 1st argument to gethostbyname?'
13364 dflt='char *'
13365 . ./myread
13366 netdb_name_type=$ans
13367 ;;
13368 esac
13369 ;;
13370 *) : no gethostbyname, so pick harmless default
13371 netdb_name_type='char *'
13372 ;;
13373 esac
13374fi
13375
13376: check for type of 1st argument to getnetbyaddr.
13377if test "X$netdb_net_type" = X ; then
13378 case "$d_getnbyaddr" in
13379 $define)
13380 $cat <<EOM
13381
13382Checking to see what type of 1st argument is accepted by getnetbyaddr().
13383EOM
13384 hdrs="$define sys/types.h
13385 $d_socket sys/socket.h
13386 $i_niin netinet/in.h
13387 $i_netdb netdb.h
13388 $i_unistd unistd.h"
13389 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13390 case "$netdb_net_type" in
13391 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13392 if ./protochk "$try" $hdrs; then
13393 echo "Your system accepts $xxx."
13394 netdb_net_type="$xxx"
13395 fi
13396 ;;
13397 esac
13398 done
13399 : In case none of those worked, prompt the user.
13400 case "$netdb_net_type" in
13401 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13402 dflt='long'
13403 . ./myread
13404 netdb_net_type=$ans
13405 ;;
13406 esac
13407 ;;
13408 *) : no getnetbyaddr, so pick harmless default
13409 netdb_net_type='long'
13410 ;;
13411 esac
13412fi
13413: locate the preferred pager for this system
13414case "$pager" in
13415'')
13416 dflt=''
13417 case "$pg" in
13418 /*) dflt=$pg;;
13419 [a-zA-Z]:/*) dflt=$pg;;
13420 esac
13421 case "$more" in
13422 /*) dflt=$more;;
13423 [a-zA-Z]:/*) dflt=$more;;
13424 esac
13425 case "$less" in
13426 /*) dflt=$less;;
13427 [a-zA-Z]:/*) dflt=$less;;
13428 esac
13429 case "$dflt" in
13430 '') dflt=/usr/ucb/more;;
13431 esac
13432 ;;
13433*) dflt="$pager";;
13434esac
13435echo " "
13436fn=f/
13437rp='What pager is used on your system?'
13438. ./getfile
13439pager="$ans"
13440
13441: see what type pids are declared as in the kernel
13442rp="What is the type of process ids on this system?"
13443set pid_t pidtype int stdio.h sys/types.h
13444eval $typedef_ask
13445
13446: Find earliest binary compatible site_perl subdirectory perl can use.
13447case "$bincompat5005" in
13448"$define") xs_apiversion='5.005' ;;
13449*) xs_apiversion=$version ;; # The current site_perl version.
13450esac
13451: Find earliest pure perl site_perl subdirectory perl can use.
13452: The versioned directories started at 5.005.
13453pm_apiversion='5.005'
13454
13455: check for length of pointer
13456echo " "
13457case "$ptrsize" in
13458'')
13459 echo "Checking to see how big your pointers are..." >&4
13460 if test "$voidflags" -gt 7; then
13461 echo '#define VOID_PTR char *' > try.c
13462 else
13463 echo '#define VOID_PTR void *' > try.c
13464 fi
13465 $cat >>try.c <<'EOCP'
13466#include <stdio.h>
13467int main()
13468{
13469 printf("%d\n", (int)sizeof(VOID_PTR));
13470 exit(0);
13471}
13472EOCP
13473 set try
13474 if eval $compile_ok; then
13475 ptrsize=`./try`
13476 echo "Your pointers are $ptrsize bytes long."
13477 else
13478 dflt='4'
13479 echo "(I can't seem to compile the test program. Guessing...)" >&4
13480 rp="What is the size of a pointer (in bytes)?"
13481 . ./myread
13482 ptrsize="$ans"
13483 fi
13484 ;;
13485esac
13486$rm -f try.c try
13487
13488: see if ar generates random libraries by itself
13489echo " "
13490echo "Checking how to generate random libraries on your machine..." >&4
13491echo 'int bar1() { return bar2(); }' > bar1.c
13492echo 'int bar2() { return 2; }' > bar2.c
13493$cat > foo.c <<'EOP'
13494int main() { printf("%d\n", bar1()); exit(0); }
13495EOP
13496$cc $ccflags -c bar1.c >/dev/null 2>&1
13497$cc $ccflags -c bar2.c >/dev/null 2>&1
13498$cc $ccflags -c foo.c >/dev/null 2>&1
13499$ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13500if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13501 ./foobar >/dev/null 2>&1; then
13502 echo "$ar appears to generate random libraries itself."
13503 orderlib=false
13504 ranlib=":"
13505elif $ar ts bar$_a >/dev/null 2>&1 &&
13506 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13507 ./foobar >/dev/null 2>&1; then
13508 echo "a table of contents needs to be added with '$ar ts'."
13509 orderlib=false
13510 ranlib="$ar ts"
13511else
13512 case "$ranlib" in
13513 :) ranlib='';;
13514 '')
13515 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13516 $test -f $ranlib || ranlib=''
13517 ;;
13518 esac
13519 if $test -n "$ranlib"; then
13520 echo "your system has '$ranlib'; we'll use that."
13521 orderlib=false
13522 else
13523 echo "your system doesn't seem to support random libraries"
13524 echo "so we'll use lorder and tsort to order the libraries."
13525 orderlib=true
13526 ranlib=":"
13527 fi
13528fi
13529$rm -f foo* bar*
13530
13531: check for type of arguments to select.
13532case "$selecttype" in
13533'') case "$d_select" in
13534 $define)
13535 echo " "
13536 $cat <<EOM
13537Checking to see what type of arguments are accepted by select().
13538EOM
13539 hdrs="$define sys/types.h
13540 $i_systime sys/time.h
13541 $i_sysselct sys/select.h
13542 $d_socket sys/socket.h"
13543 : The first arg can be int, unsigned, or size_t
13544 : The last arg may or may not be 'const'
13545 val=''
13546 : void pointer has been seen but using that
13547 : breaks the selectminbits test
13548 for xxx in 'fd_set *' 'int *'; do
13549 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13550 for tmo in 'struct timeval *' 'const struct timeval *'; do
13551 case "$val" in
13552 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13553 if ./protochk "$try" $hdrs; then
13554 echo "Your system accepts $xxx."
13555 val="$xxx"
13556 fi
13557 ;;
13558 esac
13559 done
13560 done
13561 done
13562 case "$val" in
13563 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13564 case "$d_fd_set" in
13565 $define) dflt="fd_set *" ;;
13566 *) dflt="int *" ;;
13567 esac
13568 . ./myread
13569 val=$ans
13570 ;;
13571 esac
13572 selecttype="$val"
13573 ;;
13574 *) : no select, so pick a harmless default
13575 selecttype='int *'
13576 ;;
13577 esac
13578 ;;
13579esac
13580
13581: check for the select 'width'
13582case "$selectminbits" in
13583'') case "$d_select" in
13584 $define)
13585 $cat <<EOM
13586
13587Checking to see on how many bits at a time your select() operates...
13588EOM
13589 $cat >try.c <<EOCP
13590#include <sys/types.h>
13591#$i_time I_TIME
13592#$i_systime I_SYS_TIME
13593#$i_systimek I_SYS_TIME_KERNEL
13594#ifdef I_TIME
13595# include <time.h>
13596#endif
13597#ifdef I_SYS_TIME
13598# ifdef I_SYS_TIME_KERNEL
13599# define KERNEL
13600# endif
13601# include <sys/time.h>
13602# ifdef I_SYS_TIME_KERNEL
13603# undef KERNEL
13604# endif
13605#endif
13606#$i_sysselct I_SYS_SELECT
13607#ifdef I_SYS_SELECT
13608#include <sys/select.h>
13609#endif
13610#$d_socket HAS_SOCKET
13611#ifdef HAS_SOCKET
13612# include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13613#endif
13614#include <stdio.h>
13615$selecttype b;
13616#define S sizeof(*(b))
13617#define MINBITS 64
13618#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13619#define NBITS (NBYTES * 8)
13620int main() {
13621 char s[NBYTES];
13622 struct timeval t;
13623 int i;
13624 FILE* fp;
13625 int fd;
13626
13627 fclose(stdin);
13628 fp = fopen("try.c", "r");
13629 if (fp == 0)
13630 exit(1);
13631 fd = fileno(fp);
13632 if (fd < 0)
13633 exit(2);
13634 b = ($selecttype)s;
13635 for (i = 0; i < NBITS; i++)
13636 FD_SET(i, b);
13637 t.tv_sec = 0;
13638 t.tv_usec = 0;
13639 select(fd + 1, b, 0, 0, &t);
13640 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13641 printf("%d\n", i + 1);
13642 return 0;
13643}
13644EOCP
13645 set try
13646 if eval $compile_ok; then
13647 selectminbits=`./try`
13648 case "$selectminbits" in
13649 '') cat >&4 <<EOM
13650Cannot figure out on how many bits at a time your select() operates.
13651I'll play safe and guess it is 32 bits.
13652EOM
13653 selectminbits=32
13654 bits="32 bits"
13655 ;;
13656 1) bits="1 bit" ;;
13657 *) bits="$selectminbits bits" ;;
13658 esac
13659 echo "Your select() operates on $bits at a time." >&4
13660 else
13661 rp='What is the minimum number of bits your select() operates on?'
13662 case "$byteorder" in
13663 1234|12345678) dflt=32 ;;
13664 *) dflt=1 ;;
13665 esac
13666 . ./myread
13667 val=$ans
13668 selectminbits="$val"
13669 fi
13670 $rm -f try.* try
13671 ;;
13672 *) : no select, so pick a harmless default
13673 selectminbits='32'
13674 ;;
13675 esac
13676 ;;
13677esac
13678
13679: Trace out the files included by signal.h, then look for SIGxxx names.
13680: Remove SIGARRAYSIZE used by HPUX.
13681: Remove SIGSTKSIZE used by Linux.
13682: Remove SIGSTKSZ used by Posix.
13683: Remove SIGTYP void lines used by OS2.
13684: Some cpps, like os390, dont give the file name anywhere
13685if [ "X$fieldn" = X ]; then
13686 : Just make some guesses. We check them later.
13687 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13688else
13689 xxx=`echo '#include <signal.h>' |
13690 $cppstdin $cppminus $cppflags 2>/dev/null |
13691 $grep '^[ ]*#.*include' |
13692 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13693fi
13694: Check this list of files to be sure we have parsed the cpp output ok.
13695: This will also avoid potentially non-existent files, such
13696: as ../foo/bar.h
13697xxxfiles=''
13698for xx in $xxx /dev/null ; do
13699 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13700done
13701: If we have found no files, at least try signal.h
13702case "$xxxfiles" in
13703'') xxxfiles=`./findhdr signal.h` ;;
13704esac
13705xxx=`awk '
13706$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13707 print substr($2, 4, 20)
13708}
13709$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13710 print substr($3, 4, 20)
13711}' $xxxfiles`
13712: Append some common names just in case the awk scan failed.
13713xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13714xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13715xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13716xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13717xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13718
13719: generate a few handy files for later
13720$cat > signal.c <<'EOCP'
13721#include <sys/types.h>
13722#include <signal.h>
13723#include <stdio.h>
13724int main() {
13725
13726/* Strange style to avoid deeply-nested #if/#else/#endif */
13727#ifndef NSIG
13728# ifdef _NSIG
13729# define NSIG (_NSIG)
13730# endif
13731#endif
13732
13733#ifndef NSIG
13734# ifdef SIGMAX
13735# define NSIG (SIGMAX+1)
13736# endif
13737#endif
13738
13739#ifndef NSIG
13740# ifdef SIG_MAX
13741# define NSIG (SIG_MAX+1)
13742# endif
13743#endif
13744
13745#ifndef NSIG
13746# ifdef MAXSIG
13747# define NSIG (MAXSIG+1)
13748# endif
13749#endif
13750
13751#ifndef NSIG
13752# ifdef MAX_SIG
13753# define NSIG (MAX_SIG+1)
13754# endif
13755#endif
13756
13757#ifndef NSIG
13758# ifdef SIGARRAYSIZE
13759# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13760# endif
13761#endif
13762
13763#ifndef NSIG
13764# ifdef _sys_nsig
13765# define NSIG (_sys_nsig) /* Solaris 2.5 */
13766# endif
13767#endif
13768
13769/* Default to some arbitrary number that's big enough to get most
13770 of the common signals.
13771*/
13772#ifndef NSIG
13773# define NSIG 50
13774#endif
13775
13776printf("NSIG %d\n", NSIG);
13777
13778#ifndef JUST_NSIG
13779
13780EOCP
13781
13782echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13783{
13784 printf "#ifdef SIG"; printf $1; printf "\n"
13785 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13786 printf $1; printf ");\n"
13787 printf "#endif\n"
13788}
13789END {
13790 printf "#endif /* JUST_NSIG */\n";
13791 printf "exit(0);\n}\n";
13792}
13793' >>signal.c
13794$cat >signal.awk <<'EOP'
13795BEGIN { ndups = 0 }
13796$1 ~ /^NSIG$/ { nsig = $2 }
13797($1 !~ /^NSIG$/) && (NF == 2) {
13798 if ($2 > maxsig) { maxsig = $2 }
13799 if (sig_name[$2]) {
13800 dup_name[ndups] = $1
13801 dup_num[ndups] = $2
13802 ndups++
13803 }
13804 else {
13805 sig_name[$2] = $1
13806 sig_num[$2] = $2
13807 }
13808}
13809END {
13810 if (nsig == 0) {
13811 nsig = maxsig + 1
13812 }
13813 printf("NSIG %d\n", nsig);
13814 for (n = 1; n < nsig; n++) {
13815 if (sig_name[n]) {
13816 printf("%s %d\n", sig_name[n], sig_num[n])
13817 }
13818 else {
13819 printf("NUM%d %d\n", n, n)
13820 }
13821 }
13822 for (n = 0; n < ndups; n++) {
13823 printf("%s %d\n", dup_name[n], dup_num[n])
13824 }
13825}
13826EOP
13827$cat >signal_cmd <<EOS
13828$startsh
13829if $test -s signal.lst; then
13830 echo "Using your existing signal.lst file"
13831 exit 0
13832fi
13833xxx="$xxx"
13834EOS
13835$cat >>signal_cmd <<'EOS'
13836
13837set signal
13838if eval $compile_ok; then
13839 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13840else
13841 echo "(I can't seem be able to compile the whole test program)" >&4
13842 echo "(I'll try it in little pieces.)" >&4
13843 set signal -DJUST_NSIG
13844 if eval $compile_ok; then
13845 ./signal$_exe > signal.nsg
13846 $cat signal.nsg
13847 else
13848 echo "I can't seem to figure out how many signals you have." >&4
13849 echo "Guessing 50." >&4
13850 echo 'NSIG 50' > signal.nsg
13851 fi
13852 : Now look at all the signal names, one at a time.
13853 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13854 $cat > signal.c <<EOCP
13855#include <sys/types.h>
13856#include <signal.h>
13857#include <stdio.h>
13858int main() {
13859printf("$xx %d\n", SIG${xx});
13860return 0;
13861}
13862EOCP
13863 set signal
13864 if eval $compile; then
13865 echo "SIG${xx} found."
13866 ./signal$_exe >> signal.ls1
13867 else
13868 echo "SIG${xx} NOT found."
13869 fi
13870 done
13871 if $test -s signal.ls1; then
13872 $cat signal.nsg signal.ls1 |
13873 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13874 fi
13875
13876fi
13877if $test -s signal.lst; then
13878 :
13879else
13880 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13881 echo 'kill -l' >signal
13882 set X `csh -f <signal`
13883 $rm -f signal
13884 shift
13885 case $# in
13886 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13887 esac
13888 echo $@ | $tr ' ' $trnl | \
13889 $awk '{ printf "%s %d\n", $1, ++s; }
13890 END { printf "NSIG %d\n", ++s }' >signal.lst
13891fi
13892$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13893EOS
13894chmod a+x signal_cmd
13895$eunicefix signal_cmd
13896
13897: generate list of signal names
13898echo " "
13899case "$sig_name_init" in
13900'') doinit=yes ;;
13901*) case "$sig_num_init" in
13902 ''|*,*) doinit=yes ;;
13903 esac ;;
13904esac
13905case "$doinit" in
13906yes)
13907 echo "Generating a list of signal names and numbers..." >&4
13908 . ./signal_cmd
13909 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13910 sig_name=`$awk 'BEGIN { printf "ZERO " }
13911 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13912 sig_num=`$awk 'BEGIN { printf "0 " }
13913 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13914 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13915 !/^NSIG/ { printf "\"%s\", ", $1 }
13916 END { printf "0\n" }' signal.lst`
13917 sig_num_init=`$awk 'BEGIN { printf "0, " }
13918 !/^NSIG/ { printf "%d, ", $2}
13919 END { printf "0\n"}' signal.lst`
13920 ;;
13921esac
13922echo "The following $sig_count signals are available:"
13923echo " "
13924echo $sig_name | $awk \
13925'BEGIN { linelen = 0 }
13926{
13927 for (i = 1; i <= NF; i++) {
13928 name = "SIG" $i " "
13929 linelen = linelen + length(name)
13930 if (linelen > 70) {
13931 printf "\n"
13932 linelen = length(name)
13933 }
13934 printf "%s", name
13935 }
13936 printf "\n"
13937}'
13938$rm -f signal signal.c signal.awk signal.lst signal_cmd
13939
13940echo " "
13941case "$sizetype" in
13942*_t) zzz="$sizetype" ;;
13943*) zzz="filesize" ;;
13944esac
13945echo "Checking the size of $zzz..." >&4
13946cat > try.c <<EOCP
13947#include <sys/types.h>
13948#include <stdio.h>
13949int main() {
13950 printf("%d\n", (int)sizeof($sizetype));
13951 exit(0);
13952}
13953EOCP
13954set try
13955if eval $compile_ok; then
13956 yyy=`./try`
13957 case "$yyy" in
13958 '') sizesize=4
13959 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13960 ;;
13961 *) sizesize=$yyy
13962 echo "Your $zzz size is $sizesize bytes."
13963 ;;
13964 esac
13965else
13966 sizesize=4
13967 echo "(I can't compile the test program--guessing $sizesize.)" >&4
13968fi
13969
13970
13971: check for socklen_t
13972echo " "
13973echo "Checking to see if you have socklen_t..." >&4
13974$cat >try.c <<EOCP
13975#include <sys/types.h>
13976#$d_socket HAS_SOCKET
13977#ifdef HAS_SOCKET
13978#include <sys/socket.h>
13979#endif
13980int main() { socklen_t x = 16; }
13981EOCP
13982set try
13983if eval $compile; then
13984 val="$define"
13985 echo "You have socklen_t."
13986else
13987 val="$undef"
13988 echo "You do not have socklen_t."
13989 case "$sizetype" in
13990 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13991 esac
13992fi
13993$rm -f try try.*
13994set d_socklen_t
13995eval $setvar
13996
13997: check for type of the size argument to socket calls
13998case "$d_socket" in
13999"$define")
14000 $cat <<EOM
14001
14002Checking to see what type is the last argument of accept().
14003EOM
14004 hdrs="$define sys/types.h $d_socket sys/socket.h"
14005 yyy=''
14006 case "$d_socklen_t" in
14007 "$define") yyy="$yyy socklen_t"
14008 esac
14009 yyy="$yyy $sizetype int long unsigned"
14010 for xxx in $yyy; do
14011 case "$socksizetype" in
14012 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14013 if ./protochk "$try" $hdrs; then
14014 echo "Your system accepts '$xxx *' for the last argument of accept()."
14015 socksizetype="$xxx"
14016 fi
14017 ;;
14018 esac
14019 done
14020: In case none of those worked, prompt the user.
14021 case "$socksizetype" in
14022 '') rp='What is the type for socket address structure sizes?'
14023 dflt='int'
14024 . ./myread
14025 socksizetype=$ans
14026 ;;
14027 esac
14028 ;;
14029*) : no sockets, so pick relatively harmless default
14030 socksizetype='int'
14031 ;;
14032esac
14033
14034: see what type is used for signed size_t
14035set ssize_t ssizetype int stdio.h sys/types.h
14036eval $typedef
14037dflt="$ssizetype"
14038$cat > ssize.c <<EOM
14039#include <stdio.h>
14040#include <sys/types.h>
14041#define Size_t $sizetype
14042#define SSize_t $dflt
14043int main()
14044{
14045 if (sizeof(Size_t) == sizeof(SSize_t))
14046 printf("$dflt\n");
14047 else if (sizeof(Size_t) == sizeof(int))
14048 printf("int\n");
14049 else
14050 printf("long\n");
14051 exit(0);
14052}
14053EOM
14054echo " "
14055set ssize
14056if eval $compile_ok && ./ssize > /dev/null; then
14057 ssizetype=`./ssize`
14058 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14059else
14060 $cat >&4 <<EOM
14061Help! I can't compile and run the ssize_t test program: please enlighten me!
14062(This is probably a misconfiguration in your system or libraries, and
14063you really ought to fix it. Still, I'll try anyway.)
14064
14065I need a type that is the same size as $sizetype, but is guaranteed to
14066be signed. Common values are ssize_t, int and long.
14067
14068EOM
14069 rp="What signed type is the same size as $sizetype?"
14070 . ./myread
14071 ssizetype="$ans"
14072fi
14073$rm -f ssize ssize.*
14074
14075: see what type of char stdio uses.
14076echo " "
14077if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14078 echo "Your stdio uses unsigned chars." >&4
14079 stdchar="unsigned char"
14080else
14081 echo "Your stdio uses signed chars." >&4
14082 stdchar="char"
14083fi
14084
14085: see if time exists
14086echo " "
14087if test "X$d_time" = X -o X"$timetype" = X; then
14088 if set time val -f d_time; eval $csym; $val; then
14089 echo 'time() found.' >&4
14090 val="$define"
14091 rp="What is the type returned by time() on this system?"
14092 set time_t timetype long stdio.h sys/types.h
14093 eval $typedef_ask
14094 else
14095 echo 'time() not found, hope that will do.' >&4
14096 val="$undef"
14097 timetype='int';
14098 fi
14099 set d_time
14100 eval $setvar
14101fi
14102
14103: see what type uids are declared as in the kernel
14104echo " "
14105echo "Looking for the type for user ids returned by getuid()."
14106set uid_t uidtype xxx stdio.h sys/types.h
14107eval $typedef
14108case "$uidtype" in
14109xxx)
14110 xxx=`./findhdr sys/user.h`
14111 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14112 case $1 in
14113 unsigned) dflt="$1 $2" ;;
14114 *) dflt="$1" ;;
14115 esac
14116 ;;
14117*) dflt="$uidtype";;
14118esac
14119case "$uidtype" in
14120uid_t) echo "uid_t found." ;;
14121*) rp="What is the type for user ids returned by getuid()?"
14122 . ./myread
14123 uidtype="$ans"
14124 ;;
14125esac
14126
14127echo " "
14128case "$uidtype" in
14129*_t) zzz="$uidtype" ;;
14130*) zzz="uid" ;;
14131esac
14132echo "Checking the size of $zzz..." >&4
14133cat > try.c <<EOCP
14134#include <sys/types.h>
14135#include <stdio.h>
14136int main() {
14137 printf("%d\n", (int)sizeof($uidtype));
14138 exit(0);
14139}
14140EOCP
14141set try
14142if eval $compile_ok; then
14143 yyy=`./try`
14144 case "$yyy" in
14145 '') uidsize=4
14146 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14147 ;;
14148 *) uidsize=$yyy
14149 echo "Your $zzz is $uidsize bytes long."
14150 ;;
14151 esac
14152else
14153 uidsize=4
14154 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14155fi
14156
14157echo " "
14158case "$uidtype" in
14159*_t) zzz="$uidtype" ;;
14160*) zzz="uid" ;;
14161esac
14162echo "Checking the sign of $zzz..." >&4
14163cat > try.c <<EOCP
14164#include <sys/types.h>
14165#include <stdio.h>
14166int main() {
14167 $uidtype foo = -1;
14168 if (foo < 0)
14169 printf("-1\n");
14170 else
14171 printf("1\n");
14172}
14173EOCP
14174set try
14175if eval $compile; then
14176 yyy=`./try`
14177 case "$yyy" in
14178 '') uidsign=1
14179 echo "(I can't execute the test program--guessing unsigned.)" >&4
14180 ;;
14181 *) uidsign=$yyy
14182 case "$uidsign" in
14183 1) echo "Your $zzz is unsigned." ;;
14184 -1) echo "Your $zzz is signed." ;;
14185 esac
14186 ;;
14187 esac
14188else
14189 uidsign=1
14190 echo "(I can't compile the test program--guessing unsigned.)" >&4
14191fi
14192
14193
14194
14195echo " "
14196$echo "Checking the format string to be used for uids..." >&4
14197
14198case "$uidsign" in
14199-1) if $test X"$uidsize" = X"$ivsize"; then
14200 uidformat="$ivdformat"
14201 else
14202 if $test X"$uidsize" = X"$longsize"; then
14203 uidformat='"ld"'
14204 else
14205 if $test X"$uidsize" = X"$intsize"; then
14206 uidformat='"d"'
14207 else
14208 if $test X"$uidsize" = X"$shortsize"; then
14209 uidformat='"hd"'
14210 fi
14211 fi
14212 fi
14213 fi
14214 ;;
14215*) if $test X"$uidsize" = X"$uvsize"; then
14216 uidformat="$uvuformat"
14217 else
14218 if $test X"$uidsize" = X"$longsize"; then
14219 uidformat='"lu"'
14220 else
14221 if $test X"$uidsize" = X"$intsize"; then
14222 uidformat='"u"'
14223 else
14224 if $test X"$uidsize" = X"$shortsize"; then
14225 uidformat='"hu"'
14226 fi
14227 fi
14228 fi
14229 fi
14230 ;;
14231esac
14232
14233: see if dbm.h is available
14234: see if dbmclose exists
14235set dbmclose d_dbmclose
14236eval $inlibc
14237
14238case "$d_dbmclose" in
14239$define)
14240 set dbm.h i_dbm
14241 eval $inhdr
14242 case "$i_dbm" in
14243 $define)
14244 val="$undef"
14245 set i_rpcsvcdbm
14246 eval $setvar
14247 ;;
14248 *) set rpcsvc/dbm.h i_rpcsvcdbm
14249 eval $inhdr
14250 ;;
14251 esac
14252 ;;
14253*) echo "We won't be including <dbm.h>"
14254 val="$undef"
14255 set i_dbm
14256 eval $setvar
14257 val="$undef"
14258 set i_rpcsvcdbm
14259 eval $setvar
14260 ;;
14261esac
14262
14263: see if this is a sys/file.h system
14264val=''
14265set sys/file.h val
14266eval $inhdr
14267
14268: do we need to include sys/file.h ?
14269case "$val" in
14270"$define")
14271 echo " "
14272 if $h_sysfile; then
14273 val="$define"
14274 echo "We'll be including <sys/file.h>." >&4
14275 else
14276 val="$undef"
14277 echo "We won't be including <sys/file.h>." >&4
14278 fi
14279 ;;
14280*)
14281 h_sysfile=false
14282 ;;
14283esac
14284set i_sysfile
14285eval $setvar
14286
14287: see if fcntl.h is there
14288val=''
14289set fcntl.h val
14290eval $inhdr
14291
14292: see if we can include fcntl.h
14293case "$val" in
14294"$define")
14295 echo " "
14296 if $h_fcntl; then
14297 val="$define"
14298 echo "We'll be including <fcntl.h>." >&4
14299 else
14300 val="$undef"
14301 if $h_sysfile; then
14302 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14303 else
14304 echo "We won't be including <fcntl.h>." >&4
14305 fi
14306 fi
14307 ;;
14308*)
14309 h_fcntl=false
14310 val="$undef"
14311 ;;
14312esac
14313set i_fcntl
14314eval $setvar
14315
14316: see if this is a iconv.h system
14317set iconv.h i_iconv
14318eval $inhdr
14319
14320: see if this is a ieeefp.h system
14321set ieeefp.h i_ieeefp
14322eval $inhdr
14323
14324: see if this is a libutil.h system
14325set libutil.h i_libutil
14326eval $inhdr
14327
14328: see if locale.h is available
14329set locale.h i_locale
14330eval $inhdr
14331
14332: see if mach cthreads are available
14333if test "X$usethreads" = "X$define"; then
14334 set mach/cthreads.h i_machcthr
14335 eval $inhdr
14336else
14337 i_machcthr="$undef"
14338fi
14339
14340
14341
14342: see if this is a math.h system
14343set math.h i_math
14344eval $inhdr
14345
14346: see if this is a mntent.h system
14347set mntent.h i_mntent
14348eval $inhdr
14349
14350: see if ndbm.h is available
14351set ndbm.h t_ndbm
14352eval $inhdr
14353case "$t_ndbm" in
14354$define)
14355 : see if dbm_open exists
14356 set dbm_open d_dbm_open
14357 eval $inlibc
14358 case "$d_dbm_open" in
14359 $undef)
14360 t_ndbm="$undef"
14361 echo "We won't be including <ndbm.h>"
14362 ;;
14363 esac
14364 ;;
14365esac
14366val="$t_ndbm"
14367set i_ndbm
14368eval $setvar
14369
14370: see if net/errno.h is available
14371val=''
14372set net/errno.h val
14373eval $inhdr
14374
14375: Unfortunately, it causes problems on some systems. Arrgh.
14376case "$val" in
14377$define)
14378 cat > try.c <<'EOM'
14379#include <stdio.h>
14380#include <errno.h>
14381#include <net/errno.h>
14382int func()
14383{
14384 return ENOTSOCK;
14385}
14386EOM
14387 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14388 echo "We'll be including <net/errno.h>." >&4
14389 else
14390 echo "We won't be including <net/errno.h>." >&4
14391 val="$undef"
14392 fi
14393 $rm -f try.* try
14394 ;;
14395esac
14396set i_neterrno
14397eval $setvar
14398
14399: see if netinet/tcp.h is available
14400set netinet/tcp.h i_netinettcp
14401eval $inhdr
14402
14403: see if this is a poll.h system
14404set poll.h i_poll
14405eval $inhdr
14406
14407: see if this is a prot.h system
14408set prot.h i_prot
14409eval $inhdr
14410
14411echo " "
14412$echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14413$cat <<'EOSH' > Cppsym.know
14414a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14415AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14416alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14417ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14418BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14419BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14420bull c cadmus clipper CMU COFF COMPILER_VERSION
14421concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14422CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14423Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14424FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14425GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14426H3050R H3050RX hbullx20 hcx host_mips
14427hp200 hp300 hp700 HP700 hp800 hp9000
14428hp9000s200 hp9000s300 hp9000s400 hp9000s500
14429hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14430i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14431iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14432INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14433LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14434LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14435Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14436LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14437M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14438M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14439M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14440MATH_HAS_NO_SIDE_EFFECTS
14441mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14442mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14443mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14444MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14445mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14446NetBSD news1500 news1700 news1800 news1900 news3700
14447news700 news800 news900 NeXT NLS ns16000 ns32000
14448ns32016 ns32332 ns32k nsc32000
14449OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14450pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14451pc532 pdp11 PGC PIC plexus PORTAR posix
14452POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14453POSIX_C_SOURCE POSIX_SOURCE POWER
14454PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14455riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14456SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14457sony sony_news sonyrisc sparc sparclite spectrum
14458stardent stdc STDC_EXT stratos sun sun3 sun386
14459Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14460SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14461SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14462sysV68 sysV88 Tek4132 Tek4300 titan
14463tower tower32 tower32_200 tower32_600 tower32_700
14464tower32_800 tower32_850 tss
14465u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14466ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14467unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14468Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14469XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14470XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14471z8000
14472EOSH
14473# Maybe put other stuff here too.
14474cat <<EOSH >>Cppsym.know
14475$osname
14476EOSH
14477./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14478./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14479$cat Cppsym.know > Cppsym.c
14480$cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14481$rm -f Cppsym.a Cppsym.b Cppsym.c
14482cat <<EOSH > Cppsym
14483$startsh
14484if $test \$# -gt 0; then
14485 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14486 if $test -s Cppsym.got; then
14487 $rm -f Cppsym.got
14488 exit 0
14489 fi
14490 $rm -f Cppsym.got
14491 exit 1
14492else
14493 $tr " " "$trnl" | ./Cppsym.try
14494 exit 0
14495fi
14496EOSH
14497chmod +x Cppsym
14498$eunicefix Cppsym
14499cat <<EOSH > Cppsym.try
14500$startsh
14501cat <<'EOCP' > try.c
14502#include <stdio.h>
14503int main() {
14504EOCP
14505$awk \\
14506EOSH
14507cat <<'EOSH' >> Cppsym.try
14508'length($1) > 0 {
14509 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
14510 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
14511 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
14512 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
14513}' >> try.c
14514echo '}' >> try.c
14515EOSH
14516cat <<EOSH >> Cppsym.try
14517ccflags="$ccflags"
14518case "$osname-$gccversion" in
14519irix-) ccflags="\$ccflags -woff 1178" ;;
14520os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14521esac
14522$cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14523EOSH
14524chmod +x Cppsym.try
14525$eunicefix Cppsym.try
14526./Cppsym < Cppsym.know > Cppsym.true
14527: now check the C compiler for additional symbols
14528postprocess_cc_v=''
14529case "$osname" in
14530aix) postprocess_cc_v="|$tr , ' '" ;;
14531esac
14532$cat >ccsym <<EOS
14533$startsh
14534$cat >tmp.c <<EOF
14535extern int foo;
14536EOF
14537for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14538do
14539 case "\$i" in
14540 -D*) echo "\$i" | $sed 's/^-D//';;
14541 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14542 esac
14543done
14544$rm -f try.c
14545EOS
14546postprocess_cc_v=''
14547chmod +x ccsym
14548$eunicefix ccsym
14549./ccsym > ccsym1.raw
14550if $test -s ccsym1.raw; then
14551 $sort ccsym1.raw | $uniq >ccsym.raw
14552else
14553 mv ccsym1.raw ccsym.raw
14554fi
14555
14556$awk '/\=/ { print $0; next }
14557 { print $0"=1" }' ccsym.raw >ccsym.list
14558$awk '/\=/ { print $0; next }
14559 { print $0"=1" }' Cppsym.true >ccsym.true
14560$comm -13 ccsym.true ccsym.list >ccsym.own
14561$comm -12 ccsym.true ccsym.list >ccsym.com
14562$comm -23 ccsym.true ccsym.list >ccsym.cpp
14563also=''
14564if $test -z ccsym.raw; then
14565 echo "Your C compiler doesn't seem to define any symbols!" >&4
14566 echo " "
14567 echo "However, your C preprocessor defines the following symbols:"
14568 $cat Cppsym.true
14569 ccsymbols=''
14570 cppsymbols=`$cat Cppsym.true`
14571 cppsymbols=`echo $cppsymbols`
14572 cppccsymbols="$cppsymbols"
14573else
14574 if $test -s ccsym.com; then
14575 echo "Your C compiler and pre-processor define these symbols:"
14576 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14577 also='also '
14578 symbols='ones'
14579 cppccsymbols=`$cat ccsym.com`
14580 cppccsymbols=`echo $cppccsymbols`
14581 $test "$silent" || sleep 1
14582 fi
14583 if $test -s ccsym.cpp; then
14584 $test "$also" && echo " "
14585 echo "Your C pre-processor ${also}defines the following symbols:"
14586 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14587 also='further '
14588 cppsymbols=`$cat ccsym.cpp`
14589 cppsymbols=`echo $cppsymbols`
14590 $test "$silent" || sleep 1
14591 fi
14592 if $test -s ccsym.own; then
14593 $test "$also" && echo " "
14594 echo "Your C compiler ${also}defines the following cpp symbols:"
14595 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14596 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14597 ccsymbols=`$cat ccsym.own`
14598 ccsymbols=`echo $ccsymbols`
14599 $test "$silent" || sleep 1
14600 fi
14601fi
14602$rm -f ccsym* Cppsym.*
14603
14604: see if this is a termio system
14605val="$undef"
14606val2="$undef"
14607val3="$undef"
14608if $test `./findhdr termios.h`; then
14609 set tcsetattr i_termios
14610 eval $inlibc
14611 val3="$i_termios"
14612fi
14613echo " "
14614case "$val3" in
14615"$define") echo "You have POSIX termios.h... good!" >&4;;
14616*) if ./Cppsym pyr; then
14617 case "`/bin/universe`" in
14618 ucb) if $test `./findhdr sgtty.h`; then
14619 val2="$define"
14620 echo "<sgtty.h> found." >&4
14621 else
14622 echo "System is pyramid with BSD universe."
14623 echo "<sgtty.h> not found--you could have problems." >&4
14624 fi;;
14625 *) if $test `./findhdr termio.h`; then
14626 val="$define"
14627 echo "<termio.h> found." >&4
14628 else
14629 echo "System is pyramid with USG universe."
14630 echo "<termio.h> not found--you could have problems." >&4
14631 fi;;
14632 esac
14633 elif ./usg; then
14634 if $test `./findhdr termio.h`; then
14635 echo "<termio.h> found." >&4
14636 val="$define"
14637 elif $test `./findhdr sgtty.h`; then
14638 echo "<sgtty.h> found." >&4
14639 val2="$define"
14640 else
14641echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14642 fi
14643 else
14644 if $test `./findhdr sgtty.h`; then
14645 echo "<sgtty.h> found." >&4
14646 val2="$define"
14647 elif $test `./findhdr termio.h`; then
14648 echo "<termio.h> found." >&4
14649 val="$define"
14650 else
14651echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14652 fi
14653 fi;;
14654esac
14655set i_termio; eval $setvar
14656val=$val2; set i_sgtty; eval $setvar
14657val=$val3; set i_termios; eval $setvar
14658
14659: see if this is a shadow.h system
14660set shadow.h i_shadow
14661eval $inhdr
14662
14663: see if this is a socks.h system
14664set socks.h i_socks
14665eval $inhdr
14666
14667: see if stdarg is available
14668echo " "
14669if $test `./findhdr stdarg.h`; then
14670 echo "<stdarg.h> found." >&4
14671 valstd="$define"
14672else
14673 echo "<stdarg.h> NOT found." >&4
14674 valstd="$undef"
14675fi
14676
14677: see if varags is available
14678echo " "
14679if $test `./findhdr varargs.h`; then
14680 echo "<varargs.h> found." >&4
14681else
14682 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14683fi
14684
14685: set up the varargs testing programs
14686$cat > varargs.c <<EOP
14687#ifdef I_STDARG
14688#include <stdarg.h>
14689#endif
14690#ifdef I_VARARGS
14691#include <varargs.h>
14692#endif
14693
14694#ifdef I_STDARG
14695int f(char *p, ...)
14696#else
14697int f(va_alist)
14698va_dcl
14699#endif
14700{
14701 va_list ap;
14702#ifndef I_STDARG
14703 char *p;
14704#endif
14705#ifdef I_STDARG
14706 va_start(ap,p);
14707#else
14708 va_start(ap);
14709 p = va_arg(ap, char *);
14710#endif
14711 va_end(ap);
14712}
14713EOP
14714$cat > varargs <<EOP
14715$startsh
14716if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14717 echo "true"
14718else
14719 echo "false"
14720fi
14721$rm -f varargs$_o
14722EOP
14723chmod +x varargs
14724
14725: now check which varargs header should be included
14726echo " "
14727i_varhdr=''
14728case "$valstd" in
14729"$define")
14730 if `./varargs I_STDARG`; then
14731 val='stdarg.h'
14732 elif `./varargs I_VARARGS`; then
14733 val='varargs.h'
14734 fi
14735 ;;
14736*)
14737 if `./varargs I_VARARGS`; then
14738 val='varargs.h'
14739 fi
14740 ;;
14741esac
14742case "$val" in
14743'')
14744echo "I could not find the definition for va_dcl... You have problems..." >&4
14745 val="$undef"; set i_stdarg; eval $setvar
14746 val="$undef"; set i_varargs; eval $setvar
14747 ;;
14748*)
14749 set i_varhdr
14750 eval $setvar
14751 case "$i_varhdr" in
14752 stdarg.h)
14753 val="$define"; set i_stdarg; eval $setvar
14754 val="$undef"; set i_varargs; eval $setvar
14755 ;;
14756 varargs.h)
14757 val="$undef"; set i_stdarg; eval $setvar
14758 val="$define"; set i_varargs; eval $setvar
14759 ;;
14760 esac
14761 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14762esac
14763$rm -f varargs*
5f80c64f 14764
b4eb6b3d
JH
14765: see if stddef is available
14766set stddef.h i_stddef
14767eval $inhdr
923fc586 14768
b4eb6b3d
JH
14769: see if this is a sunmath.h system
14770set sunmath.h i_sunmath
14771eval $inhdr
5f80c64f 14772
b4eb6b3d
JH
14773: see if sys/access.h is available
14774set sys/access.h i_sysaccess
14775eval $inhdr
14776
14777: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14778set sys/filio.h i_sysfilio
14779eval $inhdr
14780echo " "
14781if $test `./findhdr sys/ioctl.h`; then
14782 val="$define"
14783 echo '<sys/ioctl.h> found.' >&4
14784else
14785 val="$undef"
14786 if $test $i_sysfilio = "$define"; then
14787 echo '<sys/ioctl.h> NOT found.' >&4
5f80c64f 14788 else
b4eb6b3d
JH
14789 $test $i_sgtty = "$define" && xxx="sgtty.h"
14790 $test $i_termio = "$define" && xxx="termio.h"
14791 $test $i_termios = "$define" && xxx="termios.h"
14792echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14793 fi
14794fi
14795set i_sysioctl
14796eval $setvar
14797
14798
14799: see if this is a syslog.h system
14800set syslog.h i_syslog
14801eval $inhdr
14802
14803
14804: see if this is a sys/mode.h system
14805set sys/mode.h i_sysmode
14806eval $inhdr
14807
14808: see if sys/resource.h has to be included
14809set sys/resource.h i_sysresrc
14810eval $inhdr
14811
14812: see if sys/security.h is available
14813set sys/security.h i_syssecrt
14814eval $inhdr
14815
14816: see if this is a sys/statvfs.h system
14817set sys/statvfs.h i_sysstatvfs
14818eval $inhdr
14819
14820: see if this is a sys/uio.h system
14821set sys/uio.h i_sysuio
14822eval $inhdr
14823
14824: see if this is a sys/un.h system
14825set sys/un.h i_sysun
14826eval $inhdr
14827
14828
14829: see if this is a sys/utsname.h system
14830set sys/utsname.h i_sysutsname
14831eval $inhdr
14832
14833: see if this is a syswait system
14834set sys/wait.h i_syswait
14835eval $inhdr
14836
14837: see if this is a ustat.h system
14838set ustat.h i_ustat
14839eval $inhdr
14840
14841: see if this is an utime system
14842set utime.h i_utime
14843eval $inhdr
14844
14845: see if this is a values.h system
14846set values.h i_values
14847eval $inhdr
14848
14849: see if this is a vfork system
14850case "$d_vfork" in
14851"$define")
14852 set vfork.h i_vfork
14853 eval $inhdr
14854 ;;
14855*)
14856 i_vfork="$undef"
14857 ;;
14858esac
14859
14860: see if gdbm.h is available
14861set gdbm.h t_gdbm
14862eval $inhdr
14863case "$t_gdbm" in
14864$define)
14865 : see if gdbm_open exists
14866 set gdbm_open d_gdbm_open
14867 eval $inlibc
14868 case "$d_gdbm_open" in
14869 $undef)
14870 t_gdbm="$undef"
14871 echo "We won't be including <gdbm.h>"
5f80c64f 14872 ;;
b4eb6b3d
JH
14873 esac
14874 ;;
14875esac
14876val="$t_gdbm"
14877set i_gdbm
14878eval $setvar
14879
14880echo " "
14881echo "Looking for extensions..." >&4
14882: If we are using the old config.sh, known_extensions may contain
14883: old or inaccurate or duplicate values.
14884known_extensions=''
14885nonxs_extensions=''
14886: We do not use find because it might not be available.
14887: We do not just use MANIFEST because the user may have dropped
14888: some additional extensions into the source tree and expect them
14889: to be built.
14890
14891: Function to recursively find available extensions, ignoring DynaLoader
14892: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14893find_extensions='
14894 for xxx in *; do
14895 case "$xxx" in
14896 DynaLoader|dynaload) ;;
14897 *)
14898 if $test -f $xxx/$xxx.xs; then
14899 known_extensions="$known_extensions $1$xxx";
14900 elif $test -f $xxx/Makefile.PL; then
14901 nonxs_extensions="$nonxs_extensions $1$xxx";
14902 else
14903 if $test -d $xxx -a $# -lt 10; then
14904 set $1$xxx/ $*;
14905 cd $xxx;
14906 eval $find_extensions;
14907 cd ..;
14908 shift;
14909 fi;
14910 fi
14911 ;;
14912 esac;
14913 done'
14914tdir=`pwd`
14915cd $rsrc/ext
14916set X
14917shift
14918eval $find_extensions
14919set X $nonxs_extensions
14920shift
14921nonxs_extensions="$*"
14922set X $known_extensions
14923shift
14924known_extensions="$*"
14925cd $tdir
14926
14927: Now see which are supported on this system.
14928avail_ext=''
14929for xxx in $known_extensions ; do
14930 case "$xxx" in
14931 DB_File|db_file)
14932 case "$i_db" in
14933 $define) avail_ext="$avail_ext $xxx" ;;
14934 esac
14935 ;;
14936 GDBM_File|gdbm_fil)
14937 case "$i_gdbm" in
14938 $define) avail_ext="$avail_ext $xxx" ;;
14939 esac
14940 ;;
14941 NDBM_File|ndbm_fil)
14942 case "$i_ndbm" in
14943 $define)
14944 case "$osname-$use64bitint" in
14945 hpux-define)
14946 case "$libs" in
14947 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14948 esac
14949 ;;
14950 *) avail_ext="$avail_ext $xxx" ;;
14951 esac
14952 ;;
14953 esac
14954 ;;
14955 ODBM_File|odbm_fil)
14956 case "${i_dbm}${i_rpcsvcdbm}" in
14957 *"${define}"*)
14958 case "$osname-$use64bitint" in
14959 hpux-define)
14960 case "$libs" in
14961 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14962 esac
14963 ;;
14964 *) avail_ext="$avail_ext $xxx" ;;
14965 esac
14966 ;;
14967 esac
14968 ;;
14969 POSIX|posix)
14970 case "$useposix" in
14971 true|define|y) avail_ext="$avail_ext $xxx" ;;
14972 esac
14973 ;;
14974 Opcode|opcode)
14975 case "$useopcode" in
14976 true|define|y) avail_ext="$avail_ext $xxx" ;;
14977 esac
14978 ;;
14979 Socket|socket)
14980 case "$d_socket" in
14981 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14982 esac
14983 ;;
14984 Sys/Syslog|sys/syslog)
14985 : XXX syslog requires socket
14986 case "$d_socket" in
14987 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14988 esac
14989 ;;
14990 Thread|thread)
14991 case "$usethreads" in
14992 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14993 esac
14994 ;;
14995 IPC/SysV|ipc/sysv)
14996 : XXX Do we need a useipcsysv variable here
14997 case "${d_msg}${d_sem}${d_shm}" in
14998 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14999 esac
15000 ;;
15001 *) avail_ext="$avail_ext $xxx"
5f80c64f
JH
15002 ;;
15003 esac
b4eb6b3d 15004done
5f80c64f 15005
b4eb6b3d
JH
15006set X $avail_ext
15007shift
15008avail_ext="$*"
5f80c64f 15009
b4eb6b3d
JH
15010: Now see which nonxs extensions are supported on this system.
15011: For now assume all are.
15012nonxs_ext=''
15013for xxx in $nonxs_extensions ; do
15014 case "$xxx" in
15015 *) nonxs_ext="$nonxs_ext $xxx"
15016 ;;
15017 esac
15018done
5f80c64f 15019
b4eb6b3d
JH
15020set X $nonxs_ext
15021shift
15022nonxs_ext="$*"
15023
15024case $usedl in
15025$define)
15026 $cat <<EOM
15027A number of extensions are supplied with $package. You may choose to
15028compile these extensions for dynamic loading (the default), compile
15029them into the $package executable (static loading), or not include
15030them at all. Answer "none" to include no extensions.
15031Note that DynaLoader is always built and need not be mentioned here.
5f80c64f
JH
15032
15033EOM
b4eb6b3d
JH
15034 case "$dynamic_ext" in
15035 '') dflt="$avail_ext" ;;
15036 *) dflt="$dynamic_ext"
15037 # Perhaps we are reusing an old out-of-date config.sh.
15038 case "$hint" in
15039 previous)
15040 if test X"$dynamic_ext" != X"$avail_ext"; then
15041 $cat <<EOM
15042NOTICE: Your previous config.sh list may be incorrect.
15043The extensions now available to you are
15044 ${avail_ext}
15045but the default list from your previous config.sh is
15046 ${dynamic_ext}
9c839522 15047
b4eb6b3d
JH
15048EOM
15049 fi
9c839522
PM
15050 ;;
15051 esac
b4eb6b3d
JH
15052 ;;
15053 esac
5f80c64f 15054 case "$dflt" in
b4eb6b3d
JH
15055 '') dflt=none;;
15056 esac
15057 rp="What extensions do you wish to load dynamically?"
15058 . ./myread
15059 case "$ans" in
15060 none) dynamic_ext=' ' ;;
15061 *) dynamic_ext="$ans" ;;
5f80c64f 15062 esac
5f80c64f 15063
b4eb6b3d
JH
15064 case "$static_ext" in
15065 '')
15066 : Exclude those already listed in dynamic linking
15067 dflt=''
15068 for xxx in $avail_ext; do
15069 case " $dynamic_ext " in
15070 *" $xxx "*) ;;
15071 *) dflt="$dflt $xxx" ;;
15072 esac
15073 done
15074 set X $dflt
15075 shift
15076 dflt="$*"
15077 ;;
15078 *) dflt="$static_ext"
15079 ;;
15080 esac
9c839522 15081
b4eb6b3d
JH
15082 case "$dflt" in
15083 '') dflt=none;;
15084 esac
15085 rp="What extensions do you wish to load statically?"
15086 . ./myread
15087 case "$ans" in
15088 none) static_ext=' ' ;;
15089 *) static_ext="$ans" ;;
15090 esac
15091 ;;
15092*)
15093 $cat <<EOM
15094A number of extensions are supplied with $package. Answer "none"
15095to include no extensions.
15096Note that DynaLoader is always built and need not be mentioned here.
9c839522 15097
b4eb6b3d
JH
15098EOM
15099 case "$static_ext" in
15100 '') dflt="$avail_ext" ;;
15101 *) dflt="$static_ext"
15102 # Perhaps we are reusing an old out-of-date config.sh.
15103 case "$hint" in
15104 previous)
15105 if test X"$static_ext" != X"$avail_ext"; then
15106 $cat <<EOM
15107NOTICE: Your previous config.sh list may be incorrect.
15108The extensions now available to you are
15109 ${avail_ext}
15110but the default list from your previous config.sh is
15111 ${static_ext}
5f80c64f
JH
15112
15113EOM
b4eb6b3d
JH
15114 fi
15115 ;;
15116 esac
15117 ;;
15118 esac
15119 : Exclude those that are not xs extensions
15120 case "$dflt" in
15121 '') dflt=none;;
15122 esac
15123 rp="What extensions do you wish to include?"
15124 . ./myread
15125 case "$ans" in
15126 none) static_ext=' ' ;;
15127 *) static_ext="$ans" ;;
15128 esac
15129 ;;
5f80c64f
JH
15130esac
15131
b4eb6b3d
JH
15132set X $dynamic_ext $static_ext $nonxs_ext
15133shift
15134extensions="$*"
15135
9c839522
PM
15136: Remove libraries needed only for extensions
15137: The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15138case "$usedl" in
15139$define|true|[yY]*)
15140 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15141 shift
15142 perllibs="$*"
15143 ;;
15144*) perllibs="$libs"
15145 ;;
15146esac
5f80c64f
JH
15147
15148: Remove build directory name from cppstdin so it can be used from
15149: either the present location or the final installed location.
15150echo " "
15151: Get out of the UU directory to get correct path name.
15152cd ..
15153case "$cppstdin" in
15154`pwd`/cppstdin)
15155 echo "Stripping down cppstdin path name"
15156 cppstdin=cppstdin
15157 ;;
15158esac
15159cd UU
15160
15161: end of configuration questions
15162echo " "
15163echo "End of configuration questions."
15164echo " "
15165
15166: back to where it started
15167if test -d ../UU; then
15168 cd ..
15169fi
15170
15171: configuration may be patched via a 'config.over' file
15172if $test -f config.over; then
15173 echo " "
15174 dflt=y
15175 rp='I see a config.over file. Do you wish to load it?'
15176 . UU/myread
15177 case "$ans" in
15178 n*) echo "OK, I'll ignore it.";;
15179 *) . ./config.over
15180 echo "Configuration override changes have been loaded."
15181 ;;
15182 esac
15183fi
15184
15185: in case they want portability, strip down executable paths
15186case "$d_portable" in
15187"$define")
15188 echo " "
15189 echo "Stripping down executable paths..." >&4
15190 for file in $loclist $trylist; do
534ac15a
JH
15191 eval temp=\$$file
15192 eval $file=`basename $temp`
5f80c64f
JH
15193 done
15194 ;;
15195esac
15196
15197: create config.sh file
15198echo " "
15199echo "Creating config.sh..." >&4
15200$spitshell <<EOT >config.sh
15201$startsh
15202#
15203# This file was produced by running the Configure script. It holds all the
15204# definitions figured out by Configure. Should you modify one of these values,
15205# do not forget to propagate your changes by running "Configure -der". You may
15206# instead choose to run each of the .SH files by yourself, or "Configure -S".
15207#
15208
15209# Package name : $package
15210# Source directory : $src
15211# Configuration time: $cf_time
15212# Configured by : $cf_by
15213# Target system : $myuname
15214
15215Author='$Author'
15216Date='$Date'
15217Header='$Header'
15218Id='$Id'
15219Locker='$Locker'
15220Log='$Log'
15221Mcc='$Mcc'
15222RCSfile='$RCSfile'
15223Revision='$Revision'
15224Source='$Source'
15225State='$State'
15226_a='$_a'
15227_exe='$_exe'
15228_o='$_o'
b4eb6b3d
JH
15229afs='$afs'
15230alignbytes='$alignbytes'
15231ansi2knr='$ansi2knr'
15232aphostname='$aphostname'
15233api_revision='$api_revision'
15234api_subversion='$api_subversion'
15235api_version='$api_version'
15236api_versionstring='$api_versionstring'
5f80c64f 15237ar='$ar'
b4eb6b3d
JH
15238archlib='$archlib'
15239archlibexp='$archlibexp'
15240archname64='$archname64'
15241archname='$archname'
5f80c64f
JH
15242archobjs='$archobjs'
15243awk='$awk'
b4eb6b3d 15244baserev='$baserev'
5f80c64f 15245bash='$bash'
b4eb6b3d
JH
15246bin='$bin'
15247bincompat5005='$bincompat5005'
15248binexp='$binexp'
5f80c64f
JH
15249bison='$bison'
15250byacc='$byacc'
b4eb6b3d 15251byteorder='$byteorder'
5f80c64f 15252c='$c'
b4eb6b3d 15253castflags='$castflags'
5f80c64f
JH
15254cat='$cat'
15255cc='$cc'
15256cccdlflags='$cccdlflags'
15257ccdlflags='$ccdlflags'
15258ccflags='$ccflags'
b4eb6b3d 15259ccflags_uselargefiles='$ccflags_uselargefiles'
e723fc21 15260ccname='$ccname'
b4eb6b3d 15261ccsymbols='$ccsymbols'
6b356c8e 15262ccversion='$ccversion'
5f80c64f 15263cf_by='$cf_by'
b4eb6b3d 15264cf_email='$cf_email'
5f80c64f 15265cf_time='$cf_time'
b4eb6b3d 15266charsize='$charsize'
5f80c64f
JH
15267chgrp='$chgrp'
15268chmod='$chmod'
15269chown='$chown'
b4eb6b3d 15270clocktype='$clocktype'
5f80c64f
JH
15271comm='$comm'
15272compress='$compress'
15273contains='$contains'
15274cp='$cp'
15275cpio='$cpio'
15276cpp='$cpp'
b4eb6b3d
JH
15277cpp_stuff='$cpp_stuff'
15278cppccsymbols='$cppccsymbols'
5f80c64f
JH
15279cppflags='$cppflags'
15280cpplast='$cpplast'
15281cppminus='$cppminus'
15282cpprun='$cpprun'
15283cppstdin='$cppstdin'
b4eb6b3d
JH
15284cppsymbols='$cppsymbols'
15285crosscompile='$crosscompile'
15286cryptlib='$cryptlib'
5f80c64f 15287csh='$csh'
b4eb6b3d
JH
15288d_Gconvert='$d_Gconvert'
15289d_PRIEUldbl='$d_PRIEUldbl'
15290d_PRIFUldbl='$d_PRIFUldbl'
15291d_PRIGUldbl='$d_PRIGUldbl'
15292d_PRIXU64='$d_PRIXU64'
15293d_PRId64='$d_PRId64'
15294d_PRIeldbl='$d_PRIeldbl'
15295d_PRIfldbl='$d_PRIfldbl'
15296d_PRIgldbl='$d_PRIgldbl'
15297d_PRIi64='$d_PRIi64'
15298d_PRIo64='$d_PRIo64'
15299d_PRIu64='$d_PRIu64'
15300d_PRIx64='$d_PRIx64'
15301d_SCNfldbl='$d_SCNfldbl'
15302d_access='$d_access'
15303d_accessx='$d_accessx'
15304d_alarm='$d_alarm'
15305d_archlib='$d_archlib'
15306d_atolf='$d_atolf'
15307d_atoll='$d_atoll'
15308d_attribut='$d_attribut'
15309d_bcmp='$d_bcmp'
15310d_bcopy='$d_bcopy'
15311d_bincompat5005='$d_bincompat5005'
5f80c64f 15312d_bsd='$d_bsd'
b4eb6b3d
JH
15313d_bsdgetpgrp='$d_bsdgetpgrp'
15314d_bsdsetpgrp='$d_bsdsetpgrp'
15315d_bzero='$d_bzero'
15316d_casti32='$d_casti32'
15317d_castneg='$d_castneg'
15318d_charvspr='$d_charvspr'
15319d_chown='$d_chown'
15320d_chroot='$d_chroot'
15321d_chsize='$d_chsize'
15322d_closedir='$d_closedir'
15323d_const='$d_const'
15324d_crypt='$d_crypt'
15325d_csh='$d_csh'
15326d_cuserid='$d_cuserid'
15327d_dbl_dig='$d_dbl_dig'
15328d_difftime='$d_difftime'
15329d_dirnamlen='$d_dirnamlen'
15330d_dlerror='$d_dlerror'
5f80c64f 15331d_dlopen='$d_dlopen'
b4eb6b3d
JH
15332d_dlsymun='$d_dlsymun'
15333d_dosuid='$d_dosuid'
15334d_drand48proto='$d_drand48proto'
15335d_dup2='$d_dup2'
15336d_eaccess='$d_eaccess'
15337d_endgrent='$d_endgrent'
15338d_endhent='$d_endhent'
15339d_endnent='$d_endnent'
15340d_endpent='$d_endpent'
15341d_endpwent='$d_endpwent'
15342d_endsent='$d_endsent'
15343d_eofnblk='$d_eofnblk'
5f80c64f 15344d_eunice='$d_eunice'
b4eb6b3d
JH
15345d_fchmod='$d_fchmod'
15346d_fchown='$d_fchown'
15347d_fcntl='$d_fcntl'
15348d_fd_macros='$d_fd_macros'
15349d_fd_set='$d_fd_set'
15350d_fds_bits='$d_fds_bits'
15351d_fgetpos='$d_fgetpos'
15352d_flexfnam='$d_flexfnam'
15353d_flock='$d_flock'
15354d_fork='$d_fork'
15355d_fpathconf='$d_fpathconf'
15356d_fpos64_t='$d_fpos64_t'
15357d_frexpl='$d_frexpl'
15358d_fs_data_s='$d_fs_data_s'
15359d_fseeko='$d_fseeko'
15360d_fsetpos='$d_fsetpos'
15361d_fstatfs='$d_fstatfs'
15362d_fstatvfs='$d_fstatvfs'
15363d_ftello='$d_ftello'
15364d_ftime='$d_ftime'
15365d_getcwd='$d_getcwd'
15366d_getespwnam='$d_getespwnam'
15367d_getfsstat='$d_getfsstat'
15368d_getgrent='$d_getgrent'
15369d_getgrps='$d_getgrps'
15370d_gethbyaddr='$d_gethbyaddr'
15371d_gethbyname='$d_gethbyname'
15372d_gethent='$d_gethent'
15373d_gethname='$d_gethname'
15374d_gethostprotos='$d_gethostprotos'
15375d_getlogin='$d_getlogin'
15376d_getmnt='$d_getmnt'
15377d_getmntent='$d_getmntent'
15378d_getnbyaddr='$d_getnbyaddr'
15379d_getnbyname='$d_getnbyname'
15380d_getnent='$d_getnent'
15381d_getnetprotos='$d_getnetprotos'
15382d_getpbyname='$d_getpbyname'
15383d_getpbynumber='$d_getpbynumber'
15384d_getpent='$d_getpent'
15385d_getpgid='$d_getpgid'
15386d_getpgrp2='$d_getpgrp2'
15387d_getpgrp='$d_getpgrp'
15388d_getppid='$d_getppid'
15389d_getprior='$d_getprior'
15390d_getprotoprotos='$d_getprotoprotos'
15391d_getprpwnam='$d_getprpwnam'
15392d_getpwent='$d_getpwent'
15393d_getsbyname='$d_getsbyname'
15394d_getsbyport='$d_getsbyport'
15395d_getsent='$d_getsent'
15396d_getservprotos='$d_getservprotos'
15397d_getspnam='$d_getspnam'
15398d_gettimeod='$d_gettimeod'
5f80c64f 15399d_gnulibc='$d_gnulibc'
b4eb6b3d
JH
15400d_grpasswd='$d_grpasswd'
15401d_hasmntopt='$d_hasmntopt'
15402d_htonl='$d_htonl'
15403d_iconv='$d_iconv'
15404d_index='$d_index'
15405d_inetaton='$d_inetaton'
15406d_int64_t='$d_int64_t'
15407d_isascii='$d_isascii'
15408d_isnan='$d_isnan'
15409d_isnanl='$d_isnanl'
15410d_killpg='$d_killpg'
15411d_lchown='$d_lchown'
15412d_ldbl_dig='$d_ldbl_dig'
15413d_link='$d_link'
15414d_locconv='$d_locconv'
15415d_lockf='$d_lockf'
15416d_longdbl='$d_longdbl'
15417d_longlong='$d_longlong'
15418d_lseekproto='$d_lseekproto'
15419d_lstat='$d_lstat'
15420d_madvise='$d_madvise'
15421d_mblen='$d_mblen'
15422d_mbstowcs='$d_mbstowcs'
15423d_mbtowc='$d_mbtowc'
15424d_memchr='$d_memchr'
15425d_memcmp='$d_memcmp'
15426d_memcpy='$d_memcpy'
15427d_memmove='$d_memmove'
15428d_memset='$d_memset'
15429d_mkdir='$d_mkdir'
15430d_mkdtemp='$d_mkdtemp'
15431d_mkfifo='$d_mkfifo'
15432d_mkstemp='$d_mkstemp'
15433d_mkstemps='$d_mkstemps'
15434d_mktime='$d_mktime'
15435d_mmap='$d_mmap'
15436d_modfl='$d_modfl'
15437d_mprotect='$d_mprotect'
15438d_msg='$d_msg'
15439d_msg_ctrunc='$d_msg_ctrunc'
15440d_msg_dontroute='$d_msg_dontroute'
15441d_msg_oob='$d_msg_oob'
15442d_msg_peek='$d_msg_peek'
15443d_msg_proxy='$d_msg_proxy'
15444d_msgctl='$d_msgctl'
15445d_msgget='$d_msgget'
15446d_msgrcv='$d_msgrcv'
15447d_msgsnd='$d_msgsnd'
15448d_msync='$d_msync'
15449d_munmap='$d_munmap'
15450d_mymalloc='$d_mymalloc'
15451d_nice='$d_nice'
15452d_nv_preserves_uv='$d_nv_preserves_uv'
15453d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15454d_off64_t='$d_off64_t'
15455d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15456d_oldpthreads='$d_oldpthreads'
15457d_oldsock='$d_oldsock'
15458d_open3='$d_open3'
15459d_pathconf='$d_pathconf'
15460d_pause='$d_pause'
15461d_perl_otherlibdirs='$d_perl_otherlibdirs'
15462d_phostname='$d_phostname'
15463d_pipe='$d_pipe'
15464d_poll='$d_poll'
5f80c64f 15465d_portable='$d_portable'
b4eb6b3d
JH
15466d_pthread_yield='$d_pthread_yield'
15467d_pwage='$d_pwage'
15468d_pwchange='$d_pwchange'
15469d_pwclass='$d_pwclass'
15470d_pwcomment='$d_pwcomment'
15471d_pwexpire='$d_pwexpire'
15472d_pwgecos='$d_pwgecos'
15473d_pwpasswd='$d_pwpasswd'
15474d_pwquota='$d_pwquota'
15475d_qgcvt='$d_qgcvt'
15476d_quad='$d_quad'
15477d_readdir='$d_readdir'
15478d_readlink='$d_readlink'
15479d_rename='$d_rename'
15480d_rewinddir='$d_rewinddir'
15481d_rmdir='$d_rmdir'
15482d_safebcpy='$d_safebcpy'
15483d_safemcpy='$d_safemcpy'
15484d_sanemcmp='$d_sanemcmp'
15485d_sched_yield='$d_sched_yield'
15486d_scm_rights='$d_scm_rights'
15487d_seekdir='$d_seekdir'
15488d_select='$d_select'
15489d_sem='$d_sem'
15490d_semctl='$d_semctl'
15491d_semctl_semid_ds='$d_semctl_semid_ds'
15492d_semctl_semun='$d_semctl_semun'
15493d_semget='$d_semget'
15494d_semop='$d_semop'
15495d_setegid='$d_setegid'
15496d_seteuid='$d_seteuid'
15497d_setgrent='$d_setgrent'
15498d_setgrps='$d_setgrps'
15499d_sethent='$d_sethent'
15500d_setlinebuf='$d_setlinebuf'
15501d_setlocale='$d_setlocale'
15502d_setnent='$d_setnent'
15503d_setpent='$d_setpent'
15504d_setpgid='$d_setpgid'
15505d_setpgrp2='$d_setpgrp2'
15506d_setpgrp='$d_setpgrp'
15507d_setprior='$d_setprior'
15508d_setproctitle='$d_setproctitle'
15509d_setpwent='$d_setpwent'
15510d_setregid='$d_setregid'
15511d_setresgid='$d_setresgid'
15512d_setresuid='$d_setresuid'
15513d_setreuid='$d_setreuid'
15514d_setrgid='$d_setrgid'
15515d_setruid='$d_setruid'
15516d_setsent='$d_setsent'
15517d_setsid='$d_setsid'
15518d_setvbuf='$d_setvbuf'
15519d_sfio='$d_sfio'
15520d_shm='$d_shm'
15521d_shmat='$d_shmat'
15522d_shmatprototype='$d_shmatprototype'
15523d_shmctl='$d_shmctl'
15524d_shmdt='$d_shmdt'
15525d_shmget='$d_shmget'
15526d_sigaction='$d_sigaction'
15527d_sigsetjmp='$d_sigsetjmp'
15528d_socket='$d_socket'
15529d_socklen_t='$d_socklen_t'
15530d_sockpair='$d_sockpair'
15531d_socks5_init='$d_socks5_init'
15532d_sqrtl='$d_sqrtl'
15533d_statblks='$d_statblks'
15534d_statfs_f_flags='$d_statfs_f_flags'
15535d_statfs_s='$d_statfs_s'
15536d_statvfs='$d_statvfs'
15537d_stdio_cnt_lval='$d_stdio_cnt_lval'
15538d_stdio_ptr_lval='$d_stdio_ptr_lval'
15539d_stdio_stream_array='$d_stdio_stream_array'
15540d_stdiobase='$d_stdiobase'
15541d_stdstdio='$d_stdstdio'
15542d_strchr='$d_strchr'
15543d_strcoll='$d_strcoll'
15544d_strctcpy='$d_strctcpy'
15545d_strerrm='$d_strerrm'
15546d_strerror='$d_strerror'
15547d_strtod='$d_strtod'
15548d_strtol='$d_strtol'
15549d_strtold='$d_strtold'
15550d_strtoll='$d_strtoll'
15551d_strtoul='$d_strtoul'
15552d_strtoull='$d_strtoull'
15553d_strtouq='$d_strtouq'
15554d_strxfrm='$d_strxfrm'
15555d_suidsafe='$d_suidsafe'
15556d_symlink='$d_symlink'
15557d_syscall='$d_syscall'
15558d_sysconf='$d_sysconf'
15559d_sysernlst='$d_sysernlst'
15560d_syserrlst='$d_syserrlst'
15561d_system='$d_system'
15562d_tcgetpgrp='$d_tcgetpgrp'
15563d_tcsetpgrp='$d_tcsetpgrp'
15564d_telldir='$d_telldir'
15565d_telldirproto='$d_telldirproto'
15566d_time='$d_time'
15567d_times='$d_times'
15568d_truncate='$d_truncate'
15569d_tzname='$d_tzname'
15570d_umask='$d_umask'
15571d_uname='$d_uname'
15572d_union_semun='$d_union_semun'
15573d_ustat='$d_ustat'
15574d_vendorarch='$d_vendorarch'
15575d_vendorbin='$d_vendorbin'
15576d_vendorlib='$d_vendorlib'
15577d_vfork='$d_vfork'
15578d_void_closedir='$d_void_closedir'
15579d_voidsig='$d_voidsig'
15580d_voidtty='$d_voidtty'
15581d_volatile='$d_volatile'
15582d_vprintf='$d_vprintf'
15583d_wait4='$d_wait4'
15584d_waitpid='$d_waitpid'
15585d_wcstombs='$d_wcstombs'
15586d_wctomb='$d_wctomb'
5f80c64f
JH
15587d_xenix='$d_xenix'
15588date='$date'
b4eb6b3d
JH
15589db_hashtype='$db_hashtype'
15590db_prefixtype='$db_prefixtype'
15591defvoidused='$defvoidused'
15592direntrytype='$direntrytype'
15593dlext='$dlext'
5f80c64f 15594dlsrc='$dlsrc'
b4eb6b3d
JH
15595doublesize='$doublesize'
15596drand01='$drand01'
15597dynamic_ext='$dynamic_ext'
15598eagain='$eagain'
15599ebcdic='$ebcdic'
5f80c64f
JH
15600echo='$echo'
15601egrep='$egrep'
15602emacs='$emacs'
15603eunicefix='$eunicefix'
15604exe_ext='$exe_ext'
15605expr='$expr'
b4eb6b3d
JH
15606extensions='$extensions'
15607fflushNULL='$fflushNULL'
15608fflushall='$fflushall'
5f80c64f
JH
15609find='$find'
15610firstmakefile='$firstmakefile'
15611flex='$flex'
b4eb6b3d
JH
15612fpossize='$fpossize'
15613fpostype='$fpostype'
15614freetype='$freetype'
15615full_ar='$full_ar'
15616full_csh='$full_csh'
15617full_sed='$full_sed'
5b463ca7 15618gccosandvers='$gccosandvers'
5f80c64f 15619gccversion='$gccversion'
b4eb6b3d
JH
15620gidformat='$gidformat'
15621gidsign='$gidsign'
15622gidsize='$gidsize'
15623gidtype='$gidtype'
5f80c64f
JH
15624glibpth='$glibpth'
15625grep='$grep'
b4eb6b3d
JH
15626groupcat='$groupcat'
15627groupstype='$groupstype'
5f80c64f 15628gzip='$gzip'
b4eb6b3d
JH
15629h_fcntl='$h_fcntl'
15630h_sysfile='$h_sysfile'
5f80c64f 15631hint='$hint'
b4eb6b3d
JH
15632hostcat='$hostcat'
15633i16size='$i16size'
15634i16type='$i16type'
15635i32size='$i32size'
15636i32type='$i32type'
15637i64size='$i64size'
15638i64type='$i64type'
15639i8size='$i8size'
15640i8type='$i8type'
15641i_arpainet='$i_arpainet'
15642i_bsdioctl='$i_bsdioctl'
15643i_db='$i_db'
15644i_dbm='$i_dbm'
15645i_dirent='$i_dirent'
5f80c64f 15646i_dld='$i_dld'
b4eb6b3d
JH
15647i_dlfcn='$i_dlfcn'
15648i_fcntl='$i_fcntl'
15649i_float='$i_float'
15650i_gdbm='$i_gdbm'
15651i_grp='$i_grp'
15652i_iconv='$i_iconv'
15653i_ieeefp='$i_ieeefp'
15654i_inttypes='$i_inttypes'
15655i_libutil='$i_libutil'
15656i_limits='$i_limits'
15657i_locale='$i_locale'
15658i_machcthr='$i_machcthr'
15659i_malloc='$i_malloc'
15660i_math='$i_math'
15661i_memory='$i_memory'
15662i_mntent='$i_mntent'
15663i_ndbm='$i_ndbm'
15664i_netdb='$i_netdb'
15665i_neterrno='$i_neterrno'
15666i_netinettcp='$i_netinettcp'
15667i_niin='$i_niin'
15668i_poll='$i_poll'
15669i_prot='$i_prot'
15670i_pthread='$i_pthread'
15671i_pwd='$i_pwd'
15672i_rpcsvcdbm='$i_rpcsvcdbm'
15673i_sfio='$i_sfio'
15674i_sgtty='$i_sgtty'
15675i_shadow='$i_shadow'
15676i_socks='$i_socks'
15677i_stdarg='$i_stdarg'
15678i_stddef='$i_stddef'
15679i_stdlib='$i_stdlib'
15680i_string='$i_string'
15681i_sunmath='$i_sunmath'
15682i_sysaccess='$i_sysaccess'
15683i_sysdir='$i_sysdir'
15684i_sysfile='$i_sysfile'
15685i_sysfilio='$i_sysfilio'
15686i_sysin='$i_sysin'
15687i_sysioctl='$i_sysioctl'
15688i_syslog='$i_syslog'
15689i_sysmman='$i_sysmman'
15690i_sysmode='$i_sysmode'
15691i_sysmount='$i_sysmount'
15692i_sysndir='$i_sysndir'
15693i_sysparam='$i_sysparam'
15694i_sysresrc='$i_sysresrc'
15695i_syssecrt='$i_syssecrt'
15696i_sysselct='$i_sysselct'
15697i_syssockio='$i_syssockio'
15698i_sysstat='$i_sysstat'
15699i_sysstatfs='$i_sysstatfs'
15700i_sysstatvfs='$i_sysstatvfs'
15701i_systime='$i_systime'
15702i_systimek='$i_systimek'
15703i_systimes='$i_systimes'
15704i_systypes='$i_systypes'
15705i_sysuio='$i_sysuio'
15706i_sysun='$i_sysun'
15707i_sysutsname='$i_sysutsname'
15708i_sysvfs='$i_sysvfs'
15709i_syswait='$i_syswait'
15710i_termio='$i_termio'
15711i_termios='$i_termios'
15712i_time='$i_time'
15713i_unistd='$i_unistd'
15714i_ustat='$i_ustat'
15715i_utime='$i_utime'
15716i_values='$i_values'
15717i_varargs='$i_varargs'
15718i_varhdr='$i_varhdr'
15719i_vfork='$i_vfork'
5f80c64f 15720ignore_versioned_solibs='$ignore_versioned_solibs'
b4eb6b3d
JH
15721inc_version_list='$inc_version_list'
15722inc_version_list_init='$inc_version_list_init'
5f80c64f
JH
15723incpath='$incpath'
15724inews='$inews'
b4eb6b3d
JH
15725installarchlib='$installarchlib'
15726installbin='$installbin'
15727installman1dir='$installman1dir'
15728installman3dir='$installman3dir'
15729installprefix='$installprefix'
15730installprefixexp='$installprefixexp'
15731installprivlib='$installprivlib'
15732installscript='$installscript'
15733installsitearch='$installsitearch'
15734installsitebin='$installsitebin'
15735installsitelib='$installsitelib'
15736installstyle='$installstyle'
15737installusrbinperl='$installusrbinperl'
15738installvendorarch='$installvendorarch'
15739installvendorbin='$installvendorbin'
15740installvendorlib='$installvendorlib'
15741intsize='$intsize'
15742ivdformat='$ivdformat'
15743ivsize='$ivsize'
15744ivtype='$ivtype'
15745known_extensions='$known_extensions'
5f80c64f 15746ksh='$ksh'
5f80c64f
JH
15747ld='$ld'
15748lddlflags='$lddlflags'
15749ldflags='$ldflags'
b4eb6b3d
JH
15750ldflags_uselargefiles='$ldflags_uselargefiles'
15751ldlibpthname='$ldlibpthname'
5f80c64f
JH
15752less='$less'
15753lib_ext='$lib_ext'
15754libc='$libc'
b4eb6b3d 15755libperl='$libperl'
5f80c64f
JH
15756libpth='$libpth'
15757libs='$libs'
43999f95
JH
15758libsdirs='$libsdirs'
15759libsfiles='$libsfiles'
15760libsfound='$libsfound'
13b3f787 15761libspath='$libspath'
5f80c64f 15762libswanted='$libswanted'
b4eb6b3d 15763libswanted_uselargefiles='$libswanted_uselargefiles'
5f80c64f
JH
15764line='$line'
15765lint='$lint'
15766lkflags='$lkflags'
15767ln='$ln'
15768lns='$lns'
15769locincpth='$locincpth'
15770loclibpth='$loclibpth'
b4eb6b3d
JH
15771longdblsize='$longdblsize'
15772longlongsize='$longlongsize'
15773longsize='$longsize'
5f80c64f
JH
15774lp='$lp'
15775lpr='$lpr'
15776ls='$ls'
b4eb6b3d
JH
15777lseeksize='$lseeksize'
15778lseektype='$lseektype'
5f80c64f
JH
15779mail='$mail'
15780mailx='$mailx'
15781make='$make'
15782make_set_make='$make_set_make'
b4eb6b3d
JH
15783mallocobj='$mallocobj'
15784mallocsrc='$mallocsrc'
15785malloctype='$malloctype'
15786man1dir='$man1dir'
15787man1direxp='$man1direxp'
15788man1ext='$man1ext'
15789man3dir='$man3dir'
15790man3direxp='$man3direxp'
15791man3ext='$man3ext'
5f80c64f
JH
15792mips_type='$mips_type'
15793mkdir='$mkdir'
b4eb6b3d
JH
15794mmaptype='$mmaptype'
15795modetype='$modetype'
5f80c64f 15796more='$more'
b4eb6b3d 15797multiarch='$multiarch'
5f80c64f 15798mv='$mv'
b4eb6b3d
JH
15799myarchname='$myarchname'
15800mydomain='$mydomain'
15801myhostname='$myhostname'
5f80c64f
JH
15802myuname='$myuname'
15803n='$n'
b4eb6b3d
JH
15804netdb_hlen_type='$netdb_hlen_type'
15805netdb_host_type='$netdb_host_type'
15806netdb_name_type='$netdb_name_type'
15807netdb_net_type='$netdb_net_type'
5f80c64f
JH
15808nm='$nm'
15809nm_opt='$nm_opt'
15810nm_so_opt='$nm_so_opt'
b4eb6b3d 15811nonxs_ext='$nonxs_ext'
5f80c64f 15812nroff='$nroff'
b4eb6b3d
JH
15813nvEUformat='$nvEUformat'
15814nvFUformat='$nvFUformat'
15815nvGUformat='$nvGUformat'
15816nveformat='$nveformat'
15817nvfformat='$nvfformat'
15818nvgformat='$nvgformat'
15819nvsize='$nvsize'
15820nvtype='$nvtype'
15821o_nonblock='$o_nonblock'
5f80c64f 15822obj_ext='$obj_ext'
b4eb6b3d 15823old_pthread_create_joinable='$old_pthread_create_joinable'
5f80c64f 15824optimize='$optimize'
b4eb6b3d 15825orderlib='$orderlib'
5f80c64f
JH
15826osname='$osname'
15827osvers='$osvers'
b4eb6b3d 15828otherlibdirs='$otherlibdirs'
5f80c64f 15829package='$package'
b4eb6b3d
JH
15830pager='$pager'
15831passcat='$passcat'
15832patchlevel='$patchlevel'
5f80c64f 15833path_sep='$path_sep'
b4eb6b3d 15834perl5='$perl5'
5f80c64f 15835perl='$perl'
b4eb6b3d 15836perladmin='$perladmin'
9c839522 15837perllibs='$perllibs'
b4eb6b3d 15838perlpath='$perlpath'
5f80c64f 15839pg='$pg'
b4eb6b3d
JH
15840phostname='$phostname'
15841pidtype='$pidtype'
5f80c64f 15842plibpth='$plibpth'
b4eb6b3d 15843pm_apiversion='$pm_apiversion'
5f80c64f
JH
15844pmake='$pmake'
15845pr='$pr'
b4eb6b3d
JH
15846prefix='$prefix'
15847prefixexp='$prefixexp'
15848privlib='$privlib'
15849privlibexp='$privlibexp'
15850prototype='$prototype'
15851ptrsize='$ptrsize'
15852quadkind='$quadkind'
15853quadtype='$quadtype'
15854randbits='$randbits'
15855randfunc='$randfunc'
15856randseedtype='$randseedtype'
15857ranlib='$ranlib'
15858rd_nodata='$rd_nodata'
15859revision='$revision'
5f80c64f
JH
15860rm='$rm'
15861rmail='$rmail'
15862runnm='$runnm'
b4eb6b3d
JH
15863sPRIEUldbl='$sPRIEUldbl'
15864sPRIFUldbl='$sPRIFUldbl'
15865sPRIGUldbl='$sPRIGUldbl'
15866sPRIXU64='$sPRIXU64'
15867sPRId64='$sPRId64'
15868sPRIeldbl='$sPRIeldbl'
15869sPRIfldbl='$sPRIfldbl'
15870sPRIgldbl='$sPRIgldbl'
15871sPRIi64='$sPRIi64'
15872sPRIo64='$sPRIo64'
15873sPRIu64='$sPRIu64'
15874sPRIx64='$sPRIx64'
15875sSCNfldbl='$sSCNfldbl'
15876sched_yield='$sched_yield'
15877scriptdir='$scriptdir'
15878scriptdirexp='$scriptdirexp'
5f80c64f 15879sed='$sed'
b4eb6b3d
JH
15880seedfunc='$seedfunc'
15881selectminbits='$selectminbits'
15882selecttype='$selecttype'
5f80c64f
JH
15883sendmail='$sendmail'
15884sh='$sh'
15885shar='$shar'
15886sharpbang='$sharpbang'
b4eb6b3d
JH
15887shmattype='$shmattype'
15888shortsize='$shortsize'
15889shrpenv='$shrpenv'
5f80c64f 15890shsharp='$shsharp'
b4eb6b3d
JH
15891sig_count='$sig_count'
15892sig_name='$sig_name'
15893sig_name_init='$sig_name_init'
15894sig_num='$sig_num'
15895sig_num_init='$sig_num_init'
15896signal_t='$signal_t'
15897sitearch='$sitearch'
15898sitearchexp='$sitearchexp'
15899sitebin='$sitebin'
15900sitebinexp='$sitebinexp'
15901sitelib='$sitelib'
15902sitelib_stem='$sitelib_stem'
15903sitelibexp='$sitelibexp'
15904siteprefix='$siteprefix'
15905siteprefixexp='$siteprefixexp'
15906sizesize='$sizesize'
15907sizetype='$sizetype'
5f80c64f
JH
15908sleep='$sleep'
15909smail='$smail'
5f80c64f 15910so='$so'
b4eb6b3d
JH
15911sockethdr='$sockethdr'
15912socketlib='$socketlib'
15913socksizetype='$socksizetype'
5f80c64f
JH
15914sort='$sort'
15915spackage='$spackage'
15916spitshell='$spitshell'
5f80c64f 15917src='$src'
b4eb6b3d
JH
15918ssizetype='$ssizetype'
15919startperl='$startperl'
5f80c64f 15920startsh='$startsh'
b4eb6b3d
JH
15921static_ext='$static_ext'
15922stdchar='$stdchar'
15923stdio_base='$stdio_base'
15924stdio_bufsiz='$stdio_bufsiz'
15925stdio_cnt='$stdio_cnt'
15926stdio_filbuf='$stdio_filbuf'
15927stdio_ptr='$stdio_ptr'
15928stdio_stream_array='$stdio_stream_array'
15929strings='$strings'
5f80c64f 15930submit='$submit'
b4eb6b3d
JH
15931subversion='$subversion'
15932sysman='$sysman'
5f80c64f
JH
15933tail='$tail'
15934tar='$tar'
15935tbl='$tbl'
15936tee='$tee'
15937test='$test'
b4eb6b3d
JH
15938timeincl='$timeincl'
15939timetype='$timetype'
5f80c64f
JH
15940touch='$touch'
15941tr='$tr'
15942trnl='$trnl'
15943troff='$troff'
b4eb6b3d
JH
15944u16size='$u16size'
15945u16type='$u16type'
15946u32size='$u32size'
15947u32type='$u32type'
15948u64size='$u64size'
15949u64type='$u64type'
15950u8size='$u8size'
15951u8type='$u8type'
15952uidformat='$uidformat'
15953uidsign='$uidsign'
15954uidsize='$uidsize'
15955uidtype='$uidtype'
5f80c64f
JH
15956uname='$uname'
15957uniq='$uniq'
b4eb6b3d
JH
15958uquadtype='$uquadtype'
15959use5005threads='$use5005threads'
15960use64bitall='$use64bitall'
15961use64bitint='$use64bitint'
5f80c64f 15962usedl='$usedl'
b4eb6b3d
JH
15963useithreads='$useithreads'
15964uselargefiles='$uselargefiles'
15965uselongdouble='$uselongdouble'
15966usemorebits='$usemorebits'
15967usemultiplicity='$usemultiplicity'
15968usemymalloc='$usemymalloc'
5f80c64f 15969usenm='$usenm'
b4eb6b3d
JH
15970useopcode='$useopcode'
15971useperlio='$useperlio'
15972useposix='$useposix'
15973usesfio='$usesfio'
15974useshrplib='$useshrplib'
29209bc5 15975usesocks='$usesocks'
b4eb6b3d
JH
15976usethreads='$usethreads'
15977usevendorprefix='$usevendorprefix'
15978usevfork='$usevfork'
5f80c64f
JH
15979usrinc='$usrinc'
15980uuname='$uuname'
b4eb6b3d
JH
15981uvXUformat='$uvXUformat'
15982uvoformat='$uvoformat'
15983uvsize='$uvsize'
15984uvtype='$uvtype'
15985uvuformat='$uvuformat'
15986uvxformat='$uvxformat'
15987vendorarch='$vendorarch'
15988vendorarchexp='$vendorarchexp'
15989vendorbin='$vendorbin'
15990vendorbinexp='$vendorbinexp'
15991vendorlib='$vendorlib'
15992vendorlib_stem='$vendorlib_stem'
15993vendorlibexp='$vendorlibexp'
15994vendorprefix='$vendorprefix'
15995vendorprefixexp='$vendorprefixexp'
15996version='$version'
5f80c64f 15997vi='$vi'
b4eb6b3d 15998voidflags='$voidflags'
5f80c64f 15999xlibpth='$xlibpth'
b4eb6b3d 16000xs_apiversion='$xs_apiversion'
5f80c64f
JH
16001zcat='$zcat'
16002zip='$zip'
16003EOT
16004
16005: Add in command line options if available
16006$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16007
16008: add special variables
16009$test -f $src/patchlevel.h && \
d00b958f 16010awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
2000072c 16011echo "CONFIGDOTSH=true" >>config.sh
5f80c64f
JH
16012
16013: propagate old symbols
16014if $test -f UU/config.sh; then
16015 <UU/config.sh sort | uniq >UU/oldconfig.sh
16016 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16017 sort | uniq -u >UU/oldsyms
16018 set X `cat UU/oldsyms`
16019 shift
16020 case $# in
16021 0) ;;
16022 *)
16023 cat <<EOM
16024Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16025EOM
16026 echo "# Variables propagated from previous config.sh file." >>config.sh
16027 for sym in `cat UU/oldsyms`; do
16028 echo " Propagating $hint variable "'$'"$sym..."
16029 eval 'tmp="$'"${sym}"'"'
16030 echo "$tmp" | \
16031 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16032 done
16033 ;;
16034 esac
16035fi
16036
16037: Finish up by extracting the .SH files
16038case "$alldone" in
16039exit)
16040 $rm -rf UU
16041 echo "Done."
16042 exit 0
16043 ;;
16044cont)
16045 ;;
16046'')
16047 dflt=''
16048 nostick=true
16049 $cat <<EOM
16050
16051If you'd like to make any changes to the config.sh file before I begin
16052to configure things, do it as a shell escape now (e.g. !vi config.sh).
16053
16054EOM
16055 rp="Press return or use a shell escape to edit config.sh:"
16056 . UU/myread
16057 nostick=''
16058 case "$ans" in
16059 '') ;;
16060 *) : in case they cannot read
16061 sh 1>&4 -c "$ans";;
16062 esac
16063 ;;
16064esac
16065
16066: if this fails, just run all the .SH files by hand
16067. ./config.sh
16068
16069echo " "
16070exec 1>&4
16071. ./UU/extract
16072
16073if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16074 dflt=y
16075 case "$silent" in
16076 true) ;;
16077 *)
16078 $cat <<EOM
16079
16080Now you need to generate make dependencies by running "$make depend".
16081You might prefer to run it in background: "$make depend > makedepend.out &"
16082It can take a while, so you might not want to run it right now.
16083
16084EOM
16085 ;;
16086 esac
16087 rp="Run $make depend now?"
16088 . UU/myread
16089 case "$ans" in
16090 y*)
3d5d58b1 16091 $make depend && echo "Now you must run '$make'."
5f80c64f
JH
16092 ;;
16093 *)
16094 echo "You must run '$make depend' then '$make'."
16095 ;;
16096 esac
16097elif test -f [Mm]akefile; then
16098 echo " "
16099 echo "Now you must run a $make."
16100else
16101 echo "Done."
16102fi
16103
16104if $test -f Policy.sh; then
16105 $cat <<EOM
16106
16107If you compile $package on a different machine or from a different object
16108directory, copy the Policy.sh file from this object directory to the
16109new one before you run Configure -- this will help you with most of
16110the policy defaults.
16111
16112EOM
16113fi
16114if $test -f config.msg; then
16115 echo "Hmm. I also noted the following information while running:"
16116 echo " "
16117 $cat config.msg >&4
16118 $rm -f config.msg
16119fi
16120$rm -f kit*isdone ark*isdone
16121$rm -rf UU
16122
16123: End of Configure
16124