This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
RE: [perl #26136] localtime(3) calls tzset(3), but localtime_r(3) may not.
[metaconfig.git] / U / modified / voidflags.U
CommitLineData
959f3c4c
JH
1?RCS: $Id: voidflags.U,v 3.0.1.2 1997/02/28 16:27:58 ram Exp $
2?RCS:
3?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4?RCS:
5?RCS: You may redistribute only under the terms of the Artistic Licence,
6?RCS: as specified in the README file that comes with the distribution.
7?RCS: You may reuse parts of this distribution only within the terms of
8?RCS: that same Artistic Licence; a copy of which may be found at the root
9?RCS: of the source tree for dist 3.0.
10?RCS:
11?RCS: $Log: voidflags.U,v $
12?RCS: Revision 3.0.1.2 1997/02/28 16:27:58 ram
13?RCS: patch61: don't prompt them if the void support is high enough for us
14?RCS:
15?RCS: Revision 3.0.1.1 1995/01/11 15:37:44 ram
16?RCS: patch45: cosmetic change to avoid spurious blank lines when using -s
17?RCS:
18?RCS: Revision 3.0 1993/08/18 12:10:01 ram
19?RCS: Baseline for dist 3.0 netwide release.
20?RCS:
21?MAKE:voidflags defvoidused: cat rm contains +cc +ccflags package \
3b148aa9 22 Oldconfig Myread i_stdlib
959f3c4c
JH
23?MAKE: -pick add $@ %<
24?S:voidflags:
25?S: This variable contains the eventual value of the VOIDFLAGS symbol,
26?S: which indicates how much support of the void type is given by this
27?S: compiler. See VOIDFLAGS for more info.
28?S:.
29?S:defvoidused:
30?S: This variable contains the default value of the VOIDUSED symbol (15).
31?S:.
32?X: Exceptionally, we have to explicitely alias the symbol name for
33?X: config_h.SH, otherwise the comment would not appear.
34?C:VOIDFLAGS ~ %<:
35?C: This symbol indicates how much support of the void type is given by this
36?C: compiler. What various bits mean:
37?C:
38?C: 1 = supports declaration of void
39?C: 2 = supports arrays of pointers to functions returning void
40?C: 4 = supports comparisons between pointers to void functions and
41?C: addresses of void functions
42?C: 8 = suports declaration of generic void pointers
43?C:
44?C: The package designer should define VOIDUSED to indicate the requirements
45?C: of the package. This can be done either by #defining VOIDUSED before
46?C: including config.h, or by defining defvoidused in Myinit.U. If the
47?C: latter approach is taken, only those flags will be tested. If the
48?C: level of void support necessary is not present, defines void to int.
49?C:.
50?H:?%<:#ifndef VOIDUSED
51?H:?%<:#define VOIDUSED $defvoidused
52?H:?%<:#endif
53?H:?%<:#define VOIDFLAGS $voidflags
54?H:?%<:#if (VOIDFLAGS & VOIDUSED) != VOIDUSED
55?H:?%<:#define void int /* is void to be avoided? */
56?H:?%<:#define M_VOID /* Xenix strikes again */
57?H:?%<:#endif
58?H:.
59?W:%<:void
bf7497fb
MB
60?INIT:: full support for void wanted by default
61?INIT:defvoidused=15
62?INIT:
959f3c4c
JH
63?LINT:describe defvoidused
64?LINT:known void M_VOID VOIDUSED
65: check for void type
66echo " "
67echo "Checking to see how well your C compiler groks the void type..." >&4
68case "$voidflags" in
69'')
38122f24 70 $cat >try.c <<EOCP
3b148aa9
JH
71#$i_stdlib I_STDLIB
72#ifdef I_STDLIB
73#include <stdlib.h>
74#endif
959f3c4c
JH
75#if TRY & 1
76void sub() {
77#else
78sub() {
79#endif
80 extern void moo(); /* function returning void */
81 void (*goo)(); /* ptr to func returning void */
82#if TRY & 8
83 void *hue; /* generic ptr */
84#endif
85#if TRY & 2
86 void (*foo[10])();
87#endif
88
89#if TRY & 4
90 if(goo == moo) {
91 exit(0);
92 }
93#endif
94 exit(0);
95}
96int main() { sub(); }
97EOCP
98?X: This unit used to use cc -S in those tests to try to speed up things, but
99?X: unfortunately, AIX 3.2 does not support this option.
100 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
101 voidflags=$defvoidused
102 echo "Good. It appears to support void to the level $package wants.">&4
103 if $contains warning .out >/dev/null 2>&1; then
104 echo "However, you might get some warnings that look like this:"
105 $cat .out
106 fi
107 else
108echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
109 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
110 echo "It supports 1..."
111 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
112 echo "It also supports 2..."
113 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
114 voidflags=7
115 echo "And it supports 4 but not 8 definitely."
116 else
117 echo "It doesn't support 4..."
118 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
119 voidflags=11
120 echo "But it supports 8."
121 else
122 voidflags=3
123 echo "Neither does it support 8."
124 fi
125 fi
126 else
127 echo "It does not support 2..."
128 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
129 voidflags=13
130 echo "But it supports 4 and 8."
131 else
132 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
133 voidflags=5
134 echo "And it supports 4 but has not heard about 8."
135 else
136 echo "However it supports 8 but not 4."
137 fi
138 fi
139 fi
140 else
141 echo "There is no support at all for void."
142 voidflags=0
143 fi
144 fi
145esac
146?X: Only prompt user if support does not match the level we want
147case "$voidflags" in
148"$defvoidused") ;;
149*) $cat >&4 <<'EOM'
150 Support flag bits are:
151 1: basic void declarations.
152 2: arrays of pointers to functions returning void.
153 4: operations between pointers to and addresses of void functions.
154 8: generic void pointers.
155EOM
156 dflt="$voidflags";
157 rp="Your void support flags add up to what?"
158 . ./myread
159 voidflags="$ans"
160 ;;
161esac
162$rm -f try.* .out
163