#----------------------------------------------------------------------------
#
# Description:
#   Make File Header for Internet Software Development Kit
#   Based in large part on BkOffice.Mak from the BackOffice SDK
#
# Copyright:
#   Copyright (C) Microsoft Corp. 1995-1996.  All Rights Reserved.
#
#----------------------------------------------------------------------------

!ifndef _INETSDK_MAK_       # Prevent multiple inclusions
_INETSDK_MAK_ = 1

#*********************************************
#
# Parameter Checking and Defaults
#
#*********************************************
!ifndef Proj
!     ERROR Component name (Proj) has not been defined.
!endif

!ifndef INCLUDE
!   ERROR INCLUDE variable is empty; must include at least system include directory
!endif

!ifndef LIB
!   ERROR LIB variable is empty; must include at least system lib directory
!endif

!if !exist ($(MSTOOLS)\Include\WinCrypt.h)
!   MESSAGE WARNING!  Portions of this SDK require that the January 1996 (or later) Win32 SDK is installed.
!   MESSAGE This SDK was not found.  Build problems are likely.  You have been warned.
!endif

!ifdef USE_ISAPI

!ifndef WWWSCRIPTS
!   MESSAGE WWWSCRIPTS environment variable is empty; defaulting to .
WWWSCRIPTS = .
!endif

!ifndef WWWROOT
!   MESSAGE WWWROOT environment variable is empty; defaulting to .
WWWROOT = .
!endif

!endif # USE_ISAPI

!if defined(clean)
$(Proj): Clean
!else
$(Proj): All
!endif

!if defined(nodebug)
BLDTYPE=Retail
!endif

!if "$(BLDTYPE)" == "Retail" | "$(BLDTYPE)" == "RETAIL" | "$(BLDTYPE)" == "retail" | "$(BLDTYPE)" == "RTL" | "$(BLDTYPE)" == "rtl"
BLDTYPE=Retail
!else if "$(BLDTYPE)" == "Profile" | "$(BLDTYPE)" == "PROFILE" | "$(BLDTYPE)" == "profile"
BLDTYPE=Profile
!else if "$(BLDTYPE)" == "Debug" | "$(BLDTYPE)" == "DEBUG" | "$(BLDTYPE)" == "debug" | "$(BLDTYPE)" == "DBG" | "$(BLDTYPE)" == "dbg"
BLDTYPE=Debug
!else ifndef BLDTYPE
BLDTYPE=Debug
!else
!   ERROR BLDTYPE must be either Retail, Profile or Debug.
!endif   

!if "$(BLDTYPE)" == "Retail"
nodebug=1
!endif

!ifndef CALL
CALL=C
!endif

!ifndef PACK
PACK=YES
!endif

!ifndef LOG
LOG=YES
!endif

!ifndef WARNING_LEVEL
WARNING_LEVEL=3
!endif

!ifndef PROCESSOR_ARCHITECTURE
PROCESSOR_ARCHITECTURE = x86
!endif # default to x86

!ifndef CPU
CPU=$(PROCESSOR_ARCHITECTURE)
!if "$(CPU)"=="x86" | "$(CPU)"=="X86"
CPU = i386
!endif
!endif

!ifndef APPVER
APPVER=4.0
!endif

!ifndef USE_EXCHANGE
!include <win32.mak>
!endif

# Save build args for any recursive nmakes 
BLDARGS= BLDTYPE=$(BLDTYPE) LOG=$(LOG) CPU=$(CPU)

#*********************************************
#
# Paths
#
#*********************************************

!ifndef BKOFFICE
!ifdef PROJROOT
BKOFFICE=$(PROJROOT)\        # must add trailing backslash
!else
BKOFFICE=\BkOffice\          # assume a reasonable default
!endif
!endif

!ifdef MAKEDIRS
MkDest=
!include $(MAKEDIRS)
!else
ResDir=.
ObjDir=$(BLDTYPE)
IncDir=$(BKOFFICE)Include
LibDir=$(BKOFFICE)Lib

INCLUDE=$(ObjDir);$(IncDir);$(INCLUDE);
LIB=$(LibDir);$(LIB);

