?RCS: $Id: mallocsrc.U,v 3.0.1.2 1997/02/28 16:10:26 ram Exp $ ?RCS: ?RCS: Copyright (c) 1991-1993, Raphael Manfredi ?RCS: ?RCS: You may redistribute only under the terms of the Artistic Licence, ?RCS: as specified in the README file that comes with the distribution. ?RCS: You may reuse parts of this distribution only within the terms of ?RCS: that same Artistic Licence; a copy of which may be found at the root ?RCS: of the source tree for dist 3.0. ?RCS: ?RCS: $Log: mallocsrc.U,v $ ?RCS: Revision 3.0.1.2 1997/02/28 16:10:26 ram ?RCS: patch61: added support for Free_t, the type of free() ?RCS: patch61: replaced .o with $_o all over the place ?RCS: ?RCS: Revision 3.0.1.1 1994/05/06 15:10:46 ram ?RCS: patch23: added support for MYMALLOC, mainly for perl5 (ADO) ?RCS: ?RCS: Revision 3.0 1993/08/18 12:09:12 ram ?RCS: Baseline for dist 3.0 netwide release. ?RCS: ?MAKE:mallocsrc mallocobj usemymalloc malloctype d_mymalloc \ freetype: Myread \ Oldconfig package Guess Setvar rm cat +cc +ccflags Findhdr \ i_malloc i_stdlib sed libs _o ?MAKE: -pick add $@ %< ?S:usemymalloc: ?S: This variable contains y if the malloc that comes with this package ?S: is desired over the system's version of malloc. People often include ?S: special versions of malloc for effiency, but such versions are often ?S: less portable. See also mallocsrc and mallocobj. ?S: If this is 'y', then -lmalloc is removed from $libs. ?S:. ?S:mallocsrc: ?S: This variable contains the name of the malloc.c that comes with ?S: the package, if that malloc.c is preferred over the system malloc. ?S: Otherwise the value is null. This variable is intended for generating ?S: Makefiles. ?S:. ?S:d_mymalloc: ?S: This variable conditionally defines MYMALLOC in case other parts ?S: of the source want to take special action if MYMALLOC is used. ?S: This may include different sorts of profiling or error detection. ?S:. ?S:mallocobj: ?S: This variable contains the name of the malloc.o that this package ?S: generates, if that malloc.o is preferred over the system malloc. ?S: Otherwise the value is null. This variable is intended for generating ?S: Makefiles. See mallocsrc. ?S:. ?S:freetype: ?S: This variable contains the return type of free(). It is usually ?S: void, but occasionally int. ?S:. ?S:malloctype: ?S: This variable contains the kind of ptr returned by malloc and realloc. ?S:. ?C:Free_t: ?C: This variable contains the return type of free(). It is usually ?C: void, but occasionally int. ?C:. ?C:Malloc_t (MALLOCPTRTYPE): ?C: This symbol is the type of pointer returned by malloc and realloc. ?C:. ?H:#define Malloc_t $malloctype /**/ ?H:#define Free_t $freetype /**/ ?H:. ?C:MYMALLOC: ?C: This symbol, if defined, indicates that we're using our own malloc. ?C:. ?H:#$d_mymalloc MYMALLOC /**/ ?H:. ?LINT:change libs ?X: Cannot test for mallocsrc; it is the unit's name and there is a bug in ?X: the interpreter which defines all the names, even though they are not used. @if mallocobj : determine which malloc to compile in echo " " case "$usemymalloc" in ''|y*|true) dflt='y' ;; n*|false) dflt='n' ;; *) dflt="$usemymalloc" ;; esac rp="Do you wish to attempt to use the malloc that comes with $package?" . ./myread usemymalloc="$ans" case "$ans" in y*|true) usemymalloc='y' mallocsrc='malloc.c' mallocobj="malloc$_o" d_mymalloc="$define" ?X: Maybe libs.U should be dependent on mallocsrc.U, but then ?X: most packages that use dist probably don't supply their own ?X: malloc, so this is probably an o.k. comprpomise case "$libs" in *-lmalloc*) : Remove malloc from list of libraries to use echo "Removing unneeded -lmalloc from library list" >&4 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'` shift libs="$*" echo "libs = $libs" >&4 ;; esac ;; *) usemymalloc='n' mallocsrc='' mallocobj='' d_mymalloc="$undef" ;; esac @end @if MALLOCPTRTYPE || Malloc_t || Free_t : compute the return types of malloc and free echo " " $cat >malloc.c < #include #ifdef I_MALLOC #include #endif #ifdef I_STDLIB #include #endif #ifdef TRY_MALLOC void *malloc(); #endif #ifdef TRY_FREE void free(); #endif END @if MALLOCPTRTYPE || Malloc_t case "$malloctype" in '') if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then malloctype='void *' else malloctype='char *' fi ;; esac echo "Your system wants malloc to return '$malloctype', it would seem." >&4 @end @if Free_t case "$freetype" in '') if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then freetype='void' else freetype='int' fi ;; esac echo "Your system uses $freetype free(), it would seem." >&4 @end $rm -f malloc.[co] @end