Defs-java.gmk 8.0 KB
Newer Older
D
duke 已提交
1
#
X
xdono 已提交
2
# Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
D
duke 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

#
# Common java/javac/jdk variables used by all the Java makefiles.
# This file should not contain rules.
#

# WARNING: This file is shared with other workspaces.
#          So when it includes other files, it must use JDK_TOPDIR.
#

#
# Memory related -J flags that all uses of java tools should use.
#
JAVA_MEM_FLAGS   = -Xmx$(MAX_VM_MEMORY)m
ifeq ($(ARCH), ia64)
  # Special flags for javac on ia64 to work around a VM problem with
  #   bad code generation during inlining (what version had this problem?):
  #   Suspect this may not be needed anymore.
  JAVA_MEM_FLAGS   += -Xms$(MAX_VM_MEMORY)m -XX:-Inline
else
  JAVA_MEM_FLAGS   += -Xms$(MIN_VM_MEMORY)m -XX:PermSize=32m -XX:MaxPermSize=160m
endif

# 
# All java tools (javac, javah, and javadoc) run faster with certain java
#    options, this macro should be used with all these tools.
#    In particular, the client VM makes these tools run faster when
#    it's available.
#
ADD_CLIENT_VM_OPTION = false
ifeq ($(PLATFORM), solaris)
  ADD_CLIENT_VM_OPTION = true
else
  ifeq ($(ARCH_DATA_MODEL), 32)
    ADD_CLIENT_VM_OPTION = true
  endif
endif
62 63 64 65 66 67 68 69 70

# Options for hotspot to turn off printing of options with fastdebug version
#   and creating the hotspot.log file.
JAVA_HOTSPOT_DISABLE_PRINT_VMOPTIONS = \
   -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput

# JVM options
JAVA_JVM_FLAGS = $(JAVA_HOTSPOT_DISABLE_PRINT_VMOPTIONS)

D
duke 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
ifeq ($(ADD_CLIENT_VM_OPTION), true)
  JAVA_JVM_FLAGS += -client
endif
ifdef USE_HOTSPOT_INTERPRETER_MODE
  JAVA_JVM_FLAGS += -Xint
endif

# Various VM flags
JAVA_TOOLS_FLAGS  = $(JAVA_JVM_FLAGS) $(JAVA_MEM_FLAGS)

# The VM flags for javac
JAVAC_JVM_FLAGS =

# 64-bit builds require a larger thread stack size.
ifeq ($(ARCH_DATA_MODEL), 32)
  JAVAC_JVM_FLAGS    += -J-XX:ThreadStackSize=768
else
  JAVAC_JVM_FLAGS    += -J-XX:ThreadStackSize=1536
endif
JAVAC_JVM_FLAGS    += $(JAVA_TOOLS_FLAGS:%=-J%)

# The jar -J options are special, must be added at the end of the command line
JAR_JFLAGS       = $(JAVA_TOOLS_FLAGS:%=-J%)

# JAVA_TOOLS_DIR is the default location to find Java tools to run, if
#    langtools is not available.
#    This should be the latest promoted JDK javac.
ifndef JAVA_TOOLS_DIR
  JAVA_TOOLS_DIR = $(JDK_IMPORT_PATH)/bin
endif

#
# Invoking the Java compiler.   In leaf makefiles, choose as follows:
#  -- Use JAVAC if you want to take full control of what options get
#     passed to javac.
#  -- Use JAVAC_CMD if you want to take the defaults given to you.
#

ifndef DEBUG_CLASSFILES
  ifeq ($(VARIANT), DBG)
    DEBUG_CLASSFILES = true
  endif
endif
JAVACFLAGS =
ifeq ($(DEBUG_CLASSFILES),true)
  JAVACFLAGS += -g
endif
118 119 120 121
ifeq ($(JAVAC_MAX_WARNINGS), true)
  JAVACFLAGS  += -Xlint:all
endif
ifeq ($(JAVAC_WARNINGS_FATAL), true)
D
duke 已提交
122 123 124
  JAVACFLAGS  += -Werror
endif

125 126
# Add the source level
SOURCE_LANGUAGE_VERSION = 7
127
LANGUAGE_VERSION = -source $(SOURCE_LANGUAGE_VERSION)
D
duke 已提交
128 129
JAVACFLAGS  += $(LANGUAGE_VERSION)

130 131
# Add the class version we want
TARGET_CLASS_VERSION = 7
D
duke 已提交
132 133 134 135 136 137 138 139 140
CLASS_VERSION = -target $(TARGET_CLASS_VERSION)
JAVACFLAGS  += $(CLASS_VERSION)
JAVACFLAGS  += -encoding ascii
JAVACFLAGS  += "-Xbootclasspath:$(CLASSBINDIR)"
JAVACFLAGS  += $(OTHER_JAVACFLAGS)

# Needed for javah
JAVAHFLAGS += -bootclasspath $(CLASSBINDIR)

141 142 143 144
# Needed for javadoc to ensure it builds documentation
# against the newly built classes
JAVADOCFLAGS += -bootclasspath $(CLASSBINDIR)

145 146 147
# Needed for JAVADOC and BOOT_JAVACFLAGS
NO_PROPRIETARY_API_WARNINGS = -XDignore.symbol.file=true