# Win95 doesn't support "&" on command line
MkDest=@if not exist $(ObjDir) md $(ObjDir)

MkWWWDest=@for %d in ($(WWWROOT)\SDK $(WWWROOT)\SDK\$(Proj) $(WWWSCRIPTS)\SDK) do @$(COMSPEC) /c if not exist %d md %d

!endif

# ObjList is used for making .Libs from .Defs, and as a convenience in other places.

!ifndef ObjList
ObjList=$(ObjDir)\$(@B).OBJ
!endif

#*********************************************
#
# Tools
#
#*********************************************

MAKEEXE = nmake
IMPLIB  = lib
CC      = cl
LIBU    = lib
LINK    = link
RC      = rc
MC      = mc
HC      = start /wait hcrtf


#*********************************************
#
# Flags
#
#*********************************************

# CL is for all C and C++ files
#   -WX     Warnings as errors
#   -J      char becomes unsigned char
#   
CL=$(cflags) -c -W$(WARNING_LEVEL) -J -Fo$@ /nologo $(CL)

# LFLAGS is for all links
LFLAGS=-nologo -nodefaultlib -machine:$(CPU) -out:$@ -incremental:no -pdb:none $(LFLAGS)

# DLLFLAGS is for linking DLLs
DLLFLAGS=-dll -map:$(ObjDir)\$(@B).map $(DLLFLAGS)

# LIBFLAGS is for making libraries
LIBFLAGS=-nologo -machine:$(CPU) -out:$@ $(LIBFLAGS)

# RFLAGS is for Windows resources
RFLAGS= -I$(ResDir) -fo$@ -DWIN32 $(noansi) -r -D_WIN32 $(RFLAGS) 

# MFLAGS is for the message compiler
MFLAGS=-v -c -s -h $(ObjDir) -r $(ObjDir) -x $(ObjDir) $(MFLAGS)

# MRFLAGS is for the resource compiler when used after the message compiler
MRFLAGS=-l 409 -r -x -i$(ObjDir) $(MRFLAGS)

# HFLAGS is for the help compiler 
HFLAGS=-xn

#---------------------------------------------
# Calling convention Flag
#---------------------------------------------

!if "$(CALL)"=="PASCAL"
CL=-Gc $(CL)
!endif

#---------------------------------------------
# Function Packaging Flag
#---------------------------------------------

!if "$(PACK)" == "YES"
CL=-Gy $(CL)
cDefines=-Gy $(cDefines)
!endif

#---------------------------------------------
# Output Redirection
#---------------------------------------------
!if "$(LOG)" == "NO"
LogCmd=
!else
LogCmd= >> $(ObjDir)\$(Proj).Out
!endif 

#---------------------------------------------
# Optimization Flags
#---------------------------------------------
!if "$(BLDTYPE)" == "Retail"
CL=-O2 $(CL)
!else if "$(BLDTYPE)" == "Profile"
CL=-Od -Z7 -Gh $(CL)
!else
CL=-Od -Z7 $(CL)
!endif

#---------------------------------------------
# CPU specific Flags
#---------------------------------------------
!if "$(CPU)" == "I386"
CL = $(CL) -D_X86_=1
scall  = -Gz
lflags   = $(lflags) -align:0x1000
!endif

!if "$(CPU)" == "MIPS"
CL = $(CL) -D_MIPS_=1
scall  =
!endif

!if "$(CPU)" == "PPC"
CL = $(CL) -D_PPC_=1
scall  =
lflags   = $(lflags) -ignore:4078
!endif

!if "$(CPU)" == "ALPHA"
CL = $(CL) -D_ALPHA_=1
scall  =
!endif

#---------------------------------------------
# Windows version
#---------------------------------------------
!if "$(APPVER)" == "4.0"
CL = $(CL) -DWINVER=0x0400
rflags=$(rflags) -DWINVER=0x0400
!endif

#---------------------------------------------
# Additional MFC Flags
#---------------------------------------------

!ifdef Use_MFC
CL= $(CL) /GX /DSTRICT /DWIN32 /D_WINDOWS /D_MBCS /D_WINDLL 
CL= $(CL) /D_USRDLL -D_AFX_NO_BSTR_SUPPORT /D_AFXDLL

