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

  1. # -----------------------------------------------------------------------------
  2. # $(MAPI)\src\sample.xp\makefile
  3. #
  4. # Copyright 1993-1994 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.xp macros, objects, and dependencies
  572. #
  573.  
  574. H                = $(MAPI)\$(SRCROOT)\sample.xp
  575.  
  576. ENTRYPOINT      =
  577.  
  578. OTHERINCS       = -I$(MAPIH)
  579.  
  580. RCSOURCE        = $H\xpresrc.rc
  581. RCDEPS          = $H\xpresrc.h $H\xpresrc.dlg
  582.  
  583. !IF $(WIN16)
  584. BASENAME        = smpxp
  585. OTHERLIBS       = $(MAPILIB)\mapi.lib 
  586. !ENDIF
  587. !IF $(WIN32)
  588. BASENAME        = smpxp32
  589. OTHERLIBS       = $(MAPILIB)\mapi32.lib
  590. !ENDIF
  591.  
  592. DEFSOURCE        = $H\smpxp.des
  593. DEFFILE            = dll$(WINTAG).def
  594.  
  595. PCH             = xppch
  596. PCHDEPS         =            \
  597.     $H\xpbase.h                \
  598.     $H\xpdialog.h            \
  599.     $H\xpstatus.h            \
  600.     $H\xpqueue.h            \
  601.     $H\xplogger.h            \
  602.     $(MAPIH)\mapidefs.h        \
  603.     $(MAPIH)\mapicode.h        \
  604.     $(MAPIH)\mapiguid.h        \
  605.     $(MAPIH)\mapitags.h        \
  606.     $(MAPIH)\mapispi.h        \
  607.     $(MAPIH)\mapidbg.h        \
  608.     $(MAPIH)\mapiutil.h        \
  609.     $(MAPIH)\mapiwin.h        \
  610.     $(MAPIH)\mapiwz.h        \
  611.  
  612. !IF $(VERDEBUG)
  613. !IF $(WIN16)
  614. COMMONOBJS      = mapidbg.obj wep.obj
  615. !ELSE
  616. COMMONOBJS      = mapidbg.obj
  617. !ENDIF
  618. !ELSE
  619. !IF $(WIN16)
  620. COMMONOBJS      = wep.obj
  621. !ELSE
  622. COMMONOBJS      =
  623. !ENDIF
  624. !ENDIF
  625.  
  626.  
  627. OBJS = \
  628.     xpbase.obj   xpdialog.obj xpguid.obj   xplogger.obj xpoption.obj \
  629.     xpqueue.obj  xprcvmsg.obj xpsndmsg.obj xpsof.obj    xpstatus.obj \
  630.     $(COMMONOBJS)
  631.  
  632. xpbase.obj: \
  633.     $H\xpbase.c \
  634.     $H\xpresrc.h \
  635.     $(PCHDEPS)
  636.  
  637. xpdialog.obj: \
  638.     $H\xpdialog.c \
  639.     $H\xpresrc.h \
  640.     $(PCHDEPS)
  641.  
  642. xplogger.obj: \
  643.     $H\xplogger.c \
  644.     $(PCHDEPS)
  645.  
  646. xpoption.obj: \
  647.     $H\xpoption.c \
  648.     $H\xpoption.h \
  649.     $(PCHDEPS)
  650.  
  651. xpqueue.obj: \
  652.     $H\xpqueue.c \
  653.     $H\xpsof.h \
  654.     $H\xptxtmsg.h \
  655.     $(PCHDEPS)
  656.  
  657. xprcvmsg.obj: \
  658.     $H\xprcvmsg.c \
  659.     $H\xpsof.h \
  660.     $H\xptxtmsg.h \
  661.     $(PCHDEPS)
  662.  
  663. xpsndmsg.obj: \
  664.     $H\xpsndmsg.c \
  665.     $(PCHDEPS)
  666.  
  667. xpsof.obj: \
  668.     $H\xpsof.c \
  669.     $H\xpsof.h \
  670.     $(PCHDEPS)
  671.  
  672. xpstatus.obj: \
  673.     $H\xpstatus.c \
  674.     $(PCHDEPS)
  675.  
  676.  
  677. #       rules for files that don't use the pre-compiled header
  678.  
  679. xpguid.obj: $H\xpguid.c $(MAPIH)\mapiguid.h
  680.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  681.     $(CC) $H\$*.c
  682.  
  683. mapidbg.obj: $(MAPICOMMON)\mapidbg.c $(MAPIH)\mapidbg.h
  684.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  685.     $(CC) $(MAPICOMMON)\$*.c
  686.  
  687. !IF $(WIN16)
  688. wep.obj: $(MAPICOMMON)\wep.c $(MAPIH)\mapidbg.h
  689.     SET $(CC)=$(CFLAGS) $(DEFS) -I$(MAPIH)
  690.     $(CC) $(MAPICOMMON)\$*.c
  691. !ENDIF
  692.  
  693. # -----------------------------------------------------------------------------
  694. #
  695. #       Part 4: build executable targets
  696. #
  697.  
  698. .SUFFIXES: .asm .bas .c .cpp .cxx .des .rc .pch
  699.  
  700. # TARGET ----------------------------------------------------------------------
  701.  
  702. TARGET          = $(BASENAME)
  703.  
  704. !IF "$(DEFDIR)" == ""
  705. DEFDIR        = $H
  706. !ENDIF
  707.  
  708. !IF "$(DEFSOURCE)" != ""
  709. !IF "$(DEFFILE)" == ""
  710. DEFFILE        = $(BASENAME).def
  711. !ENDIF
  712. OTHERCLEAN  = $(DEFFILE) $(OTHERCLEAN)
  713. !ENDIF
  714.  
  715. !IF "$(DEFFILE)" == ""
  716. !IF $(PRODDLL)
  717. DEFFILE        = $(DEFDIR)\dll$(WINTAG).def
  718. !ELSE
  719. DEFFILE        = $(DEFDIR)\$(BASENAME).def
  720. !ENDIF
  721. !ENDIF
  722.  
  723. # PCHDIR
  724.  
  725. !IF "$(PCHDIR)" == ""
  726. PCHDIR = $H
  727. !ENDIF
  728.  
  729. # Resources -------------------------------------------------------------------
  730.  
  731. !IF "$(RCSOURCE)" != ""
  732. !IF $(WIN32) && $(MSVCNT) == 0
  733. RCTARGET        = rc.rbj
  734. !ELSE
  735. RCTARGET        = rc.res
  736. !ENDIF
  737. !ENDIF
  738.  
  739. # Other Includes and Libraries ------------------------------------------------
  740.  
  741. LIBS            = $(OTHERLIBS) $(LIBS)
  742. INCDIRS         = $(OTHERINCS) -I$H -I$(MAPIH) -I$(MAPIINC) -I$(MAPIEXTINC) $(INCDIRS)
  743.  
  744. # Entry point -----------------------------------------------------------------
  745.  
  746. !IF $(WIN32) && "$(ENTRYPOINT)" != ""
  747. ENTRYPOINT      = -entry:$(ENTRYPOINT)
  748. !ELSE
  749. !IF $(WIN32) && $(MSVCNT)
  750. # LFLAGS = /NOENTRY $(LFLAGS)
  751. !ENDIF
  752. !ENDIF
  753.  
  754. # C Precompiled Header --------------------------------------------------------
  755.  
  756. !IF "$(PCH)" != ""
  757. OBJS    = $(PCH).obj $(OBJS)
  758. $(PCH).obj: $(PCH).pch
  759. !IF $(DOECHO)
  760.     echo ignoring precompiled header "C" file $(PCH).c
  761. !ELSE
  762.     rem
  763. !ENDIF
  764.  
  765. $(PCH).pch: $(PCHDIR)\$(PCH).c $(PCHDEPS)
  766. !IF $(DOECHO)
  767.     echo ++++++++++++++++++++++++++++++++++++++++
  768.     echo BUILDING Pre-compiled header $(PCH).pch
  769. !ENDIF
  770.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  771.     $(CC) -I$(PCHDIR) -Yc -Fp$(PCH).pch -Fo$(PCH).obj $(PCHDIR)\$(PCH).c
  772.  
  773. USEPCH          = -Yu$(PCH).h
  774. !ENDIF
  775.  
  776. # .C to .OBJ ------------------------------------------------------------------
  777.  
  778. {$H}.c.obj:
  779. !IF $(DOECHO)
  780.     echo +++++++++
  781.     echo COMPILING $*.c
  782. !ENDIF
  783. !IF $(DOECHO) && "$(USEPCH)" != ""
  784.     echo USING Precompiled Header $(PCH).h
  785. !ENDIF
  786.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  787.     $(CC) $(USEPCH) $H\$*.c
  788.  
  789. # C++ Precompiled Header ------------------------------------------------------
  790.  
  791. !IF "$(CPPPCH)" != ""
  792. OBJS    = $(CPPPCH).obj $(OBJS)
  793. $(CPPPCH).OBJ: $(CPPPCH).pch
  794. !IF $(DOECHO)
  795.     echo ignoring precompiled header "C++" file $(CPPPCH).cpp
  796. !ELSE
  797.     rem
  798. !ENDIF
  799.  
  800. $(CPPPCH).pch: $(PCHDIR)\$(CPPPCH).cpp $(CPPPCHDEPS)
  801. !IF $(DOECHO)
  802.     echo ++++++++++++++++++++++++++++++++++++++++
  803.     echo BUILDING Pre-compiled header $(CPPPCH).pch
  804. !ENDIF
  805.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  806.     $(CC) -I$(PCHDIR) -Yc -Fp$(CPPPCH).pch -Fo$(CPPPCH).obj $(PCHDIR)\$(CPPPCH).cpp
  807.  
  808. USECPPPCH       = -Yu$(CPPPCH).h
  809. !ENDIF
  810.  
  811. # .CPP to .OBJ ----------------------------------------------------------------
  812.  
  813. {$H}.cpp.obj:
  814. !IF $(DOECHO)
  815.     echo +++++++++
  816.     echo COMPILING $*.cpp
  817. !ENDIF
  818. !IF $(DOECHO) && "$(USECPPPCH)" != ""
  819.     echo USING Precompiled Header $(CPPPCH).h
  820. !ENDIF
  821.     SET $(CC)=$(CFLAGS) $(DEFS) $(INCDIRS)
  822.     $(CC) $(USECPPPCH) $H\$*.cpp
  823.  
  824. # .ASM to .OBJ ----------------------------------------------------------------
  825.  
  826. {$H}.asm.obj:
  827. !IF $(DOECHO)
  828.    echo +++++++++
  829.    echo ASSEMBLING $*.asm
  830. !ENDIF
  831.     $(AS) $(AFLAGS) $(DEFS) $H\$*.asm;
  832.  
  833. # .RC to .RES/.RBJ ------------------------------------------------------------
  834.  
  835. !IF "$(RCTARGET)" != ""
  836. $(RCTARGET): $(RCSOURCE) $(RCDEPS)
  837. !IF $(DOECHO)
  838.     echo +++++++++
  839.     echo BUILDING $(VERSION) $@.res
  840. !ENDIF
  841.     @SET INCLUDE=$H;$H\..;$(MAPIINC);$(MAPIRESRC);$(INCLUDE)
  842. !IF $(WIN16)
  843. #DRM This next line doesn't work yet.  I'm working on it.
  844. #       SET RC=$(OTHERINCS)
  845.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  846. !ELSE
  847.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  848. !ENDIF
  849. !IF $(WIN32) && $(MSVCNT) == 0
  850.     cvtres -$(CPU) rc.res -o $(RCTARGET)
  851. !ENDIF
  852. !ENDIF
  853.  
  854. # Build a subsystem target ----------------------------------------------------
  855.  
  856. subsys: $(OBJS)
  857. !IF "$(OBJS)" != ""
  858.     -del allobjs.txt > nul
  859.     type >>allobjs.txt <<
  860. $(OBJS)
  861. <<
  862. !ENDIF
  863.  
  864. # Building .def file  ---------------------------------------------------------
  865.  
  866. !IF "$(DEFSOURCE)" != ""
  867. $(DEFFILE): $(DEFSOURCE)
  868.     SET $(CC)= $(DEFS) $(INCDIRS)
  869.     $(CC) -EP -Tc $(DEFSOURCE) > $(DEFFILE)
  870. !ENDIF
  871.  
  872. # Building Executable ---------------------------------------------------------
  873.  
  874. !IF $(PRODEXE)
  875.  
  876. goal: $(TARGET).exe
  877.  
  878. $(TARGET).exe: subsys $(RCTARGET)
  879. !IF $(WIN16)
  880.     type >link.txt <<
  881. $(OBJS: = +^
  882. )
  883. $(TARGET).exe
  884. $(TARGET).map
  885. $(LIBS: = +^
  886. )
  887. $(DEFFILE)
  888. <<
  889.     $(LINK) $(LFLAGS) @link.txt
  890. !IF "$(RCTARGET)" != ""
  891.     $(RC) -t $(RCTARGET) $@
  892. !ENDIF
  893. !ENDIF
  894. !IF $(WIN32)
  895. !IF $(WIN95)
  896.     type >link.txt <<
  897. $(ENTRYPOINT) -map:$(TARGET).map -out:$@
  898. <<
  899.     type allobjs.txt >> link.txt
  900.     type >>link.txt <<
  901. $(RCTARGET) $(LIBS)
  902. <<
  903.     $(LINK) $(LFLAGS) @link.txt
  904. !ELSE
  905.     $(LINK) $(LFLAGS) $(ENTRYPOINT) -map:$(TARGET).map -out:$@ @allobjs.txt $(RCTARGET) $(LIBS)
  906. !ENDIF
  907. !ENDIF
  908. !IF "$(COPYTO)" != ""
  909.     -copy $(TARGET).exe $(COPYTO)
  910. !ENDIF
  911.  
  912. !ENDIF
  913.  
  914. # Building DLL ----------------------------------------------------------------
  915.  
  916. !IF $(PRODDLL)
  917.  
  918. goal: $(TARGET).dll
  919.  
  920. lib: $(TARGET).lib
  921.  
  922. $(TARGET).lib: $(DEFFILE)
  923. !IF $(WIN16)
  924.     $(IMPLIB) -nologo $(TARGET).lib $(DEFFILE)
  925. !ELSE
  926.     $(LIBR) -machine:$(CPU) -def:$(DEFFILE) -out:$@
  927. !ENDIF
  928. !IF "$(COPYTO)" != ""
  929.     -copy $(TARGET).lib $(MAPILIB)
  930. !ENDIF
  931.  
  932. $(TARGET).dll: subsys $(TARGET).lib $(RCTARGET)
  933. !IF $(WIN16)
  934.     type >link.txt <<
  935. $(OBJS: = +^
  936. )
  937. $(TARGET).dll
  938. $(TARGET).map
  939. $(LIBS: = +^
  940. )
  941. $(DEFFILE)
  942. <<
  943.     $(LINK) $(LFLAGS) @link.txt
  944. !IF "$(RCTARGET)" != ""
  945.     $(RC) -t $(RCTARGET) $@
  946. !ENDIF
  947. !ELSE
  948. !IF $(WIN95)
  949.     type >link.txt <<
  950. -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimchi.txt,$(TARGET)
  951. <<
  952.     type allobjs.txt >> link.txt
  953.     type >>link.txt <<
  954. $(RCTARGET) $(TARGET).exp $(LIBS)
  955. <<
  956.     $(LINK) $(LFLAGS) @link.txt
  957. !ELSE
  958.     $(LINK) $(LFLAGS) -dll $(ENTRYPOINT) -out:$@ -map:$(TARGET).map -base:@$(MAPI)\mapimem.txt,$(TARGET) @allobjs.txt $(RCTARGET) $(TARGET).exp $(LIBS)
  959. !ENDIF
  960. !ENDIF
  961. !IF "$(COPYTO)" != ""
  962.     -copy $(TARGET).dll $(COPYTO)
  963. !ENDIF
  964.  
  965. !ENDIF
  966.  
  967. # Building Library ------------------------------------------------------------
  968.  
  969. !IF $(PRODLIB)
  970.  
  971. goal: $(TARGET).lib
  972.  
  973. lib: $(TARGET).lib
  974.  
  975. $(TARGET).lib: subsys
  976. !IF $(WIN16)
  977.     type > lib.txt <<
  978. $(OBJS: = &^
  979. )
  980. <<
  981.     @if exist $(TARGET).lib del $(TARGET).lib
  982.     $(LIBR) $(TARGET).lib @lib.txt
  983. !ENDIF
  984. !IF $(WIN32)
  985.     $(LIBR) -out:$(TARGET).lib @allobjs.txt
  986. !ENDIF
  987. !IF "$(COPYTO)" != ""
  988.     -copy $(TARGET).lib $(MAPIDLL)
  989. !ENDIF
  990.  
  991. !ENDIF
  992.  
  993. # Building Clean --------------------------------------------------------------
  994.  
  995. clean:
  996. !IF $(DOECHO)
  997.     echo ++++++++++++++++++++++++++++++++++++++++
  998.     echo MAKING CLEAN
  999. !ENDIF
  1000. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1001.     -del *.obj *.rbj *.exe *.dll *.exp *.lib *.pch *.pdb *.map *.sym *.txt *.res *.out *.vcw *.wsp $(OTHERCLEAN)
  1002. !ELSE
  1003.     -del *.obj
  1004.     -del *.rbj
  1005.     -del *.exe
  1006.     -del *.dll
  1007.     -del *.exp
  1008.     -del *.lib
  1009.     -del *.pch
  1010.     -del *.pdb
  1011.     -del *.map
  1012.     -del *.sym
  1013.     -del *.txt
  1014.     -del *.res
  1015.     -del *.out
  1016.     -del *.vcw
  1017.     -del *.wsp
  1018. !IF "$(OTHERCLEAN)" != ""
  1019.     -del $(OTHERCLEAN)
  1020. !ENDIF
  1021. !ENDIF
  1022.  
  1023. resclean:
  1024. !IF $(DOECHO)
  1025.     echo ++++++++++++++++++++++++++++++++++++++++
  1026.     echo MAKING RESOURCES CLEAN
  1027. !ENDIF
  1028. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  1029.     -del *.rbj *.res $(OTHERRESCLEAN)
  1030. !ELSE
  1031.     -del *.rbj 
  1032.     -del *.res 
  1033. !IF "$(OTHERRESCLEAN)" != ""
  1034.     -del $(OTHERRESCLEAN)
  1035. !ENDIF
  1036. !ENDIF
  1037.