#
# MAKEFILE
# Polyline Object Chapter 11
#
# Copyright (c)1993 Microsoft Corporation, All Rights Reserved
#
# Kraig Brockschmidt, Software Design Engineer
# Microsoft Systems Developer Relations
#
# Internet  :  kraigb@microsoft.com
# Compuserve:  >INTERNET:kraigb@microsoft.com
#

#Add '#' to the next line for 'noisy' operation
!CMDSWITCHES +s

#
#Compiler flags
#Use "SET RETAIL=1" from MS-DOS to compile non-debug version.
#
!ifndef RETAIL
CFLAGS  = -c -Od -AM -Zipe -G2s -W3 -GA -GEd -Aw
LINK    = /al:16/ONERROR:NOEXE/CO
DEFS    = -DSTRICT -D_WINDLL -DDEBUG
!else
CFLAGS  = -c -Oat -AM -Zpe -G2s -W3 -GA -GEd -Aw
LINK    = /al:16/ONERROR:NOEXE
DEFS    = -DSTRICT -D_WINDLL
!endif

.SUFFIXES: .h .obj .exe .cpp .res .rc

TARGET  = polyline

goal:   precomp.pch $(TARGET).dll

clean:
    del *.pch
    del *.obj
    del *.res
    del *.dll

PCHFLAGS= -Yu$(TARGET).h -Fpprecomp.pch

OLELIBS = compobj storage ole2
LIBS    = libw mdllcew commdlg classmdi $(OLELIBS)


INCLS   = $(TARGET).h resource.h
OBJS1   = $(TARGET).obj dllpoly.obj polywin.obj
OBJS2   = ipolylin.obj iperstor.obj idataobj.obj
OBJS3   = ioleobj.obj iviewobj.obj
OBJS    = $(OBJS1) $(OBJS2) $(OBJS3)
RCFILES =


#####

.cpp.obj:
    echo +++++++++
    echo Compiling $*.cpp
    cl -nologo $(CFLAGS) $(PCHFLAGS) $(DEFS) $*.cpp

.rc.res:
    echo +++++++++
    echo Compiling Resources
    rc -r $(DEFS) $*.rc

precomp.pch : $(TARGET).h
    echo +++++++++
    echo Precompiling $(TARGET).h
    cl $(CFLAGS) $(DEFS) -Yc$(TARGET).h -Fpprecomp.pch -Foprecomp precomp.cpp


#This rule builds a linker response file on the fly depending on debug flags
$(TARGET).dll : $(OBJS) $(TARGET).res $(TARGET).def
    echo ++++++++++
    echo Linking $@
    echo libentry.obj precomp.obj +              > $(TARGET).lrf
    echo $(OBJS1)+                              >> $(TARGET).lrf
    echo $(OBJS2)+                              >> $(TARGET).lrf
    echo $(OBJS3)                               >> $(TARGET).lrf

    echo $(TARGET).dll $(LINK)                  >> $(TARGET).lrf
    echo nul/li                                 >> $(TARGET).lrf
    echo $(LIBS)/NOD/NOE                        >> $(TARGET).lrf
    echo $(TARGET).def                          >> $(TARGET).lrf

    link @$(TARGET).lrf
    rc -v $(TARGET).res $(TARGET).dll
    del $(TARGET).lrf


##### Dependencies #####

#This rule is defined separately to avoid precompiled headers where
#INITGUIDS is defined.

dllpoly.obj   : dllpoly.cpp   $(INCLS)
    echo +++++++++
    echo Compiling $*.cpp
    cl -nologo $(CFLAGS) $(DEFS) $*.cpp

$(TARGET).obj : $(TARGET).cpp $(INCLS)
polywin.obj   : polywin.cpp   $(INCLS)
ipolylin.obj  : ipolylin.cpp  $(INCLS)
iperstor.obj  : iperstor.cpp  $(INCLS)
idataobj.obj  : idataobj.cpp  $(INCLS)
ioleobj.obj   : ioleobj.cpp   $(INCLS)
iviewobj.obj  : iviewobj.cpp  $(INCLS)
$(TARGET).res : $(TARGET).rc  resource.h $(RCFILES)
