|
1 # |
|
2 # Copyright 1995-2007 Sun Microsystems, Inc. All Rights Reserved. |
|
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 # |
|
5 # This code is free software; you can redistribute it and/or modify it |
|
6 # under the terms of the GNU General Public License version 2 only, as |
|
7 # published by the Free Software Foundation. Sun designates this |
|
8 # particular file as subject to the "Classpath" exception as provided |
|
9 # by Sun in the LICENSE file that accompanied this code. |
|
10 # |
|
11 # This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 # version 2 for more details (a copy is included in the LICENSE file that |
|
15 # accompanied this code). |
|
16 # |
|
17 # You should have received a copy of the GNU General Public License version |
|
18 # 2 along with this work; if not, write to the Free Software Foundation, |
|
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 # |
|
21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
|
22 # CA 95054 USA or visit www.sun.com if you need additional information or |
|
23 # have any questions. |
|
24 # |
|
25 |
|
26 ifndef TOPDIR |
|
27 TOPDIR:=$(shell \ |
|
28 if [ -r ./j2se/make/Makefile -o -r ./jdk/make/Makefile ]; then \ |
|
29 echo "."; \ |
|
30 else \ |
|
31 echo "../.."; \ |
|
32 fi) |
|
33 endif |
|
34 |
|
35 ifndef CONTROL_TOPDIR |
|
36 CONTROL_TOPDIR=$(TOPDIR)/control |
|
37 CONTROL_TOPDIR:=$(shell \ |
|
38 if [ -r $(TOPDIR)/control/make/Makefile ]; then \ |
|
39 echo "$(TOPDIR)/control"; \ |
|
40 else \ |
|
41 echo "$(TOPDIR)"; \ |
|
42 fi) |
|
43 endif |
|
44 |
|
45 ifndef JDK_TOPDIR |
|
46 JDK_TOPDIR=$(TOPDIR)/jdk |
|
47 endif |
|
48 ifndef JDK_MAKE_SHARED_DIR |
|
49 JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared |
|
50 endif |
|
51 |
|
52 include $(JDK_MAKE_SHARED_DIR)/Defs-control.gmk |
|
53 |
|
54 include ./make/Defs-internal.gmk |
|
55 |
|
56 all:: |
|
57 @$(ECHO) $(PLATFORM) $(ARCH) $(RELEASE) build started: `$(DATE) '+%y-%m-%d %H:%M'` |
|
58 |
|
59 # Rules for sanity checks |
|
60 include ./make/sanity-rules.gmk |
|
61 |
|
62 dev : dev-build |
|
63 |
|
64 dev-build: |
|
65 $(MAKE) DEV_ONLY=true all |
|
66 dev-sanity: |
|
67 $(MAKE) DEV_ONLY=true sanity |
|
68 dev-clobber: |
|
69 $(MAKE) DEV_ONLY=true clobber |
|
70 |
|
71 # Rules for various components |
|
72 include ./make/hotspot-rules.gmk |
|
73 include ./make/langtools-rules.gmk |
|
74 include ./make/corba-rules.gmk |
|
75 include ./make/jaxp-rules.gmk |
|
76 include ./make/jaxws-rules.gmk |
|
77 include ./make/jdk-rules.gmk |
|
78 include ./make/install-rules.gmk |
|
79 include ./make/sponsors-rules.gmk |
|
80 include ./make/deploy-rules.gmk |
|
81 |
|
82 all:: setup build |
|
83 |
|
84 setup: |
|
85 $(MKDIR) -p $(OUTPUTDIR)/j2sdk-image |
|
86 $(MKDIR) -p $(ABS_OUTPUTDIR)/j2sdk-image |
|
87 $(MKDIR) -p $(OUTPUTDIR)-fastdebug/j2sdk-image |
|
88 $(MKDIR) -p $(ABS_OUTPUTDIR)-fastdebug/j2sdk-image |
|
89 |
|
90 build:: sanity |
|
91 |
|
92 clobber:: |
|
93 |
|
94 ifeq ($(BUILD_LANGTOOLS), true) |
|
95 build:: langtools |
|
96 clobber:: langtools-clobber |
|
97 endif |
|
98 |
|
99 ifeq ($(BUILD_CORBA), true) |
|
100 build:: corba |
|
101 clobber:: corba-clobber |
|
102 endif |
|
103 |
|
104 ifeq ($(BUILD_JAXP), true) |
|
105 build:: jaxp |
|
106 clobber:: jaxp-clobber |
|
107 endif |
|
108 |
|
109 ifeq ($(BUILD_JAXWS), true) |
|
110 build:: jaxws |
|
111 clobber:: jaxws-clobber |
|
112 endif |
|
113 |
|
114 ifeq ($(BUILD_HOTSPOT), true) |
|
115 build:: $(HOTSPOT) |
|
116 clobber:: hotspot-clobber |
|
117 endif |
|
118 |
|
119 ifeq ($(BUILD_JDK), true) |
|
120 build:: $(JDK_JAVA_EXE) |
|
121 clobber:: jdk-clobber |
|
122 endif |
|
123 |
|
124 ifeq ($(BUILD_DEPLOY), true) |
|
125 build:: $(DEPLOY) |
|
126 clobber:: deploy-clobber |
|
127 endif |
|
128 |
|
129 # |
|
130 # Generic debug build, fastdebug or debug. Needs special handling. |
|
131 # Note that debug builds do NOT do INSTALL steps, but must be done |
|
132 # after the product build and before the INSTALL step of the product build. |
|
133 # |
|
134 # DEBUG_NAME is fastdebug or debug |
|
135 # ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix |
|
136 # The resulting j2sdk-image is used by the install makefiles to create a |
|
137 # debug install bundle jdk-*-debug-** bundle (tar or zip) |
|
138 # which will install in the debug or fastdebug subdirectory of the |
|
139 # normal product install area. |
|
140 # The install process needs to know what the DEBUG_NAME is, so |
|
141 # look for INSTALL_DEBUG_NAME in the install rules. |
|
142 # |
|
143 |
|
144 COMMON_DEBUG_FLAGS= \ |
|
145 DEBUG_NAME=$(DEBUG_NAME) \ |
|
146 ALT_OUTPUTDIR=$(_OUTPUTDIR)-$(DEBUG_NAME) \ |
|
147 NO_DOCS=true |
|
148 |
|
149 product_build: setup |
|
150 @$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'` |
|
151 $(MAKE) SKIP_FASTDEBUG_BUILD=true SKIP_DEBUG_BUILD=true all |
|
152 @$(ECHO) $@ build finished: `$(DATE) '+%y-%m-%d %H:%M'` |
|
153 |
|
154 generic_debug_build: |
|
155 @$(ECHO) $@ build started: `$(DATE) '+%y-%m-%d %H:%M'` |
|
156 $(MAKE) $(COMMON_DEBUG_FLAGS) setup build |
|
157 @$(ECHO) $@ build finished: `$(DATE) '+%y-%m-%d %H:%M'` |
|
158 |
|
159 debug_build: setup |
|
160 $(MAKE) DEBUG_NAME=debug generic_debug_build |
|
161 |
|
162 fastdebug_build: setup |
|
163 $(MAKE) DEBUG_NAME=fastdebug generic_debug_build |
|
164 |
|
165 ifeq ($(SKIP_FASTDEBUG_BUILD), false) |
|
166 all:: fastdebug_build |
|
167 endif |
|
168 |
|
169 ifeq ($(SKIP_DEBUG_BUILD), false) |
|
170 all:: debug_build |
|
171 endif |
|
172 |
|
173 ifeq ($(BUILD_JDK), true) |
|
174 ifeq ($(BUNDLE_RULES_AVAILABLE), true) |
|
175 all:: openjdk-binary-plugs-bundles |
|
176 endif |
|
177 endif |
|
178 |
|
179 ifeq ($(BUILD_INSTALL), true) |
|
180 all :: $(INSTALL) |
|
181 clobber:: install-clobber |
|
182 endif |
|
183 |
|
184 ifeq ($(BUILD_SPONSORS), true) |
|
185 all :: $(SPONSORS) |
|
186 clobber:: sponsors-clobber |
|
187 endif |
|
188 |
|
189 ifneq ($(SKIP_COMPARE_IMAGES), true) |
|
190 all :: compare-image |
|
191 endif |
|
192 |
|
193 ifeq ($(SKIP_OPENJDK_BUILD), false) |
|
194 ifeq ($(BUILD_JDK), true) |
|
195 ifeq ($(BUNDLE_RULES_AVAILABLE), true) |
|
196 # If we have bundle rules, we have a chance here to do a complete cycle |
|
197 # build, of closed and open build. |
|
198 # FIXUP: We should create the openjdk source bundle and build that? |
|
199 ABS_OPENJDK_PLUGS=$(ABS_OUTPUTDIR)/$(OPENJDK_BINARY_PLUGS_INAME) |
|
200 ABS_OPENJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/openjdk |
|
201 OPENJDK_BUILD_NAME_PREFIX \ |
|
202 = $(J2SDK_NAME)-$(JDK_MKTG_UNDERSCORE_VERSION)-$(MILESTONE) |
|
203 OPENJDK_BUILD_NAME_SUFFIX \ |
|
204 = $(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE) |
|
205 OPENJDK_BUILD_NAME \ |
|
206 = $(OPENJDK_BUILD_NAME_PREFIX)-openjdk-$(OPENJDK_BUILD_NAME_SUFFIX) |
|
207 OPENJDK_BUILD_BINARY_ZIP \ |
|
208 = $(ABS_BIN_BUNDLEDIR)/$(OPENJDK_BUILD_NAME).zip |
|
209 all :: openjdk-build |
|
210 openjdk-build: |
|
211 @$(ECHO) " " |
|
212 @$(ECHO) "=================================================" |
|
213 @$(ECHO) "Starting openjdk build" |
|
214 @$(ECHO) "=================================================" |
|
215 @$(ECHO) " " |
|
216 $(RM) -r $(ABS_OPENJDK_OUTPUTDIR) |
|
217 $(MKDIR) -p $(ABS_OPENJDK_OUTPUTDIR) |
|
218 $(MAKE) OPENJDK=true \ |
|
219 BUILD_LANGTOOLS=$(BUILD_LANGTOOLS) \ |
|
220 BUILD_CORBA=$(BUILD_CORBA) \ |
|
221 BUILD_JAXP=$(BUILD_JAXP) \ |
|
222 BUILD_JAXWS=$(BUILD_JAXWS) \ |
|
223 BUILD_HOTSPOT=$(BUILD_HOTSPOT) \ |
|
224 ALT_OUTPUTDIR=$(ABS_OPENJDK_OUTPUTDIR) \ |
|
225 ALT_BINARY_PLUGS_PATH=$(ABS_OUTPUTDIR)/$(OPENJDK_BINARY_PLUGS_INAME) \ |
|
226 ALT_BOOTDIR=$(ABS_OUTPUTDIR)/j2sdk-image \ |
|
227 ALT_JDK_IMPORT_PATH=$(ABS_OUTPUTDIR)/j2sdk-image \ |
|
228 product_build |
|
229 $(RM) $(OPENJDK_BUILD_BINARY_ZIP) |
|
230 ( $(CD) $(ABS_OPENJDK_OUTPUTDIR)/j2sdk-image && \ |
|
231 $(ZIPEXE) -q -r $(OPENJDK_BUILD_BINARY_ZIP) .) |
|
232 $(RM) -r $(ABS_OPENJDK_OUTPUTDIR) |
|
233 endif |
|
234 endif |
|
235 endif |
|
236 |
|
237 clobber:: |
|
238 $(RM) -r $(OUTPUTDIR)/* |
|
239 $(RM) -r $(OUTPUTDIR)-debug/* |
|
240 $(RM) -r $(OUTPUTDIR)-fastdebug/* |
|
241 -($(RMDIR) -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1; $(TRUE)) |
|
242 |
|
243 clean: clobber |
|
244 |
|
245 all:: |
|
246 @$(ECHO) Control build finished: `$(DATE) '+%y-%m-%d %H:%M'` |
|
247 |
|
248 # |
|
249 # Quick jdk verification build |
|
250 # |
|
251 jdk_only: |
|
252 $(MAKE) SKIP_FASTDEBUG_BUILD=true BUILD_HOTSPOT=false all |
|
253 |
|
254 |
|
255 # |
|
256 # Quick jdk verification fastdebug build |
|
257 # |
|
258 jdk_fastdebug_only: |
|
259 $(MAKE) DEBUG_NAME=fastdebug BUILD_HOTSPOT=false BUILD_DEPLOY=false \ |
|
260 BUILD_INSTALL=false BUILD_SPONSORS=false generic_debug_build |
|
261 |
|
262 # |
|
263 # Quick deploy verification fastdebug build |
|
264 # |
|
265 deploy_fastdebug_only: |
|
266 $(MAKE) \ |
|
267 DEBUG_NAME=fastdebug \ |
|
268 BUILD_HOTSPOT=false \ |
|
269 BUILD_JDK=false \ |
|
270 BUILD_LANGTOOLS=false \ |
|
271 BUILD_CORBA=false \ |
|
272 BUILD_JAXP=false \ |
|
273 BUILD_JAXWS=false \ |
|
274 BUILD_INSTALL=false \ |
|
275 BUILD_SPONSORS=false \ |
|
276 generic_debug_build |
|
277 |
|
278 # |
|
279 # Product build (skip debug builds) |
|
280 # |
|
281 product_only: |
|
282 $(MAKE) SKIP_FASTDEBUG_BUILD=true all |
|
283 |
|
284 # |
|
285 # Check target |
|
286 # |
|
287 |
|
288 check: variable_check |
|
289 |
|
290 # |
|
291 # Help target |
|
292 # |
|
293 help: intro_help target_help variable_help notes_help examples_help |
|
294 |
|
295 # Intro help message |
|
296 intro_help: |
|
297 @$(ECHO) "\ |
|
298 Makefile for the JDK builds (all the JDK). \n\ |
|
299 " |
|
300 |
|
301 # Target help |
|
302 target_help: |
|
303 @$(ECHO) "\ |
|
304 --- Common Targets --- \n\ |
|
305 all -- build the core JDK (default target) \n\ |
|
306 help -- Print out help information \n\ |
|
307 check -- Check make variable values for correctness \n\ |
|
308 sanity -- Perform detailed sanity checks on system and settings \n\ |
|
309 fastdebug_build -- build the core JDK in 'fastdebug' mode (-g -O) \n\ |
|
310 debug_build -- build the core JDK in 'debug' mode (-g) \n\ |
|
311 clean -- remove all built and imported files \n\ |
|
312 clobber -- same as clean \n\ |
|
313 " |
|
314 |
|
315 # Variable help (only common ones used by this Makefile) |
|
316 variable_help: variable_help_intro variable_list variable_help_end |
|
317 variable_help_intro: |
|
318 @$(ECHO) "--- Common Variables ---" |
|
319 variable_help_end: |
|
320 @$(ECHO) " " |
|
321 |
|
322 # One line descriptions for the variables |
|
323 OUTPUTDIR.desc = Output directory |
|
324 PARALLEL_COMPILE_JOBS.desc = Solaris/Linux parallel compile run count |
|
325 SLASH_JAVA.desc = Root of all build tools, e.g. /java or J: |
|
326 BOOTDIR.desc = JDK used to boot the build |
|
327 JDK_IMPORT_PATH.desc = JDK used to import components of the build |
|
328 COMPILER_PATH.desc = Compiler install directory |
|
329 CACERTS_FILE.desc = Location of certificates file |
|
330 DEVTOOLS_PATH.desc = Directory containing zip and gnumake |
|
331 CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files |
|
332 DXSDK_PATH.desc = Root directory of DirectX SDK |
|
333 MSDEVTOOLS_PATH.desc = Root directory of VC++ tools (e.g. rc.exe) |
|
334 MSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll |
|
335 |
|
336 # Make variables to print out (description and value) |
|
337 VARIABLE_PRINTVAL_LIST += \ |
|
338 OUTPUTDIR \ |
|
339 PARALLEL_COMPILE_JOBS \ |
|
340 SLASH_JAVA \ |
|
341 BOOTDIR \ |
|
342 JDK_IMPORT_PATH \ |
|
343 COMPILER_PATH \ |
|
344 CACERTS_FILE \ |
|
345 DEVTOOLS_PATH |
|
346 |
|
347 # Make variables that should refer to directories that exist |
|
348 VARIABLE_CHECKDIR_LIST += \ |
|
349 SLASH_JAVA \ |
|
350 BOOTDIR \ |
|
351 JDK_IMPORT_PATH \ |
|
352 COMPILER_PATH \ |
|
353 DEVTOOLS_PATH |
|
354 |
|
355 # Make variables that should refer to files that exist |
|
356 VARIABLE_CHECKFIL_LIST += \ |
|
357 CACERTS_FILE |
|
358 |
|
359 # Some are windows specific |
|
360 ifeq ($(PLATFORM), windows) |
|
361 |
|
362 VARIABLE_PRINTVAL_LIST += \ |
|
363 DXSDK_PATH \ |
|
364 MSDEVTOOLS_PATH \ |
|
365 MSVCRT_DLL_PATH |
|
366 |
|
367 VARIABLE_CHECKDIR_LIST += \ |
|
368 DXSDK_PATH \ |
|
369 MSDEVTOOLS_PATH \ |
|
370 MSVCRT_DLL_PATH |
|
371 |
|
372 endif |
|
373 |
|
374 # For pattern rules below, so all are treated the same |
|
375 DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval) |
|
376 DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir) |
|
377 DO_CHECKFIL_LIST=$(VARIABLE_CHECKFIL_LIST:%=%.checkfil) |
|
378 |
|
379 # Complete variable check |
|
380 variable_check: $(DO_CHECKDIR_LIST) $(DO_CHECKFIL_LIST) |
|
381 variable_list: $(DO_PRINTVAL_LIST) variable_check |
|
382 |
|
383 # Pattern rule for printing out a variable |
|
384 %.printval: |
|
385 @$(ECHO) " ALT_$* - $($*.desc)" |
|
386 @$(ECHO) " \t $*=$($*)" |
|
387 |
|
388 # Pattern rule for checking to see if a variable with a directory exists |
|
389 %.checkdir: |
|
390 @if [ ! -d $($*) ] ; then \ |
|
391 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \ |
|
392 fi |
|
393 |
|
394 # Pattern rule for checking to see if a variable with a file exists |
|
395 %.checkfil: |
|
396 @if [ ! -f $($*) ] ; then \ |
|
397 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \ |
|
398 fi |
|
399 |
|
400 # Misc notes on help |
|
401 notes_help: |
|
402 @$(ECHO) "\ |
|
403 --- Notes --- \n\ |
|
404 - All builds use same output directory unless overridden with \n\ |
|
405 \t ALT_OUTPUTDIR=<dir>, changing from product to fastdebug you may want \n\ |
|
406 \t to use the clean target first. \n\ |
|
407 - JDK_IMPORT_PATH must refer to a compatible build, not all past promoted \n\ |
|
408 \t builds or previous release JDK builds will work. \n\ |
|
409 - The fastest builds have been when the sources and the BOOTDIR are on \n\ |
|
410 \t local disk. \n\ |
|
411 " |
|
412 |
|
413 examples_help: |
|
414 @$(ECHO) "\ |
|
415 --- Examples --- \n\ |
|
416 $(MAKE) fastdebug_build \n\ |
|
417 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all \n\ |
|
418 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar fastdebug_build \n\ |
|
419 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all \n\ |
|
420 $(MAKE) ALT_BOOTDIR=/opt/java/jdk1.5.0 \n\ |
|
421 $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk1.6.0 \n\ |
|
422 " |
|
423 |
|
424 ################################################################ |
|
425 # Source and binary plug bundling |
|
426 ################################################################ |
|
427 ifeq ($(BUNDLE_RULES_AVAILABLE), true) |
|
428 include $(BUNDLE_RULES) |
|
429 endif |
|
430 |
|
431 ################################################################ |
|
432 # Cycle build. Build the jdk, use it to build the jdk again. |
|
433 ################################################################ |
|
434 |
|
435 ABS_BOOTJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/bootjdk |
|
436 |
|
437 boot_cycle: |
|
438 $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTJDK_OUTPUTDIR) product_build |
|
439 $(MAKE) ALT_BOOTDIR=$(ABS_BOOTJDK_OUTPUTDIR)/j2sdk-image product_build |
|
440 |
|
441 ################################################################ |
|
442 # JPRT rule to build |
|
443 ################################################################ |
|
444 |
|
445 include ./make/jprt.gmk |
|
446 |
|
447 ################################################################ |
|
448 # PHONY |
|
449 ################################################################ |
|
450 |
|
451 .PHONY: all build what clobber insane \ |
|
452 fastdebug_build debug_build product_build setup \ |
|
453 dev dev-build dev-sanity dev-clobber |
|
454 |
|
455 # FIXUP: Old j2se targets |
|
456 j2se_fastdebug_only: jdk_fastdebug_only |
|
457 j2se_only: jdk_only |
|
458 |