# Copyright (C) 1992 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # The GNU C Library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # You should have received a copy of the GNU Library General Public # License along with the GNU C Library; see the file COPYING.LIB. If # not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Makefile for mmalloc directory # # Directory containing source files. Don't clean up the spacing, # this exact string is matched for by the "configure" script. VPATH = @srcdir@ srcdir = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ datadir = @datadir@ mandir = @mandir@ man1dir = $(mandir)/man1 man2dir = $(mandir)/man2 man3dir = $(mandir)/man3 man4dir = $(mandir)/man4 man5dir = $(mandir)/man5 man6dir = $(mandir)/man6 man7dir = $(mandir)/man7 man8dir = $(mandir)/man8 man9dir = $(mandir)/man9 infodir = @infodir@ includedir = @includedir@ SHELL = @SHELL@ INSTALL = @INSTALL@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ AR = @AR@ AR_FLAGS = qv CFLAGS = -g -Wall -Wimplicit MAKEINFO = makeinfo RANLIB = @RANLIB@ RM = rm NSLIBTOOL = cc -dynamiclib # where to find makeinfo MAKEINFO=makeinfo SET_TEXINPUTS = TEXINPUTS=${TEXIDIR}:.:$(srcdir):$(READLINE_DIR):$$TEXINPUTS # Files which should be generated via 'info' and installed by 'install-info' INFO_DEPS = mmalloc.info # The TeX formatter TEX = tex PAGECHECK_SRC = @PAGECHECK_SRC@ PAGECHECK_OBJ = @PAGECHECK_OBJ@ TARGETLIB = libmmalloc.a CFILES = mcalloc.c mfree.c mmalloc.c mmcheck.c mmemalign.c mmstats.c \ mmtrace.c mrealloc.c mvalloc.c attach.c detach.c keys.c \ mmap-sup.c malloc-sup.c $(PAGECHECK_SRC) check-sup.c sbrk-sup.c HFILES = mmalloc.h OFILES = mcalloc.o mfree.o mmalloc.o mmcheck.o mmemalign.o mmstats.o \ mmtrace.o mrealloc.o mvalloc.o attach.o detach.o keys.o \ mmap-sup.o malloc-sup.o $(PAGECHECK_OBJ) check-sup.o sbrk-sup.o DEFS = @DEFS@ # The current default is to build a single object module with all the mmalloc # functions. To build a more traditional library, flip this macro definition. TARGETOBJS = $(OFILES) #TARGETOBJS = mm.o .c.o: $(CC) -c $(CFLAGS) $(DEFS) -I. -I$(srcdir)/../include $< # Do we want/need any config overrides? # STAGESTUFF = $(TARGETLIB) *.o all: $(TARGETLIB) info: $(INFO_DEPS) dvi: mmalloc.dvi clean-info: installcheck: mmalloc.info: mmalloc.texi $(MAKEINFO) -I $(srcdir) -o ./mmalloc.info mmalloc.texi # This file doesn't need texindex currently. mmalloc.dvi: mmalloc.texi $(SET_TEXINPUTS) $(TEX) mmalloc.texi rm -f mmalloc.?? mmalloc.??s mmalloc.log mmalloc.aux mmalloc.toc install-info: info $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(infodir) @list='$(INFO_DEPS)'; \ for file in $$list; do \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ if test -f $$d/$$ifile; then \ echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ else : ; fi; \ done; \ done $(POST_INSTALL) @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ done; \ else : ; fi uninstall-info: $(PRE_UNINSTALL) @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ ii=yes; \ else ii=; fi; \ list='$(INFO_DEPS)'; \ for file in $$list; do \ test -z "$$ii" \ || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ done $(NORMAL_UNINSTALL) list='$(INFO_DEPS)'; \ for file in $$list; do \ (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ done check: test1.c # $(CC) -g $(srcdir)/test1.c libmmalloc.a # This loses for Canadian cross (building mmalloc with a cross-compiler). # There is probably some dejagnu-ish solution (such as what we are doing # for gdb, perhaps). # ./a.out SYSTEM_FRAMEWORK = -framework System FRAMEWORK = mmalloc FRAMEWORK_ADDRESS = 0x0 FRAMEWORK_PREFIX = FRAMEWORK_SUFFIX = FRAMEWORK_VERSION_SUFFIX = FRAMEWORK_VERSION = A FRAMEWORK_OFILES = $(TARGETOBJS) FRAMEWORK_LIB = $(SYSTEM_FRAMEWORK) stamp-framework-headers: $(RM) -f stamp-framework stamp-framework-headers $(RM) -rf $(FRAMEWORK).framework mkdir -p $(FRAMEWORK).framework/Versions/$(FRAMEWORK_VERSION)/Headers mkdir -p $(FRAMEWORK).framework/Versions/$(FRAMEWORK_VERSION)/PrivateHeaders ln -s Versions/Current/Headers $(FRAMEWORK).framework/Headers ln -s Versions/Current/PrivateHeaders $(FRAMEWORK).framework/PrivateHeaders ln -s A $(FRAMEWORK).framework/Versions/Current cp -p $(srcdir)/*.h $(FRAMEWORK).framework/Versions/Current/Headers/ cp -p *.h $(FRAMEWORK).framework/Versions/Current/Headers/ touch stamp-framework-headers stamp-framework: $(FRAMEWORK_OFILES) $(RM) -f stamp-framework-headers $(MAKE) stamp-framework-headers mkdir -p $(FRAMEWORK).framework/Versions/$(FRAMEWORK_VERSION)/Resources ln -s Versions/Current/Resources $(FRAMEWORK).framework/Resources mkdir -p $(FRAMEWORK).framework/Versions/Current/Resources/English.lproj set -e; if [ "$(FRAMEWORK_SUFFIX)" != "" ]; then \ $(NSLIBTOOL) -arch $(HOST_ARCHITECTURE) -seg1addr $(FRAMEWORK_ADDRESS) -compatibility_version 1 -current_version 1 -install_name /System/Library/PrivateFrameworks/$(FRAMEWORK).framework/Versions/$(FRAMEWORK_VERSION)/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_VERSION_SUFFIX) -o $(FRAMEWORK).framework/Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_VERSION_SUFFIX) $(FRAMEWORK_OFILES) $(FRAMEWORK_LIB); \ ln -s $(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_VERSION_SUFFIX) $(FRAMEWORK).framework/Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_SUFFIX); \ ln -s Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_VERSION_SUFFIX) $(FRAMEWORK).framework/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_VERSION_SUFFIX); \ ln -s Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_SUFFIX) $(FRAMEWORK).framework/$(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_SUFFIX); \ ln -s $(FRAMEWORK_PREFIX)$(FRAMEWORK)$(FRAMEWORK_SUFFIX) $(FRAMEWORK).framework/$(FRAMEWORK); \ else \ $(NSLIBTOOL) -arch $(HOST_ARCHITECTURE) -seg1addr $(FRAMEWORK_ADDRESS) -compatibility_version 1 -current_version 1 -install_name /System/Library/PrivateFrameworks/$(FRAMEWORK).framework/Versions/$(FRAMEWORK_VERSION)/$(FRAMEWORK_PREFIX)$(FRAMEWORK) -o $(FRAMEWORK).framework/Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK) $(FRAMEWORK_OFILES) $(FRAMEWORK_LIB); \ ln -s Versions/Current/$(FRAMEWORK_PREFIX)$(FRAMEWORK) $(FRAMEWORK).framework/$(FRAMEWORK_PREFIX)$(FRAMEWORK); \ fi touch stamp-framework install: all install-info $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir) $(INSTALL_DATA) $(TARGETLIB) $(DESTDIR)$(libdir)/$(TARGETLIB)n $(RANLIB) $(DESTDIR)$(libdir)/$(TARGETLIB)n mv -f $(DESTDIR)$(libdir)/$(TARGETLIB)n $(DESTDIR)$(libdir)/$(TARGETLIB) uninstall: uninstall-info $(TARGETLIB): $(TARGETOBJS) $(RM) -rf $@ $(AR) $(AR_FLAGS) $@ $(TARGETOBJS) $(RANLIB) $@ $(OFILES) : $(HFILES) Makefile mm.o: $(HFILES) $(CFILES) $(CC) -c $(CFLAGS) $(DEFS) -I. -I$(srcdir)/../include $(srcdir)/mm.c .always.: # Do nothing. .PHONY: all etags tags ls clean stage1 stage2 .always. stage1: force -mkdir stage1 -mv -f $(STAGESTUFF) stage1 stage2: force -mkdir stage2 -mv -f $(STAGESTUFF) stage2 stage3: force -mkdir stage3 -mv -f $(STAGESTUFF) stage3 stage4: force -mkdir stage4 -mv -f $(STAGESTUFF) stage4 against=stage2 comparison: force for i in *.o ; do cmp $$i $(against)/$$i || exit 1 ; done de-stage1: force -(cd stage1 ; mv -f * ..) -rmdir stage1 de-stage2: force -(cd stage2 ; mv -f * ..) -rmdir stage2 de-stage3: force -(cd stage3 ; mv -f * ..) -rmdir stage3 de-stage4: force -(cd stage4 ; mv -f * ..) -rmdir stage4 etags tags: TAGS TAGS: $(CFILES) etags `for i in $(HFILES) $(CFILES); do echo $(srcdir)/$$i ; done` ls: @echo Makefile $(HFILES) $(CFILES) # Need to deal with profiled libraries, too. mostlyclean clean: rm -f *.a *.o core errs *~ \#* TAGS *.E a.out errors distclean: clean rm -f config.cache config.log config.status rm -f Makefile depend maintainer-clean realclean: distclean clean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f mmalloc.info force: Makefile: Makefile.in config.status $(SHELL) config.status config.status: configure $(SHELL) config.status --recheck