Listing 6

EXENAME=testapp
DLLNAME=testlib

all: $(EXENAME).exe $(DLLNAME).dll

#### APPLICATION DEPENDENCY SECTION ####

APPOBJS=testapp.obj

$(EXENAME).exe: $(EXENAME).def $(EXENAME).res $(APPOBJS)
  tlink /Tw c0Wm $(APPOBJS), $(EXENAME),,IMPORT CWM, $(EXENAME).DEF
  rc $(EXENAME).RES

$(EXENAME).def: makefile
  copy &&|
NAME         $(EXENAME)
DESCRIPTION  'Test Application'
EXETYPE      WINDOWS
STUB         'WINSTUB.EXE'
CODE         PRELOAD MOVEABLE DISCARDABLE
DATA         PRELOAD MOVEABLE SINGLE
HEAPSIZE     5120
STACKSIZE    5120
| $(EXENAME).def

$(EXENAME).res: $(EXENAME).rc $(EXENAME).h
  rc -r -Ic:\bc\include $(EXENAME).rc

testapp.obj: testapp.cpp testapp.h testenum.h
  bcc -mm -WE -c testapp.cpp


#### DLL DEPENDENCY SECTION ####

DLLOBJS=testlib.obj

$(DLLNAME).dll: $(DLLOBJS) $(DLLNAME).def
    tlink /Twd c0dL $(DLLOBJS),$(DLLNAME),,cwl import,$(DLLNAME).def

$(DLLNAME).def: makefile
  copy &&|
LIBRARY     $(DLLNAME)
EXETYPE     WINDOWS
STUB        'WINSTUB.EXE'
DESCRIPTION 'Test Lib'
CODE        PRELOAD MOVEABLE DISCARDABLE
DATA        PRELOAD MOVEABLE SINGLE
HEAPSIZE    4096
| $(DLLNAME).def

testlib.obj: testlib.cpp testenum.h
  bcc -c -WDE -ml! testlib.cpp
