source: trunk/openjdk/jdk/make/common/shared/Defs-java.gmk

Last change on this file was 278, checked in by dmik, 14 years ago

trunk: Merged in openjdk6 b22 from branches/vendor/oracle.

File size: 7.5 KB
Line 
1#
2# Copyright (c) 2007, 2010, Oracle and/or its affiliates. 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. Oracle designates this
8# particular file as subject to the "Classpath" exception as provided
9# by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22# or visit www.oracle.com if you need additional information or have any
23# questions.
24#
25
26#
27# Common java/javac/jdk variables used by all the Java makefiles.
28# This file should not contain rules.
29#
30
31# WARNING: This file is shared with other workspaces.
32# So when it includes other files, it must use JDK_TOPDIR.
33#
34
35#
36# Memory related -J flags that all uses of java tools should use.
37#
38JAVA_MEM_FLAGS = -Xmx$(MAX_VM_MEMORY)m
39ifeq ($(ARCH), ia64)
40 # Special flags for javac on ia64 to work around a VM problem with
41 # bad code generation during inlining (what version had this problem?):
42 # Suspect this may not be needed anymore.
43 JAVA_MEM_FLAGS += -Xms$(MAX_VM_MEMORY)m -XX:-Inline
44else
45 JAVA_MEM_FLAGS += -Xms$(MIN_VM_MEMORY)m -XX:PermSize=32m -XX:MaxPermSize=160m
46endif
47
48#
49# All java tools (javac, javah, and javadoc) run faster with certain java
50# options, this macro should be used with all these tools.
51# In particular, the client VM makes these tools run faster when
52# it's available.
53#
54ADD_CLIENT_VM_OPTION = false
55ifeq ($(PLATFORM), solaris)
56 ADD_CLIENT_VM_OPTION = true
57else
58 ifeq ($(ARCH_DATA_MODEL), 32)
59 ADD_CLIENT_VM_OPTION = true
60 endif
61endif
62JAVA_JVM_FLAGS =
63ifeq ($(ADD_CLIENT_VM_OPTION), true)
64 JAVA_JVM_FLAGS += -client
65endif
66ifdef USE_HOTSPOT_INTERPRETER_MODE
67 JAVA_JVM_FLAGS += -Xint
68endif
69
70# Various VM flags
71JAVA_TOOLS_FLAGS = $(JAVA_JVM_FLAGS) $(JAVA_MEM_FLAGS)
72
73# The VM flags for javac
74JAVAC_JVM_FLAGS =
75
76# 64-bit builds require a larger thread stack size.
77ifeq ($(ARCH_DATA_MODEL), 32)
78 JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=768
79else
80 JAVAC_JVM_FLAGS += -J-XX:ThreadStackSize=1536
81endif
82JAVAC_JVM_FLAGS += $(JAVA_TOOLS_FLAGS:%=-J%)
83
84# The jar -J options are special, must be added at the end of the command line
85JAR_JFLAGS = $(JAVA_TOOLS_FLAGS:%=-J%)
86
87# JAVA_TOOLS_DIR is the default location to find Java tools to run, if
88# langtools is not available.
89# This should be the latest promoted JDK javac.
90ifndef JAVA_TOOLS_DIR
91 JAVA_TOOLS_DIR = $(JDK_IMPORT_PATH)/bin
92endif
93
94#
95# Invoking the Java compiler. In leaf makefiles, choose as follows:
96# -- Use JAVAC if you want to take full control of what options get
97# passed to javac.
98# -- Use JAVAC_CMD if you want to take the defaults given to you.
99#
100
101ifndef DEBUG_CLASSFILES
102 ifeq ($(VARIANT), DBG)
103 DEBUG_CLASSFILES = true
104 endif
105endif
106JAVACFLAGS =
107ifeq ($(DEBUG_CLASSFILES),true)
108 JAVACFLAGS += -g
109endif
110ifeq ($(COMPILER_WARNINGS_FATAL), true)
111 JAVACFLAGS += -Werror
112endif
113
114# Add the source level (currently all source is 1.5, should this be 1.6?)
115LANGUAGE_VERSION = -source 1.5
116JAVACFLAGS += $(LANGUAGE_VERSION)
117
118# Add the class version we want (currently this is 5, should it be 6 or even 7?)
119TARGET_CLASS_VERSION = 5
120CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
121JAVACFLAGS += $(CLASS_VERSION)
122JAVACFLAGS += -encoding ascii
123JAVACFLAGS += "-Xbootclasspath:$(CLASSBINDIR)"
124JAVACFLAGS += $(OTHER_JAVACFLAGS)
125
126# Needed for javah
127JAVAHFLAGS += -bootclasspath $(if $(filter $(CLASSBINDIR),$(CLASSDESTDIR)),\
128 $(CLASSBINDIR),$(CLASSDESTDIR)$(CLASSPATH_SEPARATOR)$(CLASSBINDIR))
129
130# Needed for JAVADOC and BOOT_JAVACFLAGS
131NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true
132
133# Langtools
134ifdef LANGTOOLS_DIST
135 JAVAC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
136 JAVAH_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
137 JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
138 DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
139 JAVAC_CMD = $(BOOT_JAVA_CMD) \
140 "-Xbootclasspath/p:$(JAVAC_JAR)" \
141 -jar $(JAVAC_JAR) $(JAVACFLAGS)
142 JAVAH_CMD = $(BOOT_JAVA_CMD) \
143 "-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)" \
144 -jar $(JAVAH_JAR) $(JAVAHFLAGS)
145 JAVADOC_CMD = $(BOOT_JAVA_CMD) \
146 "-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
147 -jar $(JAVADOC_JAR)
148else
149 # If no explicit tools, use boot tools (add VM flags in this case)
150 JAVAC_CMD = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
151 $(JAVACFLAGS)
152 JAVAH_CMD = $(JAVA_TOOLS_DIR)/javah \
153 $(JAVAHFLAGS)
154 JAVADOC_CMD = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%)
155endif
156
157# Override of what javac to use (see deploy workspace)
158ifdef JAVAC
159 JAVAC_CMD = $(JAVAC)
160endif
161
162#
163# The bootstrap java compiler (defined as the javac in the ALT_BOOTDIR jdk).
164# Will be used to compile java code used to build the jdk, e.g. class files
165# created by this compiler will NOT become part of this built jdk, but just
166# used to build this jdk, e.g. run with the java in the ALT_BOOTDIR jdk.
167#
168# The javac supplied with the LANGTOOLS_DIST should be used to build the
169# classes that will be put into the built jdk. But note that this javac
170# will use the ALT_BOOTDIR java runtime. Any classes created by the
171# LANGTOOLS_DIST javac should not be run during this jdk build and indeed
172# may not even run with the ALT_BOOTDIR jdk because they may be a newer
173# class file version that the ALT_BOOTDIR jdk doesn't understand.
174#
175# The important observation here is that the built jdk is NOT run during
176# the build. If the built jdk needs to be verified that it can build this
177# same jdk, then it should be supplied to the build process as the ALT_BOOTDIR
178# jdk, and this resulting built jdk should be compared to the first one.
179# (They should be the same). Re-using this built jdk as the ALT_BOOTDIR
180# jdk will be the only way and the recommeneded way to verify the built jdk
181# can bootstrap itself.
182#
183
184# The javac options supplied to the boot javac is limited. This compiler
185# should only be used to build the 'make/tools' sources, which are not
186# class files that end up in the classes directory.
187ifeq ($(COMPILER_WARNINGS_FATAL), true)
188 BOOT_JAVACFLAGS += -Werror
189endif
190
191BOOT_SOURCE_LANGUAGE_VERSION = 5
192BOOT_TARGET_CLASS_VERSION = 5
193BOOT_JAVACFLAGS += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
194
195BOOT_JAVACFLAGS += $(NO_PROPRIETARY_API_WARNINGS)
196
197BOOT_JAVA_CMD = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
198BOOT_JAVAC_CMD = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
199BOOT_JAR_CMD = $(BOOTDIR)/bin/jar
200BOOT_JARSIGNER_CMD = $(BOOTDIR)/bin/jarsigner
201
202# Various tools we need to run (FIXUP: Are these the right ones?)
203NATIVE2ASCII = $(BOOTDIR)/bin/native2ascii $(JAVA_TOOLS_FLAGS:%=-J%)
204RMIC = $(BOOTDIR)/bin/rmic $(JAVA_TOOLS_FLAGS:%=-J%)
205IDLJ = $(BOOTDIR)/bin/idlj $(JAVA_TOOLS_FLAGS:%=-J%)
206
207# Should not be used
208JAVA = /should/not/be/used
209
Note: See TracBrowser for help on using the repository browser.