RFLAGS = $(RFLAGS) /DSTRICT /DWIN32 /D_WINDOWS /D_MBCS /D_WINDLL /D_USRDLL -D_AFX_NO_BSTR_SUPPORT /D_AFXDLL

!if "$(BLDTYPE)"=="Debug"
CL= $(CL) /D_DEBUG
RFLAGS = $(RFLAGS) /D_DEBUG
!endif # BLDTYPE == Debug

!ifdef crtdll                                 # Use DLL CRT? (which is multithreaded)
crtflags = -MD$(DbgLibFlag) $(crtflags)
!elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
crtflags = -ML$(DbgLibFlag) $(crtflags)
!elseif defined(crtmt)                        # use Multithreaded CRT?
crtflags = -MT$(DbgLibFlag) $(crtflags)
!else                                         # default to crtdll
crtflags = -MD$(DbgLibFlag) $(crtflags)
!endif                                        # ifdef crtdll/else crtst/crtmt/else

!endif # Use_MFC

#---------------------------------------------
# BaseCtl Framework Flags
#---------------------------------------------
!ifdef USE_BASECTL

# flags to support the BaseCtl framework.  Only DLLs are supported.

dll = 1

# These are "extra" libs beyond the standard set that BaseCtl controls need

libs= urlmon.lib wininet.lib shell32.lib oleaut32.lib

!if !exist($(INETSDK)\Samples\BaseCtl\Include)
!  error INETSDK environment variable must point to the root of the ActiveX SDK.
!endif

!ifdef nodebug
libs = $(libs) $(INETSDK)\Samples\BaseCtl\Lib\CtlFwR32.Lib
!else
libs = $(libs) $(INETSDK)\Samples\BaseCtl\Lib\CtlFwD32.Lib
!endif

# Commands to be added to the compile line... in this case to locate headers and to
# override the warning level on certain behaviors that VC++ 4.1 started flagging as
# warnings that causes warnigns in system headers.

cDefines= -I$(INETSDK)\Samples\BaseCtl\Include $(cDefines) -FI$(INETSDK)\Samples\BaseCtl\Include\VC41Warn.h
RFLAGS= -I$(INETSDK)\Samples\BaseCtl\Include $(RFLAGS)

linkflags = $(linkflags) -Def:$(Proj).Def

Register: $(ObjDir)\$(Proj).Ocx
  regsvr32 /s $?

# provide a standard rule for Odl generated headers named $(ObjDir)\$(Proj)Ifc.h

$(ObjDir)\$(Proj)Ifc.h $(ObjDir)\$(Proj).Tlb: $(Proj).Odl
  $(MkDest)
  mktyplib /DWIN32 -I$(INETSDK)\Samples\BaseCtl\Include /h $(ObjDir)\$(Proj)Ifc.h /tlb $(ObjDir)\$(Proj).tlb $(Proj).Odl

!endif # USE_BASECTL

#---------------------------------------------
# Build Type Flags  (Retail/Debug)
#---------------------------------------------

!if "$(BLDTYPE)"=="Retail"
CL=-DSHIP $(CL)
LFLAGS = $(LFLAGS) -release
!else if "$(BLDTYPE)"=="Profile"
CL=-DDEBUG -DTEST -DPROFILE $(CL)
LFLAGS = $(LFLAGS) -debug:mapped,partial -debugtype:coff -PROFILE
libs = $(libs) CAP.LIB
!else 
CL=-DDEBUG -DTEST $(CL) 
LFLAGS = $(LFLAGS) -debug:full -debugtype:cv
!endif


#---------------------------------------------
# Determine CRT Flags
#---------------------------------------------

!ifdef crtdll                                 # Use DLL CRT? (which is multithreaded)
crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT -D_DLL
!elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
crtflags = -DWIN32 $(noansi) -D_WIN32
!elseif defined(crtmt)                        # use Multithreaded CRT?
crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT
!else                                         # default to crtdll
crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT -D_DLL
!endif                                        # ifdef crtdll/else crtst/crtmt/else

