hotspot.m4 revision 2464:1588d044d709
1234285Sdim# 2234285Sdim# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. 3234285Sdim# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4234285Sdim# 5234285Sdim# This code is free software; you can redistribute it and/or modify it 6234285Sdim# under the terms of the GNU General Public License version 2 only, as 7234285Sdim# published by the Free Software Foundation. Oracle designates this 8234285Sdim# particular file as subject to the "Classpath" exception as provided 9234285Sdim# by Oracle in the LICENSE file that accompanied this code. 10234285Sdim# 11234285Sdim# This code is distributed in the hope that it will be useful, but WITHOUT 12234285Sdim# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13234285Sdim# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14234285Sdim# version 2 for more details (a copy is included in the LICENSE file that 15234285Sdim# accompanied this code). 16234285Sdim# 17249423Sdim# You should have received a copy of the GNU General Public License version 18249423Sdim# 2 along with this work; if not, write to the Free Software Foundation, 19249423Sdim# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20249423Sdim# 21234285Sdim# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22249423Sdim# or visit www.oracle.com if you need additional information or have any 23249423Sdim# questions. 24263508Sdim# 25234285Sdim 26239462Sdim# All valid JVM features, regardless of platform 27249423SdimVALID_JVM_FEATURES="compiler1 compiler2 zero shark minimal dtrace jvmti jvmci \ 28239462Sdim graal fprof vm-structs jni-check services management all-gcs nmt cds \ 29234285Sdim static-build link-time-opt aot" 30234285Sdim 31234285Sdim# All valid JVM variants 32249423SdimVALID_JVM_VARIANTS="server client minimal core zero zeroshark custom" 33234285Sdim 34263508Sdim############################################################################### 35234285Sdim# Check if the specified JVM variant should be built. To be used in shell if 36234285Sdim# constructs, like this: 37234285Sdim# if HOTSPOT_CHECK_JVM_VARIANT(server); then 38234285Sdim# 39243830Sdim# Only valid to use after HOTSPOT_SETUP_JVM_VARIANTS has setup variants. 40243830Sdim 41243830Sdim# Definition kept in one line to allow inlining in if statements. 42243830Sdim# Additional [] needed to keep m4 from mangling shell constructs. 43243830SdimAC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT], 44243830Sdim[ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ]) 45234285Sdim 46234285Sdim############################################################################### 47234285Sdim# Check if the specified JVM features are explicitly enabled. To be used in 48234285Sdim# shell if constructs, like this: 49234285Sdim# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then 50234285Sdim# 51234285Sdim# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features. 52234285Sdim 53234285Sdim# Definition kept in one line to allow inlining in if statements. 54234285Sdim# Additional [] needed to keep m4 from mangling shell constructs. 55234285SdimAC_DEFUN([HOTSPOT_CHECK_JVM_FEATURE], 56263508Sdim[ [ [[ " $JVM_FEATURES " =~ " $1 " ]] ] ]) 57263508Sdim 58251662Sdim############################################################################### 59263508Sdim# Check which variants of the JVM that we want to build. Available variants are: 60263508Sdim# server: normal interpreter, and a tiered C1/C2 compiler 61263508Sdim# client: normal interpreter, and C1 (no C2 compiler) 62249423Sdim# minimal: reduced form of client with optional features stripped out 63249423Sdim# core: normal interpreter only, no compiler 64243830Sdim# zero: C++ based interpreter only, no compiler 65249423Sdim# zeroshark: C++ based interpreter, and a llvm-based compiler 66249423Sdim# custom: baseline JVM with no default features 67249423Sdim# 68249423SdimAC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS], 69249423Sdim[ 70249423Sdim AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants], 71249423Sdim [JVM variants (separated by commas) to build (server,client,minimal,core,zero,zeroshark,custom) @<:@server@:>@])]) 72249423Sdim 73249423Sdim SETUP_HOTSPOT_TARGET_CPU_PORT 74249423Sdim 75263508Sdim if test "x$with_jvm_variants" = x; then 76263508Sdim with_jvm_variants="server" 77263508Sdim fi 78263508Sdim JVM_VARIANTS_OPT="$with_jvm_variants" 79234285Sdim 80234285Sdim # Has the user listed more than one variant? 81234285Sdim # Additional [] needed to keep m4 from mangling shell constructs. 82234285Sdim if [ [[ "$JVM_VARIANTS_OPT" =~ "," ]] ]; then 83239462Sdim BUILDING_MULTIPLE_JVM_VARIANTS=true 84239462Sdim else 85239462Sdim BUILDING_MULTIPLE_JVM_VARIANTS=false 86239462Sdim fi 87239462Sdim # Replace the commas with AND for use in the build directory name. 88239462Sdim JVM_VARIANTS_WITH_AND=`$ECHO "$JVM_VARIANTS_OPT" | $SED -e 's/,/AND/g'` 89239462Sdim 90239462Sdim AC_MSG_CHECKING([which variants of the JVM to build]) 91239462Sdim # JVM_VARIANTS is a space-separated list. 92234285Sdim # Also use minimal, not minimal1 (which is kept for backwards compatibility). 93234285Sdim JVM_VARIANTS=`$ECHO $JVM_VARIANTS_OPT | $SED -e 's/,/ /g' -e 's/minimal1/minimal/'` 94234285Sdim AC_MSG_RESULT([$JVM_VARIANTS]) 95234285Sdim 96234285Sdim # Check that the selected variants are valid 97234285Sdim 98234285Sdim # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326 99234285Sdim # Notice that the original variant failes on SLES 10 and 11 100234285Sdim NEEDLE=${VALID_JVM_VARIANTS// /$'\n'} 101234285Sdim STACK=${JVM_VARIANTS// /$'\n'} 102234285Sdim INVALID_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"` 103234285Sdim if test "x$INVALID_VARIANTS" != x; then 104234285Sdim AC_MSG_NOTICE([Unknown variant(s) specified: $INVALID_VARIANTS]) 105234285Sdim AC_MSG_ERROR([The available JVM variants are: $VALID_JVM_VARIANTS]) 106234285Sdim fi 107234285Sdim 108263508Sdim # All "special" variants share the same output directory ("server") 109263508Sdim VALID_MULTIPLE_JVM_VARIANTS="server client minimal" 110263508Sdim NEEDLE=${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'} 111234285Sdim STACK=${JVM_VARIANTS// /$'\n'} 112234285Sdim INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"` 113234285Sdim if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then 114234285Sdim AC_MSG_ERROR([You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS.]) 115234285Sdim fi 116234285Sdim 117234285Sdim # The "main" variant is the one used by other libs to link against during the 118234285Sdim # build. 119234285Sdim if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then 120234285Sdim MAIN_VARIANT_PRIO_ORDER="server client minimal" 121234285Sdim for variant in $MAIN_VARIANT_PRIO_ORDER; do 122234285Sdim if HOTSPOT_CHECK_JVM_VARIANT($variant); then 123234285Sdim JVM_VARIANT_MAIN="$variant" 124234285Sdim break 125234285Sdim fi 126234285Sdim done 127234285Sdim else 128234285Sdim JVM_VARIANT_MAIN="$JVM_VARIANTS" 129234285Sdim fi 130234285Sdim 131234285Sdim AC_SUBST(JVM_VARIANTS) 132234285Sdim AC_SUBST(VALID_JVM_VARIANTS) 133234285Sdim AC_SUBST(JVM_VARIANT_MAIN) 134234285Sdim 135234285Sdim if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then 136234285Sdim # zero behaves as a platform and rewrites these values. This is really weird. :( 137234285Sdim # We are guaranteed that we do not build any other variants when building zero. 138234285Sdim HOTSPOT_TARGET_CPU=zero 139234285Sdim HOTSPOT_TARGET_CPU_ARCH=zero 140234285Sdim fi 141234285Sdim]) 142234285Sdim 143234285Sdim############################################################################### 144234285Sdim# Check if dtrace should be enabled and has all prerequisites present. 145234285Sdim# 146234285SdimAC_DEFUN_ONCE([HOTSPOT_SETUP_DTRACE], 147234285Sdim[ 148234285Sdim # Test for dtrace dependencies 149234285Sdim AC_ARG_ENABLE([dtrace], [AS_HELP_STRING([--enable-dtrace@<:@=yes/no/auto@:>@], 150234285Sdim [enable dtrace. Default is auto, where dtrace is enabled if all dependencies 151234285Sdim are present.])]) 152234285Sdim 153234285Sdim DTRACE_DEP_MISSING=false 154234285Sdim 155234285Sdim AC_MSG_CHECKING([for dtrace tool]) 156234285Sdim if test "x$DTRACE" != "x" && test -x "$DTRACE"; then 157234285Sdim AC_MSG_RESULT([$DTRACE]) 158234285Sdim else 159234285Sdim AC_MSG_RESULT([not found, cannot build dtrace]) 160234285Sdim DTRACE_DEP_MISSING=true 161234285Sdim fi 162234285Sdim 163234285Sdim AC_CHECK_HEADERS([sys/sdt.h], [DTRACE_HEADERS_OK=yes],[DTRACE_HEADERS_OK=no]) 164234285Sdim if test "x$DTRACE_HEADERS_OK" != "xyes"; then 165263508Sdim DTRACE_DEP_MISSING=true 166234285Sdim fi 167239462Sdim 168239462Sdim AC_MSG_CHECKING([if dtrace should be built]) 169263508Sdim if test "x$enable_dtrace" = "xyes"; then 170263508Sdim if test "x$DTRACE_DEP_MISSING" = "xtrue"; then 171263508Sdim AC_MSG_RESULT([no, missing dependencies]) 172239462Sdim HELP_MSG_MISSING_DEPENDENCY([dtrace]) 173239462Sdim AC_MSG_ERROR([Cannot enable dtrace with missing dependencies. See above. $HELP_MSG]) 174239462Sdim else 175239462Sdim INCLUDE_DTRACE=true 176239462Sdim AC_MSG_RESULT([yes, forced]) 177239462Sdim fi 178239462Sdim elif test "x$enable_dtrace" = "xno"; then 179239462Sdim INCLUDE_DTRACE=false 180263508Sdim AC_MSG_RESULT([no, forced]) 181263508Sdim elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then 182263508Sdim if test "x$DTRACE_DEP_MISSING" = "xtrue"; then 183263508Sdim INCLUDE_DTRACE=false 184263508Sdim AC_MSG_RESULT([no, missing dependencies]) 185263508Sdim else 186263508Sdim INCLUDE_DTRACE=true 187263508Sdim AC_MSG_RESULT([yes, dependencies present]) 188239462Sdim fi 189239462Sdim else 190263508Sdim AC_MSG_ERROR([Invalid value for --enable-dtrace: $enable_dtrace]) 191263508Sdim fi 192263508Sdim]) 193239462Sdim 194239462Sdim################################################################################ 195239462Sdim# Check if AOT should be enabled 196239462Sdim# 197239462SdimAC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT], 198239462Sdim[ 199239462Sdim AC_ARG_ENABLE([aot], [AS_HELP_STRING([--enable-aot@<:@=yes/no/auto@:>@], 200263508Sdim [enable ahead of time compilation feature. Default is auto, where aot is enabled if all dependencies are present.])]) 201263508Sdim 202263508Sdim if test "x$enable_aot" = "x" || test "x$enable_aot" = "xauto"; then 203263508Sdim ENABLE_AOT="true" 204263508Sdim elif test "x$enable_aot" = "xyes"; then 205263508Sdim ENABLE_AOT="true" 206263508Sdim elif test "x$enable_aot" = "xno"; then 207263508Sdim ENABLE_AOT="false" 208263508Sdim AC_MSG_CHECKING([if aot should be enabled]) 209263508Sdim AC_MSG_RESULT([no, forced]) 210263508Sdim else 211263508Sdim AC_MSG_ERROR([Invalid value for --enable-aot: $enable_aot]) 212263508Sdim fi 213263508Sdim 214263508Sdim if test "x$ENABLE_AOT" = "xtrue"; then 215263508Sdim # Only enable AOT on linux-X64. 216263508Sdim if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-x86_64"; then 217263508Sdim if test -e "$HOTSPOT_TOPDIR/src/jdk.aot"; then 218263508Sdim if test -e "$HOTSPOT_TOPDIR/src/jdk.vm.compiler"; then 219263508Sdim ENABLE_AOT="true" 220263508Sdim else 221263508Sdim ENABLE_AOT="false" 222263508Sdim if test "x$enable_aot" = "xyes"; then 223263508Sdim AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.vm.compiler sources. Remove --enable-aot.]) 224263508Sdim fi 225263508Sdim fi 226263508Sdim else 227263508Sdim ENABLE_AOT="false" 228234285Sdim if test "x$enable_aot" = "xyes"; then 229234285Sdim AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.aot sources. Remove --enable-aot.]) 230234285Sdim fi 231234285Sdim fi 232234285Sdim else 233234285Sdim ENABLE_AOT="false" 234234285Sdim if test "x$enable_aot" = "xyes"; then 235234285Sdim AC_MSG_ERROR([AOT is currently only supported on Linux-x86_64. Remove --enable-aot.]) 236234285Sdim fi 237234285Sdim fi 238234285Sdim fi 239234285Sdim 240234285Sdim AC_SUBST(ENABLE_AOT) 241234285Sdim]) 242234285Sdim 243234285Sdim############################################################################### 244234285Sdim# Set up all JVM features for each JVM variant. 245239462Sdim# 246239462SdimAC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES], 247234285Sdim[ 248234285Sdim # The user can in some cases supply additional jvm features. For the custom 249234285Sdim # variant, this defines the entire variant. 250234285Sdim AC_ARG_WITH([jvm-features], [AS_HELP_STRING([--with-jvm-features], 251234285Sdim [additional JVM features to enable (separated by comma), use '--help' to show possible values @<:@none@:>@])]) 252234285Sdim if test "x$with_jvm_features" != x; then 253234285Sdim AC_MSG_CHECKING([additional JVM features]) 254234285Sdim JVM_FEATURES=`$ECHO $with_jvm_features | $SED -e 's/,/ /g'` 255234285Sdim AC_MSG_RESULT([$JVM_FEATURES]) 256234285Sdim fi 257249423Sdim 258263508Sdim # Override hotspot cpu definitions for ARM platforms 259249423Sdim if test "x$OPENJDK_TARGET_CPU" = xarm; then 260249423Sdim HOTSPOT_TARGET_CPU=arm_32 261239462Sdim HOTSPOT_TARGET_CPU_DEFINE="ARM32" 262239462Sdim JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char" 263263508Sdim JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char" 264263508Sdim elif test "x$OPENJDK_TARGET_CPU" = xaarch64 && test "x$HOTSPOT_TARGET_CPU_PORT" = xarm64; then 265263508Sdim HOTSPOT_TARGET_CPU=arm_64 266234285Sdim HOTSPOT_TARGET_CPU_ARCH=arm 267234285Sdim JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char" 268239462Sdim JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char" 269239462Sdim fi 270239462Sdim 271234285Sdim # Verify that dependencies are met for explicitly set features. 272234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(jvmti) && ! HOTSPOT_CHECK_JVM_FEATURE(services); then 273234285Sdim AC_MSG_ERROR([Specified JVM feature 'jvmti' requires feature 'services']) 274234285Sdim fi 275234285Sdim 276234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(management) && ! HOTSPOT_CHECK_JVM_FEATURE(nmt); then 277239462Sdim AC_MSG_ERROR([Specified JVM feature 'management' requires feature 'nmt']) 278234285Sdim fi 279234285Sdim 280234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(jvmci) && ! (HOTSPOT_CHECK_JVM_FEATURE(compiler1) || HOTSPOT_CHECK_JVM_FEATURE(compiler2)); then 281234285Sdim AC_MSG_ERROR([Specified JVM feature 'jvmci' requires feature 'compiler2' or 'compiler1']) 282234285Sdim fi 283234285Sdim 284234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(compiler2) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then 285234285Sdim AC_MSG_ERROR([Specified JVM feature 'compiler2' requires feature 'all-gcs']) 286243830Sdim fi 287234285Sdim 288234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(vm-structs) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then 289239462Sdim AC_MSG_ERROR([Specified JVM feature 'vm-structs' requires feature 'all-gcs']) 290234285Sdim fi 291234285Sdim 292234285Sdim # Turn on additional features based on other parts of configure 293234285Sdim if test "x$INCLUDE_DTRACE" = "xtrue"; then 294234285Sdim JVM_FEATURES="$JVM_FEATURES dtrace" 295243830Sdim else 296234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(dtrace); then 297234285Sdim AC_MSG_ERROR([To enable dtrace, you must use --enable-dtrace]) 298234285Sdim fi 299234285Sdim fi 300263508Sdim 301234285Sdim if test "x$STATIC_BUILD" = "xtrue"; then 302263508Sdim JVM_FEATURES="$JVM_FEATURES static-build" 303234285Sdim else 304234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(static-build); then 305234285Sdim AC_MSG_ERROR([To enable static-build, you must use --enable-static-build]) 306234285Sdim fi 307234285Sdim fi 308263508Sdim 309234285Sdim if ! HOTSPOT_CHECK_JVM_VARIANT(zero) && ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then 310234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(zero); then 311234285Sdim AC_MSG_ERROR([To enable zero/zeroshark, you must use --with-jvm-variants=zero/zeroshark]) 312234285Sdim fi 313234285Sdim fi 314234285Sdim 315234285Sdim if ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then 316234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(shark); then 317239462Sdim AC_MSG_ERROR([To enable shark, you must use --with-jvm-variants=zeroshark]) 318243830Sdim fi 319249423Sdim fi 320249423Sdim 321234285Sdim # Only enable jvmci on x86_64, sparcv9 and aarch64. 322234285Sdim if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \ 323263508Sdim test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \ 324263508Sdim test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then 325234285Sdim JVM_FEATURES_jvmci="jvmci" 326234285Sdim else 327234285Sdim JVM_FEATURES_jvmci="" 328234285Sdim fi 329234285Sdim 330234285Sdim AC_MSG_CHECKING([if jdk.vm.compiler should be built]) 331234285Sdim if HOTSPOT_CHECK_JVM_FEATURE(graal); then 332234285Sdim AC_MSG_RESULT([yes, forced]) 333234285Sdim if test "x$JVM_FEATURES_jvmci" != "xjvmci" ; then 334234285Sdim AC_MSG_ERROR([Specified JVM feature 'graal' requires feature 'jvmci']) 335234285Sdim fi 336234285Sdim INCLUDE_GRAAL="true" 337243830Sdim else 338234285Sdim # By default enable graal build where AOT is available 339234285Sdim if test "x$ENABLE_AOT" = "xtrue"; then 340234285Sdim AC_MSG_RESULT([yes]) 341263508Sdim JVM_FEATURES_graal="graal" 342249423Sdim INCLUDE_GRAAL="true" 343249423Sdim else 344234285Sdim AC_MSG_RESULT([no]) 345234285Sdim JVM_FEATURES_graal="" 346234285Sdim INCLUDE_GRAAL="false" 347234285Sdim fi 348234285Sdim fi 349234285Sdim 350234285Sdim AC_SUBST(INCLUDE_GRAAL) 351243830Sdim 352243830Sdim AC_MSG_CHECKING([if aot should be enabled]) 353263508Sdim if test "x$ENABLE_AOT" = "xtrue"; then 354243830Sdim if test "x$enable_aot" = "xyes"; then 355243830Sdim AC_MSG_RESULT([yes, forced]) 356243830Sdim else 357243830Sdim AC_MSG_RESULT([yes]) 358243830Sdim fi 359234285Sdim JVM_FEATURES_aot="aot" 360234285Sdim else 361234285Sdim if test "x$enable_aot" = "xno"; then 362234285Sdim AC_MSG_RESULT([no, forced]) 363234285Sdim else 364234285Sdim AC_MSG_RESULT([no]) 365249423Sdim fi 366249423Sdim JVM_FEATURES_aot="" 367249423Sdim fi 368249423Sdim 369249423Sdim if test "x$OPENJDK_TARGET_CPU" = xarm ; then 370249423Sdim # Default to use link time optimizations on minimal on arm 371251662Sdim JVM_FEATURES_link_time_opt="link-time-opt" 372251662Sdim else 373251662Sdim JVM_FEATURES_link_time_opt="" 374251662Sdim fi 375249423Sdim 376249423Sdim # All variants but minimal (and custom) get these features 377249423Sdim NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti fprof vm-structs jni-check services management all-gcs nmt cds" 378249423Sdim 379249423Sdim # Enable features depending on variant. 380249423Sdim JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci $JVM_FEATURES_aot $JVM_FEATURES_graal" 381249423Sdim JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci" 382249423Sdim JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES" 383249423Sdim JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES $JVM_FEATURES_link_time_opt" 384249423Sdim JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES" 385249423Sdim JVM_FEATURES_zeroshark="zero shark $NON_MINIMAL_FEATURES $JVM_FEATURES" 386249423Sdim JVM_FEATURES_custom="$JVM_FEATURES" 387249423Sdim 388234285Sdim AC_SUBST(JVM_FEATURES_server) 389234285Sdim AC_SUBST(JVM_FEATURES_client) 390239462Sdim AC_SUBST(JVM_FEATURES_core) 391239462Sdim AC_SUBST(JVM_FEATURES_minimal) 392234285Sdim AC_SUBST(JVM_FEATURES_zero) 393234285Sdim AC_SUBST(JVM_FEATURES_zeroshark) 394234285Sdim AC_SUBST(JVM_FEATURES_custom) 395249423Sdim 396249423Sdim # Used for verification of Makefiles by check-jvm-feature 397249423Sdim AC_SUBST(VALID_JVM_FEATURES) 398249423Sdim 399249423Sdim # We don't support --with-jvm-interpreter anymore, use zero instead. 400249423Sdim BASIC_DEPRECATED_ARG_WITH(jvm-interpreter) 401234285Sdim]) 402234285Sdim 403234285Sdim############################################################################### 404234285Sdim# Validate JVM features once all setup is complete, including custom setup. 405234285Sdim# 406234285SdimAC_DEFUN_ONCE([HOTSPOT_VALIDATE_JVM_FEATURES], 407234285Sdim[ 408234285Sdim # Keep feature lists sorted and free of duplicates 409234285Sdim JVM_FEATURES_server="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_server | $SORT -u))" 410234285Sdim JVM_FEATURES_client="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_client | $SORT -u))" 411234285Sdim JVM_FEATURES_core="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_core | $SORT -u))" 412234285Sdim JVM_FEATURES_minimal="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_minimal | $SORT -u))" 413234285Sdim JVM_FEATURES_zero="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zero | $SORT -u))" 414234285Sdim JVM_FEATURES_zeroshark="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zeroshark | $SORT -u))" 415234285Sdim JVM_FEATURES_custom="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_custom | $SORT -u))" 416234285Sdim 417234285Sdim # Validate features 418234285Sdim for variant in $JVM_VARIANTS; do 419234285Sdim AC_MSG_CHECKING([JVM features for JVM variant '$variant']) 420234285Sdim features_var_name=JVM_FEATURES_$variant 421234285Sdim JVM_FEATURES_TO_TEST=${!features_var_name} 422234285Sdim AC_MSG_RESULT([$JVM_FEATURES_TO_TEST]) 423234285Sdim NEEDLE=${VALID_JVM_FEATURES// /$'\n'} 424239462Sdim STACK=${JVM_FEATURES_TO_TEST// /$'\n'} 425239462Sdim INVALID_FEATURES=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"` 426234285Sdim if test "x$INVALID_FEATURES" != x; then 427234285Sdim AC_MSG_ERROR([Invalid JVM feature(s): $INVALID_FEATURES]) 428234285Sdim fi 429249423Sdim done 430249423Sdim]) 431249423Sdim 432249423Sdim################################################################################ 433249423Sdim# 434249423Sdim# Specify which sources will be used to build the 64-bit ARM port 435234285Sdim# 436234285Sdim# --with-cpu-port=arm64 will use hotspot/src/cpu/arm 437234285Sdim# --with-cpu-port=aarch64 will use hotspot/src/cpu/aarch64 438234285Sdim# 439234285SdimAC_DEFUN([SETUP_HOTSPOT_TARGET_CPU_PORT], 440234285Sdim[ 441234285Sdim AC_ARG_WITH(cpu-port, [AS_HELP_STRING([--with-cpu-port], 442234285Sdim [specify sources to use for Hotspot 64-bit ARM port (arm64,aarch64) @<:@aarch64@:>@ ])]) 443234285Sdim 444234285Sdim if test "x$with_cpu_port" != x; then 445234285Sdim if test "x$OPENJDK_TARGET_CPU" != xaarch64; then 446234285Sdim AC_MSG_ERROR([--with-cpu-port only available on aarch64]) 447234285Sdim fi 448234285Sdim if test "x$with_cpu_port" != xarm64 && \ 449234285Sdim test "x$with_cpu_port" != xaarch64; then 450234285Sdim AC_MSG_ERROR([--with-cpu-port must specify arm64 or aarch64]) 451234285Sdim fi 452234285Sdim HOTSPOT_TARGET_CPU_PORT="$with_cpu_port" 453234285Sdim fi 454234285Sdim]) 455234285Sdim 456251662Sdim 457251662Sdim################################################################################ 458234285Sdim# Check if gtest should be built 459234285Sdim# 460239462SdimAC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_GTEST], 461234285Sdim[ 462239462Sdim AC_ARG_ENABLE([hotspot-gtest], [AS_HELP_STRING([--disable-hotspot-gtest], 463239462Sdim [Disables building of the Hotspot unit tests])]) 464239462Sdim 465234285Sdim if test -e "$HOTSPOT_TOPDIR/test/native"; then 466239462Sdim GTEST_DIR_EXISTS="true" 467239462Sdim else 468243830Sdim GTEST_DIR_EXISTS="false" 469239462Sdim fi 470239462Sdim 471234285Sdim AC_MSG_CHECKING([if Hotspot gtest unit tests should be built]) 472234285Sdim if test "x$enable_hotspot_gtest" = "xyes"; then 473234285Sdim if test "x$GTEST_DIR_EXISTS" = "xtrue"; then 474234285Sdim AC_MSG_RESULT([yes, forced]) 475234285Sdim BUILD_GTEST="true" 476234285Sdim else 477234285Sdim AC_MSG_ERROR([Cannot build gtest without the test source]) 478234285Sdim fi 479234285Sdim elif test "x$enable_hotspot_gtest" = "xno"; then 480234285Sdim AC_MSG_RESULT([no, forced]) 481234285Sdim BUILD_GTEST="false" 482234285Sdim elif test "x$enable_hotspot_gtest" = "x"; then 483234285Sdim if test "x$GTEST_DIR_EXISTS" = "xtrue"; then 484234285Sdim AC_MSG_RESULT([yes]) 485234285Sdim BUILD_GTEST="true" 486239462Sdim else 487239462Sdim AC_MSG_RESULT([no]) 488239462Sdim BUILD_GTEST="false" 489239462Sdim fi 490239462Sdim else 491239462Sdim AC_MSG_ERROR([--enable-gtest must be either yes or no]) 492239462Sdim fi 493263508Sdim 494239462Sdim AC_SUBST(BUILD_GTEST) 495263508Sdim]) 496239462Sdim