This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add the files from dist/meta to perl's repo
[metaconfig.git] / dist / U / mallocsrc.U
CommitLineData
d8875586
MBT
1?RCS: $Id: mallocsrc.U 1 2006-08-24 12:32:52Z rmanfredi $
2?RCS:
3?RCS: Copyright (c) 1991-1997, 2004-2006, 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 4.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 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 effiency, 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:mallocsrc:
38?S: This variable contains the name of the malloc.c that comes with
39?S: the package, if that malloc.c is preferred over the system malloc.
40?S: Otherwise the value is null. This variable is intended for generating
41?S: Makefiles.
42?S:.
43?S:d_mymalloc:
44?S: This variable conditionally defines MYMALLOC in case other parts
45?S: of the source want to take special action if MYMALLOC is used.
46?S: This may include different sorts of profiling or error detection.
47?S:.
48?S:mallocobj:
49?S: This variable contains the name of the malloc.o that this package
50?S: generates, if that malloc.o is preferred over the system malloc.
51?S: Otherwise the value is null. This variable is intended for generating
52?S: Makefiles. See mallocsrc.
53?S:.
54?S:freetype:
55?S: This variable contains the return type of free(). It is usually
56?S: void, but occasionally int.
57?S:.
58?S:malloctype:
59?S: This variable contains the kind of ptr returned by malloc and realloc.
60?S:.
61?C:Free_t:
62?C: This variable contains the return type of free(). It is usually
63?C: void, but occasionally int.
64?C:.
65?C:Malloc_t (MALLOCPTRTYPE):
66?C: This symbol is the type of pointer returned by malloc and realloc.
67?C:.
68?H:#define Malloc_t $malloctype /**/
69?H:#define Free_t $freetype /**/
70?H:.
71?C:MYMALLOC:
72?C: This symbol, if defined, indicates that we're using our own malloc.
73?C:.
74?H:#$d_mymalloc MYMALLOC /**/
75?H:.
76?LINT:change libs
77?X: Cannot test for mallocsrc; it is the unit's name and there is a bug in
78?X: the interpreter which defines all the names, even though they are not used.
79@if mallocobj
80: determine which malloc to compile in
81echo " "
82case "$usemymalloc" in
83[yY]*|true|$define) dflt='y' ;;
84[nN]*|false|$undef) dflt='n' ;;
85*)
86 case "$ptrsize" in
87 4) dflt='y' ;;
88 *) dflt='n' ;;
89 esac
90 ;;
91esac
92rp="Do you wish to attempt to use the malloc that comes with $package?"
93. ./myread
94usemymalloc="$ans"
95case "$ans" in
96y*|true)
97 usemymalloc='y'
98 mallocsrc='malloc.c'
99 mallocobj="malloc$_o"
100 d_mymalloc="$define"
101?X: Maybe libs.U should be dependent on mallocsrc.U, but then
102?X: most packages that use dist probably don't supply their own
103?X: malloc, so this is probably an o.k. comprpomise
104 case "$libs" in
105 *-lmalloc*)
106 : Remove malloc from list of libraries to use
107 echo "Removing unneeded -lmalloc from library list" >&4
108 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
109 shift
110 libs="$*"
111 echo "libs = $libs" >&4
112 ;;
113 esac
114 ;;
115*)
116 usemymalloc='n'
117 mallocsrc=''
118 mallocobj=''
119 d_mymalloc="$undef"
120 ;;
121esac
122
123@end
124@if MALLOCPTRTYPE || Malloc_t || Free_t
125: compute the return types of malloc and free
126echo " "
127$cat >malloc.c <<END
128#$i_malloc I_MALLOC
129#$i_stdlib I_STDLIB
130#include <stdio.h>
131#include <sys/types.h>
132#ifdef I_MALLOC
133#include <malloc.h>
134#endif
135#ifdef I_STDLIB
136#include <stdlib.h>
137#endif
138#ifdef TRY_MALLOC
139void *malloc();
140#endif
141#ifdef TRY_FREE
142void free();
143#endif
144END
145@if MALLOCPTRTYPE || Malloc_t
146case "$malloctype" in
147'')
148 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
149 malloctype='void *'
150 else
151 malloctype='char *'
152 fi
153 ;;
154esac
155echo "Your system wants malloc to return '$malloctype', it would seem." >&4
156@end
157
158@if Free_t
159case "$freetype" in
160'')
161 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
162 freetype='void'
163 else
164 freetype='int'
165 fi
166 ;;
167esac
168echo "Your system uses $freetype free(), it would seem." >&4
169@end
170$rm -f malloc.[co]
171@end