#---------------------------------------------
# Determine app type Flags (console, gui, or DLL)
#---------------------------------------------

!if defined(console)                          # console app
linkflags=$(linkflags) -subsystem:console -entry:mainCRTStartup
!elseif !defined(dll)                         # not a dll, default to gui app
linkflags=$(linkflags) -subsystem:windows -entry:WinMainCRTStartup
!endif                                        # ifdef console/else



#*********************************************
#
# Libraries
#
#*********************************************

!if "$(BLDTYPE)"=="Retail"
DbgLibFlag =
!else
DbgLibFlag = d
!endif

#---------------------------------------------
# Back Office SDK specific
#---------------------------------------------
!ifdef USE_SNA
libs=$(libs) fmistr32.lib ihvLink.lib snacli.lib wappc32.lib wcpic32.lib
libs=$(libs) wincsv32.lib winrui32.lib winsli32.lib
!endif # USE_SNA

!ifdef USE_SQL
libs=$(libs) ntwdbLib.lib
!endif # USE_SQL

!ifdef USE_ODS
libs=$(libs) opends60.lib
!endif # USE_ODS

!if defined(USE_MSM) || defined(USE_SMS)
libs=$(libs) smsapi.lib objectty.lib
!endif # USE_MSM || USE_SMS

!ifdef USE_NETMON
libs=$(libs) atalk.lib bhmon.lib bhsupp.lib browser.lib filter.lib friendly.lib
libs=$(libs) hexedit.lib llc.lib nal.lib ncp.lib netlogon.lib nmapi.lib
libs=$(libs) parser.lib ppp.lib slbs.lib toolbar.lib
!endif # USE_NETMON

!ifdef USE_EXCHANGE
!  ifndef Building_ExchSDK
libs=ExchSDK$(DbgLibFlag).Lib $(libs)
!  endif # Building_ExchSDK

libs=$(libs) Mapi32.Lib Uuid.Lib

!  if "$(WARNING_LEVEL)" != "4"
CL= $(CL) -WX
!  endif

DLLFLAGS = $(DLLFLAGS) -def:$(@B).def
!endif # USE_EXCHANGE

#---------------------------------------------
# Determine CRT Libraries
#---------------------------------------------
libc = libc$(DbgLibFlag).lib oldnames.lib
libcmt = libcmt$(DbgLibFlag).lib oldnames.lib
libcdll = msvcrt$(DbgLibFlag).lib oldnames.lib

!ifdef crtdll                                 # Use DLL CRT?
libcrt=$(libcdll)
!elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
libcrt=$(libc)
!elseif defined(crtmt)                        # use Multithreaded CRT?
libcrt=$(libcmt)
!else                                         # default to crtdll
libcrt=$(libcdll)
!endif                                        # endif crtdll/else crtst/crtmt/else

#---------------------------------------------
# Determine app type libraries (console, gui, or DLL)
#---------------------------------------------

!ifdef dll                                    # is this a DLL?
linklibs=$(libs) kernel32.lib advapi32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib ole32.lib oleaut32.lib uuid.lib winspool.lib version.lib
!elseif defined(console)                      # not a DLL, perhaps a console app
linklibs=$(libs) kernel32.lib advapi32.lib user32.lib ole32.lib version.lib
!else                                         # default to gui app
linklibs=$(libs) kernel32.lib $(optlibs) advapi32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib oleaut32.lib uuid.lib winspool.lib version.lib
!endif                                        # ifdef dll/else console/else

LinkLibs = $(LibList) $(linklibs) $(libcrt)

!if "$(BLDTYPE)" == "Profile"
LinkLibs = $(LinkLibs) cap.lib
!endif


#---------------------------------------------
# Additional MFC Libraries
#---------------------------------------------
# Note that linking order is important when using MFC!

!ifdef Use_MFC
!if !defined(nodebug)
linklibs = mfco40$(DbgLibFlag).lib $(linklibs)
!endif
linklibs = mfcs40$(DbgLibFlag).lib mfc40$(DbgLibFlag).lib $(linklibs)
!endif


