Mercurial > hg > graal-compiler
annotate make/linux/Makefile @ 158:a49545cab84a
6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles)
Summary: Allows for building with SS12, no longer requires SS11, warns if not SS11 for now. Once SS12 is validated and performance measurements look ok, SS12 will be the validated compiler.
Reviewed-by: sspitsyn, ikrylov
author | ohair |
---|---|
date | Tue, 27 May 2008 09:47:18 -0700 |
parents | a294fd0c4b38 |
children | d1605aabd0a1 |
rev | line source |
---|---|
0 | 1 # |
2 # Copyright 1999-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. | |
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 # One can set ALT_BOOTDIR or BOOTDIR to point to a jdk that runs on | |
40 # an architecture that differs from the target architecture, as long | |
41 # as the bootstrap jdk runs under the same flavor of OS as the target | |
42 # (i.e., if the target is linux, point to a jdk that runs on a linux | |
43 # box). In order to use such a bootstrap jdk, set the make variable | |
44 # REMOTE to the desired remote command mechanism, e.g., | |
45 # | |
46 # make REMOTE="rsh -l me myotherlinuxbox" | |
47 | |
48 # Along with VM, Serviceability Agent (SA) is built for SA/JDI binding. | |
49 # JDI binding on SA produces two binaries: | |
50 # 1. sa-jdi.jar - This is build before building libjvm[_g].so | |
51 # Please refer to ./makefiles/sa.make | |
52 # 2. libsa[_g].so - Native library for SA - This is built after | |
53 # libjsig[_g].so (signal interposition library) | |
54 # Please refer to ./makefiles/vm.make | |
55 # If $(GAMMADIR)/agent dir is not present, SA components are not built. | |
56 | |
57 ifeq ($(GAMMADIR),) | |
58 include ../../make/defs.make | |
59 else | |
60 include $(GAMMADIR)/make/defs.make | |
61 endif | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
62 include $(GAMMADIR)/make/$(OSNAME)/makefiles/rules.make |
0 | 63 |
64 ifndef LP64 | |
65 ifndef CC_INTERP | |
66 FORCE_TIERED=1 | |
67 endif | |
68 endif | |
69 | |
70 ifdef LP64 | |
71 ifeq ("$(filter $(LP64_ARCH),$(BUILDARCH))","") | |
72 _JUNK_ := $(shell echo >&2 \ | |
73 $(OSNAME) $(ARCH) "*** ERROR: this platform does not support 64-bit compilers!") | |
74 @exit 1 | |
75 endif | |
76 endif | |
77 | |
78 # we need to set up LP64 correctly to satisfy sanity checks in adlc | |
79 ifneq ("$(filter $(LP64_ARCH),$(BUILDARCH))","") | |
80 MFLAGS += " LP64=1 " | |
81 endif | |
82 | |
50
485d403e94e1
6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers
dcubed
parents:
0
diff
changeset
|
83 # pass USE_SUNCC further, through MFLAGS |
485d403e94e1
6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers
dcubed
parents:
0
diff
changeset
|
84 ifdef USE_SUNCC |
485d403e94e1
6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers
dcubed
parents:
0
diff
changeset
|
85 MFLAGS += " USE_SUNCC=1 " |
485d403e94e1
6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers
dcubed
parents:
0
diff
changeset
|
86 endif |
485d403e94e1
6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers
dcubed
parents:
0
diff
changeset
|
87 |
0 | 88 # The following renders pathnames in generated Makefiles valid on |
89 # machines other than the machine containing the build tree. | |
90 # | |
91 # For example, let's say my build tree lives on /files12 on | |
92 # exact.east.sun.com. This logic will cause GAMMADIR to begin with | |
93 # /net/exact/files12/... | |
94 # | |
95 # We only do this on SunOS variants, for a couple of reasons: | |
96 # * It is extremely rare that source trees exist on other systems | |
97 # * It has been claimed that the Linux automounter is flakey, so | |
98 # changing GAMMADIR in a way that exercises the automounter could | |
99 # prove to be a source of unreliability in the build process. | |
100 # Obviously, this Makefile is only relevant on SunOS boxes to begin | |
101 # with, but the SunOS conditionalization will make it easier to | |
102 # combine Makefiles in the future (assuming we ever do that). | |
103 | |
104 ifeq ($(OSNAME),solaris) | |
105 | |
106 # prepend current directory to relative pathnames. | |
107 NEW_GAMMADIR := \ | |
108 $(shell echo $(GAMMADIR) | \ | |
109 sed -e "s=^\([^/].*\)=$(shell pwd)/\1=" \ | |
110 ) | |
111 unexport NEW_GAMMADIR | |
112 | |
113 # If NEW_GAMMADIR doesn't already start with "/net/": | |
114 ifeq ($(strip $(filter /net/%,$(NEW_GAMMADIR))),) | |
115 # prepend /net/$(HOST) | |
116 # remove /net/$(HOST) if name already began with /home/ | |
117 # remove /net/$(HOST) if name already began with /java/ | |
118 # remove /net/$(HOST) if name already began with /lab/ | |
119 NEW_GAMMADIR := \ | |
120 $(shell echo $(NEW_GAMMADIR) | \ | |
121 sed -e "s=^\(.*\)=/net/$(HOST)\1=" \ | |
122 -e "s=^/net/$(HOST)/home/=/home/=" \ | |
123 -e "s=^/net/$(HOST)/java/=/java/=" \ | |
124 -e "s=^/net/$(HOST)/lab/=/lab/=" \ | |
125 ) | |
126 # Don't use the new value for GAMMADIR unless a file with the new | |
127 # name actually exists. | |
128 ifneq ($(wildcard $(NEW_GAMMADIR)),) | |
129 GAMMADIR := $(NEW_GAMMADIR) | |
130 endif | |
131 endif | |
132 | |
133 endif | |
134 | |
135 | |
136 # There is a (semi-) regular correspondence between make targets and actions: | |
137 # | |
138 # Target Tree Type Build Dir | |
139 # | |
140 # debug compiler2 <os>_<arch>_compiler2/debug | |
141 # fastdebug compiler2 <os>_<arch>_compiler2/fastdebug | |
142 # jvmg compiler2 <os>_<arch>_compiler2/jvmg | |
143 # optimized compiler2 <os>_<arch>_compiler2/optimized | |
144 # profiled compiler2 <os>_<arch>_compiler2/profiled | |
145 # product compiler2 <os>_<arch>_compiler2/product | |
146 # | |
147 # debug1 compiler1 <os>_<arch>_compiler1/debug | |
148 # fastdebug1 compiler1 <os>_<arch>_compiler1/fastdebug | |
149 # jvmg1 compiler1 <os>_<arch>_compiler1/jvmg | |
150 # optimized1 compiler1 <os>_<arch>_compiler1/optimized | |
151 # profiled1 compiler1 <os>_<arch>_compiler1/profiled | |
152 # product1 compiler1 <os>_<arch>_compiler1/product | |
153 # | |
154 # debugcore core <os>_<arch>_core/debug | |
155 # fastdebugcore core <os>_<arch>_core/fastdebug | |
156 # jvmgcore core <os>_<arch>_core/jvmg | |
157 # optimizedcore core <os>_<arch>_core/optimized | |
158 # profiledcore core <os>_<arch>_core/profiled | |
159 # productcore core <os>_<arch>_core/product | |
160 # | |
161 # What you get with each target: | |
162 # | |
163 # debug* - "thin" libjvm_g - debug info linked into the gamma_g launcher | |
164 # fastdebug* - optimized compile, but with asserts enabled | |
165 # jvmg* - "fat" libjvm_g - debug info linked into libjvm_g.so | |
166 # optimized* - optimized compile, no asserts | |
167 # profiled* - gprof | |
168 # product* - the shippable thing: optimized compile, no asserts, -DPRODUCT | |
169 | |
170 # This target list needs to be coordinated with the usage message | |
171 # in the build.sh script: | |
172 TARGETS = debug jvmg fastdebug optimized profiled product | |
173 | |
174 SUBDIR_DOCS = $(OSNAME)_$(BUILDARCH)_docs | |
175 SUBDIRS_C1 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler1/,$(TARGETS)) | |
176 SUBDIRS_C2 = $(addprefix $(OSNAME)_$(BUILDARCH)_compiler2/,$(TARGETS)) | |
177 SUBDIRS_TIERED = $(addprefix $(OSNAME)_$(BUILDARCH)_tiered/,$(TARGETS)) | |
178 SUBDIRS_CORE = $(addprefix $(OSNAME)_$(BUILDARCH)_core/,$(TARGETS)) | |
179 | |
180 TARGETS_C2 = $(TARGETS) | |
181 TARGETS_C1 = $(addsuffix 1,$(TARGETS)) | |
182 TARGETS_TIERED = $(addsuffix tiered,$(TARGETS)) | |
183 TARGETS_CORE = $(addsuffix core,$(TARGETS)) | |
184 | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
185 BUILDTREE_MAKE = $(GAMMADIR)/make/$(OSNAME)/makefiles/buildtree.make |
0 | 186 BUILDTREE_VARS = GAMMADIR=$(GAMMADIR) OS_FAMILY=$(OSNAME) ARCH=$(SRCARCH) BUILDARCH=$(BUILDARCH) LIBARCH=$(LIBARCH) |
187 BUILDTREE_VARS += HOTSPOT_RELEASE_VERSION=$(HOTSPOT_RELEASE_VERSION) HOTSPOT_BUILD_VERSION=$(HOTSPOT_BUILD_VERSION) JRE_RELEASE_VERSION=$(JRE_RELEASE_VERSION) | |
188 | |
189 BUILDTREE = $(MAKE) -f $(BUILDTREE_MAKE) $(BUILDTREE_VARS) | |
190 | |
191 #------------------------------------------------------------------------------- | |
192 | |
193 # Could make everything by default, but that would take a while. | |
194 all: | |
195 @echo "Try '$(MAKE) <target> ...' where <target> is one or more of" | |
196 @echo " $(TARGETS_C2)" | |
197 @echo " $(TARGETS_C1)" | |
198 @echo " $(TARGETS_CORE)" | |
199 | |
200 checks: check_os_version check_j2se_version | |
201 | |
202 # We do not want people accidentally building on old systems (e.g. Linux 2.2.x, | |
203 # Solaris 2.5.1, 2.6). | |
204 # Disable this check by setting DISABLE_HOTSPOT_OS_VERSION_CHECK=ok. | |
205 | |
206 SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 2.7% | |
207 OS_VERSION := $(shell uname -r) | |
208 EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION)) | |
209 | |
210 check_os_version: | |
211 ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),) | |
212 $(QUIETLY) >&2 echo "*** This OS is not supported:" `uname -a`; exit 1; | |
213 endif | |
214 | |
215 # jvmti.make requires XSLT (J2SE 1.4.x or newer): | |
216 XSLT_CHECK = $(REMOTE) $(RUN.JAVAP) javax.xml.transform.TransformerFactory | |
217 # If not found then fail fast. | |
218 check_j2se_version: | |
219 $(QUIETLY) $(XSLT_CHECK) > /dev/null 2>&1; \ | |
220 if [ $$? -ne 0 ]; then \ | |
221 $(REMOTE) $(RUN.JAVA) -version; \ | |
222 echo "*** An XSLT processor (J2SE 1.4.x or newer) is required" \ | |
223 "to bootstrap this build" 1>&2; \ | |
224 exit 1; \ | |
225 fi | |
226 | |
227 $(SUBDIRS_TIERED): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
228 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 229 $(BUILDTREE) VARIANT=tiered |
230 | |
231 $(SUBDIRS_C2): $(BUILDTREE_MAKE) | |
232 ifdef FORCE_TIERED | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
233 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 234 $(BUILDTREE) VARIANT=tiered FORCE_TIERED=1 |
235 else | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
236 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 237 $(BUILDTREE) VARIANT=compiler2 |
238 endif | |
239 | |
240 $(SUBDIRS_C1): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
241 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 242 $(BUILDTREE) VARIANT=compiler1 |
243 | |
244 $(SUBDIRS_CORE): $(BUILDTREE_MAKE) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
245 $(QUIETLY) $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/Makefile checks |
0 | 246 $(BUILDTREE) VARIANT=core |
247 | |
248 # Define INSTALL=y at command line to automatically copy JVM into JAVA_HOME | |
249 | |
250 $(TARGETS_C2): $(SUBDIRS_C2) | |
251 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) | |
252 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma | |
253 ifdef INSTALL | |
254 cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install | |
255 endif | |
256 | |
257 $(TARGETS_TIERED): $(SUBDIRS_TIERED) | |
258 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) | |
259 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma | |
260 ifdef INSTALL | |
261 cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install | |
262 endif | |
263 | |
264 $(TARGETS_C1): $(SUBDIRS_C1) | |
265 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) | |
266 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma | |
267 ifdef INSTALL | |
268 cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install | |
269 endif | |
270 | |
271 $(TARGETS_CORE): $(SUBDIRS_CORE) | |
272 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) | |
273 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma | |
274 ifdef INSTALL | |
275 cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install | |
276 endif | |
277 | |
278 # Just build the tree, and nothing else: | |
279 tree: $(SUBDIRS_C2) | |
280 tree1: $(SUBDIRS_C1) | |
281 treecore: $(SUBDIRS_CORE) | |
282 | |
283 # Doc target. This is the same for all build options. | |
284 # Hence create a docs directory beside ...$(ARCH)_[...] | |
285 docs: checks | |
286 $(QUIETLY) mkdir -p $(SUBDIR_DOCS) | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
287 $(MAKE) -f $(GAMMADIR)/make/$(OSNAME)/makefiles/jvmti.make $(MFLAGS) $(BUILDTREE_VARS) JvmtiOutDir=$(SUBDIR_DOCS) jvmtidocs |
0 | 288 |
289 # Synonyms for win32-like targets. | |
290 compiler2: jvmg product | |
291 | |
292 compiler1: jvmg1 product1 | |
293 | |
294 core: jvmgcore productcore | |
295 | |
296 clean_docs: | |
297 rm -rf $(SUBDIR_DOCS) | |
298 | |
299 clean_compiler1 clean_compiler2 clean_core: | |
300 rm -rf $(OSNAME)_$(BUILDARCH)_$(subst clean_,,$@) | |
301 | |
302 clean: clean_compiler2 clean_compiler1 clean_core clean_docs | |
303 | |
91
a294fd0c4b38
6583644: Move all managed/SCCS files out of 'build' into 'make' directory
kamg
parents:
50
diff
changeset
|
304 include $(GAMMADIR)/make/$(OSNAME)/makefiles/cscope.make |
0 | 305 |
306 #------------------------------------------------------------------------------- | |
307 | |
308 .PHONY: $(TARGETS_C2) $(TARGETS_C1) $(TARGETS_CORE) | |
309 .PHONY: tree tree1 treecore | |
310 .PHONY: all compiler1 compiler2 core | |
311 .PHONY: clean clean_compiler1 clean_compiler2 clean_core docs clean_docs | |
312 .PHONY: checks check_os_version check_j2se_version |