#################################################
#						#
# Makefile for CLIB\Memory directory		#
#						#
# Routines contained in this directory are:	#
#		addlist 			#
#		addseg				#
#		alloca				#
#		bcalloc 			#
#		bexpand 			#
#		bdata				#
#		bfreeseg			#
#		bheapadd			#
#		bheapchk			#
#		bheapmin			#
#		bheapseg			#
#		bheapwal			#
#		bmalloc 			#
#		bmsize				#
#		brealloc			#
#		calloc				#
#		dllheap 			#
#		fcalloc 			#
#		fdata				#
#		fexpand 			#
#		fheapchk			#
#		fheapmin			#
#		fheapwal			#
#		findseg 			#
#		fmalloc 			#
#		fmsize				#
#		frealloc			#
#		free				#
#		growscan			#
#		growseg 			#
#		halloc				#
#		headchk 			#
#		heapadd 			#
#		initseg 			#
#		linkseg 			#
#		malloc				#
#		minseg				#
#		ncalloc 			#
#		newseg				#
#		nexpand 			#
#		nfreect 			#
#		nheapchk			#
#		nheapmin			#
#		nheapwal			#
#		nmalloc 			#
#		_nmalloc (varstck nmalloc)	#
#		nmemavl 			#
#		nmemmax 			#
#		nmsize				#
#		nrealloc			#
#		realloc 			#
#		resize				#
#		scanseg 			#
#		searchsg			#
#		setlist 			#
#		setseg				#
#		unlinksg			#
#		walklist			#
#		walkone 			#
#		walkseg 			#
#		varstck 			#
#################################################


#########################################
#					#
# Object lists				#
#					#
#########################################

# Common objects
COMM_O= \
	$(LIBC)\addlist.obj \
	$(LIBC)\addseg.obj \
	$(LIBC)\alloca.obj \
	$(LIBC)\bcalloc.obj \
	$(LIBC)\bdata.obj \
	$(LIBC)\bexpand.obj \
	$(LIBC)\bfreeseg.obj \
	$(LIBC)\bheapadd.obj \
	$(LIBC)\bheapchk.obj \
	$(LIBC)\bheapmin.obj \
	$(LIBC)\bheapseg.obj \
	$(LIBC)\bheapwal.obj \
	$(LIBC)\bmalloc.obj \
	$(LIBC)\bmsize.obj \
	$(LIBC)\brealloc.obj \
	$(LIBC)\calloc.obj \
	$(LIBC)\expand.obj \
	$(LIBC)\fcalloc.obj \
	$(LIBC)\fdata.obj \
	$(LIBC)\fexpand.obj \
	$(LIBC)\fheapchk.obj \
	$(LIBC)\fheapmin.obj \
	$(LIBC)\fheapwal.obj \
	$(LIBC)\findseg.obj \
	$(LIBC)\fmalloc.obj \
	$(LIBC)\fmsize.obj \
	$(LIBC)\frealloc.obj \
	$(LIBC)\free.obj \
	$(LIBC)\heapadd.obj \
	$(LIBC)\headchk.obj \
	$(LIBC)\initseg.obj \
	$(LIBC)\linkseg.obj \
	$(LIBC)\malloc.obj \
	$(LIBC)\minseg.obj \
	$(LIBC)\msize.obj \
	$(LIBC)\ncalloc.obj \
	$(LIBC)\nexpand.obj \
	$(LIBC)\nfreect.obj \
	$(LIBC)\nheapchk.obj \
	$(LIBC)\nheapmin.obj \
	$(LIBC)\nheapwal.obj \
	$(LIBC)\nmalloc.obj \
	$(LIBC)\_nmalloc.obj \
	$(LIBC)\nmemavl.obj \
	$(LIBC)\nmemmax.obj \
	$(LIBC)\nmsize.obj \
	$(LIBC)\nrealloc.obj \
	$(LIBC)\realloc.obj \
	$(LIBC)\resize.obj \
	$(LIBC)\scanseg.obj \
	$(LIBC)\searchsg.obj \
	$(LIBC)\setlist.obj \
	$(LIBC)\setseg.obj \
	$(LIBC)\walklist.obj \
	$(LIBC)\walkone.obj \
	$(LIBC)\walkseg.obj \
	..\varstck.obj	    \
	$(LIBC)\ndelete.obj \
	$(LIBC)\fdelete.obj \
	$(LIBC)\hdelete.obj \
	$(LIBC)\bdelete.obj \
	$(LIBC)\nhandler.obj \
	$(LIBC)\fhandler.obj \
	$(LIBC)\hhandler.obj \
	$(LIBC)\bhandler.obj \
	$(LIBC)\nnew.obj \
	$(LIBC)\fnew.obj \
	$(LIBC)\hnew.obj \
	$(LIBC)\bnew.obj