#*********************************************
#
# Inference Rules
#
#*********************************************
.SUFFIXES:
.SUFFIXES: .c .cpp .obj .def .lib .dll .exe .mc .rc .res .exp .bin .hpj .htm .stm .h .mak .cpl .gif .jpg .cxx .hxx .ocx

# C Targets
.c{$(ObjDir)\}.obj:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
!endif
    $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)

# C++ Targets
.cpp{$(ObjDir)\}.obj:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
!endif
    $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)

# C++ Targets
.cxx{$(ObjDir)\}.obj:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
!endif
    $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)

# Resource Targets from .RC files
{$(ResDir)\}.rc{$(ObjDir)\}.res:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo $(RC) $(RFLAGS) $(ResDir)\$(@B).rc $(LogCmd)
!endif
    $(RC) $(RFLAGS) $(ResDir)\$(@B).rc $(LogCmd)

# Resource Targets from .MC files
.mc{$(ObjDir)\}.res:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo $(MC) $(MFLAGS) $< $(LogCmd)
!endif
    $(MC) $(MFLAGS) $< $(LogCmd)
!if "$(LOG)"=="YES"
    @echo $(RC) $(MRFLAGS) -fo$@ $(ObjDir)\$(@B).rc $(LogCmd)
!endif
    $(RC) $(MRFLAGS) -fo$@ $(ObjDir)\$(@B).rc $(LogCmd)

# Import Libraries
.Def{$(ObjDir)\}.lib:
!if "$(LOG)"=="YES"
    @echo $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def $(ObjList) -OUT:$@ $(LogCmd)
!endif
    $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def $(ObjList) -OUT:$@ $(LogCmd)

.Def{$(ObjDir)\}.exp:
!if "$(LOG)"=="YES"
    @echo $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def -OUT:$(@R).Lib $(ObjDir)\*.Obj $(STATICLIBS) $(LogCmd)
!endif
    $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def -OUT:$(@R).Lib $(ObjDir)\*.Obj $(STATICLIBS) $(LogCmd)

# Static Libraries
{$(ObjDir)\}.obj{$(ObjDir)\}.lib:
!if "$(LOG)"=="YES"
    @echo $(LIBU) $(LIBFLAGS)  $** $(LogCmd)
!endif
    $(LIBU) $(LIBFLAGS) $** $(LogCmd)

# DLLs
{$(ObjDir)\}.obj{$(ObjDir)\}.dll:
    @echo $** > $(ObjDir)\objfiles.lst
    @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
!if "$(LOG)"=="YES"
    @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
!endif
    $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)

# OCs
{$(ObjDir)\}.obj{$(ObjDir)\}.Ocx:
    @echo $** > $(ObjDir)\objfiles.lst
    @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
!if "$(LOG)"=="YES"
    @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
!endif
    $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)

# CPLs
{$(ObjDir)\}.obj{$(ObjDir)\}.Cpl:
    @echo $** > $(ObjDir)\objfiles.lst
    @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
!if "$(LOG)"=="YES"
    @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
!endif
    $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)

# BINs
{$(ObjDir)\}.obj{$(ObjDir)\}.bin:
    @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
!if "$(LOG)"=="YES"
    @echo $(LINK) $(LFLAGS) $(linkflags) $** @$(ObjDir)\libfiles.lst $(LogCmd)
!endif
    $(LINK) $(LFLAGS) $(linkflags) $** @$(ObjDir)\libfiles.lst $(LogCmd)

# EXEs
{$(ObjDir)\}.obj{$(ObjDir)\}.exe:
    @echo $**  > $(ObjDir)\objfiles.lst
    @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
