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

  1. # -----------------------------------------------------------------------------
  2. # $(MAPI)\src\sample.ab\makefile
  3. #
  4. # Copyright 1993-1995 Microsoft Corporation. All Rights Reserved.
  5. # -----------------------------------------------------------------------------
  6.  
  7. # -----------------------------------------------------------------------------
  8. #
  9. #       Part 1: define the version to be built
  10. #       Default is debug Win32 DLL
  11. #
  12.  
  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. !IF "$(MAPIDLL)" == ""
  244. MAPIDLL         = $(MAPI)\lib\$(WINTAG)\$(VERTAG)
  245. !ENDIF
  246. !ELSE
  247. SRCROOT         = dev
  248. !IF "$(MAPIDLL)" == ""
  249. MAPIDLL         = $(MAPI)
  250. !ENDIF
  251. !ENDIF
  252.  
  253. MAPIH           = $(MAPI)\h
  254. MAPICOMMON      = $(MAPI)\$(SRCROOT)\common
  255. Z                       = $(MAPI)
  256.  
  257. # Construct MAKEDEFS ----------------------------------------------------------
  258.  
  259. MAKEDEFS        = PRODUCT=$(PRODUCT) VERSION=$(VERSION)
  260.  
  261. # Definitions -----------------------------------------------------------------
  262.  
  263. DEFS            =
  264. AFLAGS          =
  265. CFLAGS          =
  266. LFLAGS          =
  267. INCDIRS         =
  268.  
  269. !IF $(VERDEBUG)
  270. DEFS            = $(DEFS) -DDEBUG
  271. !ENDIF
  272.  
  273. !IF $(VERTEST)
  274. DEFS            = $(DEFS) -DTEST
  275. !ENDIF
  276.  
  277. !IF $(VERSHIP)
  278. DEFS            = $(DEFS) -DSHIP
  279. !ENDIF
  280.  
  281. # Programs --------------------------------------------------------------------
  282.  
  283. !IF $(WIN16)
  284. CC                      = cl
  285. CPRE            = cl -nologo -EP
  286. LINK            = link
  287. LIBR            = lib
  288. IMPLIB          = implib
  289. !ENDIF
  290.  
  291. !IF $(WIN32) 
  292.  
  293. #REM   MSVCNT  == MS Visual C++ = 1      ==0 for SDK
  294. #REM   LIBSDLL == C run time DLL lib
  295. !IF "$(MSVCNT)" == "1"   &&  "$(LIBSDLL)" == ""
  296. LIBSDLL = MSVCRT.LIB
  297. !ENDIF
  298. !IF "$(LIBSDLL)" == ""
  299. LIBSDLL = CRTDLL.LIB
  300. !ENDIF
  301.  
  302. #REM Compiler name:  1) Compile flags and   2) run the C Compiler  and  3) midl compiler name
  303. # 1)    set $(CC)= ... -D$(CCPU)#1 ..
  304. # 2)    $(CC) ...  name.c
  305. # 3)    midl ...  cpp_cmd $(CC)
  306. !IF "$(CPU)" == "ALPHA"   &&  "$(MSVCNT)" != "1"  &&  "$(cc)" == ""
  307. cc = claxp
  308. !ENDIF
  309. !IF "$(CPU)" == "ALPHA"   &&  "$(MSVCNT)" == "1"
  310. cc = cl
  311. !ENDIF
  312. !IF "$(cc)" == ""
  313. cc = cl
  314. !ENDIF
  315.  
  316. #REM Define compiler constant = _X86_ || _ALPHA_ || _MIPS_
  317. #    $(CC) file.c -D$(CCPU) ...
  318. !IF "$(CPU)" == "i386"    &&  "$(CCPU)" == ""
  319. CCPU = _X86_
  320. !ENDIF
  321. !IF "$(CPU)" != "i386"    &&  "$(CCPU)" == ""
  322. CCPU = _$(CPU)_
  323. !ENDIF
  324.  
  325. #REM Link and Lib machine name: IX86 || MIPS || ALPHA
  326. #    link -machine:$(LCPU)
  327. #    lib  -machine:$(LCPU)
  328. !IF "$(CPU)" == "i386"    &&  "$(LCPU)" == ""
  329. LCPU = IX86
  330. !ENDIF
  331. !IF "$(CPU)" != "i386"    &&  "$(LCPU)" == ""
  332. LCPU = $(CPU)
  333. !ENDIF
  334.  
  335. #REM Link alignment i386 = 4096     ALPHA = 8192
  336. #    link -machine:$(LCPU) -align:$(PAGE_SZ)
  337. !IF "$(CPU)" == "ALPHA"   &&  "$(PAGE_SZ)" == ""
  338. PAGE_SZ = 0x2000
  339. !ENDIF
  340. !IF "$(CPU)" != "ALPHA"   &&  "$(PAGE_SZ)" == ""
  341. PAGE_SZ = 0x1000
  342. !ENDIF
  343.  
  344. #REM Entrypoint names  and flag for numeric entry name extension  if $(DLLENTRY)="" then
  345. #   no numbers shuld be appended to entry points.
  346. #    link -entry:_DllMainCRTStartup$(DLLENTRY)
  347. !IF "$(CPU)" == "i386"    &&  "$(DLLENTRY)" == ""
  348. DLLENTRY = @12
  349. !ENDIF
  350. !IF "$(CPU)" != "i386"      &&  "$(DLLENTRY)" == "@12"
  351. DLLENTRY=
  352. !ENDIF
  353. !ENDIF
  354.  
  355. !IF $(WIN32) && "$(CPU)" == "i386"
  356. !IF $(MSVCNT)
  357. CC                      = cl
  358. !ELSE
  359. CC                      = cl386
  360. !ENDIF
  361. CCPU            = _X86_
  362. CVTOBJ          = REM MIPS only
  363. !ENDIF
  364.  
  365. !IF "$(CPU)" != "i386" && "$(CPU)" != "M68K"
  366. CFLAGS        =  $(CFLAGS) -D_NTSDK
  367. !ENDIF
  368.  
  369. !IF $(WIN32)
  370. CPRE            = $(CC) -EP
  371. !IF $(MSVCNT)
  372. LINK            = link
  373. LIBR            = lib
  374. !ELSE
  375. LINK            = link32
  376. LIBR            = lib32
  377. !ENDIF
  378. !ENDIF
  379.  
  380. !IF "$(OS)" == "Windows_NT"
  381. MKTOOL          = mktool
  382. !ELSE
  383. MKTOOL          = mktool16
  384. !ENDIF
  385.  
  386. AS                      = masm
  387.  
  388. !IF "$(WARNLEVEL)" == ""
  389. WARNLEVEL       = 3
  390. !ENDIF
  391.  
  392. # Win16 Definitions -------------------------------------------------------
  393.  
  394. !IF $(WIN16)
  395.  
  396. DEFS            = $(DEFS) -DWIN16
  397.  
  398. CMODEL          = -AL
  399.  
  400. !IF $(PRODEXE)
  401. CMODEL          = -AL -GA -GEs
  402. !ENDIF
  403.  
  404. # Assume a static lib may be included in a DLL
  405. !IF $(PRODDLL) || $(PRODLIB)
  406. CMODEL          = -Alfw -GA -GEd -D_WINDLL
  407. !ENDIF
  408.  
  409. AFLAGS          = -Mx -t
  410. CFLAGS          = $(CFLAGS) -nologo -c $(CMODEL) -W$(WARNLEVEL) -Zp2 -Gy -Gr -Gs -Gx- -Gf -J
  411. LFLAGS          = $(LFLAGS) /NOLOGO /ONERROR:NOEXE /NOD /NOE /MAP
  412.  
  413. !IF "$(DUMPASM)" != ""
  414. CFLAGS          = $(CFLAGS) -Fa$*.out
  415. !ENDIF
  416.  
  417. !IF $(VERDEBUG)
  418. AFLAGS          = $(AFLAGS) -Z -Zi -L
  419. CFLAGS          = $(CFLAGS) -f -Zi -Od -Ob1
  420. LFLAGS          = $(LFLAGS) /CO
  421. !ENDIF
  422.  
  423. !IF $(VERTEST)
  424. AFLAGS          = $(AFLAGS) -Zi
  425. CFLAGS          = $(CFLAGS) -Zi -Oilx -Ob1
  426. LFLAGS          = $(LFLAGS) /CO
  427. !ENDIF
  428.  
  429. !IF $(VERSHIP)
  430. CFLAGS          = $(CFLAGS) -Zd -Oilx -Ob1
  431. !ENDIF
  432.  
  433. CFLAGS          = $(CFLAGS) -G2
  434.  
  435. !ENDIF
  436.  
  437. # Win32 Definitions -----------------------------------------------------------
  438.  
  439. !IF $(WIN32)
  440.  
  441. DEFS            = $(DEFS) -DWIN32 -D$(CCPU)=1
  442.  
  443. !IF $(WIN95)
  444. DEFS            = $(DEFS) -D_WIN95
  445. !ELSE
  446. DEFS            = $(DEFS) -D_WINNT
  447. !ENDIF
  448.  
  449. !IF "$(CPU)" == "ALPHA"
  450. CMODEL        =  -Gz
  451. LFLAGS        = $(LFLAGS) -align:$(PAGE_SZ) -MACHINE:$(LCPU)
  452. !IF $(PRODDLL)
  453. CMODEL        = $(CMODEL) -D_DLL
  454. !ENDIF
  455. !ELSE
  456. #//$following differs from original
  457. CMODEL        =
  458. LFLAGS        = $(LFLAGS) -align:$(PAGE_SZ)
  459. !ENDIF
  460.  
  461. AFLAGS        = -Mx -t
  462. CFLAGS        = $(CFLAGS) -nologo -c $(CMODEL) -Gf -W$(WARNLEVEL) -J
  463. LFLAGS        = $(LFLAGS) -incremental:no -pdb:none -nod -release
  464.  
  465. !IF $(WIN95)
  466. LFLAGS        = $(LFLAGS) -nod
  467. !ELSE
  468. LFLAGS        = $(LFLAGS) -incremental:no -pdb:none -nod
  469. !ENDIF
  470.  
  471. !IF "$(DOPROFILE)" != ""
  472. CFLAGS          = $(CFLAGS) -Gh
  473. !ENDIF
  474.  
  475. !IF $(MSVCNT)
  476. !IF "$(CPU)" == "MIPS"
  477. MAXOPT            = -Ob1 -Os -Oi
  478. !ELSE
  479. MAXOPT            = -Ob1 -O1 -Oi
  480. !ENDIF
  481. !ELSE
  482. LFLAGS          = $(LFLAGS) -ignore:505
  483. MAXOPT          = -Ob1 -Og -Os -Oi
  484. !ENDIF
  485.  
  486. !IF "$(DUMPASM)" != ""
  487. CFLAGS          = $(CFLAGS) -Fa$*.out -FAs
  488. !ENDIF
  489.  
  490. !IF $(PRODEXE)
  491. LFLAGS          = $(LFLAGS) -subsystem:windows
  492. ENTRYPOINT      = WinMainCRTStartup
  493. !ENDIF
  494.  
  495. !IF $(PRODDLL)
  496. !IF $(WIN95)
  497. LFLAGS          = $(LFLAGS) -subsystem:windows,4.00
  498. !ELSE
  499. LFLAGS          = $(LFLAGS) -subsystem:windows
  500. !ENDIF
  501. !ENDIF
  502.  
  503. !IF $(PRODMT) && $(PRODDLL)
  504. ENTRYPOINT    = _CRT_INIT
  505. !IF "$(DLLENTRY)" != ""
  506. ENTRYPOINT = $(ENTRYPOINT)@12
  507. !ENDIF
  508. !ENDIF
  509.  
  510. !IF $(VERDEBUG)
  511. AFLAGS          = $(AFLAGS) -Z -Zi -L
  512. CFLAGS          = $(CFLAGS) -Ob1 -Od -Z7
  513. LFLAGS          = $(LFLAGS) -debug:full -debugtype:cv
  514. !ENDIF
  515.  
  516. !IF $(VERTEST)
  517. AFLAGS          = $(AFLAGS) -Zi
  518. CFLAGS          = $(CFLAGS) $(MAXOPT) -Z7
  519. LFLAGS          = $(LFLAGS) -debug:full -debugtype:cv
  520. !ENDIF
  521.  
  522. !IF $(VERSHIP)
  523. CFLAGS          = $(CFLAGS) $(MAXOPT)
  524. LFLAGS          = $(LFLAGS) -debug:none
  525. !ENDIF
  526.  
  527. !ENDIF
  528.  
  529. # Libraries -------------------------------------------------------------------
  530.  
  531. !IF $(WIN16)
  532. LIBS            = oldnames libw
  533.  
  534. !IF $(PRODEXE)
  535. LIBS            = $(LIBS) llibcew
  536. !ENDIF
  537.  
  538. !IF $(PRODDLL)
  539. LIBS            = $(LIBS) ldllcew
  540. !ENDIF
  541.  
  542. !ENDIF
  543.  
  544.  
  545. !IF $(WIN32)
  546.  
  547. LIBS            = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
  548.  
  549. !IF "$(DOPROFILE)" != ""
  550. LIBS            = $(LIBS) cap.lib
  551. !ENDIF
  552.  
  553. !IF $(PRODMT)
  554. LIBS            = $(LIBS) libcmt.lib
  555. !ELSE
  556. !IF $(PRODDLL)
  557. LIBS            = $(LIBS) $(LIBSDLL)
  558. !ELSE
  559. LIBS            = $(LIBS) libc.lib
  560. !ENDIF
  561. !ENDIF
  562.  
  563. !ENDIF
  564.  
  565. # default goal target ---------------------------------------------------------
  566.  
  567. defgoal:        goal
  568.  
  569. # -----------------------------------------------------------------------------
  570. #
  571. #    Part 3: sample.ab macros, objects, and dependencies
  572. #
  573.  
  574. H            = $(MAPI)\$(SRCROOT)\sample.ab
  575.  
  576. ENTRYPOINT    =
  577.  
  578. OTHERINCS    = -I$(MAPIH)
  579.  
  580. RCSOURCE    = $H\sampabp.rc
  581. RCDEPS        = $H\sampabp.rh
  582.  
  583. !IF $(WIN16)
  584. BASENAME    = smpab
  585. OTHERLIBS    = $(MAPILIB)\mapi.lib commdlg.lib
  586. !ENDIF
  587.  
  588. !IF $(WIN32)
  589. BASENAME    = smpab32
  590. OTHERLIBS    = $(MAPILIB)\mapi32.lib
  591. !ENDIF
  592.  
  593. DEFSOURCE        = $H\smpab.des
  594. DEFFILE            = dll$(WINTAG).def
  595.  
  596. !IF $(VERDEBUG)
  597. !IF $(WIN16)
  598. COMMONOBJS    = mapidbg.obj wep.obj
  599. !ELSE
  600. COMMONOBJS    = mapidbg.obj
  601. !ENDIF
  602. !ELSE
  603. !IF $(WIN16)
  604. COMMONOBJS    = wep.obj
  605. !ELSE
  606. COMMONOBJS    = 
  607. !ENDIF
  608. !ENDIF
  609.  
  610. OBJS = abguid.obj wrap.obj status.obj abuser.obj tid.obj oouser.obj ootid.obj root.obj abcont.obj \
  611.     absearch.obj ablogon.obj abp.obj abctbl1.obj abctbl2.obj abctbl3.obj \
  612.     $(COMMONOBJS)
  613.  
  614. abp.obj: \
  615.     $H\abp.c \
  616.     $H\abp.h
  617.  
  618. ablogon.obj: \
  619.     $H\ablogon.c \
  620.     $H\sampabp.rh \
  621.     $(MAPIH)\smpab.h \
  622.     $H\abp.h
  623.  
  624. root.obj: \
  625.     $H\root.c \
  626.     $H\sampabp.rh \
  627.     $H\abp.h
  628.  
  629. wrap.obj: \
  630.     $H\wrap.c \
  631.     $H\abp.h
  632.  
  633. abcont.obj: \
  634.     $H\abcont.c \
  635.     $H\sampabp.rh \
  636.     $H\abp.h
  637.  
  638. absearch.obj: \
  639.     $H\absearch.c \
  640.     $H\sampabp.rh \
  641.     $H\abp.h
  642.  
  643. abctbl1.obj: \
  644.     $H\abctbl1.c \
  645.     $H\abctbl.h \
  646.     $H\sampabp.rh \
  647.     $H\abp.h
  648.  
  649. abctbl2.obj: \
  650.     $H\abctbl2.c \
  651.     $H\abctbl.h \
  652.     $H\abp.h
  653.  
  654. abctbl3.obj: \
  655.     $H\abctbl3.c \
  656.     $H\abctbl.h \
  657.     $H\abp.h
  658.  
  659. abuser.obj: \
  660.     $H\abuser.c \
  661.     $H\sampabp.rh \
  662.     $H\abp.h
  663.  
  664. status.obj: \
  665.     $H\status.c \
  666.     $H\sampabp.rh \
  667.     $H\abp.h
  668.  
  669. tid.obj: \
  670.     $H\tid.c \
  671.     $H\abp.h
  672.  
  673. oouser.obj: \
  674.     $H\oouser.c \
  675.     $H\abp.h
  676.  
  677. ootid.obj: \
  678.     $H\ootid.c \
  679.     $H\abp.h
  680.  
  681.  
  682. #    rules for files that don't use a pre-compiled header
  683.  
  684. abguid.obj: $H\abguid.c $(MAPIH)\mapiguid.h
  685.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  686.     $(CC) $H\$*.c
  687.  
  688. mapidbg.obj: $(MAPICOMMON)\mapidbg.c $(MAPIH)\mapidbg.h
  689.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  690.     $(CC) $(MAPICOMMON)\$*.c
  691.  
  692. !IF $(WIN16)
  693. wep.obj: $(MAPICOMMON)\wep.c $(MAPIH)\mapidbg.h
  694.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  695.     $(CC) $(MAPICOMMON)\$*.c
  696. !ENDIF
  697.  
  698. # -----------------------------------------------------------------------------
  699. #
  700. #       Part 4: build executable targets
  701. #
  702.  
  703. .SUFFIXES: .asm .bas .c .cpp .cxx .des .rc .pch
  704.  
  705. # TARGET ----------------------------------------------------------------------
  706.  
  707. TARGET          = $(BASENAME)
  708.  
  709. !IF "$(DEFDIR)" == ""
  710. DEFDIR        = $H
  711. !ENDIF
  712.  
  713. !IF "$(DEFSOURCE)" != ""
  714. !IF "$(DEFFILE)" == ""
  715. DEFFILE        = $(BASENAME).def
  716. !ENDIF
  717. OTHERCLEAN  = $(DEFFILE) $(OTHERCLEAN)
  718. !ENDIF
  719.  
  720. !IF "$(DEFFILE)" == ""
  721. !IF $(PRODDLL)
  722. DEFFILE        = $(DEFDIR)\dll$(WINTAG).def
  723. !ELSE
  724. DEFFILE        = $(DEFDIR)\$(BASENAME).def
  725. !ENDIF
  726. !ENDIF
  727.  
  728. # PCHDIR
  729.  
  730. !IF "$(PCHDIR)" == ""
  731. PCHDIR = $H
  732. !ENDIF
  733.  
  734. # Resources -------------------------------------------------------------------
  735.  
  736. !IF "$(RCSOURCE)" != ""
  737. !IF $(WIN32) && $(MSVCNT) == 0
  738. RCTARGET        = rc.rbj
  739. !ELSE
  740. RCTARGET        = rc.res
  741. !ENDIF
  742. !ENDIF
  743.  
  744. # Other Includes and Libraries ------------------------------------------------
  745.  
  746. LIBS            = $(OTHERLIBS) $(LIBS)
  747. INCDIRS         = $(OTHERINCS) -I$H -I$(MAPIH) -I$(MAPIINC) -I$(MAPIEXTINC) $(INCDIRS)
  748.  
  749. # Entry point -----------------------------------------------------------------
  750.  
  751. !IF $(WIN32) && "$(ENTRYPOINT)" != ""
  752. ENTRYPOINT      = -entry:$(ENTRYPOINT)
  753. !ELSE
  754. !IF $(WIN32) && $(MSVCNT)
  755. # LFLAGS = /NOENTRY $(LFLAGS)
  756. !ENDIF
  757. !ENDIF
  758.  
  759. # C Precompiled Header --------------------------------------------------------
  760.  
  761. !IF "$(PCH)" != ""
  762. OBJS    = $(PCH).obj $(OBJS)
  763. $(PCH).obj: $(PCH).pch
  764. !IF $(DOECHO)
  765.     echo ignoring precompiled header "C" file $(PCH).c
  766. !ELSE
  767.     rem
  768. !ENDIF
  769.  
  770. $(PCH).pch: $(PCHDIR)\$(PCH).c $(PCHDEPS)
  771. !IF $(DOECHO)
  772.     echo ++++++++++++++++++++++++++++++++++++++++
  773.     echo BUILDING Pre-compiled header $(PCH).pch
  774. !ENDIF
  775.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  776.     $(CC) -I$(PCHDIR) -Yc -Fp$(PCH).pch -Fo$(PCH).obj $(PCHDIR)\$(PCH).c
  777.  
  778. USEPCH          = -Yu$(PCH).h
  779. !ENDIF
  780.  
  781. # .C to .OBJ ------------------------------------------------------------------
  782.  
  783. {$H}.c.obj:
  784. !IF $(DOECHO)
  785.     echo +++++++++
  786.     echo COMPILING $*.c
  787. !ENDIF
  788. !IF $(DOECHO) && "$(USEPCH)" != ""
  789.     echo USING Precompiled Header $(PCH).h
  790. !ENDIF
  791.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  792.     $(CC) $(USEPCH) $H\$*.c
  793.  
  794. # C++ Precompiled Header ------------------------------------------------------
  795.  
  796. !IF "$(CPPPCH)" != ""
  797. OBJS    = $(CPPPCH).obj $(OBJS)
  798. $(CPPPCH).OBJ: $(CPPPCH).pch
  799. !IF $(DOECHO)
  800.     echo ignoring precompiled header "C++" file $(CPPPCH).cpp
  801. !ELSE
  802.     rem
  803. !ENDIF
  804.  
  805. $(CPPPCH).pch: $(PCHDIR)\$(CPPPCH).cpp $(CPPPCHDEPS)
  806. !IF $(DOECHO)
  807.     echo ++++++++++++++++++++++++++++++++++++++++
  808.     echo BUILDING Pre-compiled header $(CPPPCH).pch
  809. !ENDIF
  810.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  811.     $(CC) -I$(PCHDIR) -Yc -Fp$(CPPPCH).pch -Fo$(CPPPCH).obj $(PCHDIR)\$(CPPPCH).cpp
  812.  
  813. USECPPPCH       = -Yu$(CPPPCH).h
  814. !ENDIF
  815.  
  816. # .CPP to .OBJ ----------------------------------------------------------------
  817.  
  818. {$H}.cpp.obj:
  819. !IF $(DOECHO)
  820.     echo +++++++++
  821.     echo COMPILING $*.cpp
  822. !ENDIF
  823. !IF $(DOECHO) && "$(USECPPPCH)" != ""
  824.     echo USING Precompiled Header $(CPPPCH).h
  825. !ENDIF
  826.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  827.     $(CC) $(USECPPPCH) $H\$*.cpp
  828.  
  829. # .ASM to .OBJ ----------------------------------------------------------------
  830.  
  831. {$H}.asm.obj:
  832. !IF $(DOECHO)
  833.    echo +++++++++
  834.    echo ASSEMBLING $*.asm
  835. !ENDIF
  836.     $(AS) $(AFLAGS) $(DEFS) $H\$*.asm;
  837.  
  838. # .RC to .RES/.RBJ ------------------------------------------------------------
  839.  
  840. !IF "$(RCTARGET)" != ""
  841. $(RCTARGET): $(RCSOURCE) $(RCDEPS)
  842. !IF $(DOECHO)
  843.     echo +++++++++
  844.     echo BUILDING $(VERSION) $@.res
  845. !ENDIF
  846.     @SET INCLUDE=$H;$H\..;$(MAPIINC);$(MAPIRESRC);$(INCLUDE)
  847. !IF $(WIN16)
  848. #DRM This next line doesn't work yet.  I'm working on it.
  849. #       SET RC=$(OTHERINCS)
  850.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  851. !ELSE
  852.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  853. !ENDIF
  854. !IF $(WIN32) && $(MSVCNT) == 0
  855.     cvtres -$(CPU) rc.res -o $(RCTARGET)
  856. !ENDIF
  857. !ENDIF
  858.  
  859. # Build a subsystem target ----------------------------------------------------
  860.  
  861. subsys: $(OBJS)
  862. !IF "$(OBJS)" != ""
  863.     -del allobjs.txt > nul
  864.     type >>allobjs.txt <<
  865. $(OBJS)
  866. <<
  867. !ENDIF
  868.  
  869. # Building .def file  ---------------------------------------------------------
  870.  
  871. !IF "$(DEFSOURCE)" != ""
  872. $(DEFFILE): $(DEFSOURCE)
  873.     SET $(CC)= $(DEFS) $(INCDIRS)
  874.     $(CC) -EP -Tc $(DEFSOURCE) > $(DEFFILE)
  875. !ENDIF
  876.  
  877. # Building Executable ---------------------------------------------------------
  878.  
  879. !IF $(PRODEXE)
  880.  
  881. goal: $(TARGET).exe
  882.  
  883. $(TARGET).exe: subsys $(RCTARGET)
  884. !IF $(WIN16)
  885.     type >link.txt <<
  886. $(OBJS: = +^
  887. )
  888. $(TARGET).exe
  889. $(TARGET).map
  890. $(LIBS: = +^
  891. )
  892. $(DEFFILE)
  893. <<
  894.     $(LINK) $(LFLAGS) @link.txt
  895. !IF "$(RCTARGET)" != ""
  896.     $(RC) -t $(RCTARGET) $@
  897. !ENDIF
  898. !ENDIF
  899. !IF $(WIN32)
  900. !IF $(WIN95)
  901.     type >link.txt <<
  902. $(ENTRYPOINT) -map:$(TARGET).map -out:$@
  903. <<
  904.     type allobjs.txt >> link.txt
  905.     type >>link.txt <<
  906. $(RCTARGET) $(LIBS)
  907. <<
  908.     $(LINK) $(LFLAGS) @link.txt
  909. !ELSE
  910.     $(LINK) $(LFLAGS) $(ENTRYPOINT) -map:$(TARGET).map -out:$@ @allobjs.txt $(RCTARGET) $(LIBS)
  911. !ENDIF
  912. !ENDIF
  913. !IF "$(COPYTO)" != ""
  914.     -copy $(TARGET).exe $(COPYTO)
  915. !ENDIF
  916.  
  917. !ENDIF
  918.  
  919. # Building DLL ----------------------------------------------------------------
  920.  
  921. !IF $(PRODDLL)
  922.  
  923. goal: $(TARGET).dll
  924.  
  925. lib: $(TARGET).lib
  926.  
  927. $(TARGET).lib: $(DEFFILE)
  928. !IF $(WIN16)
  929.     $(IMPLIB) -nologo $(TARGET).lib $(DEFFILE)
  930. !ELSE
  931.     $(LIBR) -machine:$(CPU) -def:$(DEFFILE) -out:$@
  932. !ENDIF
  933. !IF "$(COPYTO)" != ""
  934.     -copy $(TARGET).lib $(MAPILIB)
  935. !ENDIF
  936.  
  937. $(TARGET).dll: subsys $(TARGET).lib $(RCTARGET)
  938. !IF $(WIN16)
  939.     type >link.txt <<
  940. $(OBJS: = +^
  941. )
  942. $(TARGET).dll
  943. $(TARGET).map
  944. $(LIBS: = +^
  945. )
  946. $(DEFFILE)
  947. <<
  948.     $(LINK) $(LFLAGS) @link.txt
  949. !IF "$(RCTARGET)" != ""
  950.     $(RC) -t $(RCTARGET) $@
  951. !ENDIF
  952. !ELSE
  953. !IF $(WIN95)
  954.     type >link.txt <<
  955. -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimchi.txt,$(TARGET)
  956. <<
  957.     type allobjs.txt >> link.txt
  958.     type >>link.txt <<
  959. $(RCTARGET) $(TARGET).exp $(LIBS)
  960. <<
  961.     $(LINK) $(LFLAGS) @link.txt
  962. !ELSE
  963.     $(LINK) $(LFLAGS) -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimem.txt,$(TARGET) @allobjs.txt $(RCTARGET) $(TARGET).exp $(LIBS)
  964. !ENDIF
  965. !ENDIF
  966. !IF "$(COPYTO)" != ""
  967.     -copy $(TARGET).dll $(COPYTO)
  968. !ENDIF
  969.  
  970. !ENDIF
  971.  
  972. # Building Library ------------------------------------------------------------
  973.  
  974. !IF $(PRODLIB)
  975.  
  976. goal: $(TARGET).lib
  977.  
  978. lib: $(TARGET).lib
  979.  
  980. $(TARGET).lib: subsys
  981. !IF $(WIN16)
  982.     type > lib.txt <<
  983. $(OBJS: = &^
  984. )
  985. <<
  986.     @if exist $(TARGET).lib del $(TARGET).lib
  987.     $(LIBR) $(TARGET).lib @lib.txt
  988. !ENDIF
  989. !IF $(WIN32)
  990.     $(LIBR) -out:$(TARGET).lib @allobjs.txt
  991. !ENDIF
  992. !IF "$(COPYTO)" != ""
  993.     -copy $(TARGET).lib $(MAPIDLL)
  994. !ENDIF
  995.  
  996. !ENDIF
  997.  
  998. # Building Clean --------------------------------------------------------------
  999.  
  1000. clean:
  1001. !IF $(DOECHO)
  1002.     echo ++++++++++++++++++++++++++++++++++++++++
  1003.     echo MAKING CLEAN
  1004. !ENDIF
  1005. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1006.     -del *.obj *.rbj *.exe *.dll *.exp *.lib *.pch *.pdb *.map *.sym *.txt *.res *.out *.vcw *.wsp $(OTHERCLEAN)
  1007. !ELSE
  1008.     -del *.obj
  1009.     -del *.rbj
  1010.     -del *.exe
  1011.     -del *.dll
  1012.     -del *.exp
  1013.     -del *.lib
  1014.     -del *.pch
  1015.     -del *.pdb
  1016.     -del *.map
  1017.     -del *.sym
  1018.     -del *.txt
  1019.     -del *.res
  1020.     -del *.out
  1021.     -del *.vcw
  1022.     -del *.wsp
  1023. !IF "$(OTHERCLEAN)" != ""
  1024.     -del $(OTHERCLEAN)
  1025. !ENDIF
  1026. !ENDIF
  1027.  
  1028. resclean:
  1029. !IF $(DOECHO)
  1030.     echo ++++++++++++++++++++++++++++++++++++++++
  1031.     echo MAKING RESOURCES CLEAN
  1032. !ENDIF
  1033. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1034.     -del *.rbj *.res $(OTHERRESCLEAN)
  1035. !ELSE
  1036.     -del *.rbj 
  1037.     -del *.res 
  1038. !IF "$(OTHERRESCLEAN)" != ""
  1039.     -del $(OTHERRESCLEAN)
  1040. !ENDIF
  1041. !ENDIF
  1042.