home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / mapi / win16 / dev / makestuf / xmake2.mak < prev   
Encoding:
Text File  |  1995-07-11  |  7.2 KB  |  332 lines

  1. # -----------------------------------------------------------------------------
  2. # $(MAPITEST)\samples\makestuf\xmake2.mak
  3. #
  4. # Copyright (C) 1995 Microsoft Corporation
  5. # -----------------------------------------------------------------------------
  6.  
  7. # -----------------------------------------------------------------------------
  8. #
  9. #   Part 4: build executable targets
  10. #
  11.  
  12. .SUFFIXES: .asm .bas .c .cpp .cxx .des .rc .pch
  13.  
  14. # TARGET ----------------------------------------------------------------------
  15.  
  16. TARGET      = $(BASENAME)
  17.  
  18. # PCHDIR
  19.  
  20. !IF "$(PCHDIR)" == ""
  21. PCHDIR      = $H
  22. !ENDIF
  23.  
  24. # Resources -------------------------------------------------------------------
  25.  
  26. !IF "$(RCSOURCE)" != ""
  27. !IF $(WIN32) && "$(MSVCNT)" == "0"
  28. RCTARGET    = rc.rbj
  29. !ELSE
  30. RCTARGET    = rc.res
  31. !ENDIF
  32. !ENDIF
  33.  
  34. # Other Includes and Libraries ------------------------------------------------
  35.  
  36. LIBS        = $(OTHERLIBS) $(LIBS)
  37. INCDIRS     = $(OTHERINCS) -I$H -I$(MAPIH) -I$(MAPIINC) -I$(MAPIEXTINC) $(INCDIRS)
  38.  
  39. # Entry point -----------------------------------------------------------------
  40.  
  41. !IF $(WIN32) && "$(ENTRYPOINT)" != ""
  42. ENTRYPOINT  = -entry:$(ENTRYPOINT)
  43. !ELSE
  44. !IF $(WIN32) && $(MSVCNT)
  45. !ENDIF
  46. !ENDIF
  47.  
  48. # C Precompiled Header --------------------------------------------------------
  49.  
  50. !IF "$(PCH)" != ""
  51. OBJS        = $(PCH).obj $(OBJS)
  52. $(PCH).obj: $(PCH).pch
  53. !IF $(DOECHO)
  54.     echo ignoring precompiled header "C" file $(PCH).c
  55. !ELSE
  56.     rem
  57. !ENDIF
  58.  
  59. $(PCH).pch: $(PCHDIR)\$(PCH).c $(PCHDEPS)
  60. !IF $(DOECHO)
  61.     echo ++++++++++++++++++++++++++++++++++++++++
  62.     echo BUILDING Pre-compiled header $(PCH).pch
  63. !ENDIF
  64.     SET CL=$(CFLAGS) $(DEFS) $(INCDIRS)
  65.     $(CC) -I$(PCHDIR) -Yc -Fp$(PCH).pch -Fo$(PCH).obj $(PCHDIR)\$(PCH).c
  66.  
  67. USEPCH      = -Yu$(PCH).h
  68. !ENDIF
  69.  
  70. # .C to .OBJ ------------------------------------------------------------------
  71.  
  72. {$H}.c.obj:
  73. !IF $(DOECHO)
  74.     echo +++++++++
  75.     echo COMPILING $*.c
  76. !ENDIF
  77. !IF $(DOECHO) && "$(USEPCH)" != ""
  78.     echo USING Precompiled Header $(PCH).h
  79. !ENDIF
  80.     SET CL=$(CFLAGS) $(DEFS) $(INCDIRS)
  81.     $(CC) $(USEPCH) $H\$*.c
  82.  
  83. # C++ Precompiled Header ------------------------------------------------------
  84.  
  85. !IF "$(CPPPCH)" != ""
  86. OBJS    = $(CPPPCH).obj $(OBJS)
  87. $(CPPPCH).OBJ: $(CPPPCH).pch
  88. !IF $(DOECHO)
  89.     echo ignoring precompiled header "C++" file $(CPPPCH).cpp
  90. !ELSE
  91.     rem
  92. !ENDIF
  93.  
  94. $(CPPPCH).pch: $(PCHDIR)\$(CPPPCH).cpp $(CPPPCHDEPS)
  95. !IF $(DOECHO)
  96.     echo ++++++++++++++++++++++++++++++++++++++++
  97.     echo BUILDING Pre-compiled header $(CPPPCH).pch
  98. !ENDIF
  99.     SET CL=$(CFLAGS) $(DEFS) $(INCDIRS)
  100.     $(CC) -I$(PCHDIR) -Yc -Fp$(CPPPCH).pch -Fo$(CPPPCH).obj $(PCHDIR)\$(CPPPCH).cpp
  101.  
  102. USECPPPCH    = -Yu$(CPPPCH).h
  103. !ENDIF
  104.  
  105. # .CPP to .OBJ ----------------------------------------------------------------
  106.  
  107. {$H}.cpp.obj:
  108. !IF $(DOECHO)
  109.     echo +++++++++
  110.     echo COMPILING $*.cpp
  111. !ENDIF
  112. !IF $(DOECHO) && "$(USECPPPCH)" != ""
  113.     echo USING Precompiled Header $(CPPPCH).h
  114. !ENDIF
  115.     SET CL=$(CFLAGS) $(DEFS) $(INCDIRS)
  116.     $(CC) $(USECPPPCH) $H\$*.cpp
  117.  
  118. # .ASM to .OBJ ----------------------------------------------------------------
  119.  
  120. {$H}.asm.obj:
  121. !IF $(DOECHO)
  122.    echo +++++++++
  123.    echo ASSEMBLING $*.asm
  124. !ENDIF
  125.     $(AS) $(AFLAGS) $(DEFS) $H\$*.asm;
  126.  
  127. # .RC to .RES/.RBJ ------------------------------------------------------------
  128.  
  129. !IF "$(RCTARGET)" != ""
  130. $(RCTARGET): $(RCSOURCE) $(RCDEPS)
  131. !IF $(DOECHO)
  132.     echo +++++++++
  133.     echo BUILDING $(VERSION) $@.res
  134. !ENDIF
  135.     @SET INCLUDE=$H;$H\..;$(MAPIINC);$(MAPIRESRC);$(INCLUDE)
  136. !IF $(WIN16)
  137.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  138. !ELSE
  139.     $(RC) -r $(DEFS) $(OTHERINCS) -forc.res $(RCSOURCE)
  140. !ENDIF
  141. !IF $(WIN32) && $(MSVCNT) == 0
  142.     cvtres -$(CPU) rc.res -o $(RCTARGET)
  143. !ENDIF
  144. !ENDIF
  145.  
  146.  
  147. # Build a subsystem target ----------------------------------------------------
  148.  
  149. !IF $(WIN16)
  150. subsys: $(OBJS)
  151. !IF "$(OBJS)" != ""
  152.     type >>allobjs.txt <<
  153. $(OBJS) +
  154. <<
  155. !ENDIF
  156. !ENDIF
  157.  
  158. !IF $(WIN32)
  159. subsys: $(OBJS)
  160. !IF "$(OBJS)" != ""
  161.     type >>allobjs.txt <<
  162. $(OBJS)
  163. <<
  164. !ENDIF
  165. !ENDIF
  166.  
  167.  
  168. # Build other subsystems target -----------------------------------------------
  169.  
  170. allsubs: $(OTHERSUBS)
  171. !IF $(DOECHO)
  172.     echo ++++++++++++++++++++++++++++++++++++++++
  173.     echo BUILDING INCLUDED SUBSYSTEMS
  174. !ENDIF
  175.     type nul > allobjs.txt
  176.     type nul > link.txt
  177.     !$(MAKE) -nologo $(MAKEDEFS) -f $** subsys
  178.  
  179. # Building Executable ---------------------------------------------------------
  180.  
  181. !IF $(PRODEXE)
  182.  
  183. goal: $(TARGET).exe
  184.  
  185. $(TARGET).exe: allsubs $(RCTARGET)
  186. !IF $(WIN16)
  187.     type allobjs.txt > link.txt
  188.     type >> link.txt <<
  189.  
  190. $(TARGET).exe
  191. $(TARGET).map
  192. $(LIBS: = +^
  193. )
  194. $H\$(TARGET)$(WINTAG).def
  195. <<
  196.     $(LINK) $(LFLAGS) @link.txt
  197. !IF "$(RCTARGET)" != ""
  198.     $(RC) -nologo -31 -K $(RCTARGET) $@
  199. !ENDIF
  200. !ENDIF
  201. !IF $(WIN32)
  202.     type >> link.txt <<
  203. $(LFLAGS) 
  204. $(ENTRYPOINT) 
  205. -map:$(TARGET).map 
  206. -out:$@
  207. $(RCTARGET) 
  208. $(LIBS)
  209. <<
  210.     $(LINK) @link.txt @allobjs.txt 
  211. !ENDIF
  212. !IF "$(DEVTREE)" != "0"
  213.     -copy $(TARGET).exe $(MAPI)\lib\$(WINTAG)\$(VERTAG)
  214. !ENDIF
  215.  
  216. !ENDIF
  217.  
  218. # Building DLL ----------------------------------------------------------------
  219.  
  220. !IF $(PRODDLL)
  221.  
  222. goal: $(TARGET).dll
  223.  
  224. lib: $(TARGET).lib
  225.  
  226. !IF $(WIN16)
  227. $(TARGET).lib: $H\dll$(WINTAG).def
  228. !ELSE
  229. $(TARGET).lib: $H\dll.def
  230. !ENDIF
  231. !IF $(WIN16)
  232.     $(IMPLIB) -nologo $(TARGET).lib $H\dll$(WINTAG).def
  233. !ELSE
  234.     $(LIBR) -machine:$(CPU) -def:$H\dll.def -out:$@
  235. !ENDIF
  236. !IF "$(DEVTREE)" != "0"
  237.     -copy $(TARGET).lib $(MAPI)\lib\$(WINTAG)
  238. !ENDIF
  239.  
  240. $(TARGET).dll: allsubs $(TARGET).lib $(RCTARGET)
  241. !IF $(WIN16)
  242.     type allobjs.txt > link.txt
  243.     type >> link.txt <<
  244.  
  245. $(TARGET).dll
  246. $(TARGET).map
  247. $(LIBS: = +^
  248. )
  249. $H\dll$(WINTAG).def
  250. <<
  251.     $(LINK) $(LFLAGS) @link.txt
  252. !IF "$(RCTARGET)" != ""
  253.     $(RC) -nologo -31 -K $(RCTARGET) $(@F)
  254. !ENDIF
  255. !ENDIF
  256. !IF $(WIN32)
  257.     type >> link.txt <<
  258. $(LFLAGS)
  259. $(ENTRYPOINT)
  260. -dll
  261. -out:$@
  262. -map:$(TARGET).map
  263. $(RCTARGET)
  264. $(TARGET).exp
  265. $(LIBS)
  266. <<
  267.     $(LINK) @link.txt @allobjs.txt
  268. !ENDIF
  269. !IF "$(DEVTREE)" != "0"
  270.     -copy $(TARGET).lib $(MAPI)\lib\$(WINTAG)
  271.     -copy $(TARGET).dll $(MAPIDLL)
  272.     
  273. !ENDIF
  274.  
  275. !ENDIF
  276.  
  277. # Building Library ------------------------------------------------------------
  278.  
  279. !IF $(PRODLIB)
  280.  
  281. goal: $(TARGET).lib
  282.  
  283. lib: $(TARGET).lib
  284.  
  285. $(TARGET).lib: allsubs
  286. !IF $(WIN16)
  287.     type > lib.txt <<
  288. $(OBJS: = &^
  289. )
  290. <<
  291.     @if exist $(TARGET).lib del $(TARGET).lib
  292.     $(LIBR) $(TARGET).lib @lib.txt
  293. !ENDIF
  294. !IF $(WIN32)
  295.     $(LIBR) -out:$(TARGET).lib @allobjs.txt
  296. !ENDIF
  297. !IF "$(DEVTREE)" != "0"
  298.     -copy $(TARGET).lib $(MAPIDLL)
  299. !ENDIF
  300.  
  301. !ENDIF
  302.  
  303. # Building Clean --------------------------------------------------------------
  304.  
  305. clean:
  306. !IF $(DOECHO)
  307.     echo ++++++++++++++++++++++++++++++++++++++++
  308.     echo MAKING CLEAN
  309. !ENDIF
  310. !IF "$(OS)" == "Windows_NT" || "$(FASTCLEAN)" != ""
  311.     -del *.obj *.rbj *.exe *.dll *.exp *.lib *.pch *.pdb *.map *.sym *.txt *.res *.out *.vcw *.wsp $(OTHERCLEAN)
  312. !ELSE
  313.     -del *.obj 
  314.     -del *.rbj 
  315.     -del *.exe 
  316.     -del *.dll 
  317.     -del *.exp 
  318.     -del *.lib 
  319.     -del *.pch 
  320.     -del *.pdb 
  321.     -del *.map 
  322.     -del *.sym 
  323.     -del *.txt 
  324.     -del *.res 
  325.     -del *.out 
  326.     -del *.vcw 
  327.     -del *.wsp
  328. !IF "$(OTHERCLEAN)" != ""
  329.     -del $(OTHERCLEAN)
  330. !ENDIF
  331. !ENDIF
  332.