# DOS objects
DOS_O=	\
	$(LIBC)\dos\growscan.obj \
	$(LIBC)\dos\growseg.obj \
	$(LIBC)\dos\halloc.obj \
	$(LIBC)\dos\newseg.obj \
	$(LIBC)\dos\unlinksg.obj


# Windows objects
WIN_O=	\
	$(LIBC)\addlist.obj \
	$(LIBC)\addseg.obj \
	$(LIBC)\bcalloc.obj \
	$(LIBC)\bexpand.obj \
	$(LIBC)\bfreeseg.obj \
	$(LIBC)\bheapadd.obj \
	$(LIBC)\bheapchk.obj \
	$(LIBC)\bheapmin.obj \
	$(LIBC)\bheapseg.obj \
	$(LIBC)\bheapwal.obj \
	$(LIBC)\bmalloc.obj \
	$(LIBC)\bmsize.obj \
	$(LIBC)\brealloc.obj \
	$(LIBC)\calloc.obj \
	$(LIBC)\fcalloc.obj \
	$(LIBC)\fexpand.obj \
	$(LIBC)\fheapchk.obj \
	$(LIBC)\fheapmin.obj \
	$(LIBC)\fheapwal.obj \
	$(LIBC)\findseg.obj \
	$(LIBC)\fmalloc.obj \
	$(LIBC)\fmsize.obj \
	$(LIBC)\frealloc.obj \
	$(LIBC)\heapadd.obj \
	$(LIBC)\headchk.obj \
	$(LIBC)\initseg.obj \
	$(LIBC)\linkseg.obj \
	$(LIBC)\ncalloc.obj \
	$(LIBC)\nheapmin.obj \
	$(LIBC)\minseg.obj \
	$(LIBC)\resize.obj \
	$(LIBC)\scanseg.obj \
	$(LIBC)\searchsg.obj \
	$(LIBC)\setlist.obj \
	$(LIBC)\setseg.obj \
	$(LIBC)\walklist.obj \
	$(LIBC)\walkone.obj \
	$(LIBC)\walkseg.obj \
	\
	$(LIBC)\dos\growseg.obj \
	$(LIBC)\dos\newseg.obj \
	$(LIBC)\nheap.obj \
	$(LIBC)\nheap2.obj \
	$(LIBC)\dos\unlinksg.obj \
	$(LIBC)\dos\whalloc.obj \
	$(LIBC)\dos\whseg.obj

WINDLL_O= \
	$(LIBC)\bdata.obj \
	$(LIBC)\fdata.obj \
	$(LIBC)\freelist.obj \
	$(LIBC)\dos\growseg.obj \
	$(LIBC)\dos\newseg.obj	\
	$(LIBC)\dos\whalloc.obj \
	$(LIBC)\dos\whseg.obj


#########################################
#					#
# Target Dependency listings		#
#					#
#########################################

libc: $(COMM_O) $(DOS_O)



libcw: $(WIN_O)

libcwdll:  $(WINDLL_O)


#################################################
#						#
#	Dependency Listings			#
#						#
#################################################

$(LIBC)\addlist.obj: addlist.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\addlist.obj addlist.asm

$(LIBC)\addseg.obj: addseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\addseg.obj addseg.asm

$(LIBC)\alloca.obj: alloca.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\alloca.obj alloca.asm

$(LIBC)\bcalloc.obj: bcalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bcalloc.obj bcalloc.asm

$(LIBC)\bdata.obj: bdata.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bdata.obj bdata.asm

$(LIBC)\bexpand.obj: bexpand.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bexpand.obj bexpand.asm

$(LIBC)\bfreeseg.obj: bfreeseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bfreeseg.obj bfreeseg.asm

$(LIBC)\bheapadd.obj: bheapadd.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bheapadd.obj bheapadd.asm

