# Makefile for Borland C++ 5.5 on NT
# If you have the Borland assembler, remove "-DUSE_GENERIC"
#
bc=	   c:\Borland\BCC55
bcbin=	   $(bc)\bin
bclib=	   $(bc)\lib
bcinclude= $(bc)\include

gcinclude1 = $(bc)\gc6.2\include
gcinclude2 = $(bc)\gc6.2\cord

cc=	 $(bcbin)\bcc32
rc=	 $(bcbin)\brc32
lib=	 $(bcbin)\tlib
link=	 $(bcbin)\ilink32
cflags=  -O2 -R -v- -vi -H -H=gc.csm -I$(bcinclude);$(gcinclude1);$(gcinclude2) -L$(bclib) \
	 -w-pro -w-aus -w-par -w-ccc -w-rch -a4
defines= -DALL_INTERIOR_POINTERS -DUSE_GENERIC -DNO_GETENV -DJAVA_FINALIZATION -DGC_OPERATOR_NEW_ARRAY

.c.obj:
	$(cc) @&&|
	$(cdebug) $(cflags) $(cvars) $(defines) -o$* -c $*.c
|

.cpp.obj:
	$(cc) @&&|
	$(cdebug) $(cflags) $(cvars) $(defines) -o$* -c $*.cpp
|

.rc.res:
    $(rc) -i$(bcinclude) -r -fo$* $*.rc

XXXOBJS= XXXalloc.obj XXXreclaim.obj XXXallchblk.obj XXXmisc.obj \
    XXXmach_dep.obj XXXos_dep.obj XXXmark_rts.obj XXXheaders.obj XXXmark.obj \
    XXXobj_map.obj XXXblacklst.obj XXXfinalize.obj XXXnew_hblk.obj \
    XXXdbg_mlc.obj XXXmalloc.obj XXXstubborn.obj XXXdyn_load.obj \
    XXXtypd_mlc.obj XXXptr_chck.obj XXXgc_cpp.obj XXXmallocx.obj \
    XXXfnlz_mlc.obj

OBJS= $(XXXOBJS:XXX=)

all: gctest.exe cord\de.exe test_cpp.exe

$(OBJS) test.obj: include\private\gc_priv.h include\private\gc_hdrs.h include\gc.h include\private\gcconfig.h MAKEFILE

gc.lib: $(OBJS)
	del gc.lib
	$(lib) $* @&&|
	$(XXXOBJS:XXX=+)
|

gctest.exe: tests\test.obj gc.lib
    $(cc) @&&|
	$(cflags) -W -e$* tests\test.obj gc.lib
|

cord\tests\de.obj cord\tests\de_win.obj: include\cord.h \
    include\cord_pos.h cord\tests\de_win.h cord\tests\de_cmds.h

cord\de.exe: cord\cordbscs.obj cord\cordxtra.obj cord\tests\de.obj \
    cord\tests\de_win.obj cord\tests\de_win.res gc.lib
	$(cc) @&&|
	$(cflags) -W -e$* cord\cordbscs.obj cord\cordxtra.obj \
	cord\tests\de.obj cord\tests\de_win.obj gc.lib
|
    $(rc) cord\tests\de_win.res cord\de.exe

gc_cpp.obj: include\gc_cpp.h include\gc.h

gc_cpp.cpp: gc_cpp.cc
	copy gc_cpp.cc gc_cpp.cpp

test_cpp.cpp: tests\test_cpp.cc
	copy tests\test_cpp.cc test_cpp.cpp

test_cpp.exe: test_cpp.obj include\gc_cpp.h include\gc.h gc.lib
    $(cc) @&&|
	$(cflags) -W -e$* test_cpp.obj gc.lib
|

scratch:
    -del *.obj *.res *.exe *.csm cord\*.obj cord\*.res cord\*.exe cord\*.csm

clean:
      del gc.lib
      del *.obj
      del tests\test.obj
