home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / mapi / win16 / dev / sample.ms / makefile < prev    next >
Encoding:
Makefile  |  1995-07-11  |  23.6 KB  |  1,078 lines

  1. # -----------------------------------------------------------------------------
  2. # $(MAPI)\src\sample.ms\makefile
  3. #
  4. # Copyright (C) 1993-1995 Microsoft Corporation. All Rights Reserved.
  5. # -----------------------------------------------------------------------------
  6.  
  7. WARNLEVEL = 3
  8.  
  9. # -----------------------------------------------------------------------------
  10. #
  11. #       Part 1: define the version to be built
  12. #       Default is debug Win32 DLL
  13. #
  14.  
  15. # Default build flavor
  16. !IF "$(VERSION)" == ""
  17. VERSION=DEBUG
  18. !ENDIF
  19.  
  20. # Default target type
  21. !IF "$(PRODUCT)" == ""
  22. PRODUCT=WIN16DLL
  23. !ENDIF
  24.  
  25. # Conditional key for MAPI dev tree vs. setup tree
  26. DEVTREE=0
  27.  
  28. # -----------------------------------------------------------------------------
  29. # The PRODUCT variable must be defined to be one of the following:
  30. #       
  31. #       WIN16EXE        Win16 Windows Application
  32. #       WIN16DLL        Win16 DLL
  33. #       WIN16LIB        Win16 Static library
  34. #       WIN32EXE        Win32 Windows Application (single thread)
  35. #       WIN32DLL        Win32 DLL (single thread)
  36. #       WIN32DLLMT      Win32 DLL (multi thread)
  37. #       WIN32LIB        Win32 Static library
  38. #       CHIEXE          Win32c Windows Application (single thread)
  39. #       CHIDLL          Win32c DLL (32-bit, single thread)
  40. #       CHIDLLMT        Win32c DLL (multi thread)
  41. #       CHILIB          Win32c Static library
  42. #
  43. # The VERSION variable must be defined to be one of the following:
  44. #
  45. #       DEBUG           Debug build (full symbols, full debug info, no optimizations)
  46. #       TEST            Test build (symbols only, full optimizations)
  47. #       SHIP            Ship build (no symbols, full optimizations)
  48. #
  49. # The following environment variables should be defined:
  50. #
  51. #       MAPI            Root of the MAPI project (defaults to c:\mapi)
  52. #       TMP                     Temp directory (defaults to c:\temp)
  53. #       CPU                     CPU to be targeted (defaults to i386)
  54. #       LANG            The language version to compile (defaults to usa)
  55. #       NOSILENT        Set to 1 to prevent silent execution of nmake
  56. #       NOECHO          Set to 1 to prevent echo of progress
  57. #
  58. # As a result of the above definitions, the following variables are defined:
  59. #
  60. #       WIN16           Set to 1 if producing a Win16 product
  61. #       WIN32           Set to 1 if producing a Win32 product
  62. #       WINTAG          Set to 16/32/chi/dos/mac depending on PRODUCT
  63. #
  64. #       PRODEXE         Set to 1 if producing an EXE
  65. #       PRODDLL         Set to 1 if producing a DLL
  66. #       PRODMT          Set to 1 if producing a multi threaded product
  67. #
  68. #       VERDEBUG        Set to 1 if VERSION is DEBUG
  69. #       VERTEST         Set to 1 if VERSION is TEST
  70. #       VERSHIP         Set to 1 if VERSION is SHIP
  71. #       VERTAG          Set to dbg/shp/tst depending on VERSION
  72. #
  73. #       MAPIBIN         Set to $(MAPI)\bin
  74. #       MAPILIB         Set to $(MAPI)\lib\$(WINTAG)
  75. #       MAPIDLL         Set to $(MAPI)\lib\$(WINTAG)\$(VERTAG)
  76. #       MAPICOMMON      Set to $(MAPI)\src\common
  77. #
  78. # -----------------------------------------------------------------------------
  79.  
  80. # Silence and Echo ------------------------------------------------------------
  81.  
  82. !IF "$(NOSILENT)" == ""
  83. !CMDSWITCHES +s
  84. !ENDIF
  85.  
  86. !IF "$(NOECHO)" == ""
  87. DOECHO  = 1
  88. !ELSE
  89. DOECHO  = 0
  90. !ENDIF
  91.  
  92. # Process the PRODUCT variable ------------------------------------------------
  93.  
  94. WIN16           = 0
  95. WIN32           = 0
  96. WIN95           = 0
  97.  
  98. PRODEXE         = 0
  99. PRODLIB         = 0
  100. PRODDLL         = 0
  101. PRODMT          = 0
  102.  
  103. !IF "$(PRODUCT)" == "WIN16EXE"
  104. WIN16           = 1
  105. PRODEXE         = 1
  106. !ENDIF
  107.  
  108. !IF "$(PRODUCT)" == "WIN16DLL"
  109. WIN16           = 1
  110. PRODDLL         = 1
  111. !ENDIF
  112.  
  113. !IF "$(PRODUCT)" == "WIN16LIB"
  114. WIN16           = 1
  115. PRODLIB         = 1
  116. !ENDIF
  117.  
  118. !IF "$(PRODUCT)" == "WIN32EXE"
  119. WIN32           = 1
  120. PRODEXE         = 1
  121. !ENDIF
  122.  
  123. !IF "$(PRODUCT)" == "WIN32DLL"
  124. WIN32           = 1
  125. PRODDLL         = 1
  126. !ENDIF
  127.  
  128. !IF "$(PRODUCT)" == "WIN32DLLMT"
  129. WIN32           = 1
  130. PRODDLL         = 1
  131. PRODMT          = 1
  132. !ENDIF
  133.  
  134. !IF "$(PRODUCT)" == "WIN32LIB"
  135. WIN32           = 1
  136. PRODLIB         = 1
  137. !ENDIF
  138.  
  139. !IF "$(PRODUCT)" == "CHIEXE"
  140. WIN32           = 1
  141. PRODEXE         = 1
  142. WIN95           = 1
  143. !ENDIF
  144.  
  145. !IF "$(PRODUCT)" == "CHIDLL"
  146. WIN32           = 1
  147. PRODDLL         = 1
  148. WIN95           = 1
  149. !ENDIF
  150.  
  151. !IF "$(PRODUCT)" == "CHIDLLMT"
  152. WIN32           = 1
  153. PRODDLL         = 1
  154. PRODMT          = 1
  155. WIN95           = 1
  156. !ENDIF
  157.  
  158. !IF "$(PRODUCT)" == "CHILIB"
  159. WIN32           = 1
  160. PRODLIB         = 1
  161. WIN95           = 1
  162. !ENDIF
  163.  
  164. WINTAG          =
  165.  
  166. !IF $(WIN16)
  167. WINTAG          = 16
  168. !ENDIF
  169.  
  170. !IF $(WIN32)
  171. !IF $(WIN95)
  172. WINTAG          = chi
  173. !ELSE
  174. WINTAG          = 32
  175. !ENDIF
  176. !ENDIF
  177.  
  178. !IF "$(WINTAG)" == ""
  179. !ERROR "The PRODUCT variable has not been defined correctly"
  180. !ENDIF
  181.  
  182. # Process the VERSION variable ------------------------------------------------
  183.  
  184. VERDEBUG        = 0
  185. VERTEST         = 0
  186. VERSHIP         = 0
  187.  
  188. !IF     "$(VERSION)" == "DEBUG"
  189. VERDEBUG        = 1
  190. VERTAG          = dbg
  191. !ENDIF
  192.  
  193. !IF "$(VERSION)" == "TEST"
  194. VERTEST         = 1
  195. VERTAG          = tst
  196. !ENDIF
  197.  
  198. !IF "$(VERSION)" == "SHIP"
  199. VERSHIP         = 1
  200. VERTAG          = shp
  201. !ENDIF
  202.  
  203. !IF $(VERDEBUG) == 0 && $(VERTEST) == 0 && $(VERSHIP) == 0
  204. !ERROR "The VERSION variable has not been defined correctly"
  205. !ENDIF
  206.  
  207. # Defaults --------------------------------------------------------------------
  208.  
  209. !IF "$(MAPI)" == ""
  210. MAPI            = c:\mapi
  211. !ENDIF
  212.  
  213. !IF "$(TMP)" == ""
  214. TMP                     = c:\temp
  215. !ENDIF
  216.  
  217. !IF "$(LANG)" == ""
  218. LANG            = usa
  219. !ENDIF
  220.  
  221. #REM Key to CPU specific conditions, CPU == i386 || ALPHA || MIPS     1) cvtres
  222. #     cvtres -$(CPU) ...
  223. !IF "$(CPU)" == ""
  224. !IF "$(PROCESSOR_ARCHITECTURE)" == "MIPS" || "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
  225. CPU = $(PROCESSOR_ARCHITECTURE)
  226. !ELSE
  227. CPU = i386
  228. !ENDIF
  229. !ENDIF
  230.  
  231. !IF "$(MSVCNT)" == ""
  232. MSVCNT          = 1             # Change this to a 0 to make NT SDK compiler the default
  233. !ENDIF
  234.  
  235. # Construct directory variables -----------------------------------------------
  236.  
  237. !IF "$(MAPILIB)" == ""
  238. MAPILIB         = $(MAPI)\lib\$(WINTAG)
  239. !ENDIF
  240.  
  241. !IF $(DEVTREE)
  242. SRCROOT         = src
  243. CTL3DLIB        = CTL3DV2.LIB
  244. !IF "$(MAPIDLL)" == ""
  245. MAPIDLL         = $(MAPI)\lib\$(WINTAG)\$(VERTAG)
  246. !ENDIF
  247. !ELSE
  248. SRCROOT         = dev
  249. CTL3DLIB        = $(MAPI)\lib\$(WINTAG)\CTL3DV2.LIB
  250. !IF "$(MAPIDLL)" == ""
  251. MAPIDLL         = $(MAPI)
  252. !ENDIF
  253. !ENDIF
  254.  
  255. MAPIH           = $(MAPI)\h
  256. MAPICOMMON      = $(MAPI)\$(SRCROOT)\common
  257. Z                       = $(MAPI)
  258.  
  259. # Construct MAKEDEFS ----------------------------------------------------------
  260.  
  261. MAKEDEFS        = PRODUCT=$(PRODUCT) VERSION=$(VERSION)
  262.  
  263. # Definitions -----------------------------------------------------------------
  264.  
  265. DEFS            =
  266. AFLAGS          =
  267. CFLAGS          =
  268. LFLAGS          =
  269. INCDIRS         =
  270.  
  271. !IF $(VERDEBUG)
  272. DEFS            = $(DEFS) -DDEBUG
  273. !ENDIF
  274.  
  275. !IF $(VERTEST)
  276. DEFS            = $(DEFS) -DTEST
  277. !ENDIF
  278.  
  279. !IF $(VERSHIP)
  280. DEFS            = $(DEFS) -DSHIP
  281. !ENDIF
  282.  
  283. # Programs --------------------------------------------------------------------
  284.  
  285. !IF $(WIN16)
  286. CC                      = cl
  287. CPRE            = cl -nologo -EP
  288. LINK            = link
  289. LIBR            = lib
  290. IMPLIB          = implib
  291. !ENDIF
  292.  
  293. !IF $(WIN32) 
  294.  
  295. #REM   MSVCNT  == MS Visual C++ = 1      ==0 for SDK
  296. #REM   LIBSDLL == C run time DLL lib
  297. !IF "$(MSVCNT)" == "1"   &&  "$(LIBSDLL)" == ""
  298. LIBSDLL = MSVCRT.LIB
  299. !ENDIF
  300. !IF "$(LIBSDLL)" == ""
  301. LIBSDLL = CRTDLL.LIB
  302. !ENDIF
  303.  
  304. #REM Compiler name:  1) Compile flags and   2) run the C Compiler  and  3) midl compiler name
  305. # 1)    set $(CC)= ... -D$(CCPU)#1 ..
  306. # 2)    $(CC) ...  name.c
  307. # 3)    midl ...  cpp_cmd $(CC)
  308. !IF "$(CPU)" == "ALPHA"   &&  "$(MSVCNT)" != "1"  &&  "$(cc)" == ""
  309. cc = claxp
  310. !ENDIF
  311. !IF "$(CPU)" == "ALPHA"   &&  "$(MSVCNT)" == "1"
  312. cc = cl
  313. !ENDIF
  314. !IF "$(cc)" == ""
  315. cc = cl
  316. !ENDIF
  317.  
  318. #REM Define compiler constant = _X86_ || _ALPHA_ || _MIPS_
  319. #    $(CC) file.c -D$(CCPU) ...
  320. !IF "$(CPU)" == "i386"    &&  "$(CCPU)" == ""
  321. CCPU = _X86_
  322. !ENDIF
  323. !IF "$(CPU)" != "i386"    &&  "$(CCPU)" == ""
  324. CCPU = _$(CPU)_
  325. !ENDIF
  326.  
  327. #REM Link and Lib machine name: IX86 || MIPS || ALPHA
  328. #    link -machine:$(LCPU)
  329. #    lib  -machine:$(LCPU)
  330. !IF "$(CPU)" == "i386"    &&  "$(LCPU)" == ""
  331. LCPU = IX86
  332. !ENDIF
  333. !IF "$(CPU)" != "i386"    &&  "$(LCPU)" == ""
  334. LCPU = $(CPU)
  335. !ENDIF
  336.  
  337. #REM Link alignment i386 = 4096     ALPHA = 8192
  338. #    link -machine:$(LCPU) -align:$(PAGE_SZ)
  339. !IF "$(CPU)" == "ALPHA"   &&  "$(PAGE_SZ)" == ""
  340. PAGE_SZ = 0x2000
  341. !ENDIF
  342. !IF "$(CPU)" != "ALPHA"   &&  "$(PAGE_SZ)" == ""
  343. PAGE_SZ = 0x1000
  344. !ENDIF
  345.  
  346. #REM Entrypoint names  and flag for numeric entry name extension  if $(DLLENTRY)="" then
  347. #   no numbers shuld be appended to entry points.
  348. #    link -entry:_DllMainCRTStartup$(DLLENTRY)
  349. !IF "$(CPU)" == "i386"    &&  "$(DLLENTRY)" == ""
  350. DLLENTRY = @12
  351. !ENDIF
  352. !IF "$(CPU)" != "i386"      &&  "$(DLLENTRY)" == "@12"
  353. DLLENTRY=
  354. !ENDIF
  355. !ENDIF
  356.  
  357. !IF $(WIN32) && "$(CPU)" == "i386"
  358. !IF $(MSVCNT)
  359. CC                      = cl
  360. !ELSE
  361. CC                      = cl386
  362. !ENDIF
  363. CCPU            = _X86_
  364. CVTOBJ          = REM MIPS only
  365. !ENDIF
  366.  
  367. !IF "$(CPU)" != "i386" && "$(CPU)" != "M68K"
  368. CFLAGS        =  $(CFLAGS) -D_NTSDK
  369. !ENDIF
  370.  
  371. !IF $(WIN32)
  372. CPRE            = $(CC) -EP
  373. !IF $(MSVCNT)
  374. LINK            = link
  375. LIBR            = lib
  376. !ELSE
  377. LINK            = link32
  378. LIBR            = lib32
  379. !ENDIF
  380. !ENDIF
  381.  
  382. !IF "$(OS)" == "Windows_NT"
  383. MKTOOL          = mktool
  384. !ELSE
  385. MKTOOL          = mktool16
  386. !ENDIF
  387.  
  388. AS                      = masm
  389.  
  390. !IF "$(WARNLEVEL)" == ""
  391. WARNLEVEL       = 3
  392. !ENDIF
  393.  
  394. !IF "$(BROWSER)" == "1"
  395. CBROWSE                 = -FR
  396. !ELSE
  397. CBROWSE                 =
  398. !ENDIF
  399.  
  400.  
  401. # Win16 Definitions -------------------------------------------------------
  402.  
  403. !IF $(WIN16)
  404.  
  405. DEFS            = $(DEFS) -DWIN16
  406.  
  407. CMODEL          = -AL
  408.  
  409. !IF $(PRODEXE)
  410. CMODEL          = -AL -GA -GEs
  411. !ENDIF
  412.  
  413. # Assume a static lib may be included in a DLL
  414. !IF $(PRODDLL) || $(PRODLIB)
  415. CMODEL          = -Alfw -GA -GEd -D_WINDLL
  416. !ENDIF
  417.  
  418. AFLAGS          = -Mx -t
  419. CFLAGS          = $(CFLAGS) -nologo -c $(CMODEL) -W$(WARNLEVEL) -Zp2 -Gy -Gr -Gs -Gx- -Gf -J
  420. LFLAGS          = $(LFLAGS) /NOLOGO /ONERROR:NOEXE /NOD /NOE /MAP
  421.  
  422. !IF "$(DUMPASM)" != ""
  423. CFLAGS          = $(CFLAGS) -Fa$*.out
  424. !ENDIF
  425.  
  426. !IF $(VERDEBUG)
  427. AFLAGS          = $(AFLAGS) -Z -Zi -L
  428. CFLAGS          = $(CFLAGS) -f -Zi -Od -Ob1 $(CBROWSE)
  429. LFLAGS          = $(LFLAGS) /CO
  430. !ENDIF
  431.  
  432. !IF $(VERTEST)
  433. AFLAGS          = $(AFLAGS) -Zi
  434. CFLAGS          = $(CFLAGS) -Zi -Oilx -Ob1
  435. LFLAGS          = $(LFLAGS) /CO
  436. !ENDIF
  437.  
  438. !IF $(VERSHIP)
  439. CFLAGS          = $(CFLAGS) -Zd -Oilx -Ob1
  440. !ENDIF
  441.  
  442. CFLAGS          = $(CFLAGS) -G2
  443.  
  444. !ENDIF
  445.  
  446. # Win32 Definitions -----------------------------------------------------------
  447.  
  448. !IF $(WIN32)
  449.  
  450. DEFS            = $(DEFS) -DWIN32 -D$(CCPU)=1
  451.  
  452. !IF $(WIN95)
  453. DEFS            = $(DEFS) -D_WIN95
  454. !ELSE
  455. DEFS            = $(DEFS) -D_WINNT
  456. !ENDIF
  457.  
  458. !IF "$(CPU)" == "ALPHA"
  459. CMODEL        =  -Gz
  460. LFLAGS        = $(LFLAGS) -align:$(PAGE_SZ) -MACHINE:$(LCPU)
  461. !IF $(PRODDLL)
  462. CMODEL        = $(CMODEL) -D_DLL
  463. !ENDIF
  464. !ELSE
  465. #//$following differs from original
  466. CMODEL        =
  467. LFLAGS        = $(LFLAGS) -align:$(PAGE_SZ)
  468. !ENDIF
  469.  
  470. AFLAGS        = -Mx -t
  471. CFLAGS        = $(CFLAGS) -nologo -c $(CMODEL) -Gf -W$(WARNLEVEL) -J
  472. LFLAGS        = $(LFLAGS) -incremental:no -pdb:none -nod -release
  473.  
  474. !IF $(WIN95)
  475. LFLAGS        = $(LFLAGS) -nod
  476. !ELSE
  477. LFLAGS        = $(LFLAGS) -incremental:no -pdb:none -nod
  478. !ENDIF
  479.  
  480. !IF "$(DOPROFILE)" != ""
  481. CFLAGS          = $(CFLAGS) -Gh
  482. !ENDIF
  483.  
  484. !IF $(MSVCNT)
  485. !IF "$(CPU)" == "MIPS"
  486. MAXOPT            = -Ob1 -Os -Oi
  487. !ELSE
  488. MAXOPT            = -Ob1 -O1 -Oi
  489. !ENDIF
  490. !ELSE
  491. LFLAGS          = $(LFLAGS) -ignore:505
  492. MAXOPT          = -Ob1 -Og -Os -Oi
  493. !ENDIF
  494.  
  495. !IF "$(DUMPASM)" != ""
  496. CFLAGS          = $(CFLAGS) -Fa$*.out -FAs
  497. !ENDIF
  498.  
  499. !IF $(PRODEXE)
  500. LFLAGS          = $(LFLAGS) -subsystem:windows
  501. ENTRYPOINT      = WinMainCRTStartup
  502. !ENDIF
  503.  
  504. !IF $(PRODDLL)
  505. !IF $(WIN95)
  506. LFLAGS          = $(LFLAGS) -subsystem:windows,4.00
  507. !ELSE
  508. LFLAGS          = $(LFLAGS) -subsystem:windows
  509. !ENDIF
  510. !ENDIF
  511.  
  512. !IF $(PRODMT) && $(PRODDLL)
  513. ENTRYPOINT    = _CRT_INIT
  514. !IF "$(DLLENTRY)" != ""
  515. ENTRYPOINT = $(ENTRYPOINT)@12
  516. !ENDIF
  517. !ENDIF
  518.  
  519. !IF $(VERDEBUG)
  520. AFLAGS          = $(AFLAGS) -Z -Zi -L
  521. CFLAGS          = $(CFLAGS) -Ob1 -Od -Z7
  522. LFLAGS          = $(LFLAGS) -debug:full -debugtype:cv
  523. !ENDIF
  524.  
  525. !IF $(VERTEST)
  526. AFLAGS          = $(AFLAGS) -Zi
  527. CFLAGS          = $(CFLAGS) $(MAXOPT) -Z7
  528. LFLAGS          = $(LFLAGS) -debug:full -debugtype:cv
  529. !ENDIF
  530.  
  531. !IF $(VERSHIP)
  532. CFLAGS          = $(CFLAGS) $(MAXOPT)
  533. LFLAGS          = $(LFLAGS) -debug:none
  534. !ENDIF
  535.  
  536. !ENDIF
  537.  
  538. # Libraries -------------------------------------------------------------------
  539.  
  540. !IF $(WIN16)
  541. LIBS            = oldnames libw
  542.  
  543. !IF $(PRODEXE)
  544. LIBS            = $(LIBS) llibcew
  545. !ENDIF
  546.  
  547. !IF $(PRODDLL)
  548. LIBS            = $(LIBS) ldllcew
  549. !ENDIF
  550.  
  551. !ENDIF
  552.  
  553.  
  554. !IF $(WIN32)
  555.  
  556. LIBS            = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
  557.  
  558. !IF "$(DOPROFILE)" != ""
  559. LIBS            = $(LIBS) cap.lib
  560. !ENDIF
  561.  
  562. !IF $(PRODMT)
  563. LIBS            = $(LIBS) libcmt.lib
  564. !ELSE
  565. !IF $(PRODDLL)
  566. LIBS            = $(LIBS) $(LIBSDLL)
  567. !ELSE
  568. LIBS            = $(LIBS) libc.lib
  569. !ENDIF
  570. !ENDIF
  571.  
  572. !ENDIF
  573.  
  574. # default goal target ---------------------------------------------------------
  575.  
  576. defgoal:        goal
  577.  
  578. # -----------------------------------------------------------------------------
  579. #
  580. #       Part 3: sample.ms macros, objects, and dependencies
  581. #
  582.  
  583. H                       = $(MAPI)\$(SRCROOT)\sample.ms
  584.  
  585. ENTRYPOINT      =
  586.  
  587. OTHERINCS       = -I$(MAPI)\h
  588.  
  589. RCSOURCE        = $H\msp.rc
  590. RCDEPS          = $H\msprc.h $H\msp.dlg
  591.  
  592. !IF $(WIN16)
  593. BASENAME        = smpms
  594. OTHERLIBS       = $(MAPILIB)\mapi.lib \
  595.               compobj.lib storage.lib $(CTL3DLIB)
  596. !ENDIF
  597. !IF $(WIN32)
  598. BASENAME        = smpms32
  599. !IF $(WIN95)
  600. OTHERLIBS       = $(MAPILIB)\mapi32.lib ole32.lib
  601. !ELSE
  602. OTHERLIBS       = $(MAPILIB)\mapi32.lib ole32.lib ctl3d32.lib
  603. !ENDIF
  604. !ENDIF
  605.  
  606. DEFSOURCE        = $H\smpms.des
  607. DEFFILE            = dll$(WINTAG).def
  608.  
  609. PCH                     = msp
  610. PCHDEPS         = $H\msp.h \
  611.               $(MAPIH)\mapidefs.h \
  612.               $(MAPIH)\mapicode.h \
  613.               $(MAPIH)\mapiguid.h \
  614.               $(MAPIH)\mapitags.h \
  615.               $(MAPIH)\mapispi.h \
  616.               $(MAPIH)\mapidbg.h \
  617.               $(MAPIH)\mapival.h \
  618.               $(MAPIH)\imessage.h \
  619.               $(MAPIH)\mapiutil.h \
  620.               $(MAPIH)\mapiwin.h \
  621.               $(MAPIH)\smpms.h
  622.  
  623. !IF $(VERDEBUG)
  624. !IF $(WIN16)
  625. COMMONOBJS      = mapidbg.obj imem.obj wep.obj
  626. !ELSE
  627. COMMONOBJS      = mapidbg.obj imem.obj
  628. !ENDIF
  629. !ELSE
  630. !IF $(WIN16)
  631. COMMONOBJS      = imem.obj wep.obj
  632. !ELSE
  633. COMMONOBJS      = imem.obj
  634. !ENDIF
  635. !ENDIF
  636.  
  637. OBJS = \
  638.     mspatch.obj        \
  639.     mspfld.obj        \
  640.     mspgle.obj        \
  641.     mspguid.obj        \
  642.     mspinit.obj        \
  643.     msplogon.obj    \
  644.     mspmisc.obj        \
  645.     mspms.obj        \
  646.     mspmsg.obj        \
  647.     mspntfy.obj        \
  648.     mspobj.obj        \
  649.     msprfs.obj        \
  650.     msptbl.obj        \
  651.     $(COMMONOBJS)
  652.  
  653. mspinit.obj: \
  654.     $H\mspinit.c \
  655.     $(PCHDEPS)
  656.  
  657. msplogon.obj: \
  658.     $H\msplogon.c \
  659.     $H\msprc.h \
  660.     $(PCHDEPS)
  661.  
  662. mspms.obj: \
  663.     $H\mspms.c \
  664.     $(PCHDEPS)
  665.  
  666. msptbl.obj: \
  667.     $H\msptbl.c \
  668.     $(PCHDEPS)
  669.  
  670. mspfld.obj: \
  671.     $H\mspfld.c \
  672.     $(PCHDEPS)
  673.  
  674. mspmsg.obj: \
  675.     $H\mspmsg.c \
  676.     $(PCHDEPS)
  677.  
  678. mspatch.obj: \
  679.     $H\mspatch.c \
  680.     $(PCHDEPS)
  681.  
  682. msprfs.obj: \
  683.     $H\msprfs.c \
  684.     $(PCHDEPS)
  685.  
  686. mspgle.obj: \
  687.     $H\mspgle.c \
  688.     $H\msprc.h \
  689.     $(PCHDEPS)
  690.  
  691. mspmisc.obj: \
  692.     $H\mspmisc.c \
  693.     $(PCHDEPS)
  694.  
  695. mspobj.obj: \
  696.     $H\mspobj.c \
  697.     $(PCHDEPS)
  698.  
  699. mspntfy.obj: \
  700.     $H\mspntfy.c \
  701.     $(PCHDEPS)
  702.  
  703. #       rules for files that don't use the pre-compiled header
  704.  
  705. mspguid.obj: $H\mspguid.c $(MAPIH)\mapiguid.h
  706.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  707.     $(CC) $H\$*.c
  708.  
  709. mapidbg.obj: $(MAPICOMMON)\mapidbg.c $(MAPIH)\mapidbg.h
  710.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  711.     $(CC) $(MAPICOMMON)\$*.c
  712.  
  713. imem.obj: $(MAPICOMMON)\imem.c 
  714.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  715.     $(CC) $(MAPICOMMON)\$*.c
  716.  
  717. !IF $(WIN16)
  718. wep.obj: $(MAPICOMMON)\wep.c $(MAPIH)\mapidbg.h
  719.     SET CL=$(CFLAGS) $(DEFS) -I$(MAPIH)
  720.     $(CC) $(MAPICOMMON)\$*.c
  721. !ENDIF
  722.  
  723. # -----------------------------------------------------------------------------
  724. #
  725. #       Part 4: build executable targets
  726. #
  727.  
  728. .SUFFIXES: .asm .bas .c .cpp .cxx .des .rc .pch
  729.  
  730. # TARGET ----------------------------------------------------------------------
  731.  
  732. TARGET          = $(BASENAME)
  733.  
  734. !IF "$(DEFDIR)" == ""
  735. DEFDIR        = $H
  736. !ENDIF
  737.  
  738. !IF "$(DEFSOURCE)" != ""
  739. !IF "$(DEFFILE)" == ""
  740. DEFFILE        = $(BASENAME).def
  741. !ENDIF
  742. OTHERCLEAN  = $(DEFFILE) $(OTHERCLEAN)
  743. !ENDIF
  744.  
  745. !IF "$(DEFFILE)" == ""
  746. !IF $(PRODDLL)
  747. DEFFILE        = $(DEFDIR)\dll$(WINTAG).def
  748. !ELSE
  749. DEFFILE        = $(DEFDIR)\$(BASENAME).def
  750. !ENDIF
  751. !ENDIF
  752.  
  753. # PCHDIR
  754.  
  755. !IF "$(PCHDIR)" == ""
  756. PCHDIR = $H
  757. !ENDIF
  758.  
  759. # Resources -------------------------------------------------------------------
  760.  
  761. !IF "$(RCSOURCE)" != ""
  762. !IF $(WIN32) && $(MSVCNT) == 0
  763. RCTARGET        = rc.rbj
  764. !ELSE
  765. RCTARGET        = rc.res
  766. !ENDIF
  767. !ENDIF
  768.  
  769. # Other Includes and Libraries ------------------------------------------------
  770.  
  771. LIBS            = $(OTHERLIBS) $(LIBS)
  772. INCDIRS         = $(OTHERINCS) -I$H -I$(MAPIH) -I$(MAPIINC) -I$(MAPIEXTINC) $(INCDIRS)
  773.  
  774. # Entry point -----------------------------------------------------------------
  775.  
  776. !IF $(WIN32) && "$(ENTRYPOINT)" != ""
  777. ENTRYPOINT      = -entry:$(ENTRYPOINT)
  778. !ELSE
  779. !IF $(WIN32) && $(MSVCNT)
  780. LFLAGS = /NOENTRY $(LFLAGS)
  781. !ENDIF
  782. !ENDIF
  783.  
  784. # C Precompiled Header --------------------------------------------------------
  785.  
  786. !IF "$(PCH)" != ""
  787. OBJS    = $(PCH).obj $(OBJS)
  788. $(PCH).obj: $(PCH).pch
  789. !IF $(DOECHO)
  790.     echo ignoring precompiled header "C" file $(PCH).c
  791. !ELSE
  792.     rem
  793. !ENDIF
  794.  
  795. $(PCH).pch: $(PCHDIR)\$(PCH).c $(PCHDEPS)
  796. !IF $(DOECHO)
  797.     echo ++++++++++++++++++++++++++++++++++++++++
  798.     echo BUILDING Pre-compiled header $(PCH).pch
  799. !ENDIF
  800.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  801.     $(CC) -I$(PCHDIR) -Yc -Fp$(PCH).pch -Fo$(PCH).obj $(PCHDIR)\$(PCH).c
  802.  
  803. USEPCH          = -Yu$(PCH).h
  804. !ENDIF
  805.  
  806. # .C to .OBJ ------------------------------------------------------------------
  807.  
  808. {$H}.c.obj:
  809. !IF $(DOECHO)
  810.     echo +++++++++
  811.     echo COMPILING $*.c
  812. !ENDIF
  813. !IF $(DOECHO) && "$(USEPCH)" != ""
  814.     echo USING Precompiled Header $(PCH).h
  815. !ENDIF
  816.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  817.     $(CC) $(USEPCH) $H\$*.c
  818.  
  819. # C++ Precompiled Header ------------------------------------------------------
  820.  
  821. !IF "$(CPPPCH)" != ""
  822. OBJS    = $(CPPPCH).obj $(OBJS)
  823. $(CPPPCH).OBJ: $(CPPPCH).pch
  824. !IF $(DOECHO)
  825.     echo ignoring precompiled header "C++" file $(CPPPCH).cpp
  826. !ELSE
  827.     rem
  828. !ENDIF
  829.  
  830. $(CPPPCH).pch: $(PCHDIR)\$(CPPPCH).cpp $(CPPPCHDEPS)
  831. !IF $(DOECHO)
  832.     echo ++++++++++++++++++++++++++++++++++++++++
  833.     echo BUILDING Pre-compiled header $(CPPPCH).pch
  834. !ENDIF
  835.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  836.     $(CC) -I$(PCHDIR) -Yc -Fp$(CPPPCH).pch -Fo$(CPPPCH).obj $(PCHDIR)\$(CPPPCH).cpp
  837.  
  838. USECPPPCH       = -Yu$(CPPPCH).h
  839. !ENDIF
  840.  
  841. # .CPP to .OBJ ----------------------------------------------------------------
  842.  
  843. {$H}.cpp.obj:
  844. !IF $(DOECHO)
  845.     echo +++++++++
  846.     echo COMPILING $*.cpp
  847. !ENDIF
  848. !IF $(DOECHO) && "$(USECPPPCH)" != ""
  849.     echo USING Precompiled Header $(CPPPCH).h
  850. !ENDIF
  851.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  852.     $(CC) $(USECPPPCH) $H\$*.cpp
  853.  
  854. # .ASM to .OBJ ----------------------------------------------------------------
  855.  
  856. {$H}.asm.obj:
  857. !IF $(DOECHO)
  858.    echo +++++++++
  859.    echo ASSEMBLING $*.asm
  860. !ENDIF
  861.     $(AS) $(AFLAGS) $(DEFS) $H\$*.asm;
  862.  
  863. # .RC to .RES/.RBJ ------------------------------------------------------------
  864.  
  865. !IF "$(RCTARGET)" != ""
  866. $(RCTARGET): $(RCSOURCE) $(RCDEPS)
  867. !IF $(DOECHO)
  868.     echo +++++++++
  869.     echo BUILDING $(VERSION) $@.res
  870. !ENDIF
  871.     @SET INCLUDE=$H;$H\..;$(MAPIINC);$(MAPIRESRC);$(INCLUDE)
  872. !IF $(WIN16)
  873. #DRM This next line doesn't work yet.  I'm working on it.
  874. #       SET RC=$(OTHERINCS)
  875.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  876. !ELSE
  877.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  878. !ENDIF
  879. !IF $(WIN32) && $(MSVCNT) == 0
  880.     cvtres -$(CPU) rc.res -o $(RCTARGET)
  881. !ENDIF
  882. !ENDIF
  883.  
  884. # Build a subsystem target ----------------------------------------------------
  885.  
  886. subsys: $(OBJS)
  887. !IF "$(OBJS)" != ""
  888.     -del allobjs.txt > nul
  889.     type >>allobjs.txt <<
  890. $(OBJS)
  891. <<
  892. !ENDIF
  893.  
  894.  
  895. # Build a Browser Database ----------------------------------------------------
  896.  
  897. $(TARGET).bsc: $(OBJS)
  898. !IF "$(BROWSER)" == "1"
  899.     type >bsc.txt <<
  900. $(?:.obj=.sbr)
  901. <<
  902.     bscmake /o $(TARGET) @bsc.txt
  903. !ENDIF
  904.  
  905. # Building .def file  ---------------------------------------------------------
  906.  
  907. !IF "$(DEFSOURCE)" != ""
  908. $(DEFFILE): $(DEFSOURCE)
  909.     SET $(CC)= $(DEFS) $(INCDIRS)
  910.     $(CC) -EP -Tc $(DEFSOURCE) > $(DEFFILE)
  911. !ENDIF
  912.  
  913. # Building Executable ---------------------------------------------------------
  914.  
  915. !IF $(PRODEXE)
  916.  
  917. goal: $(TARGET).exe $(TARGET).bsc
  918.  
  919. $(TARGET).exe: subsys $(RCTARGET)
  920. !IF $(WIN16)
  921.     type >link.txt <<
  922. $(OBJS: = +^
  923. )
  924. $(TARGET).exe
  925. $(TARGET).map
  926. $(LIBS: = +^
  927. )
  928. $(DEFFILE)
  929. <<
  930.     $(LINK) $(LFLAGS) @link.txt
  931. !IF "$(RCTARGET)" != ""
  932.     $(RC) -t $(RCTARGET) $@
  933. !ENDIF
  934. !ENDIF
  935. !IF $(WIN32)
  936. !IF $(WIN95)
  937.     type >link.txt <<
  938. $(ENTRYPOINT) -map:$(TARGET).map -out:$@
  939. <<
  940.     type allobjs.txt >> link.txt
  941.     type >>link.txt <<
  942. $(RCTARGET) $(LIBS)
  943. <<
  944.     $(LINK) $(LFLAGS) @link.txt
  945. !ELSE
  946.     $(LINK) $(LFLAGS) $(ENTRYPOINT) -map:$(TARGET).map -out:$@ @allobjs.txt $(RCTARGET) $(LIBS)
  947. !ENDIF
  948. !ENDIF
  949. !IF "$(COPYTO)" != ""
  950.     -copy $(TARGET).exe $(COPYTO)
  951. !ENDIF
  952.  
  953. !ENDIF
  954.  
  955. # Building DLL ----------------------------------------------------------------
  956.  
  957. !IF $(PRODDLL)
  958.  
  959. goal: $(TARGET).dll $(TARGET).bsc
  960.  
  961. lib: $(TARGET).lib
  962.  
  963. $(TARGET).lib: $(DEFFILE)
  964. !IF $(WIN16)
  965.     $(IMPLIB) -nologo $(TARGET).lib $(DEFFILE)
  966. !ELSE
  967.     $(LIBR) -machine:$(CPU) -def:$(DEFFILE) -out:$@
  968. !ENDIF
  969. !IF "$(COPYTO)" != ""
  970.     -copy $(TARGET).lib $(MAPILIB)
  971. !ENDIF
  972.  
  973. $(TARGET).dll: subsys $(TARGET).lib $(RCTARGET)
  974. !IF $(WIN16)
  975.     type >link.txt <<
  976. $(OBJS: = +^
  977. )
  978. $(TARGET).dll
  979. $(TARGET).map
  980. $(LIBS: = +^
  981. )
  982. $(DEFFILE)
  983. <<
  984.     $(LINK) $(LFLAGS) @link.txt
  985. !IF "$(RCTARGET)" != ""
  986.     $(RC) -t $(RCTARGET) $@
  987. !ENDIF
  988. !ELSE
  989. !IF $(WIN95)
  990.     type >link.txt <<
  991. -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimchi.txt,$(TARGET)
  992. <<
  993.     type allobjs.txt >> link.txt
  994.     type >>link.txt <<
  995. $(RCTARGET) $(TARGET).exp $(LIBS)
  996. <<
  997.     $(LINK) $(LFLAGS) @link.txt
  998. !ELSE
  999.     $(LINK) $(LFLAGS) -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimem.txt,$(TARGET) @allobjs.txt $(RCTARGET) $(TARGET).exp $(LIBS)
  1000. !ENDIF
  1001. !ENDIF
  1002. !IF "$(COPYTO)" != ""
  1003.     -copy $(TARGET).dll $(COPYTO)
  1004. !ENDIF
  1005.  
  1006. !ENDIF
  1007.  
  1008. # Building Library ------------------------------------------------------------
  1009.  
  1010. !IF $(PRODLIB)
  1011.  
  1012. goal: $(TARGET).lib $(TARGET).bsc
  1013.  
  1014. lib: $(TARGET).lib
  1015.  
  1016. $(TARGET).lib: subsys
  1017. !IF $(WIN16)
  1018.     type > lib.txt <<
  1019. $(OBJS: = &^
  1020. )
  1021. <<
  1022.     @if exist $(TARGET).lib del $(TARGET).lib
  1023.     $(LIBR) $(TARGET).lib @lib.txt
  1024. !ENDIF
  1025. !IF $(WIN32)
  1026.     $(LIBR) -out:$(TARGET).lib @allobjs.txt
  1027. !ENDIF
  1028. !IF "$(COPYTO)" != ""
  1029.     -copy $(TARGET).lib $(MAPIDLL)
  1030. !ENDIF
  1031.  
  1032. !ENDIF
  1033.  
  1034. # Building Clean --------------------------------------------------------------
  1035.  
  1036. clean:
  1037. !IF $(DOECHO)
  1038.     echo ++++++++++++++++++++++++++++++++++++++++
  1039.     echo MAKING CLEAN
  1040. !ENDIF
  1041. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1042.     -del *.obj *.rbj *.exe *.dll *.exp *.lib *.pch *.pdb *.map *.sym *.txt *.res *.out *.vcw *.wsp $(OTHERCLEAN)
  1043. !ELSE
  1044.     -del *.obj 
  1045.     -del *.rbj 
  1046.     -del *.exe 
  1047.     -del *.dll 
  1048.     -del *.exp 
  1049.     -del *.lib 
  1050.     -del *.pch 
  1051.     -del *.pdb 
  1052.     -del *.map 
  1053.     -del *.sym 
  1054.     -del *.txt 
  1055.     -del *.res 
  1056.     -del *.out 
  1057.     -del *.vcw 
  1058.     -del *.wsp
  1059. !IF "$(OTHERCLEAN)" != ""
  1060.     -del $(OTHERCLEAN)
  1061. !ENDIF
  1062. !ENDIF
  1063.  
  1064. resclean:
  1065. !IF $(DOECHO)
  1066.     echo ++++++++++++++++++++++++++++++++++++++++
  1067.     echo MAKING RESOURCES CLEAN
  1068. !ENDIF
  1069. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1070.     -del *.rbj *.res $(OTHERRESCLEAN)
  1071. !ELSE
  1072.     -del *.rbj 
  1073.     -del *.res 
  1074. !IF "$(OTHERRESCLEAN)" != ""
  1075.     -del $(OTHERRESCLEAN)
  1076. !ENDIF
  1077. !ENDIF
  1078.