$(LIBC)\bheapchk.obj: bheapchk.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bheapchk.obj bheapchk.asm

$(LIBC)\bheapmin.obj: bheapmin.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bheapmin.obj bheapmin.asm

$(LIBC)\bheapseg.obj: bheapseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bheapseg.obj bheapseg.asm

$(LIBC)\bheapwal.obj: bheapwal.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bheapwal.obj bheapwal.asm

$(LIBC)\bmalloc.obj: bmalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\bmalloc.obj bmalloc.asm

$(LIBC)\bmsize.obj: bmsize.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\bmsize.obj bmsize.asm

$(LIBC)\brealloc.obj: brealloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\brealloc.obj brealloc.asm

$(LIBC)\calloc.obj: calloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\calloc.obj calloc.asm

$(LIBC)\expand.obj: expand.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\expand.obj expand.asm

$(LIBC)\fcalloc.obj: calloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -D_FARHEAP -Fo$(LIBC)\fcalloc.obj calloc.asm

$(LIBC)\fdata.obj: fdata.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fdata.obj fdata.asm

$(LIBC)\fexpand.obj: fexpand.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fexpand.obj fexpand.asm

$(LIBC)\fheapchk.obj: fheapchk.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fheapchk.obj fheapchk.asm

$(LIBC)\fheapmin.obj: fheapmin.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fheapmin.obj fheapmin.asm

$(LIBC)\fheapwal.obj: fheapwal.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fheapwal.obj fheapwal.asm

$(LIBC)\findseg.obj: findseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\findseg.obj findseg.asm

$(LIBC)\fmalloc.obj: fmalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\fmalloc.obj fmalloc.asm

$(LIBC)\fmsize.obj: fmsize.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\fmsize.obj fmsize.asm

$(LIBC)\frealloc.obj: frealloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\frealloc.obj frealloc.asm

$(LIBC)\free.obj: free.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\free.obj free.asm

$(LIBC)\heapadd.obj: heapadd.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\heapadd.obj heapadd.asm

$(LIBC)\headchk.obj: headchk.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\headchk.obj headchk.asm

$(LIBC)\initseg.obj: initseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\initseg.obj initseg.asm

$(LIBC)\linkseg.obj: linkseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\linkseg.obj linkseg.asm

$(LIBC)\malloc.obj: malloc.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\malloc.obj malloc.asm

$(LIBC)\minseg.obj: minseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\minseg.obj minseg.asm

$(LIBC)\msize.obj: msize.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\msize.obj msize.asm

$(LIBC)\ncalloc.obj: calloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -D_NEARHEAP -Fo$(LIBC)\ncalloc.obj calloc.asm

$(LIBC)\nexpand.obj: nexpand.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nexpand.obj nexpand.asm

$(LIBC)\nfreect.obj: nfreect.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nfreect.obj nfreect.asm

$(LIBC)\nheapchk.obj: nheapchk.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nheapchk.obj nheapchk.asm

$(LIBC)\nheapmin.obj: nheapmin.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nheapmin.obj nheapmin.asm

$(LIBC)\nheapwal.obj: nheapwal.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nheapwal.obj nheapwal.asm

$(LIBC)\nmalloc.obj: nmalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nmalloc.obj nmalloc.asm

$(LIBC)\_nmalloc.obj: nmalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -DVARSTCK -Fo$(LIBC)\_nmalloc.obj nmalloc.asm

$(LIBC)\nmemavl.obj: nmemavl.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nmemavl.obj nmemavl.asm

$(LIBC)\nmemmax.obj: nmemmax.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nmemmax.obj nmemmax.asm

$(LIBC)\nmsize.obj: nmsize.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\nmsize.obj nmsize.asm

$(LIBC)\nrealloc.obj: nrealloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\nrealloc.obj nrealloc.asm

$(LIBC)\realloc.obj: realloc.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\realloc.obj realloc.asm

$(LIBC)\resize.obj: resize.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\resize.obj resize.asm

$(LIBC)\scanseg.obj: scanseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\scanseg.obj scanseg.asm

$(LIBC)\searchsg.obj: searchsg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\searchsg.obj searchsg.asm

$(LIBC)\setlist.obj: setlist.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\setlist.obj setlist.asm

$(LIBC)\setseg.obj: setseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\setseg.obj setseg.asm

