ruleset.mk
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:10k
源码类别:

CA认证

开发平台:

WINDOWS

  1. #
  2. # The contents of this file are subject to the Mozilla Public
  3. # License Version 1.1 (the "License"); you may not use this file
  4. # except in compliance with the License. You may obtain a copy of
  5. # the License at http://www.mozilla.org/MPL/
  6. # Software distributed under the License is distributed on an "AS
  7. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  8. # implied. See the License for the specific language governing
  9. # rights and limitations under the License.
  10. # The Original Code is the Netscape security libraries.
  11. # The Initial Developer of the Original Code is Netscape
  12. # Communications Corporation.  Portions created by Netscape are 
  13. # Copyright (C) 1994-2000 Netscape Communications Corporation.  All
  14. # Rights Reserved.
  15. # Contributor(s):
  16. # Alternatively, the contents of this file may be used under the
  17. # terms of the GNU General Public License Version 2 or later (the
  18. # "GPL"), in which case the provisions of the GPL are applicable 
  19. # instead of those above.  If you wish to allow use of your 
  20. # version of this file only under the terms of the GPL and not to
  21. # allow others to use your version of this file under the MPL,
  22. # indicate your decision by deleting the provisions above and
  23. # replace them with the notice and other provisions required by
  24. # the GPL.  If you do not delete the provisions above, a recipient
  25. # may use your version of this file under either the MPL or the
  26. # GPL.
  27. #
  28. #######################################################################
  29. #                                                                     #
  30. # Parameters to this makefile (set these in this file):               #
  31. #                                                                     #
  32. # a)                                                                  #
  33. # TARGETS -- the target to create                               #
  34. # (defaults to $LIBRARY $PROGRAM)               #
  35. # b)                                                                  #
  36. # DIRS -- subdirectories for make to recurse on              #
  37. # (the 'all' rule builds $TARGETS $DIRS)        #
  38. # c)                                                                  #
  39. # CSRCS, CPPSRCS -- .c and .cpp files to compile                #
  40. # (used to define $OBJS)                        #
  41. # d)                                                                  #
  42. # PROGRAM -- the target program name to create from $OBJS       #
  43. # ($OBJDIR automatically prepended to it)       #
  44. # e)                                                                  #
  45. # LIBRARY -- the target library name to create from $OBJS       #
  46. # ($OBJDIR automatically prepended to it)       #
  47. # f)                                                                  #
  48. # JSRCS -- java source files to compile into class files      #
  49. # (if you don't specify this it will default    #
  50. #  to *.java)                                   #
  51. # g)                                                                  #
  52. # PACKAGE -- the package to put the .class files into           #
  53. # (e.g. netscape/applet)                        #
  54. # (NOTE: the default definition for this may be #
  55. #                              overridden if "jdk.mk" is included)    #
  56. # h)                                                                  #
  57. # JMC_EXPORT -- java files to be exported for use by JMC_GEN    #
  58. # (this is a list of Class names)               #
  59. # i)                                                                  #
  60. # JRI_GEN -- files to run through javah to generate headers     #
  61. #                  and stubs                                          #
  62. # (output goes into the _jri sub-dir)           #
  63. # j)                                                                  #
  64. # JMC_GEN -- files to run through jmc to generate headers       #
  65. #                  and stubs                                          #
  66. # (output goes into the _jmc sub-dir)           #
  67. # k)                                                                  #
  68. # JNI_GEN -- files to run through javah to generate headers     #
  69. # (output goes into the _jni sub-dir)           #
  70. #                                                                     #
  71. #######################################################################
  72. #
  73. #  At this time, the CPU_TAG value is actually assigned.
  74. #
  75. CPU_TAG =
  76. #
  77. # When the processor is NOT 386-based on Windows NT, override the
  78. # value of $(CPU_TAG).
  79. #
  80. ifeq ($(OS_ARCH), WINNT)
  81. ifneq ($(CPU_ARCH),x386)
  82. CPU_TAG = _$(CPU_ARCH)
  83. endif
  84. endif
  85. #
  86. # Always set CPU_TAG on Linux.
  87. #
  88. ifeq ($(OS_ARCH), Linux)
  89. CPU_TAG = _$(CPU_ARCH)
  90. endif
  91. #
  92. #  At this time, the COMPILER_TAG value is actually assigned.
  93. #
  94. ifndef COMPILER_TAG
  95. ifneq ($(DEFAULT_COMPILER), $(CC))
  96. #
  97. # Temporary define for the Client; to be removed when binary release is used
  98. #
  99. ifdef MOZILLA_CLIENT
  100. COMPILER_TAG =
  101. else
  102. COMPILER_TAG = _$(CC)
  103. endif
  104. else
  105. COMPILER_TAG =
  106. endif
  107. endif
  108. #
  109. #  At this time, a default value of $(CC) is assigned to MKPROG.
  110. #
  111. ifeq ($(MKPROG),)
  112. MKPROG = $(CC)
  113. endif
  114. #
  115. # This makefile contains rules for building the following kinds of
  116. # objects:
  117. # - (1) LIBRARY: a static (archival) library
  118. # - (2) SHARED_LIBRARY: a shared (dynamic link) library
  119. # - (3) IMPORT_LIBRARY: an import library, used only on Windows
  120. # - (4) PURE_LIBRARY: a library for Purify
  121. # - (5) PROGRAM: an executable binary
  122. #
  123. # NOTE:  The names of libraries can be generated by simply specifying
  124. # LIBRARY_NAME (and LIBRARY_VERSION in the case of non-static libraries).
  125. #
  126. ifdef LIBRARY_NAME
  127. ifeq ($(OS_ARCH), WINNT)
  128. #
  129. # Win16 requires library names conforming to the 8.3 rule.
  130. # other platforms do not.
  131. #
  132. LIBRARY        = $(OBJDIR)/$(LIBRARY_NAME).lib
  133. ifeq ($(OS_TARGET), WIN16)
  134. SHARED_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)16$(JDK_DEBUG_SUFFIX).dll
  135. IMPORT_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)16$(JDK_DEBUG_SUFFIX).lib
  136. else
  137. SHARED_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)32$(JDK_DEBUG_SUFFIX).dll
  138. IMPORT_LIBRARY = $(OBJDIR)/$(LIBRARY_NAME)$(LIBRARY_VERSION)32$(JDK_DEBUG_SUFFIX).lib
  139. endif
  140. else
  141. LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME).$(LIB_SUFFIX)
  142. ifeq ($(OS_ARCH)$(OS_RELEASE), AIX4.1)
  143. SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)_shr$(JDK_DEBUG_SUFFIX).a
  144. else
  145. SHARED_LIBRARY = $(OBJDIR)/lib$(LIBRARY_NAME)$(LIBRARY_VERSION)$(JDK_DEBUG_SUFFIX).$(DLL_SUFFIX)
  146. endif
  147. ifdef HAVE_PURIFY
  148. ifdef DSO_BACKEND
  149. PURE_LIBRARY = $(OBJDIR)/purelib$(LIBRARY_NAME)$(LIBRARY_VERSION)$(JDK_DEBUG_SUFFIX).$(DLL_SUFFIX)
  150. else
  151. PURE_LIBRARY = $(OBJDIR)/purelib$(LIBRARY_NAME).$(LIB_SUFFIX)
  152. endif
  153. endif
  154. endif
  155. endif
  156. #
  157. # Common rules used by lots of makefiles...
  158. #
  159. ifdef PROGRAM
  160. PROGRAM := $(addprefix $(OBJDIR)/, $(PROGRAM)$(JDK_DEBUG_SUFFIX)$(PROG_SUFFIX))
  161. endif
  162. ifdef PROGRAMS
  163. PROGRAMS := $(addprefix $(OBJDIR)/, $(PROGRAMS:%=%$(JDK_DEBUG_SUFFIX)$(PROG_SUFFIX)))
  164. endif
  165. ifndef TARGETS
  166. ifeq ($(OS_ARCH), WINNT)
  167. TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(PROGRAM)
  168. else
  169. TARGETS = $(LIBRARY) $(SHARED_LIBRARY)
  170. ifdef HAVE_PURIFY
  171. TARGETS += $(PURE_LIBRARY)
  172. endif
  173. TARGETS += $(PROGRAM)
  174. endif
  175. endif
  176. ifndef OBJS
  177. SIMPLE_OBJS = $(JRI_STUB_CFILES) 
  178. $(addsuffix $(OBJ_SUFFIX), $(JMC_GEN)) 
  179. $(CSRCS:.c=$(OBJ_SUFFIX)) 
  180. $(CPPSRCS:.cpp=$(OBJ_SUFFIX)) 
  181. $(ASFILES:$(ASM_SUFFIX)=$(OBJ_SUFFIX))
  182. OBJS = $(addprefix $(OBJDIR)/$(PROG_PREFIX), $(SIMPLE_OBJS))
  183. endif
  184. ifeq ($(OS_TARGET), WIN16)
  185. comma   := ,
  186. empty   :=
  187. space   := $(empty) $(empty)
  188. W16OBJS := $(subst $(space),$(comma)$(space),$(strip $(OBJS)))
  189. W16TEMP  = $(OS_LIBS) $(EXTRA_LIBS)
  190. ifeq ($(strip $(W16TEMP)),)
  191. W16LIBS =
  192. else
  193. W16LIBS := library $(subst $(space),$(comma)$(space),$(strip $(W16TEMP)))
  194. endif
  195. endif
  196. ifeq ($(OS_ARCH),WINNT)
  197. ifneq ($(OS_TARGET), WIN16)
  198. OBJS += $(RES)
  199. endif
  200. MAKE_OBJDIR = $(INSTALL) -D $(OBJDIR)
  201. else
  202. define MAKE_OBJDIR
  203. if test ! -d $(@D); then rm -rf $(@D); $(NSINSTALL) -D $(@D); fi
  204. endef
  205. endif
  206. ifndef PACKAGE
  207. PACKAGE = .
  208. endif
  209. ALL_TRASH := $(TARGETS) $(OBJS) $(OBJDIR) LOGS TAGS $(GARBAGE) 
  210. $(NOSUCHFILE) $(JDK_HEADER_CFILES) $(JDK_STUB_CFILES) 
  211. $(JRI_HEADER_CFILES) $(JRI_STUB_CFILES) $(JNI_HEADERS) $(JMC_STUBS) 
  212. $(JMC_HEADERS) $(JMC_EXPORT_FILES) so_locations 
  213. _gen _jmc _jri _jni _stubs 
  214. $(wildcard $(JAVA_DESTPATH)/$(PACKAGE)/*.class)
  215. ifdef JDIRS
  216. ALL_TRASH += $(addprefix $(JAVA_DESTPATH)/,$(JDIRS))
  217. endif
  218. ifdef NSBUILDROOT
  219. JDK_GEN_DIR  = $(SOURCE_XP_DIR)/_gen
  220. JMC_GEN_DIR  = $(SOURCE_XP_DIR)/_jmc
  221. JNI_GEN_DIR  = $(SOURCE_XP_DIR)/_jni
  222. JRI_GEN_DIR  = $(SOURCE_XP_DIR)/_jri
  223. JDK_STUB_DIR = $(SOURCE_XP_DIR)/_stubs
  224. else
  225. JDK_GEN_DIR  = _gen
  226. JMC_GEN_DIR  = _jmc
  227. JNI_GEN_DIR  = _jni
  228. JRI_GEN_DIR  = _jri
  229. JDK_STUB_DIR = _stubs
  230. endif
  231. #
  232. # If this is an "official" build, try to build everything.
  233. # I.e., don't exit on errors.
  234. #
  235. ifdef BUILD_OFFICIAL
  236. EXIT_ON_ERROR = +e
  237. CLICK_STOPWATCH = date
  238. else
  239. EXIT_ON_ERROR = -e
  240. CLICK_STOPWATCH = true
  241. endif
  242. ifdef REQUIRES
  243. ifeq ($(OS_TARGET),WIN16)
  244. INCLUDES        += -I$(SOURCE_XP_DIR)/public/win16
  245. else
  246. MODULE_INCLUDES := $(addprefix -I$(SOURCE_XP_DIR)/public/, $(REQUIRES))
  247. INCLUDES        += $(MODULE_INCLUDES)
  248. ifeq ($(MODULE), sectools)
  249. PRIVATE_INCLUDES := $(addprefix -I$(SOURCE_XP_DIR)/private/, $(REQUIRES))
  250. INCLUDES         += $(PRIVATE_INCLUDES)
  251. endif
  252. endif
  253. endif
  254. ifdef SYSTEM_INCL_DIR
  255. YOPT = -Y$(SYSTEM_INCL_DIR)
  256. endif
  257. ifdef DIRS
  258. LOOP_OVER_DIRS =
  259. @for directory in $(DIRS); do
  260. if test -d $$directory; then
  261. set $(EXIT_ON_ERROR);
  262. echo "cd $$directory; $(MAKE) $@";
  263. $(MAKE) -C $$directory $@;
  264. set +e;
  265. else
  266. echo "Skipping non-directory $$directory...";
  267. fi;
  268. $(CLICK_STOPWATCH);
  269. done
  270. endif
  271. # special stuff for tests rule in rules.mk
  272. ifneq ($(OS_ARCH),WINNT)
  273. REGDATE = $(subst  ,, $(shell perl  $(CORE_DEPTH)/$(MODULE)/scripts/now))
  274. else
  275. REGCOREDEPTH = $(subst \,/,$(CORE_DEPTH))
  276. REGDATE = $(subst  ,, $(shell perl  $(CORE_DEPTH)/$(MODULE)/scripts/now))
  277. endif
  278. #
  279. # export control policy patcher program and arguments
  280. #
  281. PLCYPATCH     = $(SOURCE_BIN_DIR)/plcypatch$(PROG_SUFFIX)
  282. DOMESTIC_POLICY = -us
  283. EXPORT_POLICY   = -ex
  284. FRANCE_POLICY   = -fr
  285. ifeq ($(POLICY), domestic)
  286. PLCYPATCH_ARGS = $(DOMESTIC_POLICY)
  287. else
  288. ifeq ($(POLICY), export)
  289. PLCYPATCH_ARGS = $(EXPORT_POLICY)
  290. else
  291. ifeq ($(POLICY), france)
  292. PLCYPATCH_ARGS = $(FRANCE_POLICY)
  293. else
  294. PLCYPATCH_ARGS =
  295. endif
  296. endif
  297. endif