home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / VCL_Source / Source / RTL / rules.mak < prev    next >
Text File  |  2000-02-01  |  10KB  |  280 lines

  1. #############################################################################
  2. # In order to make a suite, define one or more of the following             #
  3. #                                                                           #
  4. #    DEBUG - Used to build a debuggable version of the RTL.                 #
  5. #                                                                           #
  6. #      DLL - Used to build the DLL version of the RTL.                      #
  7. #                                                                           #
  8. #       MT - Used to include multiple thread support.  This is only allowed #
  9. #            for WIN32.                                                     #
  10. #                                                                           #
  11. # TARGET_OS- Used to indicate the OS.  The default is WIN32.  It should be  #
  12. #            one of the following:                                          #
  13. #              WIN32  = 32 bit Windows on 32 bit Windows (NT,Chicago,Cairo) #
  14. #                                                                           #
  15. #      PCH - Used to turn on precompiled headers                            #
  16. #                                                                           #
  17. #############################################################################
  18.  
  19. #############################################################################
  20. # Setup some reasonable defaults.                                           #
  21. #############################################################################
  22. !if !$d(TARGET_OS)
  23.     TARGET_OS=WIN32
  24. !endif
  25.  
  26. !if $d(RTLSOURCE)
  27. ! if !$d(BCB)
  28.      BCB = $(MAKEDIR)\..
  29. ! endif
  30. ! if !$d(RTLROOT)
  31.      RTLROOT = $(BCB)\source\rtl
  32. ! endif
  33. !else
  34. ! if !$d(RTLROOT)
  35. !  if !$d(RTLHOME)
  36. !   error RTLHOME is not defined!!!
  37. !  else
  38.      RTLROOT = $(RTLHOME)
  39. !  endif
  40. ! endif
  41. !endif
  42. #############################################################################
  43. # Setup some useful directories.                                            #
  44. #############################################################################
  45. SRCBASE   = $(RTLROOT)\source
  46. OBJBASE   = $(RTLROOT)\obj\$(TARGET_OS)
  47. LIBDIR    = $(RTLROOT)\lib
  48. PSDKDIR   = $(LIBDIR)\psdk
  49. !if $d(RTLSOURCE)
  50. BCINCL    = $(BCB)\include;$(BCB)\include\vcl
  51. INCLBASE  = $(RTLROOT)
  52. !else
  53. INCLBASE  = $(RTLROOT)\include
  54. !endif
  55. EXTDIR    = $(RTLROOT)\external
  56.  
  57. #############################################################################
  58. # Guard against illegal variable combinations and obtain the operating      #
  59. # platform specific build rules.                                            #
  60. #############################################################################
  61. !if "$(TARGET_OS)" != "WIN32"
  62. !    error Unknown TARGET_OS
  63. !endif
  64.  
  65. !include $(TARGET_OS).mak
  66.  
  67. #############################################################################
  68. # Configure the output paths.                                               #
  69. #############################################################################
  70. .PATH.lib = $(LIBDIR)
  71. .PATH.obj = $(OBJDIR)
  72. .PATH.res = $(OBJDIR)
  73. .PATH.fst = $(OBJDIR)
  74.  
  75. #############################################################################
  76. # Adjust switches accordingly.                                              #
  77. #############################################################################
  78. !if $d(DEBUG)
  79.     CC   = $(CC) -v -vi -D__DEBUG__
  80.     ASM  = $(ASM) -zi /D__DEBUG__
  81.     LINK = $(LINK) -v
  82. !endif
  83.  
  84. #############################################################################
  85. # Implicit source rules.                                                    #
  86. #############################################################################
  87. .asm.obj :
  88.     $(ASM) $(ASMFLAGS) $*,$(OBJDIR)\;
  89.  
  90. .c.obj :
  91.     $(CC) {$< }
  92.  
  93. .cas.obj :
  94.     $(CC) {$< }
  95.  
  96. .cpp.obj :
  97.     $(CC) {$< }
  98.  
  99. .c.i :
  100. !if $d(JOHNS_CPP32)
  101.     $(CPP) -Sr -P- -n. {$< }
  102. !else
  103.     $(CPP) -Sk -Ss -Sd -P -n. {$< }
  104. !endif
  105.  
  106. .cpp.i :
  107. !if $d(JOHNS_CPP32)
  108.     $(CPP) -Sr -P- -n. {$< }
  109. !else
  110.     $(CPP) -Sk -Ss -Sd -P -n. {$< }
  111. !endif
  112.  
  113. .def.fst:
  114.     $(IMPLIB) $(OBJDIR)\$&.lib $&.def
  115.     fastlib $(OBJDIR)\$&.lib $(OBJDIR)\$&.fst
  116.     copy $(OBJDIR)\$&.fst $(PSDKDIR)\$&.lib
  117.     del $(OBJDIR)\$&.lib
  118.  
  119. .rc.res :
  120.     $(BRCC) @&&|
  121.     -i$(INCLUDES) -fo$(OBJDIR)\$& $<
  122. |
  123.  
  124. #############################################################################
  125. # The rules for the compiler and assembler configuration files.             #
  126. #############################################################################
  127. CFG = rtl.cfg
  128.  
  129. $(OBJDIR)\rtl.cfg :
  130.     copy &&|
  131.      $(CFLAGS)
  132. |   $@
  133.  
  134. tasm.cfg :
  135.     copy &&|
  136.      $(AFLAGS)
  137. |   $@
  138.  
  139. delcfg :
  140. !if $d(KEEP_TASM_CFG)
  141.     @if exist tasm.cfg echo KEEP_TASM_CFG specified and TASM.CFG found.
  142. !else
  143.     if exist tasm.cfg del tasm.cfg
  144. !endif
  145.  
  146. cfg : $(OBJDIR)\rtl.cfg
  147.  
  148. #############################################################################
  149. # The rule for building a response file for library creation.               #
  150. #############################################################################
  151. librsp :
  152.     makersp "-+$(OBJDIR:\=\\)\\!s &\n" &&|
  153.         $(OBJS)
  154. |   >> $(LIBDIR)\tlib.rsp
  155.  
  156. #############################################################################
  157. # The rule for building the static RTL.                                     #
  158. #############################################################################
  159. lib : librsp
  160.     $(TLIB) $(LIBDIR)\$(LIBNAME)$(MTSUFFIX).lib @tlib.rsp,temp.lst
  161. # The TLIB_NO_PURGE statement is a temp. workaround for a TASM32 bug which will
  162. # be fixed later.
  163.     $(TLIB_NO_PURGE) $(LIBDIR)\$(LIBNAME)$(MTSUFFIX).lib -+$(OBJDIR)\xx.obj
  164.     $(PUBTOOL) $(EXTDIR)\$(PUBNAME) $(LIBDIR)\$(LIBNAME)$(MTSUFFIX).lib
  165.     if exist $(LIBDIR)\$(LIBNAME)$(MTSUFFIX).bak del $(LIBDIR)\$(LIBNAME)$(MTSUFFIX).bak
  166.     del temp.lst
  167.  
  168. #############################################################################
  169. # The rules for building response files for RTLDLL and import library       #
  170. # creation                                                                  #
  171. #############################################################################
  172.  
  173. #
  174. # build the rsp file for linking the RTLDLL
  175. #
  176. dllrsp :
  177.    makersp "$(OBJDIR:\=\\)\\!s+\n" &&|
  178.    $(OBJS)
  179. |  >> $(LIBDIR)\dll.rsp
  180.  
  181. #
  182. # build the rsp file for CW32I and the CP32MTI version of CC32xxMT.DLL
  183. #
  184. importrsp :
  185.    makersp "-+$(OBJDIR:\=\\)\\!s &\n" &&|
  186.    $(IMPOBJS) $(IMPOBJS_P_ONLY)
  187. |  >> $(LIBDIR)\import.rsp
  188. #   @echo IMPOBJS = $(IMPOBJS)
  189. #   @echo IMPOBJS_P_ONLY = $(IMPOBJS_P_ONLY)
  190.  
  191. #
  192. # build the rsp file for the CW32MTI version of CC32xxMT.DLL
  193. #
  194. importrsp_w :
  195.    makersp "-+$(OBJDIR:\=\\)\\!s &\n" &&|
  196.    $(IMPOBJS) $(IMPOBJS_W_ONLY)
  197. |  >> $(LIBDIR)\import_w.rsp
  198. #   @echo IMPOBJS = $(IMPOBJS)
  199. #   @echo IMPOBJS_W_ONLY = $(IMPOBJS_W_ONLY)
  200.  
  201.  
  202. #############################################################################
  203. # The rule for building the RTL DLL and it's import librarie(s)             #
  204. #############################################################################
  205. dll : $(LIBDIR)\dll.rsp $(LIBDIR)\import.rsp $(OBJDIR)\version.res
  206.     $(LINK) $(LINKEROPTS) -j$(EXTDIR) @dll.rsp,$(DLLNAME),,$(IMPORT) $(EXTLIB),,$(OBJDIR)\version
  207.     $(IMPLIB) $(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).lib $(DLLNAME).dll
  208.     fastlib $(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).lib $(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).fst
  209. #------------------------------------------------------------------------------
  210. # The import libs for the RTLDLL are now created in the following order:
  211. #   First, the IMPOBJS files are TLIBed in (so the linker will see them first)
  212. #   Then the impdefs for the DLLs' exports are added.  This is the reverse of
  213. #   the way they used to be inserted into the import libs prior to BCB 3.0.
  214.     $(TLIB) $(IMPLIBNAME) @import.rsp,nul
  215.     $(TLIB) $(IMPLIBNAME)-+$(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).fst
  216. #------------------------------------------------------------------------------
  217. !if $d(MAGIC)
  218.     $(TLIB) $(IMPLIBNAME_W) @import_w.rsp,nul
  219.     $(TLIB) $(IMPLIBNAME_W)-+$(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).fst
  220.     $(PUBTOOL) $(EXTDIR)\$(PUBNAME) $(IMPLIBNAME_W).lib
  221. !endif
  222. #------------------------------------------------------------------------------
  223.     $(PUBTOOL) $(EXTDIR)\$(PUBNAME) $(IMPLIBNAME).lib
  224.     del $(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).lib
  225.     del $(LIBNAME)$(MTSUFFIX)$(DLLSUFFIX).fst
  226.     if exist $(IMPLIBNAME).bak del $(IMPLIBNAME).bak
  227.     if exist $(IMPLIBNAME_W).bak del $(IMPLIBNAME_W).bak
  228.  
  229. #############################################################################
  230. # The crux of the build process is to build the required response files for #
  231. # either the static or dynamic RTLs.  As the process scans each directory,  #
  232. # the needed objs are built and placed into $(OBJDIR).  The rule below      #
  233. # makes this possible.                                                      #
  234. #############################################################################
  235. RTLCFG = $(OBJDIR)\rtl.cfg
  236.  
  237. ALL = rtl_cfg
  238.  
  239. !if $d(OBJS)
  240.     ALL = $(ALL) $(OBJS)
  241. !   if $d(DLL)
  242.     ALL = $(ALL) dllrsp
  243. !   else
  244.     ALL = $(ALL) librsp
  245. !   endif
  246. !endif
  247.  
  248. !if $d(MISC)
  249.     ALL = $(ALL) $(MISC)
  250. !endif
  251.  
  252. !if $d(DLL)
  253. !    if $d(RES)
  254.      ALL = $(ALL) $(RES)
  255. !    endif
  256. !    if $d(IMPOBJS)
  257.      ALL = $(ALL) $(IMPOBJS)
  258. !    endif
  259. !    if $d(IMPOBJS_W_ONLY)
  260.      ALL = $(ALL) $(IMPOBJS_W_ONLY)
  261. !    endif
  262. !    if $d(IMPOBJS_P_ONLY)
  263.      ALL = $(ALL) $(IMPOBJS_P_ONLY)
  264. !    endif
  265. !    if $d(IMPOBJS) || $d(IMPOBJS_P_ONLY)
  266.      ALL = $(ALL) importrsp
  267. !    endif
  268. !    if $d(MAGIC)
  269.      ALL = $(ALL) importrsp_w
  270. !    endif
  271. !endif
  272.  
  273. !if $d(TASMCFG)
  274.     ALL = tasm.cfg $(ALL) delcfg
  275. !endif
  276.  
  277. objs : $(ALL)
  278.  
  279. rtl_cfg: $(RTLCFG)
  280.