|
1 # |
|
2 # Copyright (c) 2011, 2015, 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 # Check which interpreter of the JVM we want to build. |
|
28 # Currently we have: |
|
29 # template: Template interpreter (the default) |
|
30 # cpp : C++ interpreter |
|
31 AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_INTERPRETER], |
|
32 [ |
|
33 AC_ARG_WITH([jvm-interpreter], [AS_HELP_STRING([--with-jvm-interpreter], |
|
34 [JVM interpreter to build (template, cpp) @<:@template@:>@])]) |
|
35 |
|
36 AC_MSG_CHECKING([which interpreter of the JVM to build]) |
|
37 if test "x$with_jvm_interpreter" = x; then |
|
38 JVM_INTERPRETER="template" |
|
39 else |
|
40 JVM_INTERPRETER="$with_jvm_interpreter" |
|
41 fi |
|
42 AC_MSG_RESULT([$JVM_INTERPRETER]) |
|
43 |
|
44 if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then |
|
45 AC_MSG_ERROR([The available JVM interpreters are: template, cpp]) |
|
46 fi |
|
47 |
|
48 AC_SUBST(JVM_INTERPRETER) |
|
49 ]) |
|
50 |
|
51 ############################################################################### |
|
52 # Check which variants of the JVM that we want to build. |
|
53 # Currently we have: |
|
54 # server: normal interpreter and a C2 or tiered C1/C2 compiler |
|
55 # client: normal interpreter and C1 (no C2 compiler) (only 32-bit platforms) |
|
56 # minimal1: reduced form of client with optional VM services and features stripped out |
|
57 # zero: no machine code interpreter, no compiler |
|
58 # zeroshark: zero interpreter and shark/llvm compiler backend |
|
59 # core: interpreter only, no compiler (only works on some platforms) |
|
60 AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS], |
|
61 [ |
|
62 AC_MSG_CHECKING([which variants of the JVM to build]) |
|
63 AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants], |
|
64 [JVM variants (separated by commas) to build (server, client, minimal1, zero, zeroshark, core) @<:@server@:>@])]) |
|
65 |
|
66 if test "x$with_jvm_variants" = x; then |
|
67 with_jvm_variants="server" |
|
68 fi |
|
69 |
|
70 JVM_VARIANTS=",$with_jvm_variants," |
|
71 TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'` |
|
72 |
|
73 if test "x$TEST_VARIANTS" != "x,"; then |
|
74 AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, zero, zeroshark, core]) |
|
75 fi |
|
76 AC_MSG_RESULT([$with_jvm_variants]) |
|
77 |
|
78 JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'` |
|
79 JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'` |
|
80 JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS" | $SED -e '/,minimal1,/!s/.*/false/g' -e '/,minimal1,/s/.*/true/g'` |
|
81 JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'` |
|
82 JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'` |
|
83 JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'` |
|
84 |
|
85 if test "x$JVM_VARIANT_CLIENT" = xtrue; then |
|
86 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then |
|
87 AC_MSG_ERROR([You cannot build a client JVM for a 64-bit machine.]) |
|
88 fi |
|
89 fi |
|
90 if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then |
|
91 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then |
|
92 AC_MSG_ERROR([You cannot build a minimal JVM for a 64-bit machine.]) |
|
93 fi |
|
94 fi |
|
95 |
|
96 # Replace the commas with AND for use in the build directory name. |
|
97 ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'` |
|
98 COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/' -e 's/core,/1/'` |
|
99 if test "x$COUNT_VARIANTS" != "x,1"; then |
|
100 BUILDING_MULTIPLE_JVM_VARIANTS=yes |
|
101 else |
|
102 BUILDING_MULTIPLE_JVM_VARIANTS=no |
|
103 fi |
|
104 |
|
105 if test "x$JVM_VARIANT_ZERO" = xtrue && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xyes; then |
|
106 AC_MSG_ERROR([You cannot build multiple variants with zero.]) |
|
107 fi |
|
108 |
|
109 AC_SUBST(JVM_VARIANTS) |
|
110 AC_SUBST(JVM_VARIANT_SERVER) |
|
111 AC_SUBST(JVM_VARIANT_CLIENT) |
|
112 AC_SUBST(JVM_VARIANT_MINIMAL1) |
|
113 AC_SUBST(JVM_VARIANT_ZERO) |
|
114 AC_SUBST(JVM_VARIANT_ZEROSHARK) |
|
115 AC_SUBST(JVM_VARIANT_CORE) |
|
116 |
|
117 INCLUDE_SA=true |
|
118 if test "x$JVM_VARIANT_ZERO" = xtrue ; then |
|
119 INCLUDE_SA=false |
|
120 fi |
|
121 if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then |
|
122 INCLUDE_SA=false |
|
123 fi |
|
124 if test "x$OPENJDK_TARGET_OS" = xaix ; then |
|
125 INCLUDE_SA=false |
|
126 fi |
|
127 if test "x$OPENJDK_TARGET_CPU" = xaarch64; then |
|
128 INCLUDE_SA=false |
|
129 fi |
|
130 AC_SUBST(INCLUDE_SA) |
|
131 |
|
132 if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then |
|
133 MACOSX_UNIVERSAL="true" |
|
134 fi |
|
135 |
|
136 AC_SUBST(MACOSX_UNIVERSAL) |
|
137 ]) |
|
138 |
|
139 |
|
140 ############################################################################### |
|
141 # Setup legacy vars/targets and new vars to deal with different debug levels. |
|
142 # |
|
143 # release: no debug information, all optimizations, no asserts. |
|
144 # optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'. |
|
145 # fastdebug: debug information (-g), all optimizations, all asserts |
|
146 # slowdebug: debug information (-g), no optimizations, all asserts |
|
147 # |
|
148 AC_DEFUN_ONCE([HOTSPOT_SETUP_DEBUG_LEVEL], |
|
149 [ |
|
150 case $DEBUG_LEVEL in |
|
151 release ) |
|
152 VARIANT="OPT" |
|
153 FASTDEBUG="false" |
|
154 DEBUG_CLASSFILES="false" |
|
155 BUILD_VARIANT_RELEASE="" |
|
156 HOTSPOT_DEBUG_LEVEL="product" |
|
157 HOTSPOT_EXPORT="product" |
|
158 ;; |
|
159 fastdebug ) |
|
160 VARIANT="DBG" |
|
161 FASTDEBUG="true" |
|
162 DEBUG_CLASSFILES="true" |
|
163 BUILD_VARIANT_RELEASE="-fastdebug" |
|
164 HOTSPOT_DEBUG_LEVEL="fastdebug" |
|
165 HOTSPOT_EXPORT="fastdebug" |
|
166 ;; |
|
167 slowdebug ) |
|
168 VARIANT="DBG" |
|
169 FASTDEBUG="false" |
|
170 DEBUG_CLASSFILES="true" |
|
171 BUILD_VARIANT_RELEASE="-debug" |
|
172 HOTSPOT_DEBUG_LEVEL="debug" |
|
173 HOTSPOT_EXPORT="debug" |
|
174 ;; |
|
175 optimized ) |
|
176 VARIANT="OPT" |
|
177 FASTDEBUG="false" |
|
178 DEBUG_CLASSFILES="false" |
|
179 BUILD_VARIANT_RELEASE="-optimized" |
|
180 HOTSPOT_DEBUG_LEVEL="optimized" |
|
181 HOTSPOT_EXPORT="optimized" |
|
182 ;; |
|
183 esac |
|
184 |
|
185 # The debug level 'optimized' is a little special because it is currently only |
|
186 # applicable to the HotSpot build where it means to build a completely |
|
187 # optimized version of the VM without any debugging code (like for the |
|
188 # 'release' debug level which is called 'product' in the HotSpot build) but |
|
189 # with the exception that it can contain additional code which is otherwise |
|
190 # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to |
|
191 # test new and/or experimental features which are not intended for customer |
|
192 # shipment. Because these new features need to be tested and benchmarked in |
|
193 # real world scenarios, we want to build the containing JDK at the 'release' |
|
194 # debug level. |
|
195 if test "x$DEBUG_LEVEL" = xoptimized; then |
|
196 DEBUG_LEVEL="release" |
|
197 fi |
|
198 |
|
199 ##### |
|
200 # Generate the legacy makefile targets for hotspot. |
|
201 # The hotspot api for selecting the build artifacts, really, needs to be improved. |
|
202 # JDK-7195896 will fix this on the hotspot side by using the JVM_VARIANT_* variables to |
|
203 # determine what needs to be built. All we will need to set here is all_product, all_fastdebug etc |
|
204 # But until then ... |
|
205 HOTSPOT_TARGET="" |
|
206 |
|
207 if test "x$JVM_VARIANT_SERVER" = xtrue; then |
|
208 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL} " |
|
209 fi |
|
210 |
|
211 if test "x$JVM_VARIANT_CLIENT" = xtrue; then |
|
212 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}1 " |
|
213 fi |
|
214 |
|
215 if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then |
|
216 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}minimal1 " |
|
217 fi |
|
218 |
|
219 if test "x$JVM_VARIANT_ZERO" = xtrue; then |
|
220 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}zero " |
|
221 fi |
|
222 |
|
223 if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then |
|
224 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark " |
|
225 fi |
|
226 |
|
227 if test "x$JVM_VARIANT_CORE" = xtrue; then |
|
228 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core " |
|
229 fi |
|
230 |
|
231 HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT" |
|
232 |
|
233 # On Macosx universal binaries are produced, but they only contain |
|
234 # 64 bit intel. This invalidates control of which jvms are built |
|
235 # from configure, but only server is valid anyway. Fix this |
|
236 # when hotspot makefiles are rewritten. |
|
237 if test "x$MACOSX_UNIVERSAL" = xtrue; then |
|
238 HOTSPOT_TARGET=universal_${HOTSPOT_EXPORT} |
|
239 fi |
|
240 |
|
241 ##### |
|
242 |
|
243 AC_SUBST(DEBUG_LEVEL) |
|
244 AC_SUBST(VARIANT) |
|
245 AC_SUBST(FASTDEBUG) |
|
246 AC_SUBST(DEBUG_CLASSFILES) |
|
247 AC_SUBST(BUILD_VARIANT_RELEASE) |
|
248 ]) |
|
249 |
|
250 AC_DEFUN_ONCE([HOTSPOT_SETUP_HOTSPOT_OPTIONS], |
|
251 [ |
|
252 # Control wether Hotspot runs Queens test after build. |
|
253 AC_ARG_ENABLE([hotspot-test-in-build], [AS_HELP_STRING([--enable-hotspot-test-in-build], |
|
254 [run the Queens test after Hotspot build @<:@disabled@:>@])],, |
|
255 [enable_hotspot_test_in_build=no]) |
|
256 if test "x$enable_hotspot_test_in_build" = "xyes"; then |
|
257 TEST_IN_BUILD=true |
|
258 else |
|
259 TEST_IN_BUILD=false |
|
260 fi |
|
261 AC_SUBST(TEST_IN_BUILD) |
|
262 ]) |
|
263 |
|
264 AC_DEFUN_ONCE([HOTSPOT_SETUP_BUILD_TWEAKS], |
|
265 [ |
|
266 HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET" |
|
267 AC_SUBST(HOTSPOT_MAKE_ARGS) |
|
268 ]) |