Mercurial > hg > truffle
annotate make/solaris/Makefile @ 453:c96030fff130
6684579: SoftReference processing can be made more efficient
Summary: For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.
Reviewed-by: jmasa
author | ysr |
---|---|
date | Thu, 20 Nov 2008 16:56:09 -0800 |
parents | d1605aabd0a1 |
children | c18cbe5936b8 |
rev | line source |
---|---|
0 | 1 # |
196 | 2 # Copyright 1998-2008 Sun Microsystems, Inc. All Rights Reserved. |
0 | 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 # CA 95054 USA or visit www.sun.com if you need additional information or | |
21 # have any questions. | |
22 # | |
23 # | |
24 | |
25 # This makefile creates a build tree and lights off a build. | |
26 # You can go back into the build tree and perform rebuilds or | |
27 # incremental builds as desired. Be sure to reestablish | |
28 # environment variable settings for LD_LIBRARY_PATH and JAVA_HOME. | |
29 | |
30 # The make process now relies on java and javac. These can be | |
31 # specified either implicitly on the PATH, by setting the | |
32 # (JDK-inherited) ALT_BOOTDIR environment variable to full path to a | |
33 # JDK in which bin/java and bin/javac are present and working (e.g., | |
34 # /usr/local/java/jdk1.3/solaris), or via the (JDK-inherited) | |
35 # default BOOTDIR path value. Note that one of ALT_BOOTDIR | |
36 # or BOOTDIR has to be set. We do *not* search javac, javah, rmic etc. | |
37 # from the PATH. | |
38 | |
39 # Along with VM, Serviceability Agent (SA) is built for SA/JDI binding. | |
40 # JDI binding on SA produces two binaries: | |
41 # 1. sa-jdi.jar - This is build before building libjvm[_g].so | |
42 # Please refer to ./makefiles/sa.make | |
43 # 2. libsaproc[_g].so - Native library for SA - This is built after | |
44 # libjsig[_g].so (signal interposition library) | |
45 # Please refer to ./makefiles/vm.make | |
46 # If $(GAMMADIR)/agent dir is not present, SA components are not built. | |
47 | |
48 ifeq ($(GAMMADIR),) | |
49 include ../../make/defs.make | |
50 else | |
51 include $(GAMMADIR)/make/defs.make | |
52 endif | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
53 include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make |
0 | 54 |
55 ifndef LP64 | |
56 ifndef CC_INTERP | |
57 FORCE_TIERED=1 | |
58 endif | |
59 endif | |
60 | |
61 ifdef LP64 | |
62 ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","") | |
63 _JUNK_ := $(shell echo >&2 \ | |
64 $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!") | |
65 @exit 1 | |
66 endif | |
67 endif | |
68 | |
69 # The following renders pathnames in generated Makefiles valid on | |
70 # machines other than the machine containing the build tree. | |
71 # | |
72 # For example, let's say my build tree lives on /files12 on | |
73 # exact.east.sun.com. This logic will cause GAMMADIR to begin with | |
74 # /net/exact/files12/... | |
75 # | |
76 # We only do this on SunOS variants, for a couple of reasons: | |
77 # * It is extremely rare that source trees exist on other systems | |
78 # * It has been claimed that the Linux automounter is flakey, so | |
79 # changing GAMMADIR in a way that exercises the automounter could | |
80 # prove to be a source of unreliability in the build process. | |
81 # Obviously, this Makefile is only relevant on SunOS boxes to begin | |
82 # with, but the SunOS conditionalization will make it easier to | |
83 # combine Makefiles in the future (assuming we ever do that). | |
84 | |
85 ifeq ($(OSNAME),solaris) | |
86 | |
87 # prepend current directory to relative pathnames. | |
88 NEW_GAMMADIR := \ | |
89 $(shell echo $(GAMMADIR) | \ | |
90 sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \ | |
91 ) | |
92 unexport NEW_GAMMADIR | |
93 | |
94 # If NEW_GAMMADIR doesn't already start with "/net/": | |
95 ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),) | |
96 # prepend /net/$(HOST) | |
97 # remove /net/$(HOST) if name already began with /home/ | |
98 # remove /net/$(HOST) if name already began with /java/ | |
99 # remove /net/$(HOST) if name already began with /lab/ | |
100 NEW_GAMMADIR := \ | |
101 $(shell echo $(NEW_GAMMADIR) | \ | |
102 sed -e "s=^\(.*\)=/net/$(HOST)\1=" \ | |
103 -e "s=^/net/$(HOST)/home/=/home/=" \ | |
104 -e "s=^/net/$(HOST)/java/=/java/=" \ | |
105 -e "s=^/net/$(HOST)/lab/=/lab/=" \ | |
106 ) | |
107 # Don't use the new value for GAMMADIR unless a file with the new | |
108 # name actually exists. | |
109 ifneq ($(wildcard $(NEW_GAMMADIR)),) | |
110 GAMMADIR := $(NEW_GAMMADIR) | |
111 endif | |
112 endif | |
113 | |
114 endif | |
115 | |
116 | |
117 # There is a (semi-) regular correspondence between make targets and actions: | |
118 # | |
119 # Target Tree Type Build Dir | |
120 # | |
121 # debug compiler2 <os>_<arch>_compiler2/debug | |
122 # fastdebug compiler2 <os>_<arch>_compiler2/fastdebug | |
123 # jvmg compiler2 <os>_<arch>_compiler2/jvmg | |
124 # optimized compiler2 <os>_<arch>_compiler2/optimized | |
125 # profiled compiler2 <os>_<arch>_compiler2/profiled | |
126 # product compiler2 <os>_<arch>_compiler2/product | |
127 # | |
128 # debug1 compiler1 <os>_<arch>_compiler1/debug | |
129 # fastdebug1 compiler1 <os>_<arch>_compiler1/fastdebug | |
130 # jvmg1 compiler1 <os>_<arch>_compiler1/jvmg | |
131 # optimized1 compiler1 <os>_<arch>_compiler1/optimized | |
132 # profiled1 compiler1 <os>_<arch>_compiler1/profiled | |
133 # product1 compiler1 <os>_<arch>_compiler1/product | |
134 # | |
135 # debugcore core <os>_<arch>_core/debug | |
136 # fastdebugcore core <os>_<arch>_core/fastdebug | |
137 # jvmgcore core <os>_<arch>_core/jvmg | |
138 # optimizedcore core <os>_<arch>_core/optimized | |
139 # profiledcore core <os>_<arch>_core/profiled | |
140 # productcore core <os>_<arch>_core/product | |
141 # | |
142 # What you get with each target: | |
143 # | |
144 # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher | |
145 # fastdebug* - optimized compile, but with asserts enabled | |
146 # jvmg* - "fat" libjvm_g - debug info linked into libjvm_g.so | |
147 # optimized* - optimized compile, no asserts | |
148 # profiled* - gprof | |
149 # product* - the shippable thing: optimized compile, no asserts, -DPRODUCT | |
150 | |
151 # This target list needs to be coordinated with the usage message | |
152 # in the build.sh script: | |
153 TARGETS = debug jvmg fastdebug optimized profiled product | |
154 | |
155 SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs | |
156 SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS)) | |
157 SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) | |
158 SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) | |
159 SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) | |
160 SUBDIRS_KERNEL = $(addprefix $(OSNAME)_$(BUILDARCH)_kernel/,$(TARGETS)) | |
161 | |
162 TARGETS_C2 = $(TARGETS) | |
163 TARGETS_C1 = $(addsuffix 1,$(TARGETS)) | |
164 TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) | |
165 TARGETS_CORE = $(addsuffix core,$(TARGETS)) | |
166 TARGETS_KERNEL = $(addsuffix kernel,$(TARGETS)) | |
167 | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
168 BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make |
0 | 169 BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) |
170 BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) | |
171 | |
172 BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) | |
173 | |
174 #------------------------------------------------------------------------------- | |
175 | |
176 # Could make everything by default, but that would take a while. | |
177 all: | |
178 @echo "Try '$(MAKE) <target> ...' where <target> is one or more of" | |
179 @echo " $(TARGETS_C2)" | |
180 @echo " $(TARGETS_C1)" | |
181 @echo " $(TARGETS_CORE)" | |
182 | |
183 checks: check_os_version check_j2se_version | |
184 | |
185 # We do not want people accidentally building on old systems (e.g. Linux 2.2.x, | |
186 # Solaris 2.5.1, 2.6). | |
187 # Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok. | |
188 | |
189 SUPPORTED_OS_VERSION = 5.7 5.8 5.9 5.10 5.11 | |
190 OS_VERSION := $(shell uname -r) | |
191 EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION)) | |
192 | |
193 check_os_version: | |
194 ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),) | |
195 $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1; | |
196 endif | |
197 | |
198 # jvmti.make requires XSLT (J2SE 1.4.x or newer): | |
199 XSLT_CHECK = $(RUN.JAVAP) javax.xml.transform.TransformerFactory | |
200 # If not found then fail fast. | |
201 check_j2se_version: | |
202 $(QUIETLY) $(XSLT_CHECK) > /dev/null 2>&1; \ | |
203 if [ $$? -ne 0 ]; then \ | |
204 $(RUN.JAVA) -version; \ | |
205 echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \ | |
206 "to bootstrap this build" 1>&2; \ | |
207 exit 1; \ | |
208 fi | |
209 | |
210 $(SUBDIRS_TIERED): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
211 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 212 $(BUILDTREE) VARIANT=tiered |
213 | |
214 $(SUBDIRS_C2): $(BUILDTREE_MAKE) | |
215 ifdef FORCE_TIERED | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
216 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 217 $(BUILDTREE) VARIANT=tiered FORCE_TIERED=1 |
218 else | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
219 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 220 $(BUILDTREE) VARIANT=compiler2 |
221 endif | |
222 | |
223 $(SUBDIRS_C1): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
224 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 225 $(BUILDTREE) VARIANT=compiler1 |
226 | |
227 $(SUBDIRS_CORE): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
228 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 229 $(BUILDTREE) VARIANT=core |
230 | |
231 $(SUBDIRS_KERNEL): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
232 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 233 $(BUILDTREE) VARIANT=kernel |
234 | |
235 # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME | |
236 | |
237 $(TARGETS_C2): $(SUBDIRS_C2) | |
238 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) | |
239 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma | |
240 ifdef INSTALL | |
241 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install | |
242 endif | |
243 | |
244 $(TARGETS_TIERED): $(SUBDIRS_TIERED) | |
245 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) | |
246 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma | |
247 ifdef INSTALL | |
248 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install | |
249 endif | |
250 | |
251 $(TARGETS_C1): $(SUBDIRS_C1) | |
252 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) | |
253 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma | |
254 ifdef INSTALL | |
255 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install | |
256 endif | |
257 | |
258 $(TARGETS_CORE): $(SUBDIRS_CORE) | |
259 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) | |
260 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma | |
261 ifdef INSTALL | |
262 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install | |
263 endif | |
264 | |
265 $(TARGETS_KERNEL): $(SUBDIRS_KERNEL) | |
266 cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && $(MAKE) $(MFLAGS) | |
267 cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && ./test_gamma | |
268 ifdef INSTALL | |
269 cd $(OSNAME)_$(BUILDARCH)_kernel/$(patsubst %kernel,%,$@) && $(MAKE) $(MFLAGS) install | |
270 endif | |
271 | |
272 # Just build the tree, and nothing else: | |
273 tree: $(SUBDIRS_C2) | |
274 tree1: $(SUBDIRS_C1) | |
275 treecore: $(SUBDIRS_CORE) | |
276 treekernel: $(SUBDIRS_KERNEL) | |
277 | |
278 # Doc target. This is the same for all build options. | |
279 # Hence create a docs directory beside ...$(ARCH)_[...] | |
280 docs: checks | |
281 $(QUIETLY) mkdir -p $(SUBDIR_DOCS) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
282 $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) jvmtidocs |
0 | 283 |
284 # Synonyms for win32-like targets. | |
285 compiler2: jvmg product | |
286 | |
287 compiler1: jvmg1 product1 | |
288 | |
289 core: jvmgcore productcore | |
290 | |
291 clean_docs: | |
292 rm -rf $(SUBDIR_DOCS) | |
293 | |
294 clean_compiler1 clean_compiler2 clean_core clean_kernel: | |
295 rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@) | |
296 | |
297 clean: clean_compiler2 clean_compiler1 clean_core clean_docs clean_kernel | |
298 | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
0
diff
changeset
|
299 include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make |
0 | 300 |
301 #------------------------------------------------------------------------------- | |
302 | |
303 .PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) | |
304 .PHONY: tree tree1 treecore | |
305 .PHONY: all compiler1 compiler2 core | |
306 .PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs | |
307 .PHONY: checks check_os_version check_j2se_version |