D
duke 已提交
148 149 150 151 152 153 154 155 156 157 158 159 160 161
# Langtools
ifdef LANGTOOLS_DIST
  JAVAC_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javac.jar
  JAVAH_JAR   = $(LANGTOOLS_DIST)/bootstrap/lib/javah.jar
  JAVADOC_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/javadoc.jar
  DOCLETS_JAR = $(LANGTOOLS_DIST)/bootstrap/lib/doclets.jar
  JAVAC_CMD   = $(BOOT_JAVA_CMD) \
		"-Xbootclasspath/p:$(JAVAC_JAR)" \
		-jar $(JAVAC_JAR) $(JAVACFLAGS)
  JAVAH_CMD   = $(BOOT_JAVA_CMD) \
		"-Xbootclasspath/p:$(JAVAH_JAR)$(CLASSPATH_SEPARATOR)$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)"  \
		-jar $(JAVAH_JAR) $(JAVAHFLAGS)
  JAVADOC_CMD = $(BOOT_JAVA_CMD) \
		"-Xbootclasspath/p:$(JAVADOC_JAR)$(CLASSPATH_SEPARATOR)$(JAVAC_JAR)$(CLASSPATH_SEPARATOR)$(DOCLETS_JAR)" \
162
		-jar $(JAVADOC_JAR) $(JAVADOCFLAGS)
D
duke 已提交
163 164 165 166 167 168
else
  # If no explicit tools, use boot tools (add VM flags in this case)
  JAVAC_CMD     = $(JAVA_TOOLS_DIR)/javac $(JAVAC_JVM_FLAGS) \
		  $(JAVACFLAGS)
  JAVAH_CMD     = $(JAVA_TOOLS_DIR)/javah \
		  $(JAVAHFLAGS)
169 170
  JAVADOC_CMD   = $(JAVA_TOOLS_DIR)/javadoc $(JAVA_TOOLS_FLAGS:%=-J%) \
  		  $(JAVADOCFLAGS)
D
duke 已提交
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
endif

# Override of what javac to use (see deploy workspace)
ifdef JAVAC
  JAVAC_CMD     = $(JAVAC)
endif

#
# The bootstrap java compiler (defined as the javac in the ALT_BOOTDIR jdk).
#   Will be used to compile java code used to build the jdk, e.g. class files
#   created by this compiler will NOT become part of this built jdk, but just
#   used to build this jdk, e.g. run with the java in the ALT_BOOTDIR jdk.
#
# The javac supplied with the LANGTOOLS_DIST should be used to build the
#   classes that will be put into the built jdk. But note that this javac
#   will use the ALT_BOOTDIR java runtime. Any classes created by the
#   LANGTOOLS_DIST javac should not be run during this jdk build and indeed
#   may not even run with the ALT_BOOTDIR jdk because they may be a newer
#   class file version that the ALT_BOOTDIR jdk doesn't understand.
#
# The important observation here is that the built jdk is NOT run during
#   the build. If the built jdk needs to be verified that it can build this
#   same jdk, then it should be supplied to the build process as the ALT_BOOTDIR
#   jdk, and this resulting built jdk should be compared to the first one.
#   (They should be the same). Re-using this built jdk as the ALT_BOOTDIR
#   jdk will be the only way and the recommeneded way to verify the built jdk
#   can bootstrap itself.
#

# The javac options supplied to the boot javac is limited. This compiler
#   should only be used to build the 'make/tools' sources, which are not
#   class files that end up in the classes directory.
203 204 205 206
ifeq ($(JAVAC_MAX_WARNINGS), true)
  BOOT_JAVACFLAGS  += -Xlint:all
endif
ifeq ($(JAVAC_WARNINGS_FATAL), true)
D
duke 已提交
207 208
  BOOT_JAVACFLAGS  += -Werror
endif
209 210 211 212

BOOT_SOURCE_LANGUAGE_VERSION = 6
BOOT_TARGET_CLASS_VERSION = 6
BOOT_JAVACFLAGS  += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
213
BOOT_JAR_JFLAGS += $(JAR_JFLAGS)
D
duke 已提交
214

215 216
BOOT_JAVACFLAGS  += $(NO_PROPRIETARY_API_WARNINGS)

D
duke 已提交
217 218 219 220 221 222 223 224 225 226 227 228 229
BOOT_JAVA_CMD      = $(BOOTDIR)/bin/java $(JAVA_TOOLS_FLAGS)
BOOT_JAVAC_CMD     = $(BOOTDIR)/bin/javac $(JAVAC_JVM_FLAGS) $(BOOT_JAVACFLAGS)
BOOT_JAR_CMD       = $(BOOTDIR)/bin/jar
BOOT_JARSIGNER_CMD = $(BOOTDIR)/bin/jarsigner

# Various tools we need to run (FIXUP: Are these the right ones?)
NATIVE2ASCII    = $(BOOTDIR)/bin/native2ascii $(JAVA_TOOLS_FLAGS:%=-J%)
RMIC		= $(BOOTDIR)/bin/rmic $(JAVA_TOOLS_FLAGS:%=-J%)
IDLJ		= $(BOOTDIR)/bin/idlj $(JAVA_TOOLS_FLAGS:%=-J%)

# Should not be used
JAVA		= /should/not/be/used