Tue, 03 Apr 2012 09:48:34 -0700
7158067: FDS: ENABLE_FULL_DEBUG_SYMBOLS flag should only affect product builds
Summary: Build option FULL_DEBUG_SYMBOLS=0 only affects product builds.
Reviewed-by: ohair, jmelvin, sspitsyn
1 #
2 # Copyright (c) 2006, 2012, 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.
8 #
9 # This code is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 # version 2 for more details (a copy is included in the LICENSE file that
13 # accompanied this code).
14 #
15 # You should have received a copy of the GNU General Public License version
16 # 2 along with this work; if not, write to the Free Software Foundation,
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 #
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 # or visit www.oracle.com if you need additional information or have any
21 # questions.
22 #
23 #
25 # The common definitions for hotspot solaris builds.
26 # Include the top level defs.make under make directory instead of this one.
27 # This file is included into make/defs.make.
29 # Need PLATFORM (os-arch combo names) for jdk and hotspot, plus libarch name
30 SLASH_JAVA ?= /java
31 ARCH:=$(shell uname -p)
32 PATH_SEP = :
33 ifeq ($(LP64), 1)
34 ARCH_DATA_MODEL=64
35 else
36 ARCH_DATA_MODEL=32
37 endif
39 ifeq ($(ARCH),sparc)
40 ifeq ($(ARCH_DATA_MODEL), 64)
41 MAKE_ARGS += LP64=1
42 PLATFORM=solaris-sparcv9
43 VM_PLATFORM=solaris_sparcv9
44 else
45 PLATFORM=solaris-sparc
46 VM_PLATFORM=solaris_sparc
47 endif
48 HS_ARCH=sparc
49 else
50 ifeq ($(ARCH_DATA_MODEL), 64)
51 MAKE_ARGS += LP64=1
52 PLATFORM=solaris-amd64
53 VM_PLATFORM=solaris_amd64
54 HS_ARCH=x86
55 else
56 PLATFORM=solaris-i586
57 VM_PLATFORM=solaris_i486
58 HS_ARCH=x86
59 endif
60 endif
62 # determine if HotSpot is being built in JDK6 or earlier version
63 JDK6_OR_EARLIER=0
64 ifeq "$(shell expr \( '$(JDK_MAJOR_VERSION)' != '' \& '$(JDK_MINOR_VERSION)' != '' \& '$(JDK_MICRO_VERSION)' != '' \))" "1"
65 # if the longer variable names (newer build style) are set, then check those
66 ifeq "$(shell expr \( $(JDK_MAJOR_VERSION) = 1 \& $(JDK_MINOR_VERSION) \< 7 \))" "1"
67 JDK6_OR_EARLIER=1
68 endif
69 else
70 # the longer variables aren't set so check the shorter variable names
71 ifeq "$(shell expr \( '$(JDK_MAJOR_VER)' = 1 \& '$(JDK_MINOR_VER)' \< 7 \))" "1"
72 JDK6_OR_EARLIER=1
73 endif
74 endif
76 ifeq ($(JDK6_OR_EARLIER),0)
77 # Full Debug Symbols is supported on JDK7 or newer.
78 # The Full Debug Symbols (FDS) default for BUILD_FLAVOR == product
79 # builds is enabled with debug info files ZIP'ed to save space. For
80 # BUILD_FLAVOR != product builds, FDS is always enabled, after all a
81 # debug build without debug info isn't very useful.
82 # The ZIP_DEBUGINFO_FILES option only has meaning when FDS is enabled.
83 #
84 # If you invoke a build with FULL_DEBUG_SYMBOLS=0, then FDS will be
85 # disabled for a BUILD_FLAVOR == product build.
86 #
87 # Note: Use of a different variable name for the FDS override option
88 # versus the FDS enabled check is intentional (FULL_DEBUG_SYMBOLS
89 # versus ENABLE_FULL_DEBUG_SYMBOLS). For auto build systems that pass
90 # in options via environment variables, use of distinct variables
91 # prevents strange behaviours. For example, in a BUILD_FLAVOR !=
92 # product build, the FULL_DEBUG_SYMBOLS environment variable will be
93 # 0, but the ENABLE_FULL_DEBUG_SYMBOLS make variable will be 1. If
94 # the same variable name is used, then different values can be picked
95 # up by different parts of the build. Just to be clear, we only need
96 # two variable names because the incoming option value can be
97 # overridden in some situations, e.g., a BUILD_FLAVOR != product
98 # build.
100 ifeq ($(BUILD_FLAVOR), product)
101 FULL_DEBUG_SYMBOLS ?= 1
102 ENABLE_FULL_DEBUG_SYMBOLS = $(FULL_DEBUG_SYMBOLS)
103 else
104 # debug variants always get Full Debug Symbols (if available)
105 ENABLE_FULL_DEBUG_SYMBOLS = 1
106 endif
107 _JUNK_ := $(shell \
108 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
109 # since objcopy is optional, we set ZIP_DEBUGINFO_FILES later
111 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
112 # Default OBJCOPY comes from the SUNWbinutils package:
113 DEF_OBJCOPY=/usr/sfw/bin/gobjcopy
114 ifeq ($(VM_PLATFORM),solaris_amd64)
115 # On Solaris AMD64/X64, gobjcopy is not happy and fails:
116 #
117 # usr/sfw/bin/gobjcopy --add-gnu-debuglink=<lib>.debuginfo <lib>.so
118 # BFD: stKPaiop: Not enough room for program headers, try linking with -N
119 # /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
120 # BFD: stKPaiop: Not enough room for program headers, try linking with -N
121 # /usr/sfw/bin/gobjcopy: libsaproc.debuginfo: Bad value
122 # BFD: stKPaiop: Not enough room for program headers, try linking with -N
123 # /usr/sfw/bin/gobjcopy: stKPaiop: Bad value
124 _JUNK_ := $(shell \
125 echo >&2 "INFO: $(DEF_OBJCOPY) is not working on Solaris AMD64/X64")
126 OBJCOPY=
127 else
128 OBJCOPY=$(shell test -x $(DEF_OBJCOPY) && echo $(DEF_OBJCOPY))
129 ifneq ($(ALT_OBJCOPY),)
130 _JUNK_ := $(shell echo >&2 "INFO: ALT_OBJCOPY=$(ALT_OBJCOPY)")
131 OBJCOPY=$(shell test -x $(ALT_OBJCOPY) && echo $(ALT_OBJCOPY))
132 endif
133 endif
134 else
135 OBJCOPY=
136 endif
138 ifeq ($(OBJCOPY),)
139 _JUNK_ := $(shell \
140 echo >&2 "INFO: no objcopy cmd found so cannot create .debuginfo files.")
141 ENABLE_FULL_DEBUG_SYMBOLS=0
142 _JUNK_ := $(shell \
143 echo >&2 "INFO: ENABLE_FULL_DEBUG_SYMBOLS=$(ENABLE_FULL_DEBUG_SYMBOLS)")
144 else
145 _JUNK_ := $(shell \
146 echo >&2 "INFO: $(OBJCOPY) cmd found so will create .debuginfo files.")
148 # Library stripping policies for .debuginfo configs:
149 # all_strip - strips everything from the library
150 # min_strip - strips most stuff from the library; leaves minimum symbols
151 # no_strip - does not strip the library at all
152 #
153 # Oracle security policy requires "all_strip". A waiver was granted on
154 # 2011.09.01 that permits using "min_strip" in the Java JDK and Java JRE.
155 #
156 # Currently, STRIP_POLICY is only used when Full Debug Symbols is enabled.
157 #
158 STRIP_POLICY ?= min_strip
160 _JUNK_ := $(shell \
161 echo >&2 "INFO: STRIP_POLICY=$(STRIP_POLICY)")
163 ZIP_DEBUGINFO_FILES ?= 1
165 _JUNK_ := $(shell \
166 echo >&2 "INFO: ZIP_DEBUGINFO_FILES=$(ZIP_DEBUGINFO_FILES)")
167 endif
168 endif
170 JDK_INCLUDE_SUBDIR=solaris
172 # Library suffix
173 LIBRARY_SUFFIX=so
175 # FIXUP: The subdirectory for a debug build is NOT the same on all platforms
176 VM_DEBUG=jvmg
178 EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
180 # client and server subdirectories have symbolic links to ../libjsig.$(LIBRARY_SUFFIX)
181 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.$(LIBRARY_SUFFIX)
182 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
183 ifeq ($(ZIP_DEBUGINFO_FILES),1)
184 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.diz
185 else
186 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libjsig.debuginfo
187 endif
188 endif
190 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
191 EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
193 ifneq ($(BUILD_CLIENT_ONLY),true)
194 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
195 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.$(LIBRARY_SUFFIX)
196 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
197 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
198 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
199 ifeq ($(ZIP_DEBUGINFO_FILES),1)
200 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
201 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz
202 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.diz
203 else
204 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
205 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.debuginfo
206 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.debuginfo
207 endif
208 endif
209 endif
210 ifeq ($(ARCH_DATA_MODEL), 32)
211 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
212 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.$(LIBRARY_SUFFIX)
213 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.$(LIBRARY_SUFFIX)
214 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.$(LIBRARY_SUFFIX)
215 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
216 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
217 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
218 ifeq ($(ZIP_DEBUGINFO_FILES),1)
219 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.diz
220 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.diz
221 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.diz
222 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.diz
223 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.diz
224 else
225 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.debuginfo
226 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_db.debuginfo
227 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm_dtrace.debuginfo
228 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_db.debuginfo
229 EXPORT_LIST += $(EXPORT_CLIENT_DIR)/64/libjvm_dtrace.debuginfo
230 endif
231 endif
232 ifneq ($(BUILD_CLIENT_ONLY), true)
233 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.$(LIBRARY_SUFFIX)
234 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.$(LIBRARY_SUFFIX)
235 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
236 ifeq ($(ZIP_DEBUGINFO_FILES),1)
237 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.diz
238 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.diz
239 else
240 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.debuginfo
241 EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.debuginfo
242 endif
243 endif
244 endif
245 endif
247 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX)
248 ifeq ($(ENABLE_FULL_DEBUG_SYMBOLS),1)
249 ifeq ($(ZIP_DEBUGINFO_FILES),1)
250 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.diz
251 else
252 EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.debuginfo
253 endif
254 endif
255 EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar