This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #81910] [PATCH] Fix typos (spelling errors) in Porting/*.
[metaconfig.git] / U / modified / mallocsrc.U
1 ?RCS: $Id: mallocsrc.U,v 3.0.1.2 1997/02/28 16:10:26 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: mallocsrc.U,v $
12 ?RCS: Revision 3.0.1.2  1997/02/28  16:10:26  ram
13 ?RCS: patch61: added support for Free_t, the type of free()
14 ?RCS: patch61: replaced .o with $_o all over the place
15 ?RCS:
16 ?RCS: Revision 3.0.1.1  1994/05/06  15:10:46  ram
17 ?RCS: patch23: added support for MYMALLOC, mainly  for perl5 (ADO)
18 ?RCS:
19 ?RCS: Revision 3.0  1993/08/18  12:09:12  ram
20 ?RCS: Baseline for dist 3.0 netwide release.
21 ?RCS:
22 ?MAKE:mallocsrc mallocobj usemallocwrap usemymalloc malloctype d_mymalloc \
23         freetype: Myread \
24         Oldconfig package Guess Setvar rm cat +cc +ccflags Findhdr \
25         i_malloc i_stdlib sed libs _o ptrsize
26 ?MAKE:  -pick add $@ %<
27 ?X: Put near top so that other tests don't erroneously include
28 ?X: -lmalloc.  --AD  22 June 1998
29 ?Y:TOP
30 ?S:usemymalloc:
31 ?S:     This variable contains y if the malloc that comes with this package
32 ?S:     is desired over the system's version of malloc.  People often include
33 ?S:     special versions of malloc for efficiency, but such versions are often
34 ?S:     less portable.  See also mallocsrc and mallocobj.
35 ?S:     If this is 'y', then -lmalloc is removed from $libs.
36 ?S:.
37 ?S:usemallocwrap:
38 ?S:     This variable contains y if we are wrapping malloc to prevent
39 ?S:     integer overflow during size calculations.
40 ?S:.
41 ?S:mallocsrc:
42 ?S:     This variable contains the name of the malloc.c that comes with
43 ?S:     the package, if that malloc.c is preferred over the system malloc.
44 ?S:     Otherwise the value is null.  This variable is intended for generating
45 ?S:     Makefiles.
46 ?S:.
47 ?S:d_mymalloc:
48 ?S:     This variable conditionally defines MYMALLOC in case other parts
49 ?S:     of the source want to take special action if MYMALLOC is used.
50 ?S:     This may include different sorts of profiling or error detection.
51 ?S:.
52 ?S:mallocobj:
53 ?S:     This variable contains the name of the malloc.o that this package
54 ?S:     generates, if that malloc.o is preferred over the system malloc.
55 ?S:     Otherwise the value is null.  This variable is intended for generating
56 ?S:     Makefiles.  See mallocsrc.
57 ?S:.
58 ?S:freetype:
59 ?S:     This variable contains the return type of free().  It is usually
60 ?S: void, but occasionally int.
61 ?S:.
62 ?S:malloctype:
63 ?S:     This variable contains the kind of ptr returned by malloc and realloc.
64 ?S:.
65 ?C:Free_t:
66 ?C:     This variable contains the return type of free().  It is usually
67 ?C: void, but occasionally int.
68 ?C:.
69 ?C:Malloc_t (MALLOCPTRTYPE):
70 ?C:     This symbol is the type of pointer returned by malloc and realloc.
71 ?C:.
72 ?H:#define Malloc_t $malloctype                 /**/
73 ?H:#define Free_t $freetype                     /**/
74 ?H:.
75 ?C:PERL_MALLOC_WRAP:
76 ?C:     This symbol, if defined, indicates that we'd like malloc wrap checks.
77 ?C:.
78 ?H:#$usemallocwrap PERL_MALLOC_WRAP             /**/
79 ?H:.
80 ?C:MYMALLOC:
81 ?C:     This symbol, if defined, indicates that we're using our own malloc.
82 ?C:.
83 ?H:#$d_mymalloc MYMALLOC                        /**/
84 ?H:.
85 ?LINT:extern usedevel
86 ?LINT:change libs
87 ?X: Cannot test for mallocsrc; it is the unit's name and there is a bug in
88 ?X: the interpreter which defines all the names, even though they are not used.
89 @if mallocobj
90 : determine whether to use malloc wrapping
91 echo " "
92 case "$usemallocwrap" in
93 [yY]*|true|$define)     dflt='y' ;;
94 [nN]*|false|$undef)     dflt='n' ;;
95 *)      case "$usedevel" in
96         [yY]*|true|$define)     dflt='y' ;;
97         *) dflt='n' ;;
98         esac
99         ;;
100 esac
101 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
102 . ./myread
103 usemallocwrap="$ans"
104 case "$ans" in
105 y*|true)
106         usemallocwrap="$define" ;;
107 *)
108         usemallocwrap="$undef" ;;
109 esac
110
111 : determine which malloc to compile in
112 echo " "
113 case "$usemymalloc" in
114 [yY]*|true|$define)     dflt='y' ;;
115 [nN]*|false|$undef)     dflt='n' ;;
116 *)      case "$ptrsize" in
117         4) dflt='y' ;;
118         *) dflt='n' ;;
119         esac
120         ;;
121 esac
122 rp="Do you wish to attempt to use the malloc that comes with $package?"
123 . ./myread
124 usemymalloc="$ans"
125 case "$ans" in
126 y*|true)
127         usemymalloc='y'
128         mallocsrc='malloc.c'
129         mallocobj="malloc$_o"
130         d_mymalloc="$define"
131 ?X:     Maybe libs.U should be dependent on mallocsrc.U, but then
132 ?X:     most packages that use dist probably don't supply their own
133 ?X:     malloc, so this is probably an o.k. comprpomise
134         case "$libs" in
135         *-lmalloc*)
136                 : Remove malloc from list of libraries to use
137                 echo "Removing unneeded -lmalloc from library list" >&4
138                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
139                 shift
140                 libs="$*"
141                 echo "libs = $libs" >&4
142                 ;;
143         esac
144         ;;
145 *)
146         usemymalloc='n'
147         mallocsrc=''
148         mallocobj=''
149         d_mymalloc="$undef"
150         ;;
151 esac
152
153 @end
154 @if MALLOCPTRTYPE || Malloc_t || Free_t
155 : compute the return types of malloc and free
156 echo " "
157 $cat >malloc.c <<END
158 #$i_malloc I_MALLOC
159 #$i_stdlib I_STDLIB
160 #include <stdio.h>
161 #include <sys/types.h>
162 #ifdef I_MALLOC
163 #include <malloc.h>
164 #endif
165 #ifdef I_STDLIB
166 #include <stdlib.h>
167 #endif
168 #ifdef TRY_MALLOC
169 void *malloc();
170 #endif
171 #ifdef TRY_FREE
172 void free();
173 #endif
174 END
175 @if MALLOCPTRTYPE || Malloc_t
176 case "$malloctype" in
177 '')
178         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
179                 malloctype='void *'
180         else
181                 malloctype='char *'
182         fi
183         ;;
184 esac
185 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
186 @end
187
188 @if Free_t
189 case "$freetype" in
190 '')
191         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
192                 freetype='void'
193         else
194                 freetype='int'
195         fi
196         ;;
197 esac
198 echo "Your system uses $freetype free(), it would seem." >&4
199 @end
200 $rm -f malloc.[co]
201 @end