$(LIBC)\walklist.obj: walklist.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\walklist.obj walklist.asm

$(LIBC)\walkone.obj: walkone.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\walkone.obj walkone.asm

$(LIBC)\walkseg.obj: walkseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\walkseg.obj walkseg.asm

..\varstck.obj: varstck.asm $(ASMSTD)
	$(MM) -Fo..\varstck.obj varstck.asm

#
# C++ heap
#

$(LIBC)\ndelete.obj: delete.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_NEAR_NEW_ -Fo$@ delete.cxx

$(LIBC)\fdelete.obj: delete.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_FAR_NEW_ -Fo$@ delete.cxx

$(LIBC)\hdelete.obj: delete.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_HUGE_NEW_ -Fo$@ delete.cxx

$(LIBC)\bdelete.obj: delete.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_BASED_NEW_ -Fo$@ delete.cxx

$(LIBC)\nhandler.obj: handler.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\sizeptr.h $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_NEAR_NEW_ -Fo$@ handler.cxx

$(LIBC)\fhandler.obj: handler.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\sizeptr.h $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_FAR_NEW_ -Fo$@ handler.cxx

$(LIBC)\hhandler.obj: handler.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\sizeptr.h $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_HUGE_NEW_ -Fo$@ handler.cxx

$(LIBC)\bhandler.obj: handler.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\sizeptr.h $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_BASED_NEW_ -Fo$@ handler.cxx

$(LIBC)\nnew.obj: new.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_NEAR_NEW_ -Fo$@ new.cxx

$(LIBC)\fnew.obj: new.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_FAR_NEW_ -Fo$@ new.cxx

$(LIBC)\hnew.obj: new.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_HUGE_NEW_ -Fo$@ new.cxx

$(LIBC)\bnew.obj: new.cxx $(INCLUDE)\internal.h $(INCLUDE)\malloc.h \
	    $(INCLUDE)\new.h
	$(CCXX) $(MEM) -D_BASED_NEW_ -Fo$@ new.cxx


$(LIBC)\dos\growscan.obj: growscan.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\dos\growscan.obj growscan.asm

$(LIBC)\dos\growseg.obj: growseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc $(ASMINC)\msdos.inc	$(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\growseg.obj growseg.asm

$(LIBC)\dos\halloc.obj: dos\halloc.asm $(ASMSTD) \
		$(ASMINC)\msdos.inc
	$(MM) -Fo$(LIBC)\dos\halloc.obj dos\halloc.asm

$(LIBC)\dos\newseg.obj: newseg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc $(ASMINC)\msdos.inc
	$(MM) -Fo$(LIBC)\dos\newseg.obj newseg.asm

$(LIBC)\dos\unlinksg.obj: unlinksg.asm $(ASMSTD) \
		$(ASMINC)\heap.inc $(ASMINC)\msdos.inc
	$(MM) -Fo$(LIBC)\dos\unlinksg.obj unlinksg.asm



$(LIBC)\freelist.obj: freelist.asm $(ASMSTD) \
		$(ASMINC)\heap.inc
	$(MM) -Fo$(LIBC)\freelist.obj freelist.asm

$(LIBC)\dos\whalloc.obj: windows\halloc.asm $(ASMSTD) \
		$(ASMINC)\msdos.inc $(ASMINC)\heap.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\whalloc.obj windows\halloc.asm

$(LIBC)\nheap.obj: windows\nheap.c \
		$(INCLUDE)\windows.h $(INCLUDE)\malloc.h \
		$(INCLUDE)\sizeptr.h $(INCLUDE)\stddef.h
	$(CC) $(MEM) -Fo$(LIBC)\nheap.obj windows\nheap.c

$(LIBC)\nheap2.obj: windows\nheap2.c \
		$(INCLUDE)\windows.h $(INCLUDE)\malloc.h \
		$(INCLUDE)\sizeptr.h $(INCLUDE)\stddef.h
	$(CC) $(MEM) -Fo$(LIBC)\nheap2.obj windows\nheap2.c

$(LIBC)\dos\whseg.obj: windows\whseg.c \
		$(INCLUDE)\malloc.h $(INCLUDE)\stddef.h \
		$(INCLUDE)\string.h
	$(CC) $(MEM) -Fo$(LIBC)\dos\whseg.obj windows\whseg.c