!if "$(LOG)"=="YES"
    @echo $(LINK) $(LFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
!endif
    $(LINK) $(LFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)

# Helpfiles
.hpj{$(ObjDir)\}.hlp:
    $(MkDest)
!if "$(LOG)"=="YES"
    @echo  $(HC) $(HFLAGS) $(@B).Hpj
!endif
    $(HC) $(HFLAGS) $(@B).Hpj
!if "$(LOG)"=="YES"
    @echo   xcopy $(@F) $(ObjDir)
!endif
    -xcopy $(@F) $(ObjDir) $(LogCmd)

# ISAPI DLLs to Web Roots
{$(ObjDir)}.Dll{$(WWWSCRIPTS)\SDK}.Dll:
 $(MkWWWDest)
 !copy $? $(WWWSCRIPTS)\SDK

# Test EXEs to Web Roots
{$(ObjDir)}.Exe{$(WWWSCRIPTS)\SDK}.Exe:
 $(MkWWWDest)
 !copy $? $(WWWSCRIPTS)\SDK

# HTML files to webroots
.Htm{$(WWWROOT)\SDK\$(Proj)}.Htm:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# GIF files to webroots
.Gif{$(WWWROOT)\SDK\$(Proj)}.Gif:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# JPEG files to webroots
.Jpg{$(WWWROOT)\SDK\$(Proj)}.Jpg:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# ISAPI sources to web roots
.Cpp{$(WWWROOT)\SDK\$(Proj)}.Cpp:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# ISAPI sources to web roots
.C{$(WWWROOT)\SDK\$(Proj)}.C:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# ISAPI sources to web roots
.h{$(WWWROOT)\SDK\$(Proj)}.h:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# ISAPI sources to web roots
.Def{$(WWWROOT)\SDK\$(Proj)}.Def:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

# ISAPI sources to web roots
.Mak{$(WWWROOT)\SDK\$(Proj)}.Mak:
 $(MkWWWDest)
 !copy $? $(WWWROOT)\SDK\$(Proj)

#*********************************************
#
# Make Targets
#
#*********************************************

#---------------------------------------------
# List Output Files
#---------------------------------------------
ListDir:
    dir $(ObjDir)

#---------------------------------------------
# Display Output Listing File
#---------------------------------------------
!ifndef ERRVIEW
ERRVIEW=start notepad.exe
!endif

ListOut:
    $(ERRVIEW) $(ObjDir)\$(Proj).out

#---------------------------------------------
# Delete Output Listing File
#---------------------------------------------
DelOut:
    del $(ObjDir)\$(Proj).out

#---------------------------------------------
# Clean Output Directories
#---------------------------------------------
clean:
 $(MkDest)
!if "$(OS)" == "Windows_NT"
 del /q $(ObjDir)\*.obj \
        $(ObjDir)\*.out \
        $(ObjDir)\*.h   \
        $(ObjDir)\*.dbg \
        $(ObjDir)\*.ocx \
        $(ObjDir)\*.log \
        $(ObjDir)\*.lib \
        $(ObjDir)\*.exe \
        $(ObjDir)\*.dll \
        $(ObjDir)\*.map \
        $(ObjDir)\*.res \
        $(ObjDir)\*.rc  \
        $(ObjDir)\*.bin \
        $(ObjDir)\*.lst \
        $(ObjDir)\*.blt \
        $(ObjDir)\*.hlp \
        $(ObjDir)\*.srl \
        $(ObjDir)\*.exp >NUL 2>NUL
!else  # Win95 doesn't support "2>" on command line, multiple files on a Del command, or /q
 erase  $(ObjDir)\*.obj >NUL
 erase  $(ObjDir)\*.out >NUL
 erase  $(ObjDir)\*.h   >NUL
 erase  $(ObjDir)\*.dbg >NUL
 erase  $(ObjDir)\*.ocx >NUL
 erase  $(ObjDir)\*.log >NUL
 erase  $(ObjDir)\*.lib >NUL
 erase  $(ObjDir)\*.exe >NUL
 erase  $(ObjDir)\*.dll >NUL
 erase  $(ObjDir)\*.map >NUL
 erase  $(ObjDir)\*.res >NUL
 erase  $(ObjDir)\*.rc  >NUL
 erase  $(ObjDir)\*.bin >NUL
 erase  $(ObjDir)\*.lst >NUL
 erase  $(ObjDir)\*.blt >NUL
 erase  $(ObjDir)\*.hlp >NUL
 erase  $(ObjDir)\*.srl >NUL
 erase  $(ObjDir)\*.exp >NUL
!endif  # OS == Windows_NT
!endif      # _INETSDK_MAK_