Makefile
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:11k
源码类别:

VxWorks

开发平台:

C/C++

  1. # Makefile - top level makefile for target/src to build runtime libraries
  2. #
  3. # modification history
  4. # --------------------
  5. # 02h,31jul02,tpr  removed security and test frim the build for SRC CD.
  6. # 02g,26jun02,pes  Remove MIPS32 builds from bcm125x
  7. #                  CPU_VARIANT_CPU_TOOL_LIST_bcm125x.
  8. # 02f,08may02,pes  Change MIPS r3xxx CPU_VARIANT designation to rc3000
  9. # 02e,23apr02,pes  Add support for rc4xxx, rc5xxx, rm52xx, rm57xx, tx49xx and
  10. #    vr50xx processor families.
  11. # 02d,14mar02,t_m  move the rule for man after the include so the default rule
  12. #                  is still Default
  13. # 02c,07mar02,pch  Add arch/Makefile dependency for "man" target to fix cpuGen
  14. #                  fallout - SPR 73999
  15. # 02b,27feb02,pes  Adjust per-cpu-family Library archive selections
  16. # 02a,11jan02,pes  Insert macro definitions for MIPS repackaged libarch.a
  17. #                  libraries
  18. # download from www.programsalon.com
  19. # 01z,12dec01,tam  made CPU variant builds automatic; updated comments
  20. # 01y,12dec01,mem  Fix specialization test for MIPS.
  21. # 01x,07dec01,tam  Added CPU variant support
  22. # 01w,27nov01,jmp  Changed to expect simpc instead of SIMNT for VX_CPU_FAMILY.
  23. # 01v,20nov01,tam  move demo to dual build
  24. # 01u,16nov01,mil  Changed to expect ppc instead of PPC for VX_CPU_FAMILY.
  25. # 01t,12nov01,tam  added dual build support
  26. # 01s,07nov01,tam  added vxvmi directory
  27. # 01r,31oct01,mas  added vxmp subdirectory
  28. # 01q,30oct01,sn   pushed gnu under new tool directory
  29. # 01p,29oct01,dbs  re-instate vxcom and vxdcom
  30. # 01o,18oct01,dbs  temporarily remove vxcom and vxdcom from build
  31. # 01n,11oct01,tpr  Removed VxWorks 5.5 unsupported directories
  32. # 01m,04oct01,nel  Add VxDCOM to build.
  33. # 01l,27apr01,mem  Added vxFusion, zinc, missing dirs, remove ospf, wweb merge
  34. # 01k,07dec00,af   add cplus and gnu back to default build list.
  35. # 01j,06nov00,sn   add target for just building C++
  36. # 01i,09oct00,sn   but do build everything on tor2_x-fred-toolchain
  37. # 01h,09oct00,sn   don't build C++
  38. # 01g,11dec98,j_w  define CLEANLIBS -- for removing lib$(CPU)$(TOOL)*.a
  39. # 01f,22may98,ms   removed SUBDIRS hack
  40. # 01e,29apr98,dbt  removed rdb directory
  41. # 01d,05nov97,kkk  added rip, dhcp directory
  42. # 01c,28oct97,kkk  added ospf directory
  43. # 01b,15nov96,jag  added snmpv1 directory
  44. # 01a,17jun96,yp   written
  45. #
  46. # DESCRIPTION
  47. # This file contains the makefile rules to select subdirectories that contain
  48. # sources for building the VxWorks runtime archive and builds them.
  49. #
  50. # Some architecures support only one toolchain family (either GNU or DIAB). 
  51. # The toolchain supported is defined by VENDOR_DEFAULT below. 
  52. # For instance to build the source tree for the solaris simulator which supports
  53. # only the GNU toolchain, you should issue the following commands:
  54. # > cd $WIND_BASE/target/src
  55. # > make CPU=SIMSPARCSOLARIS TOOL=gnu
  56. #
  57. # Other architecures support both toolchain families (GNU and DIAB).
  58. # However most of the VxWorks source code under $(WIND_BASE)/target/src/
  59. # is compiled with only one toolchain family (either GNU or DIAB). This
  60. # default toolchain is defined again by VENDOR_DEFAULT. Nevertheless part of
  61. # the VxWorks source tree must still be built with the secondary toolchain
  62. # family. This dual build is accomplished in two passes.
  63. #
  64. # For instance to build the source tree for CPU=PPC604 which supports both
  65. # GNU and DIAB, the following commands must be issued:
  66. # > cd $WIND_BASE/target/src
  67. # > make CPU=PPC604 TOOL=diab
  68. # > make CPU=PPC604 TOOL=gnu
  69. #
  70. #
  71. # CPU VARIANTS
  72. # To compile part of the source tree for a CPU variant, first a tag must be
  73. # defined with which archive directory names are modified. In addition several
  74. # variables must be defined for each CPU variant build. Refer to the example
  75. # further below for more details. Note that CPU variant builds are normaly
  76. # started automatically at the end of the corresponding generic CPU build.
  77. #
  78. # FOR TESTING PURPOSES
  79. # If a dual build of the source tree should not be performed for a CPU type
  80. # which by default supports both toolchain families, the value of DUAL_BUILD
  81. # must be overwritten on the command line.
  82. # For instance to build successfuly the entire source tree for CPU=PPC604 with
  83. # the DIAB toolchain despite it is not the default toolchain for this 
  84. # architecture, issue the following commands:
  85. # > cd $WIND_BASE/target/src
  86. # > make CPU=PPC604 TOOL=diab DUAL_BUILD=false
  87. #
  88. # You may need to build the entire source tree with both toolchain families
  89. # (GNU and DIAB). Every source file must be compiled with both toolchains
  90. # and the resulting objects stored in a different locations. As above 
  91. # DUAL_BUILD must be set to false and in addition the COMMON_DIR variable
  92. # must be overwritten and set to false:
  93. # > cd $WIND_BASE/target/src
  94. # > make CPU=PPC604 TOOL=diab DUAL_BUILD=false COMMON_DIR=false
  95. # > make CPU=PPC604 TOOL=gnu DUAL_BUILD=false COMMON_DIR=false
  96. #
  97. # INTERNAL
  98. # The REAME.txt file under $(WIND_BASE)/target/src/ should be updated whenever
  99. # this file is modified, if appropriate.
  100. #*/
  101. TGT_DIR=$(WIND_BASE)/target
  102. # remove lib$(CPU)$(TOOL)*.a if make rclean is done at target/src level
  103. CLEANLIBS = YES
  104. # IMPORTANT:
  105. #
  106. # New directories under $WIND_BASE/src must be added to one of the following
  107. # list, and only one:
  108. #
  109. # SKIP_SUBDIRS: directory(ies) not being compiled
  110. # COMMON_SUBDIRS: directories compiled with the default compiler
  111. # only (cf value of VENDOR_DEFAULT)
  112. # DUAL_SUBDIRS: directories compiled with each toolchain.
  113. # NOTE: any directory including C++ files must be
  114. # added to this list.
  115. # GNU_SUBDIRS: directories compiled with GNU only
  116. # DIAB_SUBDIRS: directories compiled with DIAB only
  117. SKIP_SUBDIRS = CodeTEST http java snmpv1 streams ugl zinc zlib
  118. COMMON_SUBDIRS = arch bpf dhcp drv event fs libc math
  119.         netinet netwrs os ostool posix rip rpc 
  120.         tffs usb usr util vxfusion vxmp vxvmi wdb wind wrn 
  121. wtx wv
  122. DUAL_SUBDIRS = cplus demo tool vxcom vxdcom
  123. # - other C++ based code to be added 
  124. # here
  125. # - other source directories not ported
  126. # to new archive directory hierarchy to
  127. # be added here too.
  128. GNU_SUBDIRS =
  129. DIAB_SUBDIRS =
  130. include $(TGT_DIR)/h/make/defs.default
  131. include $(TGT_DIR)/h/tool/$(TOOL_FAMILY)/make.$(CPU)$(TOOL)
  132. ## Architectures default toolchain and dual build status
  133. #
  134. # ARM: DIAB & GNU (DIAB as default)
  135. #
  136. ifeq ($(VX_CPU_FAMILY),arm)
  137.     VENDOR_DEFAULT = diab
  138.     DUAL_BUILD = true
  139. endif
  140. #
  141. # COLDFIRE: supports only DIAB
  142. #
  143. ifeq ($(VX_CPU_FAMILY),cf)
  144.     VENDOR_DEFAULT = diab
  145.     DUAL_BUILD = false
  146. endif
  147. #
  148. # MC68K: supports only GNU
  149. #
  150. ifeq ($(VX_CPU_FAMILY),68k)
  151.     VENDOR_DEFAULT = gnu
  152.     DUAL_BUILD = false
  153. endif
  154. #
  155. # MIPS: DIAB & GNU (DIAB as default)
  156. #
  157. ifeq ($(VX_CPU_FAMILY),mips)
  158.     VENDOR_DEFAULT = diab
  159.     DUAL_BUILD = true
  160. endif
  161. #
  162. # PENTIUM: supports only GNU
  163. #
  164. ifeq ($(VX_CPU_FAMILY),pentium)
  165.     VENDOR_DEFAULT = gnu
  166.     DUAL_BUILD = false
  167. endif
  168. #
  169. # PPC: GNU & DIAB (GNU as default)
  170. #
  171. ifeq ($(VX_CPU_FAMILY),ppc)
  172.     VENDOR_DEFAULT = gnu
  173.     DUAL_BUILD = true
  174. endif
  175. #
  176. # SH (Hitachi): GNU & DIAB (GNU as default)
  177. #
  178. ifeq ($(VX_CPU_FAMILY),sh)
  179.     VENDOR_DEFAULT = gnu
  180.     DUAL_BUILD = true
  181. endif
  182. #
  183. # SIMNT: supports only GNU
  184. #
  185. ifeq ($(VX_CPU_FAMILY),simpc)
  186.     VENDOR_DEFAULT = gnu
  187.     DUAL_BUILD = false
  188. endif
  189. #
  190. # SIMSOLARIS: supports only GNU
  191. #
  192. ifeq ($(VX_CPU_FAMILY),simso)
  193.     VENDOR_DEFAULT = gnu
  194.     DUAL_BUILD = false
  195. endif
  196. # defaults for VENDOR_DEFAULT and DUAL_BUILD
  197. ifeq ($(DUAL_BUILD),)
  198.     DUAL_BUILD = false
  199. endif
  200. ifeq ($(VENDOR_DEFAULT),)
  201.     VENDOR_DEFAULT = gnu
  202. endif
  203. # Select the toolchain specific directories
  204. ifeq ($(TOOL), $(TOOL_GNU))
  205.     TOOL_DIRS = $(GNU_SUBDIRS)
  206. endif
  207. ifeq ($(TOOL), $(TOOL_DIAB))
  208.     TOOL_DIRS = $(DIAB_SUBDIRS)
  209. endif
  210. ## CPU variants builds
  211. #
  212. # For CPU variants builds, the name of the directory(ies) where archives are 
  213. # installed is appended with a unique tag defined by LIB_DIR_TAG. The make
  214. # variable CPU_VARIANT_LIST define the whole list of these CPU variant tags
  215. # and should be updated everytime a new CPU variant build is introduced. For
  216. # instance:
  217. # CPU_VARIANT_LIST = _cpuVariant1 _cpuVariant2 _cpuVariant3
  218. CPU_VARIANT_LIST =  _au1xxx 
  219. _bcm125x 
  220. _mti4kx 
  221. _mti5kx 
  222. _mti20kx 
  223. _rc32xxx 
  224. _rc4xxx 
  225. _rc5xxx 
  226. _rm52xx 
  227. _rm57xx 
  228. _rm7xxx 
  229. _tx49xx 
  230. _vr50xx 
  231. _vr41xx 
  232. _vr54xx 
  233. _vr55xx 
  234. _rc3000 
  235. # Each CPU variant build must define the following variables:
  236. #
  237. # - VX_ARCHIVE_LIST$(LIB_DIR_TAG): this is the list of archive(s) to 
  238. #   build for this CPU variant. Note that $(LIB_DIR_TAG) must be equal
  239. #   to one of the item defined in CPU_VARIANT_LIST. For instance:
  240. #    VX_ARCHIVE_LIST_cpuVariant1 = libarch.a libdrv.a
  241. #
  242. # - CPU_VARIANT_CPU_TOOL_LIST$(LIB_DIR_TAG): this is the list of
  243. #   CPU/TOOL combination(s) for which the CPU variant build must be
  244. #   run. For instance:
  245. # CPU_VARIANT_CPU_TOOL_LIST_cpuVariant2 = MIPS32diab MIPS64diab
  246. #
  247. # NOTE: CPU variant build(s) are kicked off by the default build rule
  248. # in target/h/make/rules.library.
  249. VX_ARCHIVE_LIST_au1xxx = libarch.a
  250. VX_ARCHIVE_LIST_bcm125x = libarch.a
  251. VX_ARCHIVE_LIST_mti4kx = libarch.a
  252. VX_ARCHIVE_LIST_mti5kx = libarch.a
  253. VX_ARCHIVE_LIST_mti20kx = libarch.a
  254. VX_ARCHIVE_LIST_rc32xxx = libarch.a
  255. VX_ARCHIVE_LIST_rc4xxx = libarch.a
  256. VX_ARCHIVE_LIST_rc5xxx = libarch.a
  257. VX_ARCHIVE_LIST_rm52xx = libarch.a
  258. VX_ARCHIVE_LIST_rm57xx = libarch.a
  259. VX_ARCHIVE_LIST_rm7xxx = libarch.a
  260. VX_ARCHIVE_LIST_tx49xx = libarch.a
  261. VX_ARCHIVE_LIST_vr41xx = libarch.a
  262. VX_ARCHIVE_LIST_vr50xx = libarch.a
  263. VX_ARCHIVE_LIST_vr54xx = libarch.a
  264. VX_ARCHIVE_LIST_vr55xx = libarch.a
  265. VX_ARCHIVE_LIST_rc3000 = libarch.a
  266. CPU_VARIANT_CPU_TOOL_LIST_au1xxx = MIPS32sfdiab MIPS32sfdiable
  267. CPU_VARIANT_CPU_TOOL_LIST_bcm125x = MIPS64diab MIPS64diable
  268. CPU_VARIANT_CPU_TOOL_LIST_mti4kx = MIPS32sfdiab MIPS32sfdiable
  269. CPU_VARIANT_CPU_TOOL_LIST_mti5kx = MIPS32sfdiab MIPS32sfdiable
  270. CPU_VARIANT_CPU_TOOL_LIST_mti20kx = MIPS32sfdiab MIPS32sfdiable 
  271.   MIPS64diab MIPS64diable
  272. CPU_VARIANT_CPU_TOOL_LIST_rc32xxx = MIPS32sfdiab MIPS32sfdiable
  273. CPU_VARIANT_CPU_TOOL_LIST_rc4xxx = MIPS32sfdiab MIPS32sfdiable 
  274.   MIPS64diab MIPS64diable
  275. CPU_VARIANT_CPU_TOOL_LIST_rc5xxx = MIPS32sfdiab MIPS32sfdiable 
  276.   MIPS64diab MIPS64diable
  277. CPU_VARIANT_CPU_TOOL_LIST_rm52xx = MIPS32sfdiab MIPS32sfdiable 
  278.   MIPS64diab MIPS64diable
  279. CPU_VARIANT_CPU_TOOL_LIST_rm57xx = MIPS32sfdiab MIPS32sfdiable 
  280.   MIPS64diab MIPS64diable
  281. CPU_VARIANT_CPU_TOOL_LIST_rm7xxx = MIPS32sfdiab MIPS32sfdiable 
  282.   MIPS64diab MIPS64diable
  283. CPU_VARIANT_CPU_TOOL_LIST_tx49xx = MIPS32sfdiab MIPS32sfdiable 
  284.   MIPS64diab MIPS64diable
  285. CPU_VARIANT_CPU_TOOL_LIST_vr41xx = MIPS32sfdiab MIPS32sfdiable
  286. CPU_VARIANT_CPU_TOOL_LIST_vr50xx = MIPS32sfdiab MIPS32sfdiable 
  287.   MIPS64diab MIPS64diable
  288. CPU_VARIANT_CPU_TOOL_LIST_vr54xx = MIPS32sfdiab MIPS32sfdiable 
  289.   MIPS64diab MIPS64diable
  290. CPU_VARIANT_CPU_TOOL_LIST_vr55xx = MIPS32sfdiab MIPS32sfdiable 
  291.   MIPS64diab MIPS64diable
  292. CPU_VARIANT_CPU_TOOL_LIST_rc3000 = MIPS32sfr3kdiab
  293. ## Compute list of directories to build: 
  294. #
  295. # Set SUBDIRS according to DUAL_BUILD and VENDOR_DEFAULT
  296. ifeq ($(DUAL_BUILD),false)
  297.     SUBDIRS = $(COMMON_SUBDIRS) $(DUAL_SUBDIRS) $(TOOL_DIRS)
  298. else
  299.     ifeq ($(DUAL_BUILD),true) # just to make sure
  300.         ifeq ($(TOOL_VENDOR),$(VENDOR_DEFAULT))
  301.             SUBDIRS = $(COMMON_SUBDIRS) $(DUAL_SUBDIRS) $(TOOL_DIRS)
  302.         else
  303.             SUBDIRS = $(DUAL_SUBDIRS) $(TOOL_DIRS)
  304.         endif
  305.     endif
  306. endif
  307. include $(TGT_DIR)/h/make/rules.library
  308. # If doing a doc build, ensure arch/Makefile is built.
  309. # The rules are in $(TGT_DIR)/h/make/rules-lib.unix
  310. man: $(TGT_DIR)/src/arch/Makefile