home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / include / inetsdk.mak < prev    next >
Text File  |  1996-06-26  |  21KB  |  738 lines

  1. #----------------------------------------------------------------------------
  2. #
  3. # Description:
  4. #   Make File Header for Internet Software Development Kit
  5. #   Based in large part on BkOffice.Mak from the BackOffice SDK
  6. #
  7. # Copyright:
  8. #   Copyright (C) Microsoft Corp. 1995-1996.  All Rights Reserved.
  9. #
  10. #----------------------------------------------------------------------------
  11.  
  12. !ifndef _INETSDK_MAK_       # Prevent multiple inclusions
  13. _INETSDK_MAK_ = 1
  14.  
  15. #*********************************************
  16. #
  17. # Parameter Checking and Defaults
  18. #
  19. #*********************************************
  20. !ifndef Proj
  21. !     ERROR Component name (Proj) has not been defined.
  22. !endif
  23.  
  24. !ifndef INCLUDE
  25. !   ERROR INCLUDE variable is empty; must include at least system include directory
  26. !endif
  27.  
  28. !ifndef LIB
  29. !   ERROR LIB variable is empty; must include at least system lib directory
  30. !endif
  31.  
  32. !if !exist ($(MSTOOLS)\Include\WinCrypt.h)
  33. !   MESSAGE WARNING!  Portions of this SDK require that the January 1996 (or later) Win32 SDK is installed.
  34. !   MESSAGE This SDK was not found.  Build problems are likely.  You have been warned.
  35. !endif
  36.  
  37. !ifdef USE_ISAPI
  38.  
  39. !ifndef WWWSCRIPTS
  40. !   MESSAGE WWWSCRIPTS environment variable is empty; defaulting to .
  41. WWWSCRIPTS = .
  42. !endif
  43.  
  44. !ifndef WWWROOT
  45. !   MESSAGE WWWROOT environment variable is empty; defaulting to .
  46. WWWROOT = .
  47. !endif
  48.  
  49. !endif # USE_ISAPI
  50.  
  51. !if defined(clean)
  52. $(Proj): Clean
  53. !else
  54. $(Proj): All
  55. !endif
  56.  
  57. !if defined(nodebug)
  58. BLDTYPE=Retail
  59. !endif
  60.  
  61. !if "$(BLDTYPE)" == "Retail" | "$(BLDTYPE)" == "RETAIL" | "$(BLDTYPE)" == "retail" | "$(BLDTYPE)" == "RTL" | "$(BLDTYPE)" == "rtl"
  62. BLDTYPE=Retail
  63. !else if "$(BLDTYPE)" == "Profile" | "$(BLDTYPE)" == "PROFILE" | "$(BLDTYPE)" == "profile"
  64. BLDTYPE=Profile
  65. !else if "$(BLDTYPE)" == "Debug" | "$(BLDTYPE)" == "DEBUG" | "$(BLDTYPE)" == "debug" | "$(BLDTYPE)" == "DBG" | "$(BLDTYPE)" == "dbg"
  66. BLDTYPE=Debug
  67. !else ifndef BLDTYPE
  68. BLDTYPE=Debug
  69. !else
  70. !   ERROR BLDTYPE must be either Retail, Profile or Debug.
  71. !endif   
  72.  
  73. !if "$(BLDTYPE)" == "Retail"
  74. nodebug=1
  75. !endif
  76.  
  77. !ifndef CALL
  78. CALL=C
  79. !endif
  80.  
  81. !ifndef PACK
  82. PACK=YES
  83. !endif
  84.  
  85. !ifndef LOG
  86. LOG=YES
  87. !endif
  88.  
  89. !ifndef WARNING_LEVEL
  90. WARNING_LEVEL=3
  91. !endif
  92.  
  93. !ifndef PROCESSOR_ARCHITECTURE
  94. PROCESSOR_ARCHITECTURE = x86
  95. !endif # default to x86
  96.  
  97. !ifndef CPU
  98. CPU=$(PROCESSOR_ARCHITECTURE)
  99. !if "$(CPU)"=="x86" | "$(CPU)"=="X86"
  100. CPU = i386
  101. !endif
  102. !endif
  103.  
  104. !ifndef APPVER
  105. APPVER=4.0
  106. !endif
  107.  
  108. !ifndef USE_EXCHANGE
  109. !include <win32.mak>
  110. !endif
  111.  
  112. # Save build args for any recursive nmakes 
  113. BLDARGS= BLDTYPE=$(BLDTYPE) LOG=$(LOG) CPU=$(CPU)
  114.  
  115. #*********************************************
  116. #
  117. # Paths
  118. #
  119. #*********************************************
  120.  
  121. !ifndef BKOFFICE
  122. !ifdef PROJROOT
  123. BKOFFICE=$(PROJROOT)\        # must add trailing backslash
  124. !else
  125. BKOFFICE=\BkOffice\          # assume a reasonable default
  126. !endif
  127. !endif
  128.  
  129. !ifdef MAKEDIRS
  130. MkDest=
  131. !include $(MAKEDIRS)
  132. !else
  133. ResDir=.
  134. ObjDir=$(BLDTYPE)
  135. IncDir=$(BKOFFICE)Include
  136. LibDir=$(BKOFFICE)Lib
  137.  
  138. INCLUDE=$(ObjDir);$(IncDir);$(INCLUDE);
  139. LIB=$(LibDir);$(LIB);
  140.  
  141. # Win95 doesn't support "&" on command line
  142. MkDest=@if not exist $(ObjDir) md $(ObjDir)
  143.  
  144. MkWWWDest=@for %d in ($(WWWROOT)\SDK $(WWWROOT)\SDK\$(Proj) $(WWWSCRIPTS)\SDK) do @$(COMSPEC) /c if not exist %d md %d
  145.  
  146. !endif
  147.  
  148. # ObjList is used for making .Libs from .Defs, and as a convenience in other places.
  149.  
  150. !ifndef ObjList
  151. ObjList=$(ObjDir)\$(@B).OBJ
  152. !endif
  153.  
  154. #*********************************************
  155. #
  156. # Tools
  157. #
  158. #*********************************************
  159.  
  160. MAKEEXE = nmake
  161. IMPLIB  = lib
  162. CC      = cl
  163. LIBU    = lib
  164. LINK    = link
  165. RC      = rc
  166. MC      = mc
  167. HC      = start /wait hcrtf
  168.  
  169.  
  170. #*********************************************
  171. #
  172. # Flags
  173. #
  174. #*********************************************
  175.  
  176. # CL is for all C and C++ files
  177. #   -WX     Warnings as errors
  178. #   -J      char becomes unsigned char
  179. #   
  180. CL=$(cflags) -c -W$(WARNING_LEVEL) -J -Fo$@ /nologo $(CL)
  181.  
  182. # LFLAGS is for all links
  183. LFLAGS=-nologo -nodefaultlib -machine:$(CPU) -out:$@ -incremental:no -pdb:none $(LFLAGS)
  184.  
  185. # DLLFLAGS is for linking DLLs
  186. DLLFLAGS=-dll -map:$(ObjDir)\$(@B).map $(DLLFLAGS)
  187.  
  188. # LIBFLAGS is for making libraries
  189. LIBFLAGS=-nologo -machine:$(CPU) -out:$@ $(LIBFLAGS)
  190.  
  191. # RFLAGS is for Windows resources
  192. RFLAGS= -I$(ResDir) -fo$@ -DWIN32 $(noansi) -r -D_WIN32 $(RFLAGS) 
  193.  
  194. # MFLAGS is for the message compiler
  195. MFLAGS=-v -c -s -h $(ObjDir) -r $(ObjDir) -x $(ObjDir) $(MFLAGS)
  196.  
  197. # MRFLAGS is for the resource compiler when used after the message compiler
  198. MRFLAGS=-l 409 -r -x -i$(ObjDir) $(MRFLAGS)
  199.  
  200. # HFLAGS is for the help compiler 
  201. HFLAGS=-xn
  202.  
  203. #---------------------------------------------
  204. # Calling convention Flag
  205. #---------------------------------------------
  206.  
  207. !if "$(CALL)"=="PASCAL"
  208. CL=-Gc $(CL)
  209. !endif
  210.  
  211. #---------------------------------------------
  212. # Function Packaging Flag
  213. #---------------------------------------------
  214.  
  215. !if "$(PACK)" == "YES"
  216. CL=-Gy $(CL)
  217. cDefines=-Gy $(cDefines)
  218. !endif
  219.  
  220. #---------------------------------------------
  221. # Output Redirection
  222. #---------------------------------------------
  223. !if "$(LOG)" == "NO"
  224. LogCmd=
  225. !else
  226. LogCmd= >> $(ObjDir)\$(Proj).Out
  227. !endif 
  228.  
  229. #---------------------------------------------
  230. # Optimization Flags
  231. #---------------------------------------------
  232. !if "$(BLDTYPE)" == "Retail"
  233. CL=-O2 $(CL)
  234. !else if "$(BLDTYPE)" == "Profile"
  235. CL=-Od -Z7 -Gh $(CL)
  236. !else
  237. CL=-Od -Z7 $(CL)
  238. !endif
  239.  
  240. #---------------------------------------------
  241. # CPU specific Flags
  242. #---------------------------------------------
  243. !if "$(CPU)" == "I386"
  244. CL = $(CL) -D_X86_=1
  245. scall  = -Gz
  246. lflags   = $(lflags) -align:0x1000
  247. !endif
  248.  
  249. !if "$(CPU)" == "MIPS"
  250. CL = $(CL) -D_MIPS_=1
  251. scall  =
  252. !endif
  253.  
  254. !if "$(CPU)" == "PPC"
  255. CL = $(CL) -D_PPC_=1
  256. scall  =
  257. lflags   = $(lflags) -ignore:4078
  258. !endif
  259.  
  260. !if "$(CPU)" == "ALPHA"
  261. CL = $(CL) -D_ALPHA_=1
  262. scall  =
  263. !endif
  264.  
  265. #---------------------------------------------
  266. # Windows version
  267. #---------------------------------------------
  268. !if "$(APPVER)" == "4.0"
  269. CL = $(CL) -DWINVER=0x0400
  270. rflags=$(rflags) -DWINVER=0x0400
  271. !endif
  272.  
  273. #---------------------------------------------
  274. # Additional MFC Flags
  275. #---------------------------------------------
  276.  
  277. !ifdef Use_MFC
  278. CL= $(CL) /GX /DSTRICT /DWIN32 /D_WINDOWS /D_MBCS /D_WINDLL 
  279. CL= $(CL) /D_USRDLL -D_AFX_NO_BSTR_SUPPORT /D_AFXDLL
  280.  
  281. RFLAGS = $(RFLAGS) /DSTRICT /DWIN32 /D_WINDOWS /D_MBCS /D_WINDLL /D_USRDLL -D_AFX_NO_BSTR_SUPPORT /D_AFXDLL
  282.  
  283. !if "$(BLDTYPE)"=="Debug"
  284. CL= $(CL) /D_DEBUG
  285. RFLAGS = $(RFLAGS) /D_DEBUG
  286. !endif # BLDTYPE == Debug
  287.  
  288. !ifdef crtdll                                 # Use DLL CRT? (which is multithreaded)
  289. crtflags = -MD$(DbgLibFlag) $(crtflags)
  290. !elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
  291. crtflags = -ML$(DbgLibFlag) $(crtflags)
  292. !elseif defined(crtmt)                        # use Multithreaded CRT?
  293. crtflags = -MT$(DbgLibFlag) $(crtflags)
  294. !else                                         # default to crtdll
  295. crtflags = -MD$(DbgLibFlag) $(crtflags)
  296. !endif                                        # ifdef crtdll/else crtst/crtmt/else
  297.  
  298. !endif # Use_MFC
  299.  
  300. #---------------------------------------------
  301. # BaseCtl Framework Flags
  302. #---------------------------------------------
  303. !ifdef USE_BASECTL
  304.  
  305. # flags to support the BaseCtl framework.  Only DLLs are supported.
  306.  
  307. dll = 1
  308.  
  309. # These are "extra" libs beyond the standard set that BaseCtl controls need
  310.  
  311. libs= urlmon.lib wininet.lib shell32.lib oleaut32.lib
  312.  
  313. !if !exist($(INETSDK)\Samples\BaseCtl\Include)
  314. !  error INETSDK environment variable must point to the root of the ActiveX SDK.
  315. !endif
  316.  
  317. !ifdef nodebug
  318. libs = $(libs) $(INETSDK)\Samples\BaseCtl\Lib\CtlFwR32.Lib
  319. !else
  320. libs = $(libs) $(INETSDK)\Samples\BaseCtl\Lib\CtlFwD32.Lib
  321. !endif
  322.  
  323. # Commands to be added to the compile line... in this case to locate headers and to
  324. # override the warning level on certain behaviors that VC++ 4.1 started flagging as
  325. # warnings that causes warnigns in system headers.
  326.  
  327. cDefines= -I$(INETSDK)\Samples\BaseCtl\Include $(cDefines) -FI$(INETSDK)\Samples\BaseCtl\Include\VC41Warn.h
  328. RFLAGS= -I$(INETSDK)\Samples\BaseCtl\Include $(RFLAGS)
  329.  
  330. linkflags = $(linkflags) -Def:$(Proj).Def
  331.  
  332. Register: $(ObjDir)\$(Proj).Ocx
  333.   regsvr32 /s $?
  334.  
  335. # provide a standard rule for Odl generated headers named $(ObjDir)\$(Proj)Ifc.h
  336.  
  337. $(ObjDir)\$(Proj)Ifc.h $(ObjDir)\$(Proj).Tlb: $(Proj).Odl
  338.   $(MkDest)
  339.   mktyplib /DWIN32 -I$(INETSDK)\Samples\BaseCtl\Include /h $(ObjDir)\$(Proj)Ifc.h /tlb $(ObjDir)\$(Proj).tlb $(Proj).Odl
  340.  
  341. !endif # USE_BASECTL
  342.  
  343. #---------------------------------------------
  344. # Build Type Flags  (Retail/Debug)
  345. #---------------------------------------------
  346.  
  347. !if "$(BLDTYPE)"=="Retail"
  348. CL=-DSHIP $(CL)
  349. LFLAGS = $(LFLAGS) -release
  350. !else if "$(BLDTYPE)"=="Profile"
  351. CL=-DDEBUG -DTEST -DPROFILE $(CL)
  352. LFLAGS = $(LFLAGS) -debug:mapped,partial -debugtype:coff -PROFILE
  353. libs = $(libs) CAP.LIB
  354. !else 
  355. CL=-DDEBUG -DTEST $(CL) 
  356. LFLAGS = $(LFLAGS) -debug:full -debugtype:cv
  357. !endif
  358.  
  359.  
  360. #---------------------------------------------
  361. # Determine CRT Flags
  362. #---------------------------------------------
  363.  
  364. !ifdef crtdll                                 # Use DLL CRT? (which is multithreaded)
  365. crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT -D_DLL
  366. !elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
  367. crtflags = -DWIN32 $(noansi) -D_WIN32
  368. !elseif defined(crtmt)                        # use Multithreaded CRT?
  369. crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT
  370. !else                                         # default to crtdll
  371. crtflags = -DWIN32 $(noansi) -D_WIN32 -D_MT -D_DLL
  372. !endif                                        # ifdef crtdll/else crtst/crtmt/else
  373.  
  374. #---------------------------------------------
  375. # Determine app type Flags (console, gui, or DLL)
  376. #---------------------------------------------
  377.  
  378. !if defined(console)                          # console app
  379. linkflags=$(linkflags) -subsystem:console -entry:mainCRTStartup
  380. !elseif !defined(dll)                         # not a dll, default to gui app
  381. linkflags=$(linkflags) -subsystem:windows -entry:WinMainCRTStartup
  382. !endif                                        # ifdef console/else
  383.  
  384.  
  385.  
  386. #*********************************************
  387. #
  388. # Libraries
  389. #
  390. #*********************************************
  391.  
  392. !if "$(BLDTYPE)"=="Retail"
  393. DbgLibFlag =
  394. !else
  395. DbgLibFlag = d
  396. !endif
  397.  
  398. #---------------------------------------------
  399. # Back Office SDK specific
  400. #---------------------------------------------
  401. !ifdef USE_SNA
  402. libs=$(libs) fmistr32.lib ihvLink.lib snacli.lib wappc32.lib wcpic32.lib
  403. libs=$(libs) wincsv32.lib winrui32.lib winsli32.lib
  404. !endif # USE_SNA
  405.  
  406. !ifdef USE_SQL
  407. libs=$(libs) ntwdbLib.lib
  408. !endif # USE_SQL
  409.  
  410. !ifdef USE_ODS
  411. libs=$(libs) opends60.lib
  412. !endif # USE_ODS
  413.  
  414. !if defined(USE_MSM) || defined(USE_SMS)
  415. libs=$(libs) smsapi.lib objectty.lib
  416. !endif # USE_MSM || USE_SMS
  417.  
  418. !ifdef USE_NETMON
  419. libs=$(libs) atalk.lib bhmon.lib bhsupp.lib browser.lib filter.lib friendly.lib
  420. libs=$(libs) hexedit.lib llc.lib nal.lib ncp.lib netlogon.lib nmapi.lib
  421. libs=$(libs) parser.lib ppp.lib slbs.lib toolbar.lib
  422. !endif # USE_NETMON
  423.  
  424. !ifdef USE_EXCHANGE
  425. !  ifndef Building_ExchSDK
  426. libs=ExchSDK$(DbgLibFlag).Lib $(libs)
  427. !  endif # Building_ExchSDK
  428.  
  429. libs=$(libs) Mapi32.Lib Uuid.Lib
  430.  
  431. !  if "$(WARNING_LEVEL)" != "4"
  432. CL= $(CL) -WX
  433. !  endif
  434.  
  435. DLLFLAGS = $(DLLFLAGS) -def:$(@B).def
  436. !endif # USE_EXCHANGE
  437.  
  438. #---------------------------------------------
  439. # Determine CRT Libraries
  440. #---------------------------------------------
  441. libc = libc$(DbgLibFlag).lib oldnames.lib
  442. libcmt = libcmt$(DbgLibFlag).lib oldnames.lib
  443. libcdll = msvcrt$(DbgLibFlag).lib oldnames.lib
  444.  
  445. !ifdef crtdll                                 # Use DLL CRT?
  446. libcrt=$(libcdll)
  447. !elseif defined(crtst) && !defined(crtflags)  # use Single Threaded CRT?
  448. libcrt=$(libc)
  449. !elseif defined(crtmt)                        # use Multithreaded CRT?
  450. libcrt=$(libcmt)
  451. !else                                         # default to crtdll
  452. libcrt=$(libcdll)
  453. !endif                                        # endif crtdll/else crtst/crtmt/else
  454.  
  455. #---------------------------------------------
  456. # Determine app type libraries (console, gui, or DLL)
  457. #---------------------------------------------
  458.  
  459. !ifdef dll                                    # is this a DLL?
  460. linklibs=$(libs) kernel32.lib advapi32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib ole32.lib oleaut32.lib uuid.lib winspool.lib version.lib
  461. !elseif defined(console)                      # not a DLL, perhaps a console app
  462. linklibs=$(libs) kernel32.lib advapi32.lib user32.lib ole32.lib version.lib
  463. !else                                         # default to gui app
  464. linklibs=$(libs) kernel32.lib $(optlibs) advapi32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib oleaut32.lib uuid.lib winspool.lib version.lib
  465. !endif                                        # ifdef dll/else console/else
  466.  
  467. LinkLibs = $(LibList) $(linklibs) $(libcrt)
  468.  
  469. !if "$(BLDTYPE)" == "Profile"
  470. LinkLibs = $(LinkLibs) cap.lib
  471. !endif
  472.  
  473.  
  474. #---------------------------------------------
  475. # Additional MFC Libraries
  476. #---------------------------------------------
  477. # Note that linking order is important when using MFC!
  478.  
  479. !ifdef Use_MFC
  480. !if !defined(nodebug)
  481. linklibs = mfco40$(DbgLibFlag).lib $(linklibs)
  482. !endif
  483. linklibs = mfcs40$(DbgLibFlag).lib mfc40$(DbgLibFlag).lib $(linklibs)
  484. !endif
  485.  
  486.  
  487. #*********************************************
  488. #
  489. # Inference Rules
  490. #
  491. #*********************************************
  492. .SUFFIXES:
  493. .SUFFIXES: .c .cpp .obj .def .lib .dll .exe .mc .rc .res .exp .bin .hpj .htm .stm .h .mak .cpl .gif .jpg .cxx .hxx .ocx
  494.  
  495. # C Targets
  496. .c{$(ObjDir)\}.obj:
  497.     $(MkDest)
  498. !if "$(LOG)"=="YES"
  499.     @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  500. !endif
  501.     $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  502.  
  503. # C++ Targets
  504. .cpp{$(ObjDir)\}.obj:
  505.     $(MkDest)
  506. !if "$(LOG)"=="YES"
  507.     @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  508. !endif
  509.     $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  510.  
  511. # C++ Targets
  512. .cxx{$(ObjDir)\}.obj:
  513.     $(MkDest)
  514. !if "$(LOG)"=="YES"
  515.     @echo $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  516. !endif
  517.     $(CC) $(CL) $(crtflags) $(cDefines) $< $(LogCmd)
  518.  
  519. # Resource Targets from .RC files
  520. {$(ResDir)\}.rc{$(ObjDir)\}.res:
  521.     $(MkDest)
  522. !if "$(LOG)"=="YES"
  523.     @echo $(RC) $(RFLAGS) $(ResDir)\$(@B).rc $(LogCmd)
  524. !endif
  525.     $(RC) $(RFLAGS) $(ResDir)\$(@B).rc $(LogCmd)
  526.  
  527. # Resource Targets from .MC files
  528. .mc{$(ObjDir)\}.res:
  529.     $(MkDest)
  530. !if "$(LOG)"=="YES"
  531.     @echo $(MC) $(MFLAGS) $< $(LogCmd)
  532. !endif
  533.     $(MC) $(MFLAGS) $< $(LogCmd)
  534. !if "$(LOG)"=="YES"
  535.     @echo $(RC) $(MRFLAGS) -fo$@ $(ObjDir)\$(@B).rc $(LogCmd)
  536. !endif
  537.     $(RC) $(MRFLAGS) -fo$@ $(ObjDir)\$(@B).rc $(LogCmd)
  538.  
  539. # Import Libraries
  540. .Def{$(ObjDir)\}.lib:
  541. !if "$(LOG)"=="YES"
  542.     @echo $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def $(ObjList) -OUT:$@ $(LogCmd)
  543. !endif
  544.     $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def $(ObjList) -OUT:$@ $(LogCmd)
  545.  
  546. .Def{$(ObjDir)\}.exp:
  547. !if "$(LOG)"=="YES"
  548.     @echo $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def -OUT:$(@R).Lib $(ObjDir)\*.Obj $(STATICLIBS) $(LogCmd)
  549. !endif
  550.     $(IMPLIB) -nologo -machine:$(CPU) -def:$(@B).Def -OUT:$(@R).Lib $(ObjDir)\*.Obj $(STATICLIBS) $(LogCmd)
  551.  
  552. # Static Libraries
  553. {$(ObjDir)\}.obj{$(ObjDir)\}.lib:
  554. !if "$(LOG)"=="YES"
  555.     @echo $(LIBU) $(LIBFLAGS)  $** $(LogCmd)
  556. !endif
  557.     $(LIBU) $(LIBFLAGS) $** $(LogCmd)
  558.  
  559. # DLLs
  560. {$(ObjDir)\}.obj{$(ObjDir)\}.dll:
  561.     @echo $** > $(ObjDir)\objfiles.lst
  562.     @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
  563. !if "$(LOG)"=="YES"
  564.     @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  565. !endif
  566.     $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  567.  
  568. # OCs
  569. {$(ObjDir)\}.obj{$(ObjDir)\}.Ocx:
  570.     @echo $** > $(ObjDir)\objfiles.lst
  571.     @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
  572. !if "$(LOG)"=="YES"
  573.     @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  574. !endif
  575.     $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  576.  
  577. # CPLs
  578. {$(ObjDir)\}.obj{$(ObjDir)\}.Cpl:
  579.     @echo $** > $(ObjDir)\objfiles.lst
  580.     @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
  581. !if "$(LOG)"=="YES"
  582.     @echo   $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  583. !endif
  584.     $(LINK) $(LFLAGS) $(DLLFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  585.  
  586. # BINs
  587. {$(ObjDir)\}.obj{$(ObjDir)\}.bin:
  588.     @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
  589. !if "$(LOG)"=="YES"
  590.     @echo $(LINK) $(LFLAGS) $(linkflags) $** @$(ObjDir)\libfiles.lst $(LogCmd)
  591. !endif
  592.     $(LINK) $(LFLAGS) $(linkflags) $** @$(ObjDir)\libfiles.lst $(LogCmd)
  593.  
  594. # EXEs
  595. {$(ObjDir)\}.obj{$(ObjDir)\}.exe:
  596.     @echo $**  > $(ObjDir)\objfiles.lst
  597.     @echo $(LinkLibs) > $(ObjDir)\libfiles.lst
  598. !if "$(LOG)"=="YES"
  599.     @echo $(LINK) $(LFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  600. !endif
  601.     $(LINK) $(LFLAGS) $(linkflags) @$(ObjDir)\objfiles.lst @$(ObjDir)\libfiles.lst $(LogCmd)
  602.  
  603. # Helpfiles
  604. .hpj{$(ObjDir)\}.hlp:
  605.     $(MkDest)
  606. !if "$(LOG)"=="YES"
  607.     @echo  $(HC) $(HFLAGS) $(@B).Hpj
  608. !endif
  609.     $(HC) $(HFLAGS) $(@B).Hpj
  610. !if "$(LOG)"=="YES"
  611.     @echo   xcopy $(@F) $(ObjDir)
  612. !endif
  613.     -xcopy $(@F) $(ObjDir) $(LogCmd)
  614.  
  615. # ISAPI DLLs to Web Roots
  616. {$(ObjDir)}.Dll{$(WWWSCRIPTS)\SDK}.Dll:
  617.  $(MkWWWDest)
  618.  !copy $? $(WWWSCRIPTS)\SDK
  619.  
  620. # Test EXEs to Web Roots
  621. {$(ObjDir)}.Exe{$(WWWSCRIPTS)\SDK}.Exe:
  622.  $(MkWWWDest)
  623.  !copy $? $(WWWSCRIPTS)\SDK
  624.  
  625. # HTML files to webroots
  626. .Htm{$(WWWROOT)\SDK\$(Proj)}.Htm:
  627.  $(MkWWWDest)
  628.  !copy $? $(WWWROOT)\SDK\$(Proj)
  629.  
  630. # GIF files to webroots
  631. .Gif{$(WWWROOT)\SDK\$(Proj)}.Gif:
  632.  $(MkWWWDest)
  633.  !copy $? $(WWWROOT)\SDK\$(Proj)
  634.  
  635. # JPEG files to webroots
  636. .Jpg{$(WWWROOT)\SDK\$(Proj)}.Jpg:
  637.  $(MkWWWDest)
  638.  !copy $? $(WWWROOT)\SDK\$(Proj)
  639.  
  640. # ISAPI sources to web roots
  641. .Cpp{$(WWWROOT)\SDK\$(Proj)}.Cpp:
  642.  $(MkWWWDest)
  643.  !copy $? $(WWWROOT)\SDK\$(Proj)
  644.  
  645. # ISAPI sources to web roots
  646. .C{$(WWWROOT)\SDK\$(Proj)}.C:
  647.  $(MkWWWDest)
  648.  !copy $? $(WWWROOT)\SDK\$(Proj)
  649.  
  650. # ISAPI sources to web roots
  651. .h{$(WWWROOT)\SDK\$(Proj)}.h:
  652.  $(MkWWWDest)
  653.  !copy $? $(WWWROOT)\SDK\$(Proj)
  654.  
  655. # ISAPI sources to web roots
  656. .Def{$(WWWROOT)\SDK\$(Proj)}.Def:
  657.  $(MkWWWDest)
  658.  !copy $? $(WWWROOT)\SDK\$(Proj)
  659.  
  660. # ISAPI sources to web roots
  661. .Mak{$(WWWROOT)\SDK\$(Proj)}.Mak:
  662.  $(MkWWWDest)
  663.  !copy $? $(WWWROOT)\SDK\$(Proj)
  664.  
  665. #*********************************************
  666. #
  667. # Make Targets
  668. #
  669. #*********************************************
  670.  
  671. #---------------------------------------------
  672. # List Output Files
  673. #---------------------------------------------
  674. ListDir:
  675.     dir $(ObjDir)
  676.  
  677. #---------------------------------------------
  678. # Display Output Listing File
  679. #---------------------------------------------
  680. !ifndef ERRVIEW
  681. ERRVIEW=start notepad.exe
  682. !endif
  683.  
  684. ListOut:
  685.     $(ERRVIEW) $(ObjDir)\$(Proj).out
  686.  
  687. #---------------------------------------------
  688. # Delete Output Listing File
  689. #---------------------------------------------
  690. DelOut:
  691.     del $(ObjDir)\$(Proj).out
  692.  
  693. #---------------------------------------------
  694. # Clean Output Directories
  695. #---------------------------------------------
  696. clean:
  697.  $(MkDest)
  698. !if "$(OS)" == "Windows_NT"
  699.  del /q $(ObjDir)\*.obj \
  700.         $(ObjDir)\*.out \
  701.         $(ObjDir)\*.h   \
  702.         $(ObjDir)\*.dbg \
  703.         $(ObjDir)\*.ocx \
  704.         $(ObjDir)\*.log \
  705.         $(ObjDir)\*.lib \
  706.         $(ObjDir)\*.exe \
  707.         $(ObjDir)\*.dll \
  708.         $(ObjDir)\*.map \
  709.         $(ObjDir)\*.res \
  710.         $(ObjDir)\*.rc  \
  711.         $(ObjDir)\*.bin \
  712.         $(ObjDir)\*.lst \
  713.         $(ObjDir)\*.blt \
  714.         $(ObjDir)\*.hlp \
  715.         $(ObjDir)\*.srl \
  716.         $(ObjDir)\*.exp >NUL 2>NUL
  717. !else  # Win95 doesn't support "2>" on command line, multiple files on a Del command, or /q
  718.  erase  $(ObjDir)\*.obj >NUL
  719.  erase  $(ObjDir)\*.out >NUL
  720.  erase  $(ObjDir)\*.h   >NUL
  721.  erase  $(ObjDir)\*.dbg >NUL
  722.  erase  $(ObjDir)\*.ocx >NUL
  723.  erase  $(ObjDir)\*.log >NUL
  724.  erase  $(ObjDir)\*.lib >NUL
  725.  erase  $(ObjDir)\*.exe >NUL
  726.  erase  $(ObjDir)\*.dll >NUL
  727.  erase  $(ObjDir)\*.map >NUL
  728.  erase  $(ObjDir)\*.res >NUL
  729.  erase  $(ObjDir)\*.rc  >NUL
  730.  erase  $(ObjDir)\*.bin >NUL
  731.  erase  $(ObjDir)\*.lst >NUL
  732.  erase  $(ObjDir)\*.blt >NUL
  733.  erase  $(ObjDir)\*.hlp >NUL
  734.  erase  $(ObjDir)\*.srl >NUL
  735.  erase  $(ObjDir)\*.exp >NUL
  736. !endif  # OS == Windows_NT
  737. !endif      # _INETSDK_MAK_
  738.