home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / activex.mak < prev    next >
Text File  |  1998-04-25  |  40KB  |  1,588 lines

  1. #############################################################################
  2. #                                                                           #
  3. # DirectShow SDK Master Makefile - ACTIVEX.MAK                              #
  4. #                                                                           #
  5. # Win32 application master NMAKE definitions file for the Microsoft         #
  6. # DirectShow 5.1 for Windows programming samples.                           #
  7. #                                                                           #
  8. # THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY     #
  9. # KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE       #
  10. # IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR     #
  11. # PURPOSE.                                                                  #
  12. #                                                                           #
  13. # Copyright 1992 - 1998 Microsoft Corporation.  All Rights Reserved.    #
  14. #                                                                           #
  15. # ------------------------------------------------------------------------- #
  16. # This files should be included after all public macro definitions          #
  17. # and before any private targets (so that the default "all" and "clean"     #
  18. # targets are not accidentally overridden. )                                #
  19. #                                                                           #
  20. # e.g.                                                                      #
  21. #                                                                           #
  22. # TARGET_NAME = filter                                                      #
  23. # TARGET_TYPE = DYNLINK                                                     #
  24. #                                                                           #
  25. # SRC_FILES   = file1.cpp \                                                 #
  26. #               file2.cpp \                                                 #
  27. #               file3.c                                                     #
  28. #                                                                           #
  29. # RC_FILE     = filter.rc                                                   #
  30. #                                                                           #
  31. # DEF_FILE    = filter.def                                                  #
  32. #                                                                           #
  33. # END_TASK    = assorted_stuff                                              #
  34. #                                                                           #
  35. # !include "activex.mak"                                     #
  36. #                                                                           #
  37. # assorted_stuff:                                                           #
  38. #   do_this                                                                 #
  39. #   do_that                                                                 #
  40. #   do_the_other                                                            #
  41. #                                                                           #
  42. # ------------------------------------------------------------------------- #
  43. # NMAKE Options (passed by macro)                                           #
  44. #                                                                           #
  45. # Use the table below to determine the additional options for NMAKE to      #
  46. # generate various application debugging, profiling and performance tuning  #
  47. # information.                                                              #
  48. #                                                                           #
  49. # Application Information Type         Invoke NMAKE                         #
  50. # ----------------------------         ------------                         #
  51. # For No Debugging Info                nmake nodebug=1                      #
  52. # For debuggable retail build          nmake nodebug=1 symbols=1            #
  53. # For performance tuning               nmake nodebug=1 perf=1               #
  54. #                                                                           #
  55. # Note: creating the environment variables NODEBUG and PERF is an           #
  56. #       alternative method to setting these options via the nmake           #
  57. #       command line.                                                       #
  58. #                                                                           #
  59. #       perf=1 overrides symbols=1                                          #
  60. #                                                                           #
  61. # Additional NMAKE Options             Invoke NMAKE                         #
  62. # ----------------------------         ------------                         #
  63. # For No ANSI NULL Compliance          nmake no_ansi=1                      #
  64. # (ANSI NULL is defined as PVOID 0)                                         #
  65. #                                                                           #
  66. # Set SYM_FILES=1 in the nmake command line to generate .sym files that     #
  67. # can be used with a kernel level debugger.                                 #
  68. #                                                                           #
  69. # ------------------------------------------------------------------------- #
  70. # NMAKE Targets (common)                                                    #
  71. #                                                                           #
  72. # all           Create executables (default).                               #
  73. # clean         Delete object files, etc.                                   #
  74. #                                                                           #
  75. # Note: use "nmake clean all" to force a clean rebuild.                     #
  76. #                                                                           #
  77. #############################################################################
  78.  
  79. DISABLE_PCH = 1
  80. NO_COMMON_PCH = 1
  81. NO_PDB_FILES = 1
  82.  
  83. # START OF MAKEFILE
  84. !IFNDEF _ACTIVEX_MAK_
  85. _ACTIVEX_MAK_ = 1
  86.  
  87. #----------------------------------------------------------------------------
  88. # recover environment
  89.  
  90. !ifndef MAKE_ENV
  91. MAKE_ENV = $(MAKEDIR)\~qmakenv.tmp
  92. !endif
  93.  
  94. !ifndef MAKE_PASS
  95. MAKE_PASS = pass1
  96. !else
  97. !if exist( "$(MAKE_ENV)" )
  98. !include "$(MAKE_ENV)"
  99. !endif
  100. !endif
  101.  
  102. #----------------------------------------------------------------------------
  103. # Logging
  104.  
  105. !ifndef MAKE_LOG
  106. MAKE_LOG = $(MAKEDIR)\make.log
  107. !endif
  108.  
  109. !ifndef MAKE_ECHO
  110. !if "$(OS)" == "Windows_NT"
  111. MAKE_ECHO = $(MAKEDIR)\~qmakech.tmp 2>>&1
  112. !else
  113. MAKE_ECHO = $(MAKEDIR)\~qmakech.tmp
  114. !endif
  115. !endif
  116.  
  117. !ifndef ECHO_ECHO
  118. ECHO_ECHO = type $(MAKEDIR)\~qmakech.tmp
  119. !endif
  120.  
  121. !ifndef TYPE_ECHO
  122. !if "$(MAKE_LOGGING)" == "quiet"
  123. TYPE_ECHO = rem
  124. !else
  125. TYPE_ECHO = $(ECHO_ECHO)
  126. !endif
  127. !endif
  128.  
  129. !ifndef TYPE_ECHO2
  130. !if "$(MAKE_LOGGING)" == "verbose"
  131. TYPE_ECHO2 = $(ECHO_ECHO)
  132. !else
  133. TYPE_ECHO2 = rem
  134. !endif
  135. !endif
  136.  
  137. !ifndef FILE_ECHO
  138. !ifdef NO_MAKE_LOG
  139. FILE_ECHO = rem
  140. !else
  141. FILE_ECHO = $(ECHO_ECHO) >> $(MAKE_LOG)
  142. !endif
  143. !endif
  144.  
  145. !ifndef MAKE_CMD
  146. MAKE_CMD = $(MAKEDIR)\~qmakcmd.bat
  147. !endif
  148.  
  149. #----------------------------------------------------------------------------
  150. # Set up object directory
  151.  
  152. !ifdef RETAIL
  153. !ifndef NODEBUG
  154. NODEBUG = 1
  155. !endif
  156. !endif
  157.  
  158. !ifdef DEBUG
  159. !ifdef NODEBUG
  160. !undef NODEBUG
  161. !endif
  162. !endif
  163.  
  164. !ifdef NODEBUG
  165. DBG_RTL = retail
  166. !else
  167. DBG_RTL = debug
  168. !endif
  169.  
  170. #----------------------------------------------------------------------------
  171. # resolve pdb/pch clash
  172.  
  173. !ifndef DISABLE_PCH
  174. !ifndef NO_PDB_FILES
  175. NO_PDB_FILES = 1
  176. !endif
  177. !endif
  178.  
  179.  
  180. # BINARY/DIRECTORY
  181. !IFNDEF DIR_LIST
  182.  
  183. #============================================================================
  184. #
  185. # BINARY
  186. #
  187. #============================================================================
  188.  
  189. #
  190. # if DIR_LIST is *not* defined this makefile just
  191. # simply must be being included to build a binary
  192. #
  193.  
  194. #----------------------------------------------------------------------------
  195. # Backward compat section
  196.  
  197. !if "$(DEP_LIBS)" != ""
  198. !message Should now be using CODE_LIBS instead of DEP_LIBS!!
  199. CODE_LIBS = $(CODE_LIBS) $(DEP_LIBS)
  200. !endif
  201.  
  202. #----------------------------------------------------------------------------
  203. # Default handling
  204.  
  205. !ifdef NO_ACTIVEX_DEFAULTS
  206. !ifndef NO_ACTIVEX_LIBS
  207. NO_ACTIVEX_LIBS = 1
  208. !endif
  209. !ifndef NO_ACTIVEX_INCLUDES
  210. NO_ACTIVEX_INCLUDES = 1
  211. !endif
  212. !endif
  213.  
  214. #----------------------------------------------------------------------------
  215. # set CPU Type
  216.  
  217. !IF "$(CPU)" != "i386"
  218. !IF "$(CPU)" != "MIPS"
  219. !IF "$(CPU)" != "ALPHA"
  220. !IF "$(CPU)" != "PPC"
  221. !MESSAGE Missing or invalid 'CPU' environment variable
  222. !MESSAGE ( valid options are CPU=i386, MIPS, ALPHA or PPC )
  223. !MESSAGE
  224. !MESSAGE WARNING: Defaulting to CPU=i386!
  225. !MESSAGE
  226. CPU = i386
  227. !ENDIF
  228. !ENDIF
  229. !ENDIF
  230. !ENDIF
  231.  
  232. #----------------------------------------------------------------------------
  233. # set Target Operating System - Default to both
  234.  
  235. !IF "$(TARGET_OS)" != "WINNT"
  236. !IF "$(TARGET_OS)" != "WIN95"
  237. !IF "$(TARGET_OS)" != "BOTH"
  238. #!MESSAGE Must specify TARGET_OS environment variable (BOTH, WIN95, WINNT)
  239. TARGET_OS = BOTH
  240. !ENDIF
  241. !ENDIF
  242. !ENDIF
  243.  
  244. #----------------------------------------------------------------------------
  245. # Set Default WINVER - depends on TARGET_OS
  246. # Defaults to 4.0 for all applications except NT specific.
  247.  
  248. !IFNDEF WIN_VER
  249. !IF "$(TARGET_OS)" == "WINNT"
  250. WIN_VER = 5.0
  251. !ELSE
  252. WIN_VER = 4.0
  253. !ENDIF
  254. !ENDIF
  255.  
  256. !IF "$(WIN_VER)" != "5.0"
  257. !IF "$(WIN_VER)" != "4.0"
  258. !ERROR Must specify WIN_VER environment variable (5.0, 4.0)
  259. !ENDIF
  260. !ENDIF
  261. !ENDIF
  262.  
  263. #----------------------------------------------------------------------------
  264. # Check TARGET_TYPE defined
  265.  
  266. !if "$(TARGET_TYPE)" != "DYNLINK"
  267. !if "$(TARGET_TYPE)" != "LIBRARY"
  268. !if "$(TARGET_TYPE)" != "PROGRAM"
  269. !error Must define TARGET_TYPE
  270. !endif
  271. !endif
  272. !endif
  273.  
  274. #----------------------------------------------------------------------------
  275. # Define EXT if not already done
  276.  
  277. !if "$(TARGET_EXT)" == ""
  278. !if "$(TARGET_TYPE)" == "DYNLINK"
  279. TARGET_EXT = dll
  280. !elseif "$(TARGET_TYPE)" == "LIBRARY"
  281. TARGET_EXT = lib
  282. !elseif "$(TARGET_TYPE)" == "PROGRAM"
  283. TARGET_EXT = exe
  284. !endif
  285. !endif
  286.  
  287. #----------------------------------------------------------------------------
  288. # Define targets
  289.  
  290. !if "$(TARGET_TYPE)" == "DYNLINK"
  291. TARGET_LIB = $(DBG_RTL)\$(TARGET_NAME).lib
  292. TARGET_BIN = $(DBG_RTL)\$(TARGET_NAME).$(TARGET_EXT)
  293. !ifndef TARGET_MAP
  294. TARGET_MAP = $(DBG_RTL)\$(TARGET_NAME).map
  295. !endif
  296. !if "$(DEF_FILE)" != ""
  297. TARGET_EXP = $(DBG_RTL)\$(TARGET_NAME).exp
  298. !else
  299. TARGET_EXP =
  300. !endif
  301. !elseif "$(TARGET_TYPE)" == "LIBRARY"
  302. TARGET_LIB = $(DBG_RTL)\$(TARGET_NAME).$(TARGET_EXT)
  303. TARGET_BIN =
  304. TARGET_MAP =
  305. TARGET_EXP =
  306. !elseif "$(TARGET_TYPE)" == "PROGRAM"
  307. TARGET_LIB =
  308. TARGET_BIN = $(DBG_RTL)\$(TARGET_NAME).$(TARGET_EXT)
  309. !ifndef TARGET_MAP
  310. TARGET_MAP = $(DBG_RTL)\$(TARGET_NAME).map
  311. !endif
  312. TARGET_EXP =
  313. !else
  314. TARGET_LIB =
  315. TARGET_BIN =
  316. TARGET_MAP =
  317. TARGET_EXP =
  318. !endif
  319.  
  320. #----------------------------------------------------------------------------
  321. # Define copy targets
  322.  
  323. !ifndef NO_COPY
  324.  
  325. !if "$(TARGET_LIB)" != ""
  326. TARGET_LIB_GOAL = $(MSSDK)\samples\graphics\directshow\$(TARGET_NAME)\lib\$(DBG_RTL)
  327. !ifndef NODEBUG
  328. GOAL_LIB = $(TARGET_LIB_GOAL)\$(TARGET_LIB:debug\=)
  329. !else
  330. GOAL_LIB = $(TARGET_LIB_GOAL)\$(TARGET_LIB:retail\=)
  331. !endif
  332. !endif
  333.  
  334. !if "$(TARGET_BIN)" != ""
  335. TARGET_BIN_GOAL = $(MSSDK)\samples\graphics\directshow\$(TARGET_NAME)
  336. !ifndef NODEBUG
  337. GOAL_BIN = $(TARGET_BIN_GOAL)\$(TARGET_BIN:debug\=)
  338. !else
  339. GOAL_BIN = $(TARGET_BIN_GOAL)\$(TARGET_BIN:retail\=)
  340. !endif
  341. !endif
  342.  
  343. !endif
  344.  
  345. #----------------------------------------------------------------------------
  346. # Tool aliases
  347.  
  348. cc     = cl
  349. rc     = rc
  350. link   = link
  351. implib = lib
  352. hc     = hcrtf -x
  353. mtl    = mktyplib
  354.  
  355. #----------------------------------------------------------------------------
  356. # general defs
  357.  
  358. !IFDEF NO_ANSI
  359. noansi = -DNULL=0
  360. !ENDIF
  361.  
  362. #----------------------------------------------------------------------------
  363. # compiler flags
  364.  
  365. ccommon = -c -nologo -Gy -DINC_OLE2 -DSTRICT  \
  366.           -DWIN32 -D_WIN32 $(noansi)
  367.  
  368. # !ifdef USE_MSVCRT_LIB
  369. !ifndef USE_LIBCMT_LIB
  370.  
  371. !ifdef NODEBUG
  372. ccommon = $(ccommon) -MD
  373. !else
  374. !ifdef USE_MSVC20
  375. ccommon = $(ccommon) -MD
  376. !else
  377. ccommon = $(ccommon) -MDd
  378. !endif
  379. !endif
  380.  
  381. !else
  382.  
  383. !ifdef NODEBUG
  384. ccommon = $(ccommon) -MT
  385. !else
  386. !ifdef USE_MSVC20
  387. ccommon = $(ccommon) -MT
  388. !else
  389. ccommon = $(ccommon) -MTd
  390. !endif
  391. !endif
  392.  
  393. !endif
  394.  
  395. !ifndef ACTIVEX_NO_MT
  396. ccommon = $(ccommon) -D_MT
  397. !endif
  398.  
  399. # !ifdef USE_MSVCRT_LIB
  400. !ifndef USE_LIBCMT_LIB
  401. !if "$(TARGET_TYPE)" == "DYNLINK"
  402. ccommon = $(ccommon) -D_DLL
  403. !endif
  404. !endif
  405.  
  406. !IF "$(CPU)" == "i386"
  407. ccommon = $(ccommon) -D_X86_=1
  408. !ELSE
  409. !IF "$(CPU)" == "MIPS"
  410. ccommon = $(ccommon) -D_MIPS_=1
  411. !ELSE
  412. !IF "$(CPU)" == "PPC"
  413. ccommon = $(ccommon) -D_PPC_=1
  414. !ELSE
  415. !IF "$(CPU)" == "ALPHA"
  416. ccommon = $(ccommon) -D_ALPHA_=1
  417. !ENDIF
  418. !ENDIF
  419. !ENDIF
  420. !ENDIF
  421.  
  422. !IF "$(TARGET_OS)" == "WINNT"
  423. ccommon = $(ccommon) -D_WINNT
  424. !ELSE
  425. !IF "$(TARGET_OS)" == "WIN95"
  426. ccommon = $(ccommon) -D_WIN95
  427. !ENDIF
  428. !ENDIF
  429.  
  430. !IF "$(WIN_VER)" == "5.0"
  431. ccommon = $(ccommon) -DWINVER=0x0500
  432. !ELSE
  433. !IF "$(WIN_VER)" == "4.0"
  434. ccommon = $(ccommon) -DWINVER=0x0400
  435. !ENDIF
  436. !ENDIF
  437.  
  438. # debug
  439.  
  440. !ifdef NODEBUG
  441. cdebug = -DDBG=0
  442. !else
  443. !ifdef NODEBUGCODE
  444. cdebug = -DDBG=0
  445. !else
  446. cdebug = -DDBG=1 -DDEBUG -D_DEBUG
  447. !endif
  448. !endif
  449.  
  450. !ifdef PERF
  451. cdebug = $(cdebug) -DPERF
  452. !endif
  453.  
  454. !ifdef USE_LEGO
  455. cdebug = $(cdebug) -Zi
  456. !else
  457. !ifdef C_DEBUG
  458. cdebug = $(cdebug) $(C_DEBUG)
  459. !else
  460. !IFDEF NODEBUG
  461. !ifdef SYMBOLS
  462. cdebug = $(cdebug) -Zd
  463. !endif
  464. !ELSE
  465. !ifdef NO_PDB_FILES
  466. cdebug = $(cdebug) -Z7
  467. !else
  468. cdebug = $(cdebug) -Zi
  469. !endif
  470. !ENDIF
  471. !endif
  472. !endif
  473.  
  474. !ifndef NO_PDB_FILES
  475. cdebug = $(cdebug) -Fd$(DBG_RTL)\$(TARGET_NAME).pdb
  476. !endif
  477.  
  478. # optimization
  479.  
  480. !ifdef C_OPTIMIZATION
  481. cdebug = $(cdebug) $(C_OPTIMIZATION)
  482. !else
  483. !IFDEF NODEBUG
  484. !IFDEF PERF
  485. cdebug = $(cdebug) -Ois -GF
  486. !ELSE
  487. cdebug = $(cdebug) -Oxs -GF
  488. !ENDIF
  489. !ELSE
  490. cdebug = $(cdebug) -Oid
  491. !ENDIF
  492. !endif
  493.  
  494. # calling convention (Intel only)
  495. # - default to stdcall
  496.  
  497. !IF "$(CPU)" == "i386"
  498. !if "$(C_CALL)" == "cdecl"
  499. ccall = -Gd
  500. !else
  501. ccall = -Gz
  502. !endif
  503. !ELSE
  504. ccall =
  505. !ENDIF
  506.  
  507. # warning level
  508. # - defaults to level 3
  509.  
  510. !ifndef C_WARNING
  511. cwarn = -W3
  512. !else
  513. cwarn = $(C_WARNING)
  514. !endif
  515.  
  516. # exception handling
  517. # - default to standard WIN32
  518. # - can override to use C++ exceptions
  519.  
  520. !ifdef CPP_EXCEPTION_HANDLING
  521. cexcept = -GX -D_INC_EXCPT
  522. !else
  523. cexcept = -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally
  524. !endif
  525.  
  526. # combine flags
  527.  
  528. cflags   = $(ccommon) $(cdebug) $(ccall) $(cexcept) $(cwarn) $(C_DEFINES)
  529.  
  530. #----------------------------------------------------------------------------
  531. # resource compiler flags
  532.  
  533. rccommon = -l409 -r -DWIN32 -D_WIN32 $(noansi)
  534.  
  535. !IF "$(WIN_VER)" == "5.0"
  536. rccommon = $(rccommon) -DWINVER=0x0500
  537. !else
  538. rccommon = $(rccommon) -DWINVER=0x0400
  539. !ENDIF
  540.  
  541. !ifdef NODEBUG
  542. rcdebug = -DDBG=0
  543. !else
  544. rcdebug = -DDBG=1 -DDEBUG -D_DEBUG
  545. !endif
  546.  
  547. rcflags = $(rccommon) $(rcdebug) $(RC_DEFINES)
  548.  
  549. #----------------------------------------------------------------------------
  550. # library flags
  551.  
  552. # common stuff
  553.  
  554. libcommon = /NODEFAULTLIB /machine:$(CPU)
  555.  
  556. # debug type = coff|cv|both
  557.  
  558. !ifdef USE_LEGO
  559. libdebug = -debugtype:cv,fixup
  560. !else
  561. !ifdef NODEBUG
  562. !ifdef SYMBOLS
  563. libdebug = -debugtype:coff
  564. !endif
  565. !else
  566. libdebug = -debugtype:cv
  567. !endif
  568. !endif
  569.  
  570. # subsystem, def file, etc. switched
  571. # in according to TARGET_TYPE and EXE_TYPE
  572.  
  573. !if "$(TARGET_TYPE)" == "DYNLINK"
  574. liblink = /subsystem:windows,$(WIN_VER)
  575. !if "$(DEF_FILE)" != ""
  576. liblink = $(liblink) /def:$(DEF_FILE)
  577. !endif
  578. !else
  579. !if "$(TARGET_TYPE)" == "PROGRAM"
  580. !if "$(EXE_TYPE)" == "console"
  581. liblink = /subsystem:console,$(WIN_VER)
  582. !else
  583. !if "$(EXE_TYPE)" == "windows"
  584. liblink = /subsystem:windows,$(WIN_VER)
  585. !else
  586. !error EXE_TYPE=console|windows must be defined for PROGRAM
  587. !endif
  588. !endif
  589. !else
  590. liblink = /subsystem:windows,$(WIN_VER)
  591. !endif
  592. !endif
  593.  
  594. libflags = $(libcommon) $(liblink) $(libdebug)
  595.  
  596. #----------------------------------------------------------------------------
  597. # linker flags
  598.  
  599. !ifdef USE_DEFAULT_LIB
  600. DEFAULTLIBSWITCH = /NODEFAULTLIB:MSVCRT
  601. !else
  602. DEFAULTLIBSWITCH = /NODEFAULTLIB
  603. !endif
  604.  
  605. lcommon = $(DEFAULTLIBSWITCH) /INCREMENTAL:NO /NOLOGO /MACHINE:$(CPU)
  606.  
  607. !ifdef NO_PDB_FILES
  608. lcommon = $(lcommon) /PDB:NONE
  609. !else
  610. lcommon = $(lcommon) /PDB:$(DBG_RTL)\$(TARGET_NAME).pdb
  611. !endif
  612.  
  613. # declarations for use on Intel i386, i486, and Pentium systems
  614. !IF "$(CPU)" == "i386"
  615. DLLENTRY = @12
  616. lcommon  = $(lcommon) /align:0x1000
  617. !ENDIF
  618.  
  619. # declarations for use on self hosted MIPS R4x000 systems
  620. !IF "$(CPU)" == "MIPS"
  621. DLLENTRY =
  622. lcommon  = $(lcommon)
  623. !ENDIF
  624.  
  625. # declarations for use on self hosted PowerPC systems
  626. !IF "$(CPU)" == "PPC"
  627. DLLENTRY =
  628. lcommon  = $(lcommon)
  629. !ENDIF
  630.  
  631. # declarations for use on self hosted Digital Alpha AXP systems
  632. !IF "$(CPU)" == "ALPHA"
  633. DLLENTRY =
  634. lcommon  = $(lcommon)
  635. !ENDIF
  636.  
  637. # NODEBUG means a retail build
  638. # PERF is a special case of retail:
  639. #  == retail plus performance stuff
  640.  
  641. !ifndef DEBUG_TYPE
  642. DEBUG_TYPE = both
  643. !endif
  644.  
  645. !ifdef USE_LEGO
  646. ldebug = /OPT:REF /RELEASE /debug /debugtype:cv,fixup
  647. !else
  648. !IFDEF NODEBUG
  649. !IFDEF PERF
  650. ldebug = /OPT:REF /RELEASE /debug:mapped,minimal /debugtype:$(DEBUG_TYPE)
  651. !ELSE
  652. !ifdef SYMBOLS
  653. ldebug = /OPT:REF /RELEASE /debug:mapped,minimal /debugtype:$(DEBUG_TYPE)
  654. !else
  655. ldebug = /OPT:REF /RELEASE /debug:none
  656. !endif
  657. !ENDIF
  658. !ELSE
  659. ldebug = /debug:mapped,full /debugtype:$(DEBUG_TYPE)
  660. !ENDIF
  661. !endif
  662.  
  663. !if "$(TARGET_TYPE)" == "DYNLINK"
  664. !ifndef DLL_BASE
  665. DLL_BASE = 0x1c400000
  666. !endif
  667. llink = /dll /base:$(DLL_BASE) /subsystem:windows,$(WIN_VER)
  668. !if "$(DEF_FILE)" != ""
  669. llink = $(llink)
  670. TARGET_EXP = $(DBG_RTL)\$(TARGET_NAME).exp
  671. !endif
  672. !if "$(DLL_ENTRY)" != ""
  673. !if "$(DLL_ENTRY)" != "none"
  674. llink = $(llink) /entry:$(DLL_ENTRY)$(DLLENTRY)
  675. !endif
  676. !else
  677. llink = $(llink) /entry:DllEntryPoint$(DLLENTRY)
  678. !endif
  679. !else
  680. !if "$(TARGET_TYPE)" == "PROGRAM"
  681. !if "$(EXE_TYPE)" == "console"
  682. llink = /subsystem:console,$(WIN_VER) /entry:mainCRTStartup
  683. !else
  684. !if "$(EXE_TYPE)" == "windows"
  685. llink = /subsystem:windows,$(WIN_VER) /entry:WinMainCRTStartup
  686. !endif
  687. !endif
  688. !endif
  689. !endif
  690.  
  691. lflags = $(lcommon) $(ldebug) $(llink)
  692.  
  693. #----------------------------------------------------------------------------
  694. # make type library flags
  695.  
  696. mtlflags = /nologo $(MTL_DEFINES)
  697.  
  698. #----------------------------------------------------------------------------
  699. # unicode flags
  700.  
  701. !ifdef UNICODE
  702. cflags  = $(cflags)  -DUNICODE
  703. rcflags = $(rcflags) -DUNICODE
  704. !endif
  705.  
  706. #----------------------------------------------------------------------------
  707. # Include path
  708.  
  709. !ifndef NO_ACTIVEX_INCLUDES
  710. INC_PATH = .;                       \
  711.            $(MSSDK)\include;        \
  712.            $(MSTOOLS)\include;      \
  713.            $(MSSDK)\samples\graphics\DirectShow\classes\base;   \
  714.            $(MSTOOLS)\samples\graphics\DirectShow\classes\base; \
  715.            $(INC_PATH)
  716. !endif
  717.  
  718. !if "$(INC_PATH)" != ""
  719. INC_FLAGS = $(INC_PATH: =)***
  720. INC_FLAGS = $(INC_FLAGS:;***=)
  721. INC_FLAGS = $(INC_FLAGS:***=)
  722. INC_FLAGS = -I$(INC_FLAGS:;= -I)
  723. !endif
  724.  
  725. #----------------------------------------------------------------------------
  726. # Next work out what obj files need to be built from
  727. # the list of source files
  728.  
  729. !if "$(SRC_FILES)" != ""
  730. OBJ_FILES = $(SRC_FILES)
  731. OBJ_FILES = $(OBJ_FILES:.cpp =.cpp*)
  732. OBJ_FILES = $(OBJ_FILES:.c =.c*)
  733. OBJ_FILES = $(OBJ_FILES: =)
  734. !if "$(DBG_RTL)" == "retail"
  735. OBJ_FILES = retail\$(OBJ_FILES:*= retail\)
  736. !else
  737. OBJ_FILES = debug\$(OBJ_FILES:*= debug\)
  738. !endif
  739. OBJ_FILES = $(OBJ_FILES:.cpp=.obj)
  740. OBJ_FILES = $(OBJ_FILES:.c=.obj)
  741. !endif
  742.  
  743. # Similary for res file wrt rc file
  744.  
  745. !if "$(RC_FILE)" != ""
  746. !if "$(DBG_RTL)" == "retail"
  747. RES_FILE = retail\$(RC_FILE:.rc=.res)
  748. !else
  749. RES_FILE = debug\$(RC_FILE:.rc=.res)
  750. !endif
  751. !endif
  752.  
  753. # and TLB file wrt ODL
  754.  
  755. !if "$(ODL_FILE)" != ""
  756. !if "$(TLB_FILE)" == ""
  757. !if "$(DBG_RTL)" == "retail"
  758. TLB_FILE = retail\$(ODL_FILE:.odl=.tlb)
  759. !else
  760. TLB_FILE = debug\$(ODL_FILE:.odl=.tlb)
  761. !endif
  762. !endif
  763. !endif
  764.  
  765. #----------------------------------------------------------------------------
  766. # PCH stuff
  767.  
  768. !ifndef NO_COMMON_PCH
  769.  
  770. !ifdef NODEBUG
  771. STREAMS_PCH = $(MSSDK)\lib\streams.pch
  772. !else
  773. STREAMS_PCH = $(MSSDK)\lib\streamsd.pch
  774. !endif
  775.  
  776. !if exist( "$(STREAMS_PCH)" )
  777. NEED_PCH_OBJ = 1
  778. LINK_TASK = $(LINK_TASK) $(DBG_RTL)\_streams.obj
  779. END_TASK  = $(END_TASK) del_own_streams_obj
  780. COMMON_PCH_OBJ = $(DBG_RTL)\_streams.obj
  781. !endif
  782.  
  783. !endif
  784.  
  785. !ifndef DISABLE_PCH
  786.  
  787. !ifdef  PCH_HEADER
  788.  
  789. pchusage = /Yu$(PCH_HEADER)
  790.  
  791. !ifdef PCH_NAME
  792. !ifdef PCH_OBJ_NAME
  793. PCH_OBJ = $(DBG_RTL)\$(PCH_OBJ_NAME).obj
  794. !else
  795. PCH_OBJ = $(DBG_RTL)\$(PCH_NAME).obj
  796. !endif
  797. PCH_PCH = $(DBG_RTL)\$(PCH_NAME).pch
  798. !else
  799. !ERROR must specify PCH_NAME when using PCH_HEADER
  800. !endif
  801.  
  802. cpppch  = $(pchusage) /Fp$(PCH_PCH)
  803.  
  804. !else
  805.  
  806. !if exist( "$(STREAMS_PCH)" )
  807. PCH_OBJ  =
  808. PCH_PCH  = $(STREAMS_PCH)
  809. pchusage = /Yustreams.h
  810. cpppch  = $(pchusage) /Fp$(PCH_PCH)
  811. !else
  812. DISABLE_PCH = 1
  813. !endif
  814.  
  815. !endif
  816.  
  817. !endif
  818.  
  819. #----------------------------------------------------------------------------
  820. # Browser files
  821.  
  822. !if "$(BROWSER)" == "TRUE"
  823. cbrowser   = -FR$(@R).sbr
  824. TARGET_BSC = $(DBG_RTL)\$(TARGET_NAME).bsc
  825. !else
  826. cbrowser   =
  827. TARGET_BSC =
  828. !endif
  829.  
  830. #----------------------------------------------------------------------------
  831. # Map and Sym files
  832.  
  833. !if "$(TARGET_MAP)" !=""
  834.  
  835. !ifdef SYM_FILES
  836. END_TASK = $(END_TASK) $(TARGET_MAP:.map=.sym)
  837. lmap     = -map:$(TARGET_MAP)
  838. !endif
  839.  
  840. !ifdef MAP_FILES
  841. lmap     = -map:$(TARGET_MAP)
  842. !endif
  843.  
  844. LINKER_FLAGS = $(LINKER_FLAGS) $(lmap)
  845.  
  846. !endif
  847.  
  848. #----------------------------------------------------------------------------
  849. # Define common libraries
  850.  
  851. # base (not version!)
  852. _CORE_LIBS = kernel32.lib    \
  853.              advapi32.lib    \
  854.              version.lib     \
  855.              largeint.lib
  856.  
  857. # win libs
  858. _USER_LIBS = user32.lib      \
  859.              gdi32.lib       \
  860.              comctl32.lib
  861.  
  862. _OLE__LIBS = ole32.lib       \
  863.              oleaut32.lib    \
  864.              uuid.lib
  865.  
  866. # !ifdef USE_MSVCRT_LIB
  867. !ifndef USE_LIBCMT_LIB
  868.  
  869. !ifdef NODEBUG
  870. _CRT__LIBS = msvcrt.lib
  871. !else
  872. !ifdef USE_MSVC20
  873. _CRT__LIBS = msvcrt.lib
  874. !else
  875. _CRT__LIBS = msvcrtd.lib
  876. !endif
  877. !endif
  878.  
  879. !else
  880.  
  881. !ifdef NODEBUG
  882. _CRT__LIBS = libcmt.lib
  883. !else
  884. !ifdef USE_MSVC20
  885. _CRT__LIBS = libcmt.lib
  886. !else
  887. _CRT__LIBS = libcmtd.lib
  888. !endif
  889. !endif
  890.  
  891. !endif
  892.  
  893. _MM___LIBS = vfw32.lib       \
  894.              winmm.lib
  895.  
  896. !ifdef NODEBUG
  897. _AX1__LIBS = $(MSSDK)\lib\strmbase.lib
  898. !else
  899. _AX1__LIBS = $(MSSDK)\lib\strmbasd.lib
  900. !endif
  901.  
  902. _AX2__LIBS = $(MSSDK)\lib\quartz.lib
  903.  
  904. !ifdef PERF
  905. _AX2__LIBS = $(_AX2__LIBS)               \
  906.              $(MSSDK)\lib\measure.lib
  907. !endif
  908.  
  909. BASE_LIBS = $(_CRT__LIBS) \
  910.             $(_MM___LIBS) \
  911.             $(_CORE_LIBS) \
  912.             $(_USER_LIBS) \
  913.             $(_OLE__LIBS)
  914.  
  915. !ifndef NO_ACTIVEX_LIBS
  916. LINK_LIBS = $(_AX2__LIBS) $(LINK_LIBS) $(_AX1__LIBS)
  917. !if "$(TARGET_TYPE)" == "DYNLINK"
  918. CODE_LIBS = $(_AX1__LIBS) $(CODE_LIBS)
  919. !endif
  920. !endif
  921.  
  922. !if "$(TARGET_TYPE)" != "DYNLINK"
  923. LINK_LIBS = $(CODE_LIBS) $(LINK_LIBS)
  924. !endif
  925.  
  926. LINK_LIBS = $(LINK_LIBS) $(BASE_LIBS)
  927.  
  928. #----------------------------------------------------------------------------
  929. # Pseudo-targets
  930.  
  931. .SILENT:
  932. .IGNORE:
  933. .SUFFIXES:
  934. .SUFFIXES: .c .cpp
  935. .PRECIOUS: $(TARGET_LIB) $(TARGET_BIN)
  936.  
  937. #----------------------------------------------------------------------------
  938. # Rules
  939.  
  940. CC_COMMAND_LINE  = $(cflags) $(cbrowser) -Fo$(DBG_RTL)\ $(INC_FLAGS) $(@B).c
  941.  
  942. CPP_COMMAND_LINE = $(cflags) $(cbrowser) -Fo$(DBG_RTL)\ $(INC_FLAGS) $(@B).cpp
  943.  
  944. .c{$(DBG_RTL)}.obj:
  945.   echo Compiling $(@B).c...               > $(MAKE_ECHO)
  946.   if exist $@ del $@ > NUL
  947.   $(TYPE_ECHO)
  948.   $(FILE_ECHO)
  949.   echo $(cc) $(ccpch) $(CC_COMMAND_LINE)  > $(MAKE_ECHO)
  950.   $(TYPE_ECHO2)
  951.   $(FILE_ECHO)
  952.   $(cc) $(ccpch) $(CC_COMMAND_LINE)       > $(MAKE_ECHO)
  953.   $(TYPE_ECHO)
  954.   $(FILE_ECHO)
  955.   echo.                                   > $(MAKE_ECHO)
  956.   $(TYPE_ECHO2)
  957.   $(FILE_ECHO)
  958.  
  959. .c.cod:
  960.   echo Compiling $(@B).c - with cod file... > $(MAKE_ECHO)
  961.   if exist $@ del $@ > NUL
  962.   $(TYPE_ECHO)
  963.   $(FILE_ECHO)
  964.   echo $(cc) -Fc $(CC_COMMAND_LINE)         > $(MAKE_ECHO)
  965.   $(TYPE_ECHO2)
  966.   $(FILE_ECHO)
  967.   $(cc) -Fc $(CC_COMMAND_LINE)              > $(MAKE_ECHO)
  968.   $(TYPE_ECHO)
  969.   $(FILE_ECHO)
  970.   echo.                                     > $(MAKE_ECHO)
  971.   $(TYPE_ECHO2)
  972.   $(FILE_ECHO)
  973.  
  974. .cpp{$(DBG_RTL)}.obj:
  975.   echo Compiling $(@B).cpp...               > $(MAKE_ECHO)
  976.   if exist $@ del $@ > NUL
  977.   $(TYPE_ECHO)
  978.   $(FILE_ECHO)
  979.   echo $(cc) $(cpppch) $(CPP_COMMAND_LINE)  > $(MAKE_ECHO)
  980.   $(TYPE_ECHO2)
  981.   $(FILE_ECHO)
  982.   $(cc) $(cpppch) $(CPP_COMMAND_LINE)       > $(MAKE_ECHO)
  983.   $(TYPE_ECHO)
  984.   $(FILE_ECHO)
  985.   echo.                                     > $(MAKE_ECHO)
  986.   $(TYPE_ECHO2)
  987.   $(FILE_ECHO)
  988.  
  989. .cpp.cod:
  990.   echo Compiling $(@B).cpp - with cod file... > $(MAKE_ECHO)
  991.   if exist $@ del $@ > NUL
  992.   $(TYPE_ECHO)
  993.   $(FILE_ECHO)
  994.   echo $(cc) -Fc $(CPP_COMMAND_LINE)          > $(MAKE_ECHO)
  995.   $(TYPE_ECHO2)
  996.   $(FILE_ECHO)
  997.   $(cc) -Fc $(CPP_COMMAND_LINE)               > $(MAKE_ECHO)
  998.   $(TYPE_ECHO)
  999.   $(FILE_ECHO)
  1000.   echo.                                       > $(MAKE_ECHO)
  1001.   $(TYPE_ECHO2)
  1002.   $(FILE_ECHO)
  1003.  
  1004. #----------------------------------------------------------------------------
  1005. # TARGETS - key
  1006.  
  1007. #
  1008. # default
  1009. #
  1010.  
  1011. all  : log_start     \
  1012.        dump_params   \
  1013.        pass1         \
  1014.        log_done      \
  1015.        clear_params  \
  1016.        del_echo
  1017.  
  1018. #
  1019. # clean
  1020. #
  1021.  
  1022. clean: dump_params0  \
  1023.        pass0         \
  1024.        clear_params0 \
  1025.        del_echo0     \
  1026.        log_reset
  1027.  
  1028. #----------------------------------------------------------------------------
  1029. # TARGETS - passes
  1030.  
  1031. pass0: log_pass0      \
  1032.        $(CLEAN_TASK)  \
  1033.        delete
  1034.  
  1035. pass1: log_pass       \
  1036.        make_dir       \
  1037.        $(START_TASK)  \
  1038.        $(TLB_FILE)    \
  1039.        $(LIB_TASK)    \
  1040.        $(RES_FILE)    \
  1041.        $(PCH_PCH)     \
  1042.        $(PCH_OBJ)     \
  1043.        $(OBJ_FILES)   \
  1044.        $(TARGET_LIB)  \
  1045.        $(GOAL_LIB)    \
  1046.        $(LINK_TASK)   \
  1047.        $(TARGET_BIN)  \
  1048.        $(TARGET_BSC)  \
  1049.        $(END_TASK)    \
  1050.        $(GOAL_BIN)
  1051.  
  1052. #----------------------------------------------------------------------------
  1053. # TARGETS - logging
  1054.  
  1055. log_reset:
  1056.   if exist $(MAKE_LOG) del $(MAKE_LOG)
  1057.  
  1058. log_start:
  1059.   if exist $(MAKE_LOG) del $(MAKE_LOG)
  1060.   echo Making $(MAKEDIR)          > $(MAKE_ECHO)
  1061.   $(TYPE_ECHO)
  1062.   $(FILE_ECHO)
  1063.   echo TARGET_LIB = $(TARGET_LIB) > $(MAKE_ECHO)
  1064.   $(TYPE_ECHO2)
  1065.   $(FILE_ECHO)
  1066.   echo TARGET_BIN = $(TARGET_BIN) > $(MAKE_ECHO)
  1067.   $(TYPE_ECHO2)
  1068.   $(FILE_ECHO)
  1069.   echo.                           > $(MAKE_ECHO)
  1070.   $(TYPE_ECHO2)
  1071.   $(FILE_ECHO)
  1072.  
  1073. log_done:
  1074.   echo Done! > $(MAKE_ECHO)
  1075.   $(TYPE_ECHO)
  1076.   $(FILE_ECHO)
  1077.  
  1078. #----------------------------------------------------------------------------
  1079. # TARGETS - support
  1080.  
  1081. make_dir:
  1082.   if not exist $(DBG_RTL)\NUL md $(DBG_RTL)
  1083.  
  1084. delete:
  1085.   echo y | del $(DBG_RTL)\*.* > NUL
  1086.  
  1087. # OPK prob.  if exist $(DBG_RTL)\nul del $(DBG_RTL)\** > NUL
  1088.  
  1089. del_own_streams_obj:
  1090.   if exist $(DBG_RTL)\_streams.obj del $(DBG_RTL)\_streams.obj
  1091.  
  1092. #----------------------------------------------------------------------------
  1093. # TARGETS - copying
  1094.  
  1095. #
  1096. # copy *.lib files
  1097. #
  1098.  
  1099. !ifndef NO_COPY
  1100. !if "$(TARGET_LIB)" != ""
  1101.  
  1102. $(GOAL_LIB) : $(TARGET_LIB)
  1103.   echo Copy $(TARGET_LIB) to $@... > $(MAKE_ECHO)
  1104.   $(TYPE_ECHO)
  1105.   $(FILE_ECHO)
  1106.   if not exist $(TARGET_LIB_GOAL)\NUL md $(TARGET_LIB_GOAL)
  1107.   copy $(TARGET_LIB) $(TARGET_LIB_GOAL) > $(MAKE_ECHO)
  1108.   $(TYPE_ECHO2)
  1109.   $(FILE_ECHO)
  1110.   echo. > $(MAKE_ECHO)
  1111.   $(TYPE_ECHO2)
  1112.   $(FILE_ECHO)
  1113.  
  1114. !endif
  1115. !endif
  1116.  
  1117. #
  1118. # copy *.exe, etc. files
  1119. #
  1120.  
  1121. !ifndef NO_COPY
  1122. !if "$(TARGET_BIN)" != ""
  1123.  
  1124. $(GOAL_BIN) : $(TARGET_BIN)
  1125.   echo Copy $(TARGET_BIN) to $@... > $(MAKE_ECHO)
  1126.   $(TYPE_ECHO)
  1127.   $(FILE_ECHO)
  1128.   if not exist $(TARGET_BIN_GOAL)\NUL md $(TARGET_BIN_GOAL)
  1129.   copy $(TARGET_BIN) $(TARGET_BIN_GOAL) > $(MAKE_ECHO)
  1130. !ifdef MAP_FILES
  1131.   if exist $(TARGET_MAP) copy $(TARGET_MAP) $(TARGET_BIN_GOAL) > NUL
  1132. !endif
  1133. !ifdef SYM_FILES
  1134.   if exist $(TARGET_MAP:.map=.sym) copy $(TARGET_MAP:.map=.sym) $(TARGET_BIN_GOAL) > NUL
  1135. !endif
  1136.   $(TYPE_ECHO2)
  1137.   $(FILE_ECHO)
  1138.   echo. > $(MAKE_ECHO)
  1139.   $(TYPE_ECHO2)
  1140.   $(FILE_ECHO)
  1141.  
  1142. !endif
  1143. !endif
  1144.  
  1145. #----------------------------------------------------------------------------
  1146. # TARGETS - target type specific
  1147.  
  1148. #
  1149. # build library
  1150. #
  1151.  
  1152. !if "$(TARGET_LIB)" != ""
  1153.  
  1154. LIB_COMMAND_LINE = $(libflags)          \
  1155.                    $(LIB_FLAGS)         \
  1156.                    /out:$(TARGET_LIB)   \
  1157.                    $(CODE_LIBS)         \
  1158.                    $(OBJ_FILES)         \
  1159.                    $(PCH_OBJ)           \
  1160.                    $(RES_FILE)
  1161.  
  1162. $(TARGET_LIB): $(OBJ_FILES) $(RES_FILE) $(DEF_FILE) $(CODE_LIBS)
  1163.   echo Build library $@... > $(MAKE_ECHO)
  1164.   $(TYPE_ECHO)
  1165.   $(FILE_ECHO)
  1166.   echo $(implib) $(LIB_COMMAND_LINE) > $(MAKE_ECHO)
  1167.   $(TYPE_ECHO2)
  1168.   $(FILE_ECHO)
  1169.   $(implib) $(LIB_COMMAND_LINE)      > $(MAKE_ECHO)
  1170.   $(TYPE_ECHO)
  1171.   $(FILE_ECHO)
  1172.   echo.                              > $(MAKE_ECHO)
  1173.   $(TYPE_ECHO2)
  1174.   $(FILE_ECHO)
  1175. !endif
  1176.  
  1177. #
  1178. # link bin
  1179. #
  1180.  
  1181. !if "$(TARGET_BIN)" != ""
  1182.  
  1183. LINK_COMMAND_LINE =   \
  1184.    $(lflags)          \
  1185.    $(LINKER_FLAGS)    \
  1186.    /out:$(TARGET_BIN) \
  1187.    $(TARGET_EXP)      \
  1188.    $(OBJ_FILES)       \
  1189.    $(PCH_OBJ)         \
  1190.    $(COMMON_PCH_OBJ)  \
  1191.    $(RES_FILE)        \
  1192.    $(CODE_LIBS)       \
  1193.    $(LINK_LIBS)
  1194.  
  1195. # kill extra whitespace
  1196. LINK_COMMAND_LINE = $(LINK_COMMAND_LINE:        = )
  1197. LINK_COMMAND_LINE = $(LINK_COMMAND_LINE:    = )
  1198. LINK_COMMAND_LINE = $(LINK_COMMAND_LINE:  = )
  1199. LINK_COMMAND_LINE = $(LINK_COMMAND_LINE:  = )
  1200.  
  1201. $(TARGET_BIN): $(OBJ_FILES) $(RES_FILE) $(DEF_FILE) $(CODE_LIBS) $(TARGET_EXP)
  1202.   echo Linking $(TARGET_BIN)...     > $(MAKE_ECHO)
  1203.   $(TYPE_ECHO)
  1204.   $(FILE_ECHO)
  1205.   copy << $(MAKEDIR)\~qlnkcmd.tmp > NUL
  1206.   $(LINK_COMMAND_LINE: =^
  1207.   )
  1208. <<NOKEEP
  1209.   echo. $(link)                     > $(MAKE_ECHO)
  1210.   type $(MAKEDIR)\~qlnkcmd.tmp     >> $(MAKE_ECHO)
  1211.   $(TYPE_ECHO2)
  1212.   $(FILE_ECHO)
  1213.   $(link) @$(MAKEDIR)\~qlnkcmd.tmp  > $(MAKE_ECHO)
  1214.   $(TYPE_ECHO)
  1215.   $(FILE_ECHO)
  1216.   del $(MAKEDIR)\~qlnkcmd.tmp
  1217.   echo.                             > $(MAKE_ECHO)
  1218.   $(TYPE_ECHO2)
  1219.   $(FILE_ECHO)
  1220. !endif
  1221.  
  1222. #
  1223. # compile resources
  1224. #
  1225.  
  1226. !if "$(RC_FILE)" != ""
  1227. RC_COMMAND_LINE = $(rcflags)     \
  1228.                   -Fo$(RES_FILE) \
  1229.                   -I.            \
  1230.                   $(INC_FLAGS)   \
  1231.                   $(RC_FILE)
  1232. $(RES_FILE): $(RC_FILE)
  1233.   echo Compiling resources...   > $(MAKE_ECHO)
  1234.   $(TYPE_ECHO)
  1235.   $(FILE_ECHO)
  1236.   echo $(rc) $(RC_COMMAND_LINE) > $(MAKE_ECHO)
  1237.   $(TYPE_ECHO2)
  1238.   $(FILE_ECHO)
  1239.   $(rc) $(RC_COMMAND_LINE)      > $(MAKE_ECHO)
  1240.   $(TYPE_ECHO)
  1241.   $(FILE_ECHO)
  1242.   echo.                         > $(MAKE_ECHO)
  1243.   $(TYPE_ECHO2)
  1244.   $(FILE_ECHO)
  1245. !endif
  1246.  
  1247. #
  1248. # bsc target
  1249. #
  1250.  
  1251. !if "$(TARGET_BSC)" != ""
  1252. !if "$(PREPEND_STRMBASE_BSC)" == "TRUE"
  1253. STRMBASE_BSC = $(MSSDK)\samples\graphics\DirectShow\classes\base\$(DBG_RTL)\strmbase.bsc
  1254. $(TARGET_BSC) :: $(STRMBASE_BSC)
  1255.   copy $(STRMBASE_BSC) $(TARGET_BSC)
  1256. !endif
  1257. $(TARGET_BSC) :: $(OBJS)
  1258.   echo Generating Browser database... > $(MAKE_ECHO)
  1259.   $(TYPE_ECHO)
  1260.   $(FILE_ECHO)
  1261.   if exist $(DBG_RTL)\*.sbr bscmake /nologo /o$(TARGET_BSC) $(DBG_RTL)\*.sbr
  1262.   echo. > $(MAKE_ECHO)
  1263.   $(TYPE_ECHO)
  1264.   $(FILE_ECHO)
  1265. !endif
  1266.  
  1267. #
  1268. # make type library
  1269. #
  1270.  
  1271. !if "$(ODL_FILE)" != ""
  1272. MTL_COMMAND_LINE = $(mtlflags)      \
  1273.                    /win32           \
  1274.                    /tlb $(TLB_FILE) \
  1275.                    /h $(ODL_HEADER) \
  1276.                    -I.              \
  1277.                    $(INC_FLAGS)     \
  1278.                    $(ODL_FILE)
  1279. $(TLB_FILE): $(ODL_FILE)
  1280.   echo Making type library...     > $(MAKE_ECHO)
  1281.   $(TYPE_ECHO)
  1282.   $(FILE_ECHO)
  1283.   echo $(mtl) $(MTL_COMMAND_LINE) > $(MAKE_ECHO)
  1284.   $(TYPE_ECHO2)
  1285.   $(FILE_ECHO)
  1286.   $(mtl) $(MTL_COMMAND_LINE)      > $(MAKE_ECHO)
  1287.   $(TYPE_ECHO)
  1288.   $(FILE_ECHO)
  1289.   echo.                           > $(MAKE_ECHO)
  1290.   $(TYPE_ECHO2)
  1291.   $(FILE_ECHO)
  1292. !endif
  1293.  
  1294. #
  1295. # pch file
  1296. #
  1297.  
  1298. !ifndef DISABLE_PCH
  1299. !if "$(PCH_HEADER)" != ""
  1300. PCH_COMMAND_LINE = $(cflags)          \
  1301.                    -Fo$(PCH_OBJ)      \
  1302.                    -Fp$(PCH_PCH)      \
  1303.                    -Yc"$(PCH_HEADER)" \
  1304.                    -I.                \
  1305.                    $(INC_FLAGS)
  1306. $(PCH_PCH) $(PCH_OBJ) : $(PCH_HEADER)
  1307.   echo Compiling precompiled header... > $(MAKE_ECHO)
  1308.   $(TYPE_ECHO)
  1309.   $(FILE_ECHO)
  1310.   echo $(cc) $(PCH_COMMAND_LINE) > $(MAKE_ECHO)
  1311.   $(TYPE_ECHO2)
  1312.   $(FILE_ECHO)
  1313.   echo #include "$(PCH_HEADER)" > $(MAKEDIR)\~qpchfil.tmp
  1314.   $(cc) $(PCH_COMMAND_LINE) /Tp $(MAKEDIR)\~qpchfil.tmp > $(MAKE_ECHO)
  1315.   del $(MAKEDIR)\~qpchfil.tmp
  1316.   $(TYPE_ECHO2)
  1317.   $(FILE_ECHO)
  1318.   echo. > $(MAKE_ECHO)
  1319.   $(TYPE_ECHO)
  1320.   $(FILE_ECHO)
  1321.  
  1322. !ifdef OBJ_FILES
  1323. $(OBJ_FILES):$(PCH_PCH)
  1324. !endif
  1325.  
  1326. !else
  1327.  
  1328. !if "$(OBJ_FILES)" != ""
  1329. !ifdef NODEBUG
  1330. $(OBJ_FILES):$(MSSDK)\lib\streams.pch
  1331. !else
  1332. $(OBJ_FILES):$(MSSDK)\lib\streamsd.pch
  1333. !endif
  1334. !endif
  1335.  
  1336. !endif
  1337. !endif
  1338.  
  1339. !ifdef NEED_PCH_OBJ
  1340. $(DBG_RTL)\_streams.obj : $(MSSDK)\samples\graphics\DirectShow\classes\base\$(DBG_RTL)\_streams.obj
  1341.   copy $(MSSDK)\samples\graphics\DirectShow\classes\base\$(DBG_RTL)\_streams.obj $(DBG_RTL) > NUL
  1342. !endif
  1343.  
  1344. #
  1345. # sym files
  1346. #
  1347.  
  1348. !ifdef SYM_FILES
  1349. !if "$(TARGET_MAP)" !=""
  1350. $(TARGET_MAP:.map=.sym): $(TARGET_MAP)
  1351.   echo Running mapsym...                                  > $(MAKE_ECHO)
  1352.   $(TYPE_ECHO)
  1353.   $(FILE_ECHO)
  1354.   mapsym -nologo -o $(TARGET_MAP:.map=.sym) $(TARGET_MAP) > $(MAKE_ECHO)
  1355.   $(TYPE_ECHO2)
  1356.   $(FILE_ECHO)
  1357. !endif
  1358. !endif
  1359.  
  1360. #----------------------------------------------------------------------------
  1361. # include dependencies
  1362.  
  1363. !ifndef NODEPENDS
  1364. !if exist("_depend")
  1365. !include "_depend"
  1366. !endif
  1367. !endif
  1368.  
  1369. !ELSE
  1370.  
  1371. #============================================================================
  1372. #
  1373. # DIRECTORY
  1374. #
  1375. #============================================================================
  1376.  
  1377. #
  1378. # if DIR_LIST *is* defined this makefile is being
  1379. # included to build a directory (tree).
  1380. #
  1381.  
  1382. #----------------------------------------------------------------------------
  1383. # directives
  1384.  
  1385. .IGNORE:
  1386. .SILENT:
  1387.  
  1388. #----------------------------------------------------------------------------
  1389. # defines
  1390.  
  1391.  
  1392. #----------------------------------------------------------------------------
  1393. # TARGETS - key
  1394.  
  1395. #
  1396. # default
  1397. #
  1398.  
  1399. all  : log_start           \
  1400.        dump_params         \
  1401.        set_pass_target     \
  1402.        pass1               \
  1403.        log_done            \
  1404.        delete_qmakcmd_bat  \
  1405.        clear_params        \
  1406.        del_echo
  1407.  
  1408. clean: dump_params0        \
  1409.        set_pass_target0    \
  1410.        pass0               \
  1411.        delete_qmakcmd_bat0 \
  1412.        clear_params0       \
  1413.        del_echo0
  1414.  
  1415. #----------------------------------------------------------------------------
  1416. # TARGETS - passes
  1417.  
  1418. # pass0 - do clean
  1419.  
  1420. pass0: log_pass0      \
  1421.        $(CLEAN_TASK)  \
  1422.        dir_list0      \
  1423.        dir_delete
  1424.  
  1425. pass1: log_pass       \
  1426.        $(START_TASK)  \
  1427.        dir_list1      \
  1428.        $(END_TASK)
  1429.  
  1430. #----------------------------------------------------------------------------
  1431. # TARGETS - directory lists
  1432.  
  1433. # dir_list0 - do clean
  1434.  
  1435. dir_list0: $(DIR_LIST)
  1436.   !$(MAKE_CMD) $** pass0
  1437.  
  1438. # dir_list1 - build all targets
  1439.  
  1440. dir_list1: $(DIR_LIST)
  1441.   !$(MAKE_CMD) $** pass1
  1442.  
  1443. #----------------------------------------------------------------------------
  1444. # TARGETS - support
  1445.  
  1446. set_pass_target:
  1447.   @echo @echo off                                            >  $(MAKE_CMD)
  1448.   @echo cd %1                                                >> $(MAKE_CMD)
  1449.   @echo $(MAKE) /nologo MAKE_ENV=$(MAKE_ENV) MAKE_PASS=%2 %2 >> $(MAKE_CMD)
  1450.   @echo cd $(MAKEDIR)                                        >> $(MAKE_CMD)
  1451.  
  1452. set_pass_target0:
  1453.   @echo @echo off                                            >  $(MAKE_CMD)
  1454.   @echo cd %1                                                >> $(MAKE_CMD)
  1455.   @echo $(MAKE) /nologo MAKE_ENV=$(MAKE_ENV) MAKE_PASS=%2 %2 >> $(MAKE_CMD)
  1456.   @echo cd $(MAKEDIR)                                        >> $(MAKE_CMD)
  1457.  
  1458. #----------------------------------------------------------------------------
  1459. # TARGETS - logging
  1460.  
  1461. log_start:
  1462.   if exist $(MAKE_LOG) del $(MAKE_LOG)
  1463.   echo Making $(MAKEDIR) tree... > $(MAKE_ECHO)
  1464.   $(TYPE_ECHO)
  1465.   $(FILE_ECHO)
  1466.  
  1467. log_done:
  1468.   echo Finished $(MAKEDIR) tree... > $(MAKE_ECHO)
  1469.   $(TYPE_ECHO)
  1470.   $(FILE_ECHO)
  1471.  
  1472. #----------------------------------------------------------------------------
  1473. # TARGETS - delete
  1474.  
  1475. dir_delete:
  1476.   if exist ~q*.*    del ~q*.*
  1477.   if exist make.log del make.log
  1478.  
  1479. delete_log:
  1480.   if exist $(MAKE_LOG) del $(MAKE_LOG)
  1481.  
  1482. delete_qmakcmd_bat:
  1483.   if exist $(MAKE_CMD) del $(MAKE_CMD)
  1484.  
  1485. delete_log0:
  1486.   if exist $(MAKE_LOG) del $(MAKE_LOG)
  1487.  
  1488. delete_qmakcmd_bat0:
  1489.   if exist $(MAKE_CMD) del $(MAKE_CMD)
  1490.  
  1491. # BINARY/DIRECTORY
  1492. !ENDIF
  1493.  
  1494. #============================================================================
  1495. #
  1496. # Common (to BINARY and DIRECTORY)
  1497. #
  1498. #============================================================================
  1499.  
  1500. #----------------------------------------------------------------------------
  1501. # TARGETS - environment
  1502.  
  1503. dump_params:
  1504.   if exist $(MAKE_ENV) del $(MAKE_ENV)
  1505. !ifdef NODEBUG
  1506.   echo NODEBUG     = $(NODEBUG)     >> $(MAKE_ENV)
  1507. !endif
  1508. !ifdef PERF
  1509.   echo PERF        = $(PERF)        >> $(MAKE_ENV)
  1510. !endif
  1511. !ifdef SYMBOLS
  1512.   echo SYMBOLS     = $(SYMBOLS)     >> $(MAKE_ENV)
  1513. !endif
  1514. !ifdef MAKE_CMD
  1515.   echo MAKE_CMD    = $(MAKE_CMD)    >> $(MAKE_ENV)
  1516. !endif
  1517. !ifdef MAKE_LOG
  1518.   echo MAKE_LOG    = $(MAKE_LOG)    >> $(MAKE_ENV)
  1519. !endif
  1520. !ifdef MAKE_ECHO
  1521.   echo MAKE_ECHO   = $(MAKE_ECHO)   >> $(MAKE_ENV)
  1522. !endif
  1523. !ifdef ECHO_ECHO
  1524.   echo ECHO_ECHO   = $(ECHO_ECHO)   >> $(MAKE_ENV)
  1525. !endif
  1526. !ifdef MAKEFLAGS
  1527.   echo MAKEFLAGS   = $(MAKEFLAGS)   >> $(MAKE_ENV)
  1528. !endif
  1529. !ifdef DISABLE_PCH
  1530.   echo DISABLE_PCH = $(DISABLE_PCH) >> $(MAKE_ENV)
  1531. !endif
  1532.  
  1533. dump_params0:
  1534.   if exist $(MAKE_ENV) del $(MAKE_ENV)
  1535. !ifdef NODEBUG
  1536.   echo NODEBUG     = $(NODEBUG)     >> $(MAKE_ENV)
  1537. !endif
  1538. !ifdef PERF
  1539.   echo PERF        = $(PERF)        >> $(MAKE_ENV)
  1540. !endif
  1541. !ifdef SYMBOLS
  1542.   echo SYMBOLS     = $(SYMBOLS)     >> $(MAKE_ENV)
  1543. !endif
  1544. !ifdef MAKE_CMD
  1545.   echo MAKE_CMD    = $(MAKE_CMD)    >> $(MAKE_ENV)
  1546. !endif
  1547. !ifdef MAKE_LOG
  1548.   echo MAKE_LOG    = $(MAKE_LOG)    >> $(MAKE_ENV)
  1549. !endif
  1550. !ifdef MAKE_ECHO
  1551.   echo MAKE_ECHO   = $(MAKE_ECHO)   >> $(MAKE_ENV)
  1552. !endif
  1553. !ifdef ECHO_ECHO
  1554.   echo ECHO_ECHO   = $(ECHO_ECHO)   >> $(MAKE_ENV)
  1555. !endif
  1556. !ifdef MAKEFLAGS
  1557.   echo MAKEFLAGS   = $(MAKEFLAGS)   >> $(MAKE_ENV)
  1558. !endif
  1559. !ifdef DISABLE_PCH
  1560.   echo DISABLE_PCH = $(DISABLE_PCH) >> $(MAKE_ENV)
  1561. !endif
  1562.  
  1563. clear_params:
  1564.   if exist $(MAKE_ENV) del $(MAKE_ENV)
  1565.  
  1566. clear_params0:
  1567.   if exist $(MAKE_ENV) del $(MAKE_ENV)
  1568.  
  1569. #----------------------------------------------------------------------------
  1570. # TARGETS - logging
  1571.  
  1572. del_echo:
  1573.   if exist $(MAKE_ECHO) del $(MAKE_ECHO)
  1574.  
  1575. del_echo0:
  1576.   if exist $(MAKE_ECHO) del $(MAKE_ECHO)
  1577.  
  1578. log_pass:
  1579.   echo $(MAKE_PASS) - $(MAKEDIR) > $(MAKE_ECHO)
  1580.   $(TYPE_ECHO)
  1581.   $(FILE_ECHO)
  1582.  
  1583. log_pass0:
  1584.   echo cleaning - $(MAKEDIR) > $(MAKE_ECHO)
  1585.   $(TYPE_ECHO)
  1586.   $(FILE_ECHO)
  1587.  
  1588. # END OF FILE