--- a/common/autoconf/basics.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/basics.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -749,8 +749,8 @@
BASIC_PREPEND_TO_PATH([PATH],$EXTRA_PATH)
if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
- # Add extra search paths on solaris for utilities like ar and as etc...
- PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
+ # Add extra search paths on solaris for utilities like ar, as, dtrace etc...
+ PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:/usr/sbin"
fi
AC_MSG_CHECKING([for sysroot])
@@ -777,7 +777,7 @@
# Create a default ./build/target-variant-debuglevel output root.
if test "x${CONF_NAME}" = x; then
AC_MSG_RESULT([in default location])
- CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${JVM_VARIANTS_WITH_AND}-${DEBUG_LEVEL}"
else
AC_MSG_RESULT([in build directory with custom name])
fi
@@ -1037,6 +1037,7 @@
BASIC_PATH_PROGS(HG, hg)
BASIC_PATH_PROGS(STAT, stat)
BASIC_PATH_PROGS(TIME, time)
+ BASIC_PATH_PROGS(DTRACE, dtrace)
BASIC_PATH_PROGS(PATCH, [gpatch patch])
# Check if it's GNU time
IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'`
--- a/common/autoconf/build-performance.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/build-performance.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -364,6 +364,9 @@
elif test "x$ICECC" != "x"; then
AC_MSG_RESULT([no, does not work effectively with icecc])
USE_PRECOMPILED_HEADER=0
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ AC_MSG_RESULT([no, does not work with Solaris Studio])
+ USE_PRECOMPILED_HEADER=0
else
AC_MSG_RESULT([yes])
fi
--- a/common/autoconf/buildjdk-spec.gmk.in Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/buildjdk-spec.gmk.in Mon Apr 11 20:16:33 2016 +0200
@@ -57,6 +57,12 @@
OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@
OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
+HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@
+HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@
+HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@
+HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@
+HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@
+
CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@
CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@
LDFLAGS_JDKLIB := @OPENJDK_BUILD_LDFLAGS_JDKLIB@
@@ -65,6 +71,11 @@
LDFLAGS_JDKEXE := @OPENJDK_BUILD_LDFLAGS_JDKEXE@
OPENJDK_TARGET_CPU_JLI_CFLAGS := @OPENJDK_BUILD_CPU_JLI_CFLAGS@
+JVM_CFLAGS := @OPENJDK_BUILD_JVM_CFLAGS@
+JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@
+JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@
+JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@
+
# The compiler for the build platform is likely not warning compatible with the official
# compiler.
WARNINGS_AS_ERRORS := false
--- a/common/autoconf/compare.sh.in Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/compare.sh.in Mon Apr 11 20:16:33 2016 +0200
@@ -34,6 +34,7 @@
export OPENJDK_TARGET_OS="@OPENJDK_TARGET_OS@"
export OPENJDK_TARGET_CPU="@OPENJDK_TARGET_CPU@"
export OPENJDK_TARGET_CPU_LIBDIR="@OPENJDK_TARGET_CPU_LIBDIR@"
+export DEBUG_LEVEL="@DEBUG_LEVEL@"
export AWK="@AWK@"
export BASH="@BASH@"
--- a/common/autoconf/configure Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/configure Mon Apr 11 20:16:33 2016 +0200
@@ -283,7 +283,7 @@
EOT
- # Print additional help, e.g. a list of toolchains.
+ # Print additional help, e.g. a list of toolchains and JVM features.
# This must be done by the autoconf script.
( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $conf_script_to_run PRINTF=printf )
--- a/common/autoconf/configure.ac Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/configure.ac Mon Apr 11 20:16:33 2016 +0200
@@ -95,10 +95,8 @@
# These are needed to be able to create a configuration name (and thus the output directory)
JDKOPT_SETUP_JDK_VARIANT
-HOTSPOT_SETUP_JVM_INTERPRETER
+JDKOPT_SETUP_DEBUG_LEVEL
HOTSPOT_SETUP_JVM_VARIANTS
-JDKOPT_SETUP_DEBUG_LEVEL
-HOTSPOT_SETUP_DEBUG_LEVEL
# With basic setup done, call the custom early hook.
CUSTOM_EARLY_HOOK
@@ -135,7 +133,6 @@
# We need build & target for this.
JDKOPT_SETUP_JDK_OPTIONS
JDKOPT_SETUP_JLINK_OPTIONS
-HOTSPOT_SETUP_HOTSPOT_OPTIONS
JDKVER_SETUP_JDK_VERSION_NUMBERS
###############################################################################
@@ -207,6 +204,10 @@
JDKOPT_SETUP_DEBUG_SYMBOLS
JDKOPT_SETUP_CODE_COVERAGE
+# Need toolchain to setup dtrace
+HOTSPOT_SETUP_DTRACE
+HOTSPOT_SETUP_JVM_FEATURES
+
###############################################################################
#
# Check dependencies for external and internal libraries.
@@ -225,7 +226,7 @@
#
###############################################################################
-HOTSPOT_SETUP_BUILD_TWEAKS
+HOTSPOT_SETUP_LEGACY_BUILD
JDKOPT_DETECT_INTREE_EC
###############################################################################
@@ -267,6 +268,9 @@
# At the end, call the custom hook. (Dummy macro if no custom sources available)
CUSTOM_LATE_HOOK
+# This needs to be done after CUSTOM_LATE_HOOK since we can setup custom features.
+HOTSPOT_VALIDATE_JVM_FEATURES
+
# We're messing a bit with internal autoconf variables to put the config.status
# in the output directory instead of the current directory.
CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
--- a/common/autoconf/flags.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/flags.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -61,6 +61,10 @@
AC_SUBST(LEGACY_EXTRA_CXXFLAGS)
AC_SUBST(LEGACY_EXTRA_LDFLAGS)
+ AC_SUBST(EXTRA_CFLAGS)
+ AC_SUBST(EXTRA_CXXFLAGS)
+ AC_SUBST(EXTRA_LDFLAGS)
+
# The global CFLAGS and LDLAGS variables are used by configure tests and
# should include the extra parameters
CFLAGS="$EXTRA_CFLAGS"
@@ -211,8 +215,10 @@
# On Windows, we need to set RC flags.
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
RC_FLAGS="-nologo -l0x409"
+ JVM_RCFLAGS="-nologo"
if test "x$DEBUG_LEVEL" = xrelease; then
RC_FLAGS="$RC_FLAGS -DNDEBUG"
+ JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG"
fi
# The version variables used to create RC_FLAGS may be overridden
@@ -228,8 +234,19 @@
-D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
-D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
-D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
+
+ JVM_RCFLAGS="$JVM_RCFLAGS \
+ -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \
+ -D\"HS_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \
+ -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \
+ -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \
+ -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \
+ -D\"HS_FNAME=jvm.dll\" \
+ -D\"HS_INTERNAL_NAME=jvm\""
fi
AC_SUBST(RC_FLAGS)
+ AC_SUBST(JVM_RCFLAGS)
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
# silence copyright notice and other headers.
@@ -237,7 +254,7 @@
fi
])
-AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
[
###############################################################################
#
@@ -255,6 +272,7 @@
SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
else
SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
fi
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
@@ -280,6 +298,10 @@
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
+
+ if test "x$STATIC_BUILD" = xfalse; then
+ JVM_CFLAGS="$JVM_CFLAGS -fPIC"
+ fi
else
# Default works for linux, might work on other platforms as well.
PICFLAG='-fPIC'
@@ -339,11 +361,6 @@
AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
AC_SUBST(SHARED_LIBRARY_FLAGS)
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
- CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
- CFLAGS_JDKLIB_EXTRA='-xstrconst'
- fi
# The (cross) compiler is now configured, we can now test capabilities
# of the target platform.
])
@@ -434,6 +451,22 @@
AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
+ # Debug symbols for JVM_CFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs"
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ else
+ # -g0 does not disable inlining, which -g does.
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+"
+ else
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ fi
+ AC_SUBST(JVM_CFLAGS_SYMBOLS)
+
# bounds, memory and behavior checking options
if test "x$TOOLCHAIN_TYPE" = xgcc; then
case $DEBUG_LEVEL in
@@ -444,7 +477,7 @@
# no adjustment
;;
slowdebug )
- # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
+ # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
# get's added conditionally on whether we produce debug symbols or not.
# This is most likely not really correct.
@@ -455,40 +488,59 @@
CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ if test "x$STACK_PROTECTOR_CFLAG" != x; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ fi
;;
esac
fi
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ JVM_CFLAGS="$JVM_CFLAGS -homeparams"
+ fi
+ fi
+ fi
+
# Optimization levels
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
# FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
+ C_O_FLAG_HIGHEST_JVM="-xO4"
C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
C_O_FLAG_DEBUG="-xregs=no%frameptr"
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-xregs=no%frameptr"
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
+ CXX_O_FLAG_DEBUG_JVM=""
CXX_O_FLAG_NONE="-xregs=no%frameptr"
if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
fi
elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ C_O_FLAG_HIGHEST_JVM="-xO4"
C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_DEBUG=""
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_DEBUG=""
+ CXX_O_FLAG_DEBUG_JVM=""
CXX_O_FLAG_NONE=""
fi
else
@@ -498,48 +550,75 @@
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On MacOSX we optimize for size, something
# we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
C_O_FLAG_HIGHEST="-Os"
C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
else
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
fi
C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
C_O_FLAG_NONE="-O0"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On MacOSX we optimize for size, something
# we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
C_O_FLAG_HIGHEST="-Os"
C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
else
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
fi
C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
C_O_FLAG_NONE="-O0"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3 -qstrict"
C_O_FLAG_NORM="-O2"
C_O_FLAG_DEBUG="-qnoopt"
+ # FIXME: Value below not verified.
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-qnoopt"
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ C_O_FLAG_HIGHEST_JVM="-O2 -Oy-"
C_O_FLAG_HIGHEST="-O2"
C_O_FLAG_HI="-O1"
C_O_FLAG_NORM="-O1"
C_O_FLAG_DEBUG="-Od"
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-Od"
+ C_O_FLAG_SIZE="-Os"
fi
+ CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM"
CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST"
CXX_O_FLAG_HI="$C_O_FLAG_HI"
CXX_O_FLAG_NORM="$C_O_FLAG_NORM"
CXX_O_FLAG_DEBUG="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM"
CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
+ CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE"
fi
# Adjust optimization flags according to debug level.
@@ -554,51 +633,105 @@
;;
slowdebug )
# Disable optimization
+ C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM"
C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG"
C_O_FLAG_HI="$C_O_FLAG_DEBUG"
C_O_FLAG_NORM="$C_O_FLAG_DEBUG"
+ C_O_FLAG_SIZE="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM"
CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG"
CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG"
CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG"
;;
esac
+ AC_SUBST(C_O_FLAG_HIGHEST_JVM)
AC_SUBST(C_O_FLAG_HIGHEST)
AC_SUBST(C_O_FLAG_HI)
AC_SUBST(C_O_FLAG_NORM)
AC_SUBST(C_O_FLAG_DEBUG)
AC_SUBST(C_O_FLAG_NONE)
+ AC_SUBST(C_O_FLAG_SIZE)
+ AC_SUBST(CXX_O_FLAG_HIGHEST_JVM)
AC_SUBST(CXX_O_FLAG_HIGHEST)
AC_SUBST(CXX_O_FLAG_HI)
AC_SUBST(CXX_O_FLAG_NORM)
AC_SUBST(CXX_O_FLAG_DEBUG)
AC_SUBST(CXX_O_FLAG_NONE)
+ AC_SUBST(CXX_O_FLAG_SIZE)
])
-AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
+
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
+[
+
+ FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET])
+ FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_])
+
+ # Tests are only ever compiled for TARGET
+ # Flags for compiling test libraries
+ CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
+ CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+
+ # Flags for compiling test executables
+ CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
+ CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
+
+ AC_SUBST(CFLAGS_TESTLIB)
+ AC_SUBST(CFLAGS_TESTEXE)
+ AC_SUBST(CXXFLAGS_TESTLIB)
+ AC_SUBST(CXXFLAGS_TESTEXE)
+
+ LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
+ LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
+
+ AC_SUBST(LDFLAGS_TESTLIB)
+ AC_SUBST(LDFLAGS_TESTEXE)
+
+])
+
+################################################################################
+# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
+# conditionals against.
+# $2 - Optional prefix for each variable defined.
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
[
# Special extras...
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
- if test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
- CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
- CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then
+ $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
fi
- CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
- CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ $2CXXSTD_CXXFLAG="-std=gnu++98"
+ FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [[$]$2CXXSTD_CXXFLAG -Werror],
+ IF_FALSE: [$2CXXSTD_CXXFLAG=""])
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2CXXSTD_CXXFLAG}"
+ AC_SUBST([$2CXXSTD_CXXFLAG])
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -D__solaris__"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__"
+ $2CFLAGS_JDKLIB_EXTRA='-xstrconst'
CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
- elif test "x$TOOLCHAIN_TYPE" = xgcc; then
- CXXSTD_CXXFLAG="-std=gnu++98"
- FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CXXSTD_CXXFLAG -Werror],
- IF_FALSE: [CXXSTD_CXXFLAG=""])
- CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}"
- AC_SUBST([CXXSTD_CXXFLAG])
fi
- CFLAGS_JDK="${CFLAGS_JDK} $EXTRA_CFLAGS"
- CXXFLAGS_JDK="${CXXFLAGS_JDK} $EXTRA_CXXFLAGS"
- LDFLAGS_JDK="${LDFLAGS_JDK} $EXTRA_LDFLAGS"
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -D__solaris__"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__"
+ $2CFLAGS_JDKLIB_EXTRA='-xstrconst'
+ fi
+
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}"
###############################################################################
#
@@ -607,79 +740,94 @@
#
# Setup compiler/platform specific flags into
- # CFLAGS_JDK - C Compiler flags
- # CXXFLAGS_JDK - C++ Compiler flags
- # COMMON_CCXXFLAGS_JDK - common to C and C++
+ # $2CFLAGS_JDK - C Compiler flags
+ # $2CXXFLAGS_JDK - C++ Compiler flags
+ # $2COMMON_CCXXFLAGS_JDK - common to C and C++
if test "x$TOOLCHAIN_TYPE" = xgcc; then
- if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fcheck-new"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
# Force compatibility with i586 on 32 bit intel platforms.
- COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
+ $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586"
fi
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
-pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
- case $OPENJDK_TARGET_CPU_ARCH in
+ case $OPENJDK_$1_CPU_ARCH in
arm )
# on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
- CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
;;
ppc )
# on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
- CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
;;
* )
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
- CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
;;
esac
TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS)
elif test "x$TOOLCHAIN_TYPE" = xclang; then
- if test "x$OPENJDK_TARGET_OS" = xlinux; then
- if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -flimit-debug-info"
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ if test "x$OPENJDK_$1_CPU" = xx86; then
# Force compatibility with i586 on 32 bit intel platforms.
- COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
+ $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586"
fi
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-sometimes-uninitialized"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
-pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
- case $OPENJDK_TARGET_CPU_ARCH in
+ case $OPENJDK_$1_CPU_ARCH in
ppc )
# on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
- CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
;;
* )
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
- CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
;;
esac
fi
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
- if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSPARC_WORKS"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ if test "x$OPENJDK_$1_CPU_ARCH" = xx86; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_$1_CPU_LEGACY_LIB"
fi
- CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
- CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
- CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
- CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \
-MD -Zc:wchar_t- -W3 -wd4800 \
-DWIN32_LEAN_AND_MEAN \
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-D_WINSOCK_DEPRECATED_NO_WARNINGS \
-DWIN32 -DIAL"
- if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
else
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
fi
# If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
# avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
# studio.
if test "x$TOOLCHAIN_VERSION" = "x2010"; then
STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
fi
fi
@@ -688,8 +836,8 @@
# Adjust flags according to debug level.
case $DEBUG_LEVEL in
fastdebug | slowdebug )
- CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
- CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
JAVAC_FLAGS="$JAVAC_FLAGS -g"
;;
release )
@@ -703,58 +851,141 @@
# -D is universally accepted.
# Setup endianness
- if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
+ if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then
# The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
# Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
# (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
# Note: -Dmacro is the same as #define macro 1
# -Dmacro= is the same as #define macro
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
else
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
fi
else
# Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they
# are defined in the system?
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
else
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
fi
fi
# Setup target OS define. Use OS target name but in upper case.
- OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
+ OPENJDK_$1_OS_UPPERCASE=`$ECHO $OPENJDK_$1_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D$OPENJDK_$1_OS_UPPERCASE"
# Setup target CPU
- OPENJDK_TARGET_CCXXFLAGS_JDK="$OPENJDK_TARGET_CCXXFLAGS_JDK \
- $ADD_LP64 \
- -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
- OPENJDK_BUILD_CCXXFLAGS_JDK="$OPENJDK_BUILD_CCXXFLAGS_JDK \
- $OPENJDK_BUILD_ADD_LP64 \
- -DARCH='\"$OPENJDK_BUILD_CPU_LEGACY\"' -D$OPENJDK_BUILD_CPU_LEGACY"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_$1_ADD_LP64 \
+ -DARCH='\"$OPENJDK_$1_CPU_LEGACY\"' -D$OPENJDK_$1_CPU_LEGACY"
# Setup debug/release defines
if test "x$DEBUG_LEVEL" = xrelease; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DNDEBUG"
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DTRIMMED"
fi
else
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DDEBUG"
fi
# Set some additional per-OS defines.
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
- elif test "x$OPENJDK_TARGET_OS" = xbsd; then
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DLINUX"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -pipe -fPIC -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSOLARIS"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none -KPIC -mt -xwe -features=no%except"
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_ALLBSD_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced -qhot=level=1 -qinline \
+ -qinlglue -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$OPENJDK_$1_OS" = xbsd; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_$1_OS" = xwindows; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xwindows-x86; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ if test "x$OPENJDK_$1_CPU_ENDIAN" = xbig; then
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ else
+ # Little endian machine uses ELFv2 ABI.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=power7 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qarch=ppc64"
+ fi
+ fi
+
+ if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_$1_CPU_BITS" = x64; then
+ if test "x$OPENJDK_$1_OS" != xsolaris && test "x$OPENJDK_$1_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set $2JVM_CFLAGS warning handling
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8],
+ IF_AT_LEAST: [
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+ ]
+ )
+ fi
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero) && ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ # Non-zero builds have stricter warnings
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
fi
# Additional macosx handling
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
# Setting these parameters makes it an error to link to macosx APIs that are
# newer than the given OS version and makes the linked binaries compatible
# even if built on a newer version of the OS.
@@ -765,108 +996,112 @@
# The macro takes the version with no dots, ex: 1070
# Let the flags variables get resolved in make for easier override on make
# command line.
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
- LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
fi
# Setup some hard coded includes
- COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
-I${JDK_TOPDIR}/src/java.base/share/native/include \
- -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS/native/include \
- -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/include \
-I${JDK_TOPDIR}/src/java.base/share/native/libjava \
- -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava"
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava"
# The shared libraries are compiled using the picflag.
- CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CFLAGS_JDK $EXTRA_CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+ $2CFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \
+ [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK $PICFLAG [$]$2CFLAGS_JDKLIB_EXTRA"
+ $2CXXFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \
+ [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK $PICFLAG [$]$2CXXFLAGS_JDKLIB_EXTRA"
# Executable flags
- CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CFLAGS_JDK $EXTRA_CFLAGS_JDK"
- CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK"
-
- # The corresponding flags for building for the build platform. This is still an
- # approximation, we only need something that runs on this machine when cross
- # compiling the product.
- OPENJDK_BUILD_CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK \
- $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- OPENJDK_BUILD_CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK \
- $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
- OPENJDK_BUILD_CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK"
- OPENJDK_BUILD_CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK"
+ $2CFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK"
+ $2CXXFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK"
- AC_SUBST(CFLAGS_JDKLIB)
- AC_SUBST(CFLAGS_JDKEXE)
- AC_SUBST(CXXFLAGS_JDKLIB)
- AC_SUBST(CXXFLAGS_JDKEXE)
- AC_SUBST(OPENJDK_BUILD_CFLAGS_JDKLIB)
- AC_SUBST(OPENJDK_BUILD_CFLAGS_JDKEXE)
- AC_SUBST(OPENJDK_BUILD_CXXFLAGS_JDKLIB)
- AC_SUBST(OPENJDK_BUILD_CXXFLAGS_JDKEXE)
-
- # Flags for compiling test libraries
- CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
-
- # Flags for compiling test executables
- CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
- CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
-
- AC_SUBST(CFLAGS_TESTLIB)
- AC_SUBST(CFLAGS_TESTEXE)
- AC_SUBST(CXXFLAGS_TESTLIB)
- AC_SUBST(CXXFLAGS_TESTEXE)
+ AC_SUBST($2CFLAGS_JDKLIB)
+ AC_SUBST($2CFLAGS_JDKEXE)
+ AC_SUBST($2CXXFLAGS_JDKLIB)
+ AC_SUBST($2CXXFLAGS_JDKEXE)
# Setup LDFLAGS et al.
#
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
LDFLAGS_MICROSOFT="-nologo -opt:ref"
- LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
- if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
+ if test "x$OPENJDK_$1_CPU_BITS" = "x32"; then
LDFLAGS_SAFESH="-safeseh"
- LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386"
+ else
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
fi
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
# If this is a --hash-style=gnu system, use --hash-style=both, why?
# We have previously set HAS_GNU_HASH if this is the case
if test -n "$HAS_GNU_HASH"; then
- LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
- LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
+ $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE"
fi
- if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ if test "x$OPENJDK_$1_OS" = xlinux; then
# And since we now know that the linker is gnu, then add -z defs, to forbid
# undefined symbols in object files.
LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
- LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586"
+ fi
case $DEBUG_LEVEL in
release )
# tell linker to optimize libraries.
# Should this be supplied to the OSS linker as well?
LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
- LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
;;
slowdebug )
+ # Hotspot always let the linker optimize
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
if test "x$HAS_LINKER_NOW" = "xtrue"; then
# do relocations at load
- LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
- LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_NOW_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_NOW_FLAG"
fi
if test "x$HAS_LINKER_RELRO" = "xtrue"; then
# mark relocations read only
- LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
- LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
fi
;;
fastdebug )
+ # Hotspot always let the linker optimize
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
if test "x$HAS_LINKER_RELRO" = "xtrue"; then
# mark relocations read only
- LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
- LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
fi
;;
* )
@@ -876,85 +1111,122 @@
fi
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
- LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
LDFLAGS_CXX_SOLSTUDIO="-norunpath"
- LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -xarch=sparc"
+ fi
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
- LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
fi
# Customize LDFLAGS for executables
- LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDK}"
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
+ if test "x$OPENJDK_$1_CPU_BITS" = "x64"; then
LDFLAGS_STACK_SIZE=1048576
else
LDFLAGS_STACK_SIZE=327680
fi
- LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
- elif test "x$OPENJDK_TARGET_OS" = xlinux; then
- LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
+ elif test "x$OPENJDK_$1_OS" = xlinux; then
+ $2LDFLAGS_JDKEXE="[$]$2LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
fi
- OPENJDK_BUILD_LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE}"
- LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} ${EXTRA_LDFLAGS_JDK}"
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} ${$2EXTRA_LDFLAGS_JDK}"
# Customize LDFLAGS for libs
- LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDK}"
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} \
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} \
-libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
- JDKLIB_LIBS=""
+ $2JDKLIB_LIBS=""
else
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} \
- -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)"
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)"
+ if test "x$1" = "xTARGET"; then
# On some platforms (mac) the linker warns about non existing -L dirs.
# Add server first if available. Linking aginst client does not always produce the same results.
- # Only add client dir if client is being built. Add minimal (note not minimal1) if only building minimal1.
+ # Only add client/minimal dir if client/minimal is being built.
# Default to server for other variants.
- if test "x$JVM_VARIANT_SERVER" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
- elif test "x$JVM_VARIANT_CLIENT" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/client"
- elif test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/minimal"
+ if HOTSPOT_CHECK_JVM_VARIANT(server); then
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)/server"
+ elif HOTSPOT_CHECK_JVM_VARIANT(client); then
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)/client"
+ elif HOTSPOT_CHECK_JVM_VARIANT(minimal); then
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)/minimal"
else
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)/server"
+ fi
+ elif test "x$1" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_$1_CPU_LIBDIR)/server"
fi
- JDKLIB_LIBS="-ljava -ljvm"
+ $2JDKLIB_LIBS="-ljava -ljvm"
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
- JDKLIB_LIBS="$JDKLIB_LIBS -lc"
+ $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc"
fi
- # When building a buildjdk, it's always only the server variant
- OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} \
- -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
fi
- OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${LDFLAGS_JDKLIB}"
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${EXTRA_LDFLAGS_JDK}"
+ # Set $2JVM_LIBS (per os)
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_$1_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ $2SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ $2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ $2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm"
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_$1_OS" = xbsd; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm"
+ elif test "x$OPENJDK_$1_OS" = xwindows; then
+ $2JVM_LIBS="[$]$2JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
- AC_SUBST(LDFLAGS_JDKLIB)
- AC_SUBST(LDFLAGS_JDKEXE)
- AC_SUBST(OPENJDK_BUILD_LDFLAGS_JDKLIB)
- AC_SUBST(OPENJDK_BUILD_LDFLAGS_JDKEXE)
- AC_SUBST(JDKLIB_LIBS)
- AC_SUBST(JDKEXE_LIBS)
- AC_SUBST(LDFLAGS_CXX_JDK)
- AC_SUBST(LDFLAGS_HASH_STYLE)
+ # Set $2JVM_ASFLAGS
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}"
- LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
- LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
+ AC_SUBST($2LDFLAGS_JDKLIB)
+ AC_SUBST($2LDFLAGS_JDKEXE)
+ AC_SUBST($2JDKLIB_LIBS)
+ AC_SUBST($2JDKEXE_LIBS)
+ AC_SUBST($2LDFLAGS_CXX_JDK)
+ AC_SUBST($2LDFLAGS_HASH_STYLE)
- AC_SUBST(LDFLAGS_TESTLIB)
- AC_SUBST(LDFLAGS_TESTEXE)
+ AC_SUBST($2JVM_CFLAGS)
+ AC_SUBST($2JVM_LDFLAGS)
+ AC_SUBST($2JVM_ASFLAGS)
+ AC_SUBST($2JVM_LIBS)
+
])
# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
--- a/common/autoconf/generated-configure.sh Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/generated-configure.sh Mon Apr 11 20:16:33 2016 +0200
@@ -651,7 +651,21 @@
MEMORY_SIZE
NUM_CORES
ENABLE_INTREE_EC
+JVM_VARIANT_CORE
+JVM_VARIANT_ZEROSHARK
+JVM_VARIANT_ZERO
+JVM_VARIANT_HOTSPOT
+JVM_VARIANT_MINIMAL1
+JVM_VARIANT_CLIENT
+JVM_VARIANT_SERVER
+JVM_VARIANTS_COMMA
+TEST_IN_BUILD
HOTSPOT_MAKE_ARGS
+MACOSX_UNIVERSAL
+DEBUG_CLASSFILES
+FASTDEBUG
+VARIANT
+USE_NEW_HOTSPOT_BUILD
LIBZIP_CAN_USE_MMAP
LIBDL
LIBM
@@ -687,6 +701,15 @@
STATIC_CXX_SETTING
FIXPATH_DETACH_FLAG
FIXPATH
+VALID_JVM_FEATURES
+JVM_FEATURES_custom
+JVM_FEATURES_zeroshark
+JVM_FEATURES_zero
+JVM_FEATURES_minimal
+JVM_FEATURES_core
+JVM_FEATURES_client
+JVM_FEATURES_server
+INCLUDE_DTRACE
GCOV_ENABLED
STRIP_POLICY
DEBUG_BINARIES
@@ -702,22 +725,35 @@
ZERO_ARCHFLAG
LDFLAGS_TESTEXE
LDFLAGS_TESTLIB
+CXXFLAGS_TESTEXE
+CXXFLAGS_TESTLIB
+CFLAGS_TESTEXE
+CFLAGS_TESTLIB
+OPENJDK_BUILD_JVM_LIBS
+OPENJDK_BUILD_JVM_ASFLAGS
+OPENJDK_BUILD_JVM_LDFLAGS
+OPENJDK_BUILD_JVM_CFLAGS
+OPENJDK_BUILD_LDFLAGS_HASH_STYLE
+OPENJDK_BUILD_LDFLAGS_CXX_JDK
+OPENJDK_BUILD_JDKEXE_LIBS
+OPENJDK_BUILD_JDKLIB_LIBS
+OPENJDK_BUILD_LDFLAGS_JDKEXE
+OPENJDK_BUILD_LDFLAGS_JDKLIB
+OPENJDK_BUILD_CXXFLAGS_JDKEXE
+OPENJDK_BUILD_CXXFLAGS_JDKLIB
+OPENJDK_BUILD_CFLAGS_JDKEXE
+OPENJDK_BUILD_CFLAGS_JDKLIB
+OPENJDK_BUILD_CXXSTD_CXXFLAG
+JVM_LIBS
+JVM_ASFLAGS
+JVM_LDFLAGS
+JVM_CFLAGS
LDFLAGS_HASH_STYLE
LDFLAGS_CXX_JDK
JDKEXE_LIBS
JDKLIB_LIBS
-OPENJDK_BUILD_LDFLAGS_JDKEXE
-OPENJDK_BUILD_LDFLAGS_JDKLIB
LDFLAGS_JDKEXE
LDFLAGS_JDKLIB
-CXXFLAGS_TESTEXE
-CXXFLAGS_TESTLIB
-CFLAGS_TESTEXE
-CFLAGS_TESTLIB
-OPENJDK_BUILD_CXXFLAGS_JDKEXE
-OPENJDK_BUILD_CXXFLAGS_JDKLIB
-OPENJDK_BUILD_CFLAGS_JDKEXE
-OPENJDK_BUILD_CFLAGS_JDKLIB
CXXFLAGS_JDKEXE
CXXFLAGS_JDKLIB
CFLAGS_JDKEXE
@@ -726,16 +762,21 @@
NO_LIFETIME_DSE_CFLAG
NO_NULL_POINTER_CHECK_CFLAG
CXXSTD_CXXFLAG
+CXX_O_FLAG_SIZE
CXX_O_FLAG_NONE
CXX_O_FLAG_DEBUG
CXX_O_FLAG_NORM
CXX_O_FLAG_HI
CXX_O_FLAG_HIGHEST
+CXX_O_FLAG_HIGHEST_JVM
+C_O_FLAG_SIZE
C_O_FLAG_NONE
C_O_FLAG_DEBUG
C_O_FLAG_NORM
C_O_FLAG_HI
C_O_FLAG_HIGHEST
+C_O_FLAG_HIGHEST_JVM
+JVM_CFLAGS_SYMBOLS
CXXFLAGS_DEBUG_SYMBOLS
CFLAGS_DEBUG_SYMBOLS
CXX_FLAG_DEPS
@@ -747,6 +788,7 @@
SET_EXECUTABLE_ORIGIN
CXX_FLAG_REORDER
C_FLAG_REORDER
+JVM_RCFLAGS
RC_FLAGS
AR_OUT_OPTION
LD_OUT_OPTION
@@ -759,6 +801,7 @@
COMPILER_TARGET_BITS_FLAG
JT_HOME
JTREGEXE
+HOTSPOT_TOOLCHAIN_TYPE
USING_BROKEN_SUSE_LD
PACKAGE_PATH
USE_CLANG
@@ -821,6 +864,9 @@
CYGWIN_LINK
SYSROOT_LDFLAGS
SYSROOT_CFLAGS
+EXTRA_LDFLAGS
+EXTRA_CXXFLAGS
+EXTRA_CFLAGS
LEGACY_EXTRA_LDFLAGS
LEGACY_EXTRA_CXXFLAGS
LEGACY_EXTRA_CFLAGS
@@ -877,12 +923,12 @@
VERSION_MAJOR
MACOSX_BUNDLE_ID_BASE
MACOSX_BUNDLE_NAME_BASE
+HOTSPOT_VM_DISTRO
COMPANY_NAME
JDK_RC_PLATFORM_NAME
PRODUCT_SUFFIX
PRODUCT_NAME
LAUNCHER_NAME
-TEST_IN_BUILD
JLINK_KEEP_PACKAGED_MODULES
COPYRIGHT_YEAR
COMPRESS_JARS
@@ -904,6 +950,7 @@
DSYMUTIL
IS_GNU_TIME
PATCH
+DTRACE
TIME
STAT
HG
@@ -927,20 +974,10 @@
SPEC
SDKROOT
XCODEBUILD
-BUILD_VARIANT_RELEASE
-DEBUG_CLASSFILES
-FASTDEBUG
-VARIANT
+VALID_JVM_VARIANTS
+JVM_VARIANTS
DEBUG_LEVEL
-MACOSX_UNIVERSAL
-JVM_VARIANT_CORE
-JVM_VARIANT_ZEROSHARK
-JVM_VARIANT_ZERO
-JVM_VARIANT_MINIMAL1
-JVM_VARIANT_CLIENT
-JVM_VARIANT_SERVER
-JVM_VARIANTS
-JVM_INTERPRETER
+HOTSPOT_DEBUG_LEVEL
JDK_VARIANT
SET_OPENJDK
USERNAME
@@ -949,16 +986,29 @@
TOPDIR
PATH_SEP
ZERO_ARCHDEF
+HOTSPOT_BUILD_CPU_DEFINE
+HOTSPOT_BUILD_CPU_ARCH
+HOTSPOT_BUILD_CPU
+HOTSPOT_BUILD_OS_TYPE
+HOTSPOT_BUILD_OS
+OPENJDK_BUILD_OS_EXPORT_DIR
+OPENJDK_BUILD_CPU_JLI_CFLAGS
+OPENJDK_BUILD_CPU_OSARCH
+OPENJDK_BUILD_CPU_ISADIR
+OPENJDK_BUILD_CPU_LIBDIR
+OPENJDK_BUILD_CPU_LEGACY_LIB
+OPENJDK_BUILD_CPU_LEGACY
+HOTSPOT_TARGET_CPU_DEFINE
+HOTSPOT_TARGET_CPU_ARCH
+HOTSPOT_TARGET_CPU
+HOTSPOT_TARGET_OS_TYPE
+HOTSPOT_TARGET_OS
DEFINE_CROSS_COMPILE_ARCH
LP64
OPENJDK_TARGET_OS_EXPORT_DIR
-OPENJDK_BUILD_CPU_JLI_CFLAGS
OPENJDK_TARGET_CPU_JLI_CFLAGS
OPENJDK_TARGET_CPU_OSARCH
OPENJDK_TARGET_CPU_ISADIR
-OPENJDK_BUILD_CPU_LIBDIR
-OPENJDK_BUILD_CPU_LEGACY_LIB
-OPENJDK_BUILD_CPU_LEGACY
OPENJDK_TARGET_CPU_LIBDIR
OPENJDK_TARGET_CPU_LEGACY_LIB
OPENJDK_TARGET_CPU_LEGACY
@@ -1088,10 +1138,9 @@
enable_openjdk_only
with_custom_make_dir
with_jdk_variant
-with_jvm_interpreter
-with_jvm_variants
enable_debug
with_debug_level
+with_jvm_variants
with_devkit
with_sys_root
with_sysroot
@@ -1107,7 +1156,6 @@
enable_unlimited_crypto
with_copyright_year
enable_keep_packaged_modules
-enable_hotspot_test_in_build
with_milestone
with_update_version
with_user_release_suffix
@@ -1147,6 +1195,9 @@
enable_debug_symbols
enable_zip_debug_info
enable_native_coverage
+enable_dtrace
+with_jvm_features
+with_jvm_interpreter
with_stdc__lib
with_msvcr_dll
with_msvcp_dll
@@ -1172,6 +1223,8 @@
with_dxsdk
with_dxsdk_lib
with_dxsdk_include
+enable_new_hotspot_build
+enable_hotspot_test_in_build
with_num_cores
with_memory_size
with_jobs
@@ -1244,6 +1297,7 @@
HG
STAT
TIME
+DTRACE
PATCH
DSYMUTIL
XATTR
@@ -1923,8 +1977,6 @@
Enable unlimited crypto policy [disabled]
--disable-keep-packaged-modules
Do not keep packaged modules in jdk image [enable]
- --enable-hotspot-test-in-build
- run the Queens test after Hotspot build [disabled]
--enable-static-build enable static library build [disabled]
--disable-warnings-as-errors
do not consider native warnings to be an error
@@ -1936,10 +1988,18 @@
--enable-native-coverage
enable native compilation with code coverage
data[disabled]
+ --enable-dtrace[=yes/no/auto]
+ enable dtrace. Default is auto, where dtrace is
+ enabled if all dependencies are present.
--disable-freetype-bundling
disable bundling of the freetype library with the
build result [enabled on Windows or when using
--with-freetype, disabled otherwise]
+ --disable-new-hotspot-build
+ disable the new hotspot build system (use the old)
+ [enabled]
+ --enable-hotspot-test-in-build
+ run the Queens test after Hotspot build [disabled]
--enable-sjavac use sjavac to do fast incremental compiles
[disabled]
--disable-javac-server disable javac server [enabled]
@@ -1959,11 +2019,11 @@
--with-custom-make-dir Deprecated. Option is kept for backwards
compatibility and is ignored
--with-jdk-variant JDK variant to build (normal) [normal]
- --with-jvm-interpreter JVM interpreter to build (template, cpp) [template]
- --with-jvm-variants JVM variants (separated by commas) to build (server,
- client, minimal1, zero, zeroshark, core) [server]
--with-debug-level set the debug level (release, fastdebug, slowdebug,
optimized) [release]
+ --with-jvm-variants JVM variants (separated by commas) to build
+ (server,client,minimal,core,zero,zeroshark,custom)
+ [server]
--with-devkit use this devkit for compilers, tools and resources
--with-sys-root alias for --with-sysroot for backwards compatability
--with-sysroot use this directory as sysroot
@@ -2050,6 +2110,10 @@
--with-native-debug-symbols
set the native debug symbol configuration (none,
internal, external, zipped) [varying]
+ --with-jvm-features additional JVM features to enable (separated by
+ comma), use '--help' to show possible values [none]
+ --with-jvm-interpreter Deprecated. Option is kept for backwards
+ compatibility and is ignored
--with-stdc++lib=<static>,<dynamic>,<default>
force linking of the C++ runtime on Linux to either
static or dynamic, default is static with dynamic as
@@ -2170,6 +2234,7 @@
HG Override default value for HG
STAT Override default value for STAT
TIME Override default value for TIME
+ DTRACE Override default value for DTRACE
PATCH Override default value for PATCH
DSYMUTIL Override default value for DSYMUTIL
XATTR Override default value for XATTR
@@ -3969,6 +4034,13 @@
+
+################################################################################
+# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
+# conditionals against.
+# $2 - Optional prefix for each variable defined.
+
+
# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
# IF_FALSE: [RUN-IF-FALSE])
# ------------------------------------------------------------
@@ -4093,6 +4165,8 @@
PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
ccache)
PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
+ dtrace)
+ PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
esac
}
@@ -4162,37 +4236,66 @@
# questions.
#
+# All valid JVM features, regardless of platform
+VALID_JVM_FEATURES="compiler1 compiler2 zero shark minimal dtrace jvmti jvmci \
+ fprof vm-structs jni-check services management all-gcs nmt cds static-build"
+
+# All valid JVM variants
+VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
+
###############################################################################
-# Check which interpreter of the JVM we want to build.
-# Currently we have:
-# template: Template interpreter (the default)
-# cpp : C++ interpreter
+# Check if the specified JVM variant should be built. To be used in shell if
+# constructs, like this:
+# if HOTSPOT_CHECK_JVM_VARIANT(server); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_VARIANTS has setup variants.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+
+
+###############################################################################
+# Check if the specified JVM features are explicitly enabled. To be used in
+# shell if constructs, like this:
+# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
###############################################################################
-# Check which variants of the JVM that we want to build.
-# Currently we have:
-# server: normal interpreter and a C2 or tiered C1/C2 compiler
-# client: normal interpreter and C1 (no C2 compiler) (only 32-bit platforms)
-# minimal1: reduced form of client with optional VM services and features stripped out
-# zero: no machine code interpreter, no compiler
-# zeroshark: zero interpreter and shark/llvm compiler backend
-# core: interpreter only, no compiler (only works on some platforms)
-
+# Check which variants of the JVM that we want to build. Available variants are:
+# server: normal interpreter, and a tiered C1/C2 compiler
+# client: normal interpreter, and C1 (no C2 compiler)
+# minimal: reduced form of client with optional features stripped out
+# core: normal interpreter only, no compiler
+# zero: C++ based interpreter only, no compiler
+# zeroshark: C++ based interpreter, and a llvm-based compiler
+# custom: baseline JVM with no default features
+#
###############################################################################
-# Setup legacy vars/targets and new vars to deal with different debug levels.
-#
-# release: no debug information, all optimizations, no asserts.
-# optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'.
-# fastdebug: debug information (-g), all optimizations, all asserts
-# slowdebug: debug information (-g), no optimizations, all asserts
-#
-
-
-
-
+# Check if dtrace should be enabled and has all prerequisites present.
+#
+
+
+###############################################################################
+# Set up all JVM features for each JVM variant.
+#
+
+
+###############################################################################
+# Validate JVM features once all setup is complete, including custom setup.
+#
+
+
+###############################################################################
+# Support for old hotspot build. Remove once new hotspot build has proven
+# to work satisfactory.
+#
#
@@ -4529,7 +4632,7 @@
#
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -4613,7 +4716,7 @@
#
-# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -4664,6 +4767,9 @@
#
+# $1 - Either TARGET or BUILD to setup the variables for.
+
+
#%%% Build and target systems %%%
@@ -4950,7 +5056,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1458755892
+DATE_WHEN_GENERATED=1460103573
###############################################################################
#
@@ -4975,6 +5081,13 @@
TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
$PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
done
+ $PRINTF "\n"
+
+ # Print available jvm features
+ $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
+ $PRINTF "Which are valid to use depends on the target platform.\n "
+ $PRINTF "%s " $VALID_JVM_FEATURES
+ $PRINTF "\n"
# And now exit directly
exit 0
@@ -15215,6 +15328,7 @@
+
# Also store the legacy naming of the cpu.
# Ie i586 and amd64 instead of x86 and x86_64
OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
@@ -15245,37 +15359,6 @@
fi
- # Now do the same for OPENJDK_BUILD_CPU...
- # Also store the legacy naming of the cpu.
- # Ie i586 and amd64 instead of x86 and x86_64
- OPENJDK_BUILD_CPU_LEGACY="$OPENJDK_BUILD_CPU"
- if test "x$OPENJDK_BUILD_CPU" = xx86; then
- OPENJDK_BUILD_CPU_LEGACY="i586"
- elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
- # On all platforms except MacOSX replace x86_64 with amd64.
- OPENJDK_BUILD_CPU_LEGACY="amd64"
- fi
-
-
- # And the second legacy naming of the cpu.
- # Ie i386 and amd64 instead of x86 and x86_64.
- OPENJDK_BUILD_CPU_LEGACY_LIB="$OPENJDK_BUILD_CPU"
- if test "x$OPENJDK_BUILD_CPU" = xx86; then
- OPENJDK_BUILD_CPU_LEGACY_LIB="i386"
- elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
- OPENJDK_BUILD_CPU_LEGACY_LIB="amd64"
- fi
-
-
- # This is the name of the cpu (but using i386 and amd64 instead of
- # x86 and x86_64, respectively), preceeded by a /, to be used when
- # locating libraries. On macosx, it's empty, though.
- OPENJDK_BUILD_CPU_LIBDIR="/$OPENJDK_BUILD_CPU_LEGACY_LIB"
- if test "x$OPENJDK_BUILD_OS" = xmacosx; then
- OPENJDK_BUILD_CPU_LIBDIR=""
- fi
-
-
# OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
# /amd64 or /sparcv9. This string is appended to some library paths, like this:
# /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
@@ -15318,6 +15401,140 @@
fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_TARGET_OS_EXPORT_DIR=${OPENJDK_TARGET_OS_TYPE}
+ fi
+
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ A_LP64="LP64:="
+ # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+ # unpack200.exe
+ if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_ADD_LP64="-D_LP64=1"
+ fi
+ fi
+ LP64=$A_LP64
+
+
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ # FIXME: ... or should this include reduced builds..?
+ DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
+ else
+ DEFINE_CROSS_COMPILE_ARCH=""
+ fi
+
+
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_TARGET_OS=${OPENJDK_TARGET_OS}
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ HOTSPOT_TARGET_OS=bsd
+ fi
+
+
+ HOTSPOT_TARGET_OS_TYPE=${OPENJDK_TARGET_OS_TYPE}
+ if test "x$OPENJDK_TARGET_OS_TYPE" = xunix; then
+ HOTSPOT_TARGET_OS_TYPE=posix
+ fi
+
+
+ HOTSPOT_TARGET_CPU=${OPENJDK_TARGET_CPU}
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ HOTSPOT_TARGET_CPU=x86_32
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ HOTSPOT_TARGET_CPU=sparc
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ HOTSPOT_TARGET_CPU=ppc_64
+ fi
+
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_TARGET_CPU_ARCH=${OPENJDK_TARGET_CPU_ARCH}
+
+
+ # Setup HOTSPOT_TARGET_CPU_DEFINE
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ HOTSPOT_TARGET_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ HOTSPOT_TARGET_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ HOTSPOT_TARGET_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
+ HOTSPOT_TARGET_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ HOTSPOT_TARGET_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_TARGET_CPU" = xsparc; then
+ HOTSPOT_TARGET_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_TARGET_CPU" = xppc; then
+ HOTSPOT_TARGET_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_TARGET_CPU" = xs390; then
+ HOTSPOT_TARGET_CPU_DEFINE=S390
+ elif test "x$OPENJDK_TARGET_CPU" = ss390x; then
+ HOTSPOT_TARGET_CPU_DEFINE=S390
+ fi
+
+
+
+
+ # Also store the legacy naming of the cpu.
+ # Ie i586 and amd64 instead of x86 and x86_64
+ OPENJDK_BUILD_CPU_LEGACY="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_CPU_LEGACY="i586"
+ elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ # On all platforms except MacOSX replace x86_64 with amd64.
+ OPENJDK_BUILD_CPU_LEGACY="amd64"
+ fi
+
+
+ # And the second legacy naming of the cpu.
+ # Ie i386 and amd64 instead of x86 and x86_64.
+ OPENJDK_BUILD_CPU_LEGACY_LIB="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_CPU_LEGACY_LIB="i386"
+ elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_LEGACY_LIB="amd64"
+ fi
+
+
+ # This is the name of the cpu (but using i386 and amd64 instead of
+ # x86 and x86_64, respectively), preceeded by a /, to be used when
+ # locating libraries. On macosx, it's empty, though.
+ OPENJDK_BUILD_CPU_LIBDIR="/$OPENJDK_BUILD_CPU_LEGACY_LIB"
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_CPU_LIBDIR=""
+ fi
+
+
+ # OPENJDK_BUILD_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
+ # /amd64 or /sparcv9. This string is appended to some library paths, like this:
+ # /usr/lib${OPENJDK_BUILD_CPU_ISADIR}/libexample.so
+ OPENJDK_BUILD_CPU_ISADIR=""
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_ISADIR="/amd64"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_CPU_ISADIR="/sparcv9"
+ fi
+ fi
+
+
+ # Setup OPENJDK_BUILD_CPU_OSARCH, which is used to set the os.arch Java system property
+ OPENJDK_BUILD_CPU_OSARCH="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_OS" = xlinux && test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # On linux only, we replace x86 with i386.
+ OPENJDK_BUILD_CPU_OSARCH="i386"
+ elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+ OPENJDK_BUILD_CPU_OSARCH="amd64"
+ fi
+
+
OPENJDK_BUILD_CPU_JLI="$OPENJDK_BUILD_CPU"
if test "x$OPENJDK_BUILD_CPU" = xx86; then
OPENJDK_BUILD_CPU_JLI="i386"
@@ -15336,47 +15553,90 @@
fi
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
- OPENJDK_TARGET_OS_EXPORT_DIR=macosx
- else
- OPENJDK_TARGET_OS_EXPORT_DIR=${OPENJDK_TARGET_OS_TYPE}
- fi
-
-
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_BUILD_OS_EXPORT_DIR=${OPENJDK_BUILD_OS_TYPE}
+ fi
+
+
+ if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
A_LP64="LP64:="
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
# unpack200.exe
- if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
- ADD_LP64="-D_LP64=1"
+ if test "x$OPENJDK_BUILD_OS" = xlinux || test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_ADD_LP64="-D_LP64=1"
fi
fi
LP64=$A_LP64
- if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
- if test "x$OPENJDK_BUILD_OS" = xlinux || test "x$OPENJDK_BUILD_OS" = xmacosx; then
- OPENJDK_BUILD_ADD_LP64="-D_LP64=1"
- fi
- fi
if test "x$COMPILE_TYPE" = "xcross"; then
# FIXME: ... or should this include reduced builds..?
- DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
+ DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_BUILD_CPU_LEGACY"
else
DEFINE_CROSS_COMPILE_ARCH=""
fi
- # ZERO_ARCHDEF is used to enable architecture-specific code
- case "${OPENJDK_TARGET_CPU}" in
- ppc) ZERO_ARCHDEF=PPC32 ;;
- ppc64) ZERO_ARCHDEF=PPC64 ;;
- s390*) ZERO_ARCHDEF=S390 ;;
- sparc*) ZERO_ARCHDEF=SPARC ;;
- x86_64*) ZERO_ARCHDEF=AMD64 ;;
- x86) ZERO_ARCHDEF=IA32 ;;
- *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
- esac
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_BUILD_OS=${OPENJDK_BUILD_OS}
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ HOTSPOT_BUILD_OS=bsd
+ fi
+
+
+ HOTSPOT_BUILD_OS_TYPE=${OPENJDK_BUILD_OS_TYPE}
+ if test "x$OPENJDK_BUILD_OS_TYPE" = xunix; then
+ HOTSPOT_BUILD_OS_TYPE=posix
+ fi
+
+
+ HOTSPOT_BUILD_CPU=${OPENJDK_BUILD_CPU}
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ HOTSPOT_BUILD_CPU=x86_32
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ HOTSPOT_BUILD_CPU=sparc
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ HOTSPOT_BUILD_CPU=ppc_64
+ fi
+
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_BUILD_CPU_ARCH=${OPENJDK_BUILD_CPU_ARCH}
+
+
+ # Setup HOTSPOT_BUILD_CPU_DEFINE
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ HOTSPOT_BUILD_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ HOTSPOT_BUILD_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ HOTSPOT_BUILD_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_BUILD_CPU" = xaarch64; then
+ HOTSPOT_BUILD_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ HOTSPOT_BUILD_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_BUILD_CPU" = xsparc; then
+ HOTSPOT_BUILD_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_BUILD_CPU" = xppc; then
+ HOTSPOT_BUILD_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_BUILD_CPU" = xs390; then
+ HOTSPOT_BUILD_CPU_DEFINE=S390
+ elif test "x$OPENJDK_BUILD_CPU" = ss390x; then
+ HOTSPOT_BUILD_CPU_DEFINE=S390
+ fi
+
+
+
+
+ # ZERO_ARCHDEF is used to enable architecture-specific code.
+ # This is used in legacy hotspot build.
+ ZERO_ARCHDEF="$HOTSPOT_TARGET_CPU_DEFINE"
+
@@ -15915,98 +16175,6 @@
$as_echo "$JDK_VARIANT" >&6; }
-
-# Check whether --with-jvm-interpreter was given.
-if test "${with_jvm_interpreter+set}" = set; then :
- withval=$with_jvm_interpreter;
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which interpreter of the JVM to build" >&5
-$as_echo_n "checking which interpreter of the JVM to build... " >&6; }
- if test "x$with_jvm_interpreter" = x; then
- JVM_INTERPRETER="template"
- else
- JVM_INTERPRETER="$with_jvm_interpreter"
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_INTERPRETER" >&5
-$as_echo "$JVM_INTERPRETER" >&6; }
-
- if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then
- as_fn_error $? "The available JVM interpreters are: template, cpp" "$LINENO" 5
- fi
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM to build" >&5
-$as_echo_n "checking which variants of the JVM to build... " >&6; }
-
-# Check whether --with-jvm-variants was given.
-if test "${with_jvm_variants+set}" = set; then :
- withval=$with_jvm_variants;
-fi
-
-
- if test "x$with_jvm_variants" = x; then
- with_jvm_variants="server"
- fi
-
- JVM_VARIANTS=",$with_jvm_variants,"
- TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'`
-
- if test "x$TEST_VARIANTS" != "x,"; then
- as_fn_error $? "The available JVM variants are: server, client, minimal1, zero, zeroshark, core" "$LINENO" 5
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_jvm_variants" >&5
-$as_echo "$with_jvm_variants" >&6; }
-
- JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
- JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
- JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS" | $SED -e '/,minimal1,/!s/.*/false/g' -e '/,minimal1,/s/.*/true/g'`
- JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
- JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
- JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
-
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- as_fn_error $? "You cannot build a client JVM for a 64-bit machine." "$LINENO" 5
- fi
- fi
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- as_fn_error $? "You cannot build a minimal JVM for a 64-bit machine." "$LINENO" 5
- fi
- fi
-
- # Replace the commas with AND for use in the build directory name.
- ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'`
- 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/'`
- if test "x$COUNT_VARIANTS" != "x,1"; then
- BUILDING_MULTIPLE_JVM_VARIANTS=yes
- else
- BUILDING_MULTIPLE_JVM_VARIANTS=no
- fi
-
- if test "x$JVM_VARIANT_ZERO" = xtrue && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xyes; then
- as_fn_error $? "You cannot build multiple variants with zero." "$LINENO" 5
- fi
-
-
-
-
-
-
-
-
-
- if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
- MACOSX_UNIVERSAL="true"
- fi
-
-
-
-
DEBUG_LEVEL="release"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which debug level to use" >&5
$as_echo_n "checking which debug level to use... " >&6; }
@@ -16042,105 +16210,88 @@
as_fn_error $? "Allowed debug levels are: release, fastdebug, slowdebug and optimized" "$LINENO" 5
fi
-
- case $DEBUG_LEVEL in
- release )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- BUILD_VARIANT_RELEASE=""
- HOTSPOT_DEBUG_LEVEL="product"
- HOTSPOT_EXPORT="product"
- ;;
- fastdebug )
- VARIANT="DBG"
- FASTDEBUG="true"
- DEBUG_CLASSFILES="true"
- BUILD_VARIANT_RELEASE="-fastdebug"
- HOTSPOT_DEBUG_LEVEL="fastdebug"
- HOTSPOT_EXPORT="fastdebug"
- ;;
- slowdebug )
- VARIANT="DBG"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="true"
- BUILD_VARIANT_RELEASE="-debug"
- HOTSPOT_DEBUG_LEVEL="debug"
- HOTSPOT_EXPORT="debug"
- ;;
- optimized )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- BUILD_VARIANT_RELEASE="-optimized"
- HOTSPOT_DEBUG_LEVEL="optimized"
- HOTSPOT_EXPORT="optimized"
- ;;
- esac
-
- # The debug level 'optimized' is a little special because it is currently only
- # applicable to the HotSpot build where it means to build a completely
- # optimized version of the VM without any debugging code (like for the
- # 'release' debug level which is called 'product' in the HotSpot build) but
- # with the exception that it can contain additional code which is otherwise
- # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
- # test new and/or experimental features which are not intended for customer
- # shipment. Because these new features need to be tested and benchmarked in
- # real world scenarios, we want to build the containing JDK at the 'release'
- # debug level.
+ # Translate DEBUG_LEVEL to debug level used by Hotspot
+ HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ HOTSPOT_DEBUG_LEVEL="product"
+ elif test "x$DEBUG_LEVEL" = xslowdebug; then
+ HOTSPOT_DEBUG_LEVEL="debug"
+ fi
+
if test "x$DEBUG_LEVEL" = xoptimized; then
+ # The debug level 'optimized' is a little special because it is currently only
+ # applicable to the HotSpot build where it means to build a completely
+ # optimized version of the VM without any debugging code (like for the
+ # 'release' debug level which is called 'product' in the HotSpot build) but
+ # with the exception that it can contain additional code which is otherwise
+ # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
+ # test new and/or experimental features which are not intended for customer
+ # shipment. Because these new features need to be tested and benchmarked in
+ # real world scenarios, we want to build the containing JDK at the 'release'
+ # debug level.
DEBUG_LEVEL="release"
fi
- #####
- # Generate the legacy makefile targets for hotspot.
- # The hotspot api for selecting the build artifacts, really, needs to be improved.
- # JDK-7195896 will fix this on the hotspot side by using the JVM_VARIANT_* variables to
- # determine what needs to be built. All we will need to set here is all_product, all_fastdebug etc
- # But until then ...
- HOTSPOT_TARGET=""
-
- if test "x$JVM_VARIANT_SERVER" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL} "
- fi
-
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}1 "
- fi
-
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}minimal1 "
- fi
-
- if test "x$JVM_VARIANT_ZERO" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}zero "
- fi
-
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark "
- fi
-
- if test "x$JVM_VARIANT_CORE" = xtrue; then
- HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core "
- fi
-
- HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT"
-
- # On Macosx universal binaries are produced, but they only contain
- # 64 bit intel. This invalidates control of which jvms are built
- # from configure, but only server is valid anyway. Fix this
- # when hotspot makefiles are rewritten.
- if test "x$MACOSX_UNIVERSAL" = xtrue; then
- HOTSPOT_TARGET=universal_${HOTSPOT_EXPORT}
- fi
-
- #####
-
-
-
-
-
-
+
+
+
+
+
+# Check whether --with-jvm-variants was given.
+if test "${with_jvm_variants+set}" = set; then :
+ withval=$with_jvm_variants;
+fi
+
+
+ if test "x$with_jvm_variants" = x; then
+ with_jvm_variants="server"
+ fi
+ JVM_VARIANTS_OPT="$with_jvm_variants"
+
+ # Has the user listed more than one variant?
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [[ "$JVM_VARIANTS_OPT" =~ "," ]] ; then
+ BUILDING_MULTIPLE_JVM_VARIANTS=true
+ else
+ BUILDING_MULTIPLE_JVM_VARIANTS=false
+ fi
+ # Replace the commas with AND for use in the build directory name.
+ JVM_VARIANTS_WITH_AND=`$ECHO "$JVM_VARIANTS_OPT" | $SED -e 's/,/AND/g'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM to build" >&5
+$as_echo_n "checking which variants of the JVM to build... " >&6; }
+ # JVM_VARIANTS is a space-separated list.
+ # Also use minimal, not minimal1 (which is kept for backwards compatibility).
+ JVM_VARIANTS=`$ECHO $JVM_VARIANTS_OPT | $SED -e 's/,/ /g' -e 's/minimal1/minimal/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_VARIANTS" >&5
+$as_echo "$JVM_VARIANTS" >&6; }
+
+ # Check that the selected variants are valid
+
+ # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
+ INVALID_VARIANTS=`$GREP -Fvx "${VALID_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ if test "x$INVALID_VARIANTS" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Unknown variant(s) specified: $INVALID_VARIANTS" >&5
+$as_echo "$as_me: Unknown variant(s) specified: $INVALID_VARIANTS" >&6;}
+ as_fn_error $? "The available JVM variants are: $VALID_JVM_VARIANTS" "$LINENO" 5
+ fi
+
+ # All "special" variants share the same output directory ("server")
+ VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
+ as_fn_error $? "You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS." "$LINENO" 5
+ fi
+
+
+
+
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # zero behaves as a platform and rewrites these values. This is really weird. :(
+ # We are guaranteed that we do not build any other variants when building zero.
+ HOTSPOT_TARGET_CPU=zero
+ HOTSPOT_TARGET_CPU_ARCH=zero
+ fi
# With basic setup done, call the custom early hook.
@@ -16589,8 +16740,8 @@
if test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
- # Add extra search paths on solaris for utilities like ar and as etc...
- PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin"
+ # Add extra search paths on solaris for utilities like ar, as, dtrace etc...
+ PATH="$PATH:/usr/ccs/bin:/usr/sfw/bin:/opt/csw/bin:/usr/sbin"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
@@ -16629,7 +16780,7 @@
if test "x${CONF_NAME}" = x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: in default location" >&5
$as_echo "in default location" >&6; }
- CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${ANDED_JVM_VARIANTS}-${DEBUG_LEVEL}"
+ CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${JVM_VARIANTS_WITH_AND}-${DEBUG_LEVEL}"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: in build directory with custom name" >&5
$as_echo "in build directory with custom name" >&6; }
@@ -22129,6 +22280,203 @@
# Publish this variable in the help.
+ if [ -z "${DTRACE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in dtrace
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DTRACE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DTRACE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DTRACE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDTRACE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DTRACE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DTRACE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in dtrace
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DTRACE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DTRACE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DTRACE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DTRACE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DTRACE" >&5
+$as_echo_n "checking for DTRACE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DTRACE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DTRACE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DTRACE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DTRACE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DTRACE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DTRACE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DTRACE" >&5
+$as_echo_n "checking for DTRACE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DTRACE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
if [ -z "${PATCH+x}" ]; then
# The variable is not set by user, try to locate tool using the code snippet
for ac_prog in gpatch patch
@@ -23408,10 +23756,7 @@
# Should we build the serviceability agent (SA)?
INCLUDE_SA=true
- if test "x$JVM_VARIANT_ZERO" = xtrue ; then
- INCLUDE_SA=false
- fi
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
INCLUDE_SA=false
fi
if test "x$OPENJDK_TARGET_OS" = xaix ; then
@@ -23473,22 +23818,6 @@
- # Control wether Hotspot runs Queens test after build.
- # Check whether --enable-hotspot-test-in-build was given.
-if test "${enable_hotspot_test_in_build+set}" = set; then :
- enableval=$enable_hotspot_test_in_build;
-else
- enable_hotspot_test_in_build=no
-fi
-
- if test "x$enable_hotspot_test_in_build" = "xyes"; then
- TEST_IN_BUILD=true
- else
- TEST_IN_BUILD=false
- fi
-
-
-
# Warn user that old version arguments are deprecated.
@@ -23539,6 +23868,7 @@
+
# Override version from arguments
# If --with-version-string is set, process it first. It is possible to
@@ -30611,6 +30941,10 @@
+
+
+
+
# The global CFLAGS and LDLAGS variables are used by configure tests and
# should include the extra parameters
CFLAGS="$EXTRA_CFLAGS"
@@ -46738,6 +47072,17 @@
fi
+ # Setup hotspot lecagy names for toolchains
+ HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ HOTSPOT_TOOLCHAIN_TYPE=gcc
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ HOTSPOT_TOOLCHAIN_TYPE=sparcWorks
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ HOTSPOT_TOOLCHAIN_TYPE=visCPP
+ fi
+
+
# Setup the JTReg Regression Test Harness.
@@ -47217,8 +47562,10 @@
# On Windows, we need to set RC flags.
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
RC_FLAGS="-nologo -l0x409"
+ JVM_RCFLAGS="-nologo"
if test "x$DEBUG_LEVEL" = xrelease; then
RC_FLAGS="$RC_FLAGS -DNDEBUG"
+ JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG"
fi
# The version variables used to create RC_FLAGS may be overridden
@@ -47234,7 +47581,18 @@
-D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
-D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
-D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
- fi
+
+ JVM_RCFLAGS="$JVM_RCFLAGS \
+ -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \
+ -D\"HS_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \
+ -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \
+ -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \
+ -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \
+ -D\"HS_FNAME=jvm.dll\" \
+ -D\"HS_INTERNAL_NAME=jvm\""
+ fi
+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
@@ -47402,6 +47760,10 @@
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
elif test "x$COMPILE_TYPE" = xreduced; then
if test "x$OPENJDK_TARGET_OS_TYPE" = xunix; then
# Specify -m if running reduced on unix platforms
@@ -47422,7 +47784,16 @@
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
- fi
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
+ fi
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_LDFLAGS="$JVM_LDFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_ASFLAGS="$JVM_ASFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
fi
# Make compilation sanity check
@@ -47548,6 +47919,10 @@
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
# We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value!
unset ac_cv_sizeof_int_p
@@ -47894,6 +48269,7 @@
SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
else
SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
fi
SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path/.'
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
@@ -47919,6 +48295,10 @@
SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/$1'
SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,$1'
+
+ if test "x$STATIC_BUILD" = xfalse; then
+ JVM_CFLAGS="$JVM_CFLAGS -fPIC"
+ fi
else
# Default works for linux, might work on other platforms as well.
PICFLAG='-fPIC'
@@ -47978,11 +48358,6 @@
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
- CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
- CFLAGS_JDKLIB_EXTRA='-xstrconst'
- fi
# The (cross) compiler is now configured, we can now test capabilities
# of the target platform.
@@ -48040,6 +48415,22 @@
+ # Debug symbols for JVM_CFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs"
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ else
+ # -g0 does not disable inlining, which -g does.
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+"
+ else
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ fi
+
+
# bounds, memory and behavior checking options
if test "x$TOOLCHAIN_TYPE" = xgcc; then
case $DEBUG_LEVEL in
@@ -48050,7 +48441,7 @@
# no adjustment
;;
slowdebug )
- # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS it
+ # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
# get's added conditionally on whether we produce debug symbols or not.
# This is most likely not really correct.
@@ -48325,40 +48716,59 @@
CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ if test "x$STACK_PROTECTOR_CFLAG" != x; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ fi
;;
esac
fi
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ JVM_CFLAGS="$JVM_CFLAGS -homeparams"
+ fi
+ fi
+ fi
+
# Optimization levels
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
# FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
+ C_O_FLAG_HIGHEST_JVM="-xO4"
C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
C_O_FLAG_DEBUG="-xregs=no%frameptr"
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-xregs=no%frameptr"
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"
CXX_O_FLAG_NORM="-xO2 -Qoption ube -O2~yz -xregs=no%frameptr"
CXX_O_FLAG_DEBUG="-xregs=no%frameptr"
+ CXX_O_FLAG_DEBUG_JVM=""
CXX_O_FLAG_NONE="-xregs=no%frameptr"
if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
fi
elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ C_O_FLAG_HIGHEST_JVM="-xO4"
C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
C_O_FLAG_DEBUG=""
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
CXX_O_FLAG_DEBUG=""
+ CXX_O_FLAG_DEBUG_JVM=""
CXX_O_FLAG_NONE=""
fi
else
@@ -48368,48 +48778,75 @@
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On MacOSX we optimize for size, something
# we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
C_O_FLAG_HIGHEST="-Os"
C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
- else
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
fi
C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
C_O_FLAG_NONE="-O0"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# On MacOSX we optimize for size, something
# we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
C_O_FLAG_HIGHEST="-Os"
C_O_FLAG_HI="-Os"
C_O_FLAG_NORM="-Os"
- else
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3"
C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
fi
C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
C_O_FLAG_NONE="-O0"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_O_FLAG_HIGHEST_JVM="-O3"
C_O_FLAG_HIGHEST="-O3"
C_O_FLAG_HI="-O3 -qstrict"
C_O_FLAG_NORM="-O2"
C_O_FLAG_DEBUG="-qnoopt"
+ # FIXME: Value below not verified.
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-qnoopt"
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ C_O_FLAG_HIGHEST_JVM="-O2 -Oy-"
C_O_FLAG_HIGHEST="-O2"
C_O_FLAG_HI="-O1"
C_O_FLAG_NORM="-O1"
C_O_FLAG_DEBUG="-Od"
+ C_O_FLAG_DEBUG_JVM=""
C_O_FLAG_NONE="-Od"
- fi
+ C_O_FLAG_SIZE="-Os"
+ fi
+ CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM"
CXX_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST"
CXX_O_FLAG_HI="$C_O_FLAG_HI"
CXX_O_FLAG_NORM="$C_O_FLAG_NORM"
CXX_O_FLAG_DEBUG="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM"
CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
+ CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE"
fi
# Adjust optimization flags according to debug level.
@@ -48424,12 +48861,16 @@
;;
slowdebug )
# Disable optimization
+ C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM"
C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG"
C_O_FLAG_HI="$C_O_FLAG_DEBUG"
C_O_FLAG_NORM="$C_O_FLAG_DEBUG"
+ C_O_FLAG_SIZE="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM"
CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG"
CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG"
CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG"
;;
esac
@@ -48445,6 +48886,12 @@
+
+
+
+
+
+
# Special extras...
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
@@ -48556,10 +49003,23 @@
CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}"
fi
-
- CFLAGS_JDK="${CFLAGS_JDK} $EXTRA_CFLAGS"
- CXXFLAGS_JDK="${CXXFLAGS_JDK} $EXTRA_CXXFLAGS"
- LDFLAGS_JDK="${LDFLAGS_JDK} $EXTRA_LDFLAGS"
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
+ CFLAGS_JDKLIB_EXTRA='-xstrconst'
+ CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
+ CFLAGS_JDKLIB_EXTRA='-xstrconst'
+ fi
+
+ CFLAGS_JDK="${CFLAGS_JDK} ${EXTRA_CFLAGS}"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${EXTRA_CXXFLAGS}"
+ LDFLAGS_JDK="${LDFLAGS_JDK} ${EXTRA_LDFLAGS}"
###############################################################################
#
@@ -48572,9 +49032,13 @@
# CXXFLAGS_JDK - C++ Compiler flags
# COMMON_CCXXFLAGS_JDK - common to C and C++
if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_GNU_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -D_REENTRANT"
+ JVM_CFLAGS="$JVM_CFLAGS -fcheck-new"
if test "x$OPENJDK_TARGET_CPU" = xx86; then
# Force compatibility with i586 on 32 bit intel platforms.
COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
+ JVM_CFLAGS="$JVM_CFLAGS -march=i586"
fi
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
-pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
@@ -49211,11 +49675,19 @@
elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ JVM_CFLAGS="$JVM_CFLAGS -flimit-debug-info"
if test "x$OPENJDK_TARGET_OS" = xlinux; then
if test "x$OPENJDK_TARGET_CPU" = xx86; then
# Force compatibility with i586 on 32 bit intel platforms.
COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
- fi
+ JVM_CFLAGS="$JVM_CFLAGS -march=i586"
+ fi
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-sometimes-uninitialized"
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
-pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
case $OPENJDK_TARGET_CPU_ARCH in
@@ -49230,6 +49702,7 @@
esac
fi
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS="$JVM_CFLAGS -DSPARC_WORKS"
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
@@ -49238,6 +49711,7 @@
CFLAGS_JDK="$CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
@@ -49258,6 +49732,7 @@
if test "x$TOOLCHAIN_VERSION" = "x2010"; then
STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ JVM_CFLAGS="$JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
fi
fi
@@ -49307,12 +49782,9 @@
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
# Setup target CPU
- OPENJDK_TARGET_CCXXFLAGS_JDK="$OPENJDK_TARGET_CCXXFLAGS_JDK \
- $ADD_LP64 \
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_TARGET_ADD_LP64 \
-DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
- OPENJDK_BUILD_CCXXFLAGS_JDK="$OPENJDK_BUILD_CCXXFLAGS_JDK \
- $OPENJDK_BUILD_ADD_LP64 \
- -DARCH='\"$OPENJDK_BUILD_CPU_LEGACY\"' -D$OPENJDK_BUILD_CPU_LEGACY"
# Setup debug/release defines
if test "x$DEBUG_LEVEL" = xrelease; then
@@ -49325,10 +49797,171 @@
fi
# Set some additional per-OS defines.
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -DLINUX"
+ JVM_CFLAGS="$JVM_CFLAGS -pipe -fPIC -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ JVM_CFLAGS="$JVM_CFLAGS -DSOLARIS"
+ JVM_CFLAGS="$JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none -KPIC -mt -xwe -features=no%except"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ JVM_CFLAGS="$JVM_CFLAGS -D_ALLBSD_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_CFLAGS="$JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ JVM_CFLAGS="$JVM_CFLAGS -qtune=balanced -qhot=level=1 -qinline \
+ -qinlglue -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ JVM_CFLAGS="$JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = xwindows-x86; then
+ JVM_CFLAGS="$JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ JVM_CFLAGS="$JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xbig; then
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ JVM_CFLAGS="$JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ JVM_CFLAGS="$JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ else
+ # Little endian machine uses ELFv2 ABI.
+ JVM_CFLAGS="$JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ JVM_CFLAGS="$JVM_CFLAGS -mcpu=power7 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_CFLAGS="$JVM_CFLAGS -qarch=ppc64"
+ fi
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
+ JVM_CFLAGS="$JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ if test "x$OPENJDK_TARGET_OS" != xsolaris && test "x$OPENJDK_TARGET_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ JVM_CFLAGS="$JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set JVM_CFLAGS warning handling
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=4.8
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only three parts (X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # Non-zero builds have stricter warnings
+ JVM_CFLAGS="$JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
fi
# Additional macosx handling
@@ -49356,43 +49989,14 @@
-I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava"
# The shared libraries are compiled using the picflag.
- CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
+ CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK \
$CFLAGS_JDK $EXTRA_CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
+ CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK \
$CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
# Executable flags
- CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CFLAGS_JDK $EXTRA_CFLAGS_JDK"
- CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_TARGET_CCXXFLAGS_JDK \
- $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK"
-
- # The corresponding flags for building for the build platform. This is still an
- # approximation, we only need something that runs on this machine when cross
- # compiling the product.
- OPENJDK_BUILD_CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK \
- $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- OPENJDK_BUILD_CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK \
- $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
- OPENJDK_BUILD_CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK"
- OPENJDK_BUILD_CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CCXXFLAGS_JDK"
-
-
-
-
-
-
-
-
-
-
- # Flags for compiling test libraries
- CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
- CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
-
- # Flags for compiling test executables
- CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
- CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
+ CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $EXTRA_CFLAGS_JDK"
+ CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK"
@@ -49405,9 +50009,21 @@
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
LDFLAGS_MICROSOFT="-nologo -opt:ref"
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
LDFLAGS_SAFESH="-safeseh"
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ JVM_LDFLAGS="$JVM_LDFLAGS -machine:I386"
+ else
+ JVM_LDFLAGS="$JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
fi
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
# If this is a --hash-style=gnu system, use --hash-style=both, why?
@@ -49415,36 +50031,57 @@
if test -n "$HAS_GNU_HASH"; then
LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_HASH_STYLE"
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
fi
if test "x$OPENJDK_TARGET_OS" = xlinux; then
# And since we now know that the linker is gnu, then add -z defs, to forbid
# undefined symbols in object files.
LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -march=i586"
+ fi
case $DEBUG_LEVEL in
release )
# tell linker to optimize libraries.
# Should this be supplied to the OSS linker as well?
LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
;;
slowdebug )
+ # Hotspot always let the linker optimize
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-O1"
if test "x$HAS_LINKER_NOW" = "xtrue"; then
# do relocations at load
LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_NOW_FLAG"
fi
if test "x$HAS_LINKER_RELRO" = "xtrue"; then
# mark relocations read only
LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
fi
;;
fastdebug )
+ # Hotspot always let the linker optimize
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-O1"
if test "x$HAS_LINKER_RELRO" = "xtrue"; then
# mark relocations read only
LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
fi
;;
* )
@@ -49457,9 +50094,14 @@
LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
LDFLAGS_CXX_SOLSTUDIO="-norunpath"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -xarch=sparc"
+ fi
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_XLC"
fi
# Customize LDFLAGS for executables
@@ -49477,7 +50119,6 @@
LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
fi
- OPENJDK_BUILD_LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE}"
LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} ${EXTRA_LDFLAGS_JDK}"
# Customize LDFLAGS for libs
@@ -49492,18 +50133,24 @@
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} \
-L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)"
+ if test "xTARGET" = "xTARGET"; then
# On some platforms (mac) the linker warns about non existing -L dirs.
# Add server first if available. Linking aginst client does not always produce the same results.
- # Only add client dir if client is being built. Add minimal (note not minimal1) if only building minimal1.
+ # Only add client/minimal dir if client/minimal is being built.
# Default to server for other variants.
- if test "x$JVM_VARIANT_SERVER" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
- elif test "x$JVM_VARIANT_CLIENT" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/client"
- elif test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/minimal"
- else
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
+ if [[ " $JVM_VARIANTS " =~ " server " ]] ; then
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
+ elif [[ " $JVM_VARIANTS " =~ " client " ]] ; then
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/client"
+ elif [[ " $JVM_VARIANTS " =~ " minimal " ]] ; then
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/minimal"
+ else
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
+ fi
+ elif test "xTARGET" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
fi
JDKLIB_LIBS="-ljava -ljvm"
@@ -49511,17 +50158,841 @@
JDKLIB_LIBS="$JDKLIB_LIBS -lc"
fi
- # When building a buildjdk, it's always only the server variant
+ fi
+
+ # Set JVM_LIBS (per os)
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_LIBS="$JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ JVM_LIBS="$JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_LIBS="$JVM_LIBS -lm"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_LIBS="$JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_TARGET_OS" = xbsd; then
+ JVM_LIBS="$JVM_LIBS -lm"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ JVM_LIBS="$JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
+
+ # Set JVM_ASFLAGS
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ JVM_ASFLAGS="$JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_ASFLAGS="$JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${EXTRA_LDFLAGS_JDK}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Special extras...
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = "xsparc"; then
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ fi
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ OPENJDK_BUILD_CXXSTD_CXXFLAG="-std=gnu++98"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"$OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG $OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+
+ else
+ :
+ OPENJDK_BUILD_CXXSTD_CXXFLAG=""
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} ${OPENJDK_BUILD_CXXSTD_CXXFLAG}"
+
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -D__solaris__"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -D__solaris__"
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA='-xstrconst'
+ CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -D__solaris__"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -D__solaris__"
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA='-xstrconst'
+ fi
+
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CFLAGS}"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CXXFLAGS}"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_LDFLAGS}"
+
+ ###############################################################################
+ #
+ # Now setup the CFLAGS and LDFLAGS for the JDK build.
+ # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
+ #
+
+ # Setup compiler/platform specific flags into
+ # OPENJDK_BUILD_CFLAGS_JDK - C Compiler flags
+ # OPENJDK_BUILD_CXXFLAGS_JDK - C++ Compiler flags
+ # OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK - common to C and C++
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_GNU_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_REENTRANT"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fcheck-new"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS="${OPENJDK_BUILD_COMMON_CCXXFLAGS} -march=i586"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -march=i586"
+ fi
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_BUILD_CPU_ARCH in
+ arm )
+ # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=6
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only three parts (X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -flimit-debug-info"
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS="${OPENJDK_BUILD_COMMON_CCXXFLAGS} -march=i586"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -march=i586"
+ fi
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-sometimes-uninitialized"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_BUILD_CPU_ARCH in
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DSPARC_WORKS"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = xx86; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_BUILD_CPU_LEGACY_LIB"
+ fi
+
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -MD -Zc:wchar_t- -W3 -wd4800 \
+ -DWIN32_LEAN_AND_MEAN \
+ -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
+ -D_WINSOCK_DEPRECATED_NO_WARNINGS \
+ -DWIN32 -DIAL"
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
+ fi
+ # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
+ # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
+ # studio.
+ if test "x$TOOLCHAIN_VERSION" = "x2010"; then
+ STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
+ fi
+ fi
+
+ ###############################################################################
+
+ # Adjust flags according to debug level.
+ case $DEBUG_LEVEL in
+ fastdebug | slowdebug )
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
+ JAVAC_FLAGS="$JAVAC_FLAGS -g"
+ ;;
+ release )
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+
+ # Set some common defines. These works for all compilers, but assume
+ # -D is universally accepted.
+
+ # Setup endianness
+ if test "x$OPENJDK_BUILD_CPU_ENDIAN" = xlittle; then
+ # The macro _LITTLE_ENDIAN needs to be defined the same to avoid the
+ # Sun C compiler warning message: warning: macro redefined: _LITTLE_ENDIAN
+ # (The Solaris X86 system defines this in file /usr/include/sys/isa_defs.h).
+ # Note: -Dmacro is the same as #define macro 1
+ # -Dmacro= is the same as #define macro
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ fi
+ else
+ # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they
+ # are defined in the system?
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ fi
+ fi
+
+ # Setup target OS define. Use OS target name but in upper case.
+ OPENJDK_BUILD_OS_UPPERCASE=`$ECHO $OPENJDK_BUILD_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D$OPENJDK_BUILD_OS_UPPERCASE"
+
+ # Setup target CPU
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_ADD_LP64 \
+ -DARCH='\"$OPENJDK_BUILD_CPU_LEGACY\"' -D$OPENJDK_BUILD_CPU_LEGACY"
+
+ # Setup debug/release defines
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DNDEBUG"
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DTRIMMED"
+ fi
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DDEBUG"
+ fi
+
+ # Set some additional per-OS defines.
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DLINUX"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -pipe -fPIC -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DSOLARIS"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none -KPIC -mt -xwe -features=no%except"
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_ALLBSD_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qtune=balanced -qhot=level=1 -qinline \
+ -qinlglue -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$OPENJDK_BUILD_OS" = xbsd; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" = xwindows-x86; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ if test "x$OPENJDK_BUILD_CPU_ENDIAN" = xbig; then
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ else
+ # Little endian machine uses ELFv2 ABI.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mcpu=power7 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qarch=ppc64"
+ fi
+ fi
+
+ if test "x$OPENJDK_BUILD_CPU_ENDIAN" = xlittle; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
+ if test "x$OPENJDK_BUILD_OS" != xsolaris && test "x$OPENJDK_BUILD_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set OPENJDK_BUILD_JVM_CFLAGS warning handling
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=4.8
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only three parts (X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # Non-zero builds have stricter warnings
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
+ fi
+
+ # Additional macosx handling
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ # Setting these parameters makes it an error to link to macosx APIs that are
+ # newer than the given OS version and makes the linked binaries compatible
+ # even if built on a newer version of the OS.
+ # The expected format is X.Y.Z
+ MACOSX_VERSION_MIN=10.7.0
+
+
+ # The macro takes the version with no dots, ex: 1070
+ # Let the flags variables get resolved in make for easier override on make
+ # command line.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ fi
+
+ # Setup some hard coded includes
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -I${JDK_TOPDIR}/src/java.base/share/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/include \
+ -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/libjava"
+
+ # The shared libraries are compiled using the picflag.
+ OPENJDK_BUILD_CFLAGS_JDKLIB="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_CFLAGS_JDK $OPENJDK_BUILD_EXTRA_CFLAGS_JDK $PICFLAG $OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_CXXFLAGS_JDK $OPENJDK_BUILD_EXTRA_CXXFLAGS_JDK $PICFLAG $OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA"
+
+ # Executable flags
+ OPENJDK_BUILD_CFLAGS_JDKEXE="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CFLAGS_JDK $OPENJDK_BUILD_EXTRA_CFLAGS_JDK"
+ OPENJDK_BUILD_CXXFLAGS_JDKEXE="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CXXFLAGS_JDK $OPENJDK_BUILD_EXTRA_CXXFLAGS_JDK"
+
+
+
+
+
+
+ # Setup LDFLAGS et al.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ LDFLAGS_MICROSOFT="-nologo -opt:ref"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
+ if test "x$OPENJDK_BUILD_CPU_BITS" = "x32"; then
+ LDFLAGS_SAFESH="-safeseh"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_SAFESH"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -machine:I386"
+ else
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ # We have previously set HAS_GNU_HASH if this is the case
+ if test -n "$HAS_GNU_HASH"; then
+ OPENJDK_BUILD_LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $OPENJDK_BUILD_LDFLAGS_HASH_STYLE"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $OPENJDK_BUILD_LDFLAGS_HASH_STYLE"
+ fi
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ # And since we now know that the linker is gnu, then add -z defs, to forbid
+ # undefined symbols in object files.
+ LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -march=i586"
+ fi
+ case $DEBUG_LEVEL in
+ release )
+ # tell linker to optimize libraries.
+ # Should this be supplied to the OSS linker as well?
+ LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ slowdebug )
+ # Hotspot always let the linker optimize
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_NOW" = "xtrue"; then
+ # do relocations at load
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_NOW_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_NOW_FLAG"
+ fi
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ fastdebug )
+ # Hotspot always let the linker optimize
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -xildoff -ztext"
+ LDFLAGS_CXX_SOLSTUDIO="-norunpath"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = "xsparc"; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -xarch=sparc"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_XLC"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_XLC"
+ fi
+
+ # Customize LDFLAGS for executables
+
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDK}"
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$OPENJDK_BUILD_CPU_BITS" = "x64"; then
+ LDFLAGS_STACK_SIZE=1048576
+ else
+ LDFLAGS_STACK_SIZE=327680
+ fi
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
+ elif test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="$OPENJDK_BUILD_LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
+ fi
+
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDKEXE} ${OPENJDK_BUILD_EXTRA_LDFLAGS_JDK}"
+
+ # Customize LDFLAGS for libs
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDK}"
+
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} \
- -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_TARGET_CPU_LIBDIR)/server"
- fi
-
- OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${LDFLAGS_JDKLIB}"
- LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${EXTRA_LDFLAGS_JDK}"
-
-
-
-
+ -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
+ OPENJDK_BUILD_JDKLIB_LIBS=""
+ else
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)"
+
+ if test "xBUILD" = "xTARGET"; then
+ # On some platforms (mac) the linker warns about non existing -L dirs.
+ # Add server first if available. Linking aginst client does not always produce the same results.
+ # Only add client/minimal dir if client/minimal is being built.
+ # Default to server for other variants.
+ if [[ " $JVM_VARIANTS " =~ " server " ]] ; then
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)/server"
+ elif [[ " $JVM_VARIANTS " =~ " client " ]] ; then
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)/client"
+ elif [[ " $JVM_VARIANTS " =~ " minimal " ]] ; then
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)/minimal"
+ else
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)/server"
+ fi
+ elif test "xBUILD" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base\$(OPENJDK_BUILD_CPU_LIBDIR)/server"
+ fi
+
+ OPENJDK_BUILD_JDKLIB_LIBS="-ljava -ljvm"
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ OPENJDK_BUILD_JDKLIB_LIBS="$OPENJDK_BUILD_JDKLIB_LIBS -lc"
+ fi
+
+ fi
+
+ # Set OPENJDK_BUILD_JVM_LIBS (per os)
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm"
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_BUILD_OS" = xbsd; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm"
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
+
+ # Set OPENJDK_BUILD_JVM_ASFLAGS
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_JVM_ASFLAGS="$OPENJDK_BUILD_JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_ASFLAGS="$OPENJDK_BUILD_JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${OPENJDK_BUILD_EXTRA_LDFLAGS_JDK}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Tests are only ever compiled for TARGET
+ # Flags for compiling test libraries
+ CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
+ CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+
+ # Flags for compiling test executables
+ CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
+ CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
@@ -49535,6 +51006,7 @@
+
# Some Zero and Shark settings.
# ZERO_ARCHFLAG tells the compiler which mode to build for
case "${OPENJDK_TARGET_CPU}" in
@@ -50883,6 +52355,222 @@
+# Need toolchain to setup dtrace
+
+ # Test for dtrace dependencies
+ # Check whether --enable-dtrace was given.
+if test "${enable_dtrace+set}" = set; then :
+ enableval=$enable_dtrace;
+fi
+
+
+ DTRACE_DEP_MISSING=false
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dtrace tool" >&5
+$as_echo_n "checking for dtrace tool... " >&6; }
+ if test "x$DTRACE" != "x" && test -x "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found, cannot build dtrace" >&5
+$as_echo "not found, cannot build dtrace" >&6; }
+ DTRACE_DEP_MISSING=true
+ fi
+
+ for ac_header in sys/sdt.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "sys/sdt.h" "ac_cv_header_sys_sdt_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sdt_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SDT_H 1
+_ACEOF
+ DTRACE_HEADERS_OK=yes
+else
+ DTRACE_HEADERS_OK=no
+fi
+
+done
+
+ if test "x$DTRACE_HEADERS_OK" != "xyes"; then
+ DTRACE_DEP_MISSING=true
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dtrace should be built" >&5
+$as_echo_n "checking if dtrace should be built... " >&6; }
+ if test "x$enable_dtrace" = "xyes"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # dtrace is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=dtrace
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Cannot enable dtrace with missing dependencies. See above. $HELP_MSG" "$LINENO" 5
+ else
+ INCLUDE_DTRACE=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ fi
+ elif test "x$enable_dtrace" = "xno"; then
+ INCLUDE_DTRACE=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
+ if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK" != "xtrue"; then
+ INCLUDE_DTRACE=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, non-open linux build" >&5
+$as_echo "no, non-open linux build" >&6; }
+ elif test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ INCLUDE_DTRACE=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+ else
+ INCLUDE_DTRACE=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, dependencies present" >&5
+$as_echo "yes, dependencies present" >&6; }
+ fi
+ else
+ as_fn_error $? "Invalid value for --enable-dtrace: $enable_dtrace" "$LINENO" 5
+ fi
+
+
+
+ # The user can in some cases supply additional jvm features. For the custom
+ # variant, this defines the entire variant.
+
+# Check whether --with-jvm-features was given.
+if test "${with_jvm_features+set}" = set; then :
+ withval=$with_jvm_features;
+fi
+
+ if test "x$with_jvm_features" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional JVM features" >&5
+$as_echo_n "checking additional JVM features... " >&6; }
+ JVM_FEATURES=`$ECHO $with_jvm_features | $SED -e 's/,/ /g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_FEATURES" >&5
+$as_echo "$JVM_FEATURES" >&6; }
+ fi
+
+ # Verify that dependencies are met for explicitly set features.
+ if [[ " $JVM_FEATURES " =~ " jvmti " ]] && ! [[ " $JVM_FEATURES " =~ " services " ]] ; then
+ as_fn_error $? "Specified JVM feature 'jvmti' requires feature 'services'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " management " ]] && ! [[ " $JVM_FEATURES " =~ " nmt " ]] ; then
+ as_fn_error $? "Specified JVM feature 'management' requires feature 'nmt'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " jvmci " ]] && ! [[ " $JVM_FEATURES " =~ " compiler2 " ]] ; then
+ as_fn_error $? "Specified JVM feature 'jvmci' requires feature 'compiler2'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " compiler2 " ]] && ! [[ " $JVM_FEATURES " =~ " all-gcs " ]] ; then
+ as_fn_error $? "Specified JVM feature 'compiler2' requires feature 'all-gcs'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " vm-structs " ]] && ! [[ " $JVM_FEATURES " =~ " all-gcs " ]] ; then
+ as_fn_error $? "Specified JVM feature 'vm-structs' requires feature 'all-gcs'" "$LINENO" 5
+ fi
+
+ # Turn on additional features based on other parts of configure
+ if test "x$INCLUDE_DTRACE" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES dtrace"
+ else
+ if [[ " $JVM_FEATURES " =~ " dtrace " ]] ; then
+ as_fn_error $? "To enable dtrace, you must use --enable-dtrace" "$LINENO" 5
+ fi
+ fi
+
+ if test "x$STATIC_BUILD" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES static-build"
+ else
+ if [[ " $JVM_FEATURES " =~ " static-build " ]] ; then
+ as_fn_error $? "To enable static-build, you must use --enable-static-build" "$LINENO" 5
+ fi
+ fi
+
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ if [[ " $JVM_FEATURES " =~ " zero " ]] ; then
+ as_fn_error $? "To enable zero/zeroshark, you must use --with-jvm-variants=zero/zeroshark" "$LINENO" 5
+ fi
+ fi
+
+ if ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ if [[ " $JVM_FEATURES " =~ " shark " ]] ; then
+ as_fn_error $? "To enable shark, you must use --with-jvm-variants=zeroshark" "$LINENO" 5
+ fi
+ fi
+
+ # Only enable jvmci on x86_64, sparcv9 and aarch64, and only on server.
+ if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+ test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
+ test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ JVM_FEATURES_jvmci="jvmci"
+ else
+ JVM_FEATURES_jvmci=""
+ fi
+
+ # All variants but minimal (and custom) get these features
+ NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti fprof vm-structs jni-check services management all-gcs nmt cds"
+
+ # Enable features depending on variant.
+ JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci"
+ JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES"
+ JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_zeroshark="zero shark $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_custom="$JVM_FEATURES"
+
+
+
+
+
+
+
+
+
+ # Used for verification of Makefiles by check-jvm-feature
+
+
+ # We don't support --with-jvm-interpreter anymore, use zero instead.
+
+
+# Check whether --with-jvm-interpreter was given.
+if test "${with_jvm_interpreter+set}" = set; then :
+ withval=$with_jvm_interpreter; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-jvm-interpreter is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-jvm-interpreter is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
###############################################################################
#
# Check dependencies for external and internal libraries.
@@ -51009,7 +52697,7 @@
fi
# Check if ffi is needed
- if test "x$JVM_VARIANT_ZERO" = xtrue || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
NEEDS_LIB_FFI=true
else
NEEDS_LIB_FFI=false
@@ -51132,14 +52820,26 @@
# If dynamic wasn't requested, go with static unless it isn't available.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libstdc++" >&5
$as_echo_n "checking how to link with libstdc++... " >&6; }
- if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
LIBCXX="$LIBCXX -lstdc++"
+ # To help comparisons with old build, put stdc++ first in JVM_LIBS
+ JVM_LIBS="-lstdc++ $JVM_LIBS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LIBS="-lstdc++ $OPENJDK_BUILD_JVM_LIBS"
LDCXX="$CXX"
STATIC_CXX_SETTING="STATIC_CXX=false"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
$as_echo "dynamic" >&6; }
else
LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS -static-libgcc"
+ # To help comparisons with old build, put stdc++ first in JVM_LIBS
+ JVM_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic $JVM_LIBS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -static-libgcc"
+ OPENJDK_BUILD_JVM_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic $OPENJDK_BUILD_JVM_LIBS"
LDCXX="$CC"
STATIC_CXX_SETTING="STATIC_CXX=true"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5
@@ -61291,7 +62991,7 @@
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
# Extract the first word of "llvm-config", so it can be a program name with args.
set dummy llvm-config; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -62017,9 +63717,143 @@
###############################################################################
+ # Check whether --enable-new-hotspot-build was given.
+if test "${enable_new_hotspot_build+set}" = set; then :
+ enableval=$enable_new_hotspot_build;
+fi
+
+
+ if test "x$enable_new_hotspot_build" = "x" || test "x$enable_new_hotspot_build" = "xyes"; then
+ USE_NEW_HOTSPOT_BUILD=true
+ else
+ USE_NEW_HOTSPOT_BUILD=false
+ fi
+
+
+ case $HOTSPOT_DEBUG_LEVEL in
+ product )
+ VARIANT="OPT"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="false"
+ ;;
+ fastdebug )
+ VARIANT="DBG"
+ FASTDEBUG="true"
+ DEBUG_CLASSFILES="true"
+ ;;
+ debug )
+ VARIANT="DBG"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="true"
+ ;;
+ optimized )
+ VARIANT="OPT"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="false"
+ ;;
+ esac
+
+
+
+
+ if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+ MACOSX_UNIVERSAL="true"
+ fi
+
+
+
+ # Make sure JVM_VARIANTS_COMMA use minimal1 for backwards compatibility
+ JVM_VARIANTS_COMMA=`$ECHO ,$JVM_VARIANTS_OPT, | $SED -e 's/,minimal,/,minimal1,/'`
+
+ JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
+ JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
+ JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,minimal1\?,/!s/.*/false/g' -e '/,minimal1\?,/s/.*/true/g'`
+ JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
+ JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
+ JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
+ JVM_VARIANT_CUSTOM=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,custom,/!s/.*/false/g' -e '/,custom,/s/.*/true/g'`
+
+ #####
+ # Generate the legacy makefile targets for hotspot.
+ HOTSPOT_TARGET=""
+
+ if test "x$JVM_VARIANT_SERVER" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL} "
+ fi
+
+ if test "x$JVM_VARIANT_CLIENT" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}1 "
+ fi
+
+ if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}minimal1 "
+ fi
+
+ if test "x$JVM_VARIANT_ZERO" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}zero "
+ fi
+
+ if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark "
+ fi
+
+ if test "x$JVM_VARIANT_CORE" = xtrue; then
+ HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core "
+ fi
+
+ HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_DEBUG_LEVEL"
+
+ # On Macosx universal binaries are produced, but they only contain
+ # 64 bit intel. This invalidates control of which jvms are built
+ # from configure, but only server is valid anyway. Fix this
+ # when hotspot makefiles are rewritten.
+ if test "x$MACOSX_UNIVERSAL" = xtrue; then
+ HOTSPOT_TARGET=universal_${HOTSPOT_DEBUG_LEVEL}
+ fi
+
HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
+ # Control wether Hotspot runs Queens test after build.
+ # Check whether --enable-hotspot-test-in-build was given.
+if test "${enable_hotspot_test_in_build+set}" = set; then :
+ enableval=$enable_hotspot_test_in_build;
+else
+ enable_hotspot_test_in_build=no
+fi
+
+ if test "x$enable_hotspot_test_in_build" = "xyes"; then
+ TEST_IN_BUILD=true
+ else
+ TEST_IN_BUILD=false
+ fi
+
+
+ if test "x$USE_NEW_HOTSPOT_BUILD" = xfalse; then
+ if test "x$JVM_VARIANT_CLIENT" = xtrue; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ as_fn_error $? "You cannot build a client JVM for a 64-bit machine." "$LINENO" 5
+ fi
+ fi
+ if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ as_fn_error $? "You cannot build a minimal JVM for a 64-bit machine." "$LINENO" 5
+ fi
+ fi
+ if test "x$JVM_VARIANT_CUSTOM" = xtrue; then
+ as_fn_error $? "You cannot build a custom JVM using the old hotspot build system." "$LINENO" 5
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
$as_echo_n "checking if elliptic curve crypto implementation is present... " >&6; }
@@ -63269,6 +65103,10 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no, does not work effectively with icecc" >&5
$as_echo "no, does not work effectively with icecc" >&6; }
USE_PRECOMPILED_HEADER=0
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, does not work with Solaris Studio" >&5
+$as_echo "no, does not work with Solaris Studio" >&6; }
+ USE_PRECOMPILED_HEADER=0
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -63689,6 +65527,32 @@
# At the end, call the custom hook. (Dummy macro if no custom sources available)
+# This needs to be done after CUSTOM_LATE_HOOK since we can setup custom features.
+
+ # Keep feature lists sorted and free of duplicates
+ JVM_FEATURES_server="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_server | $SORT -u))"
+ JVM_FEATURES_client="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_client | $SORT -u))"
+ JVM_FEATURES_core="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_core | $SORT -u))"
+ JVM_FEATURES_minimal="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_minimal | $SORT -u))"
+ JVM_FEATURES_zero="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zero | $SORT -u))"
+ JVM_FEATURES_zeroshark="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zeroshark | $SORT -u))"
+ JVM_FEATURES_custom="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_custom | $SORT -u))"
+
+ # Validate features
+ for variant in $JVM_VARIANTS; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking JVM features for JVM variant '$variant'" >&5
+$as_echo_n "checking JVM features for JVM variant '$variant'... " >&6; }
+ features_var_name=JVM_FEATURES_$variant
+ JVM_FEATURES_TO_TEST=${!features_var_name}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_FEATURES_TO_TEST" >&5
+$as_echo "$JVM_FEATURES_TO_TEST" >&6; }
+ INVALID_FEATURES=`$GREP -Fvx "${VALID_JVM_FEATURES// /$'\n'}" <<< "${JVM_FEATURES_TO_TEST// /$'\n'}"`
+ if test "x$INVALID_FEATURES" != x; then
+ as_fn_error $? "Invalid JVM feature(s): $INVALID_FEATURES" "$LINENO" 5
+ fi
+ done
+
+
# We're messing a bit with internal autoconf variables to put the config.status
# in the output directory instead of the current directory.
CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
@@ -64912,7 +66776,7 @@
printf "* Debug level: $DEBUG_LEVEL\n"
printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
printf "* JDK variant: $JDK_VARIANT\n"
- printf "* JVM variants: $with_jvm_variants\n"
+ printf "* JVM variants: $JVM_VARIANTS\n"
printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
@@ -64938,7 +66802,7 @@
fi
printf "\n"
- if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
printf "NOTE: You have requested to build more than one version of the JVM, which\n"
printf "will result in longer build times.\n"
printf "\n"
--- a/common/autoconf/help.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/help.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -119,6 +119,8 @@
PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
ccache)
PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
+ dtrace)
+ PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
esac
}
@@ -170,6 +172,13 @@
TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
$PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
done
+ $PRINTF "\n"
+
+ # Print available jvm features
+ $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
+ $PRINTF "Which are valid to use depends on the target platform.\n "
+ $PRINTF "%s " $VALID_JVM_FEATURES
+ $PRINTF "\n"
# And now exit directly
exit 0
@@ -206,7 +215,7 @@
printf "* Debug level: $DEBUG_LEVEL\n"
printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
printf "* JDK variant: $JDK_VARIANT\n"
- printf "* JVM variants: $with_jvm_variants\n"
+ printf "* JVM variants: $JVM_VARIANTS\n"
printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
@@ -232,7 +241,7 @@
fi
printf "\n"
- if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xyes"; then
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
printf "NOTE: You have requested to build more than one version of the JVM, which\n"
printf "will result in longer build times.\n"
printf "\n"
--- a/common/autoconf/hotspot-spec.gmk.in Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/hotspot-spec.gmk.in Mon Apr 11 20:16:33 2016 +0200
@@ -38,6 +38,16 @@
# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
@BUILD_HEADLESS@
+JVM_VARIANTS:=@JVM_VARIANTS_COMMA@
+
+JVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
+JVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
+JVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
+JVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
+JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
+JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
+JVM_VARIANT_CUSTOM:=@JVM_VARIANT_HOTSPOT@
+
# Legacy setting: OPT or DBG
VARIANT:=@VARIANT@
# Legacy setting: true or false
@@ -92,8 +102,7 @@
ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
ALT_EXPORT_PATH=$(HOTSPOT_DIST)
-JVM_INTERPRETER:=@JVM_INTERPRETER@
-ifeq ($(JVM_INTERPRETER), cpp)
+ifeq ($(HOTSPOT_TARGET_CPU), zero)
CC_INTERP=true
endif
--- a/common/autoconf/hotspot.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/hotspot.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -23,170 +23,344 @@
# questions.
#
-###############################################################################
-# Check which interpreter of the JVM we want to build.
-# Currently we have:
-# template: Template interpreter (the default)
-# cpp : C++ interpreter
-AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_INTERPRETER],
-[
- AC_ARG_WITH([jvm-interpreter], [AS_HELP_STRING([--with-jvm-interpreter],
- [JVM interpreter to build (template, cpp) @<:@template@:>@])])
+# All valid JVM features, regardless of platform
+VALID_JVM_FEATURES="compiler1 compiler2 zero shark minimal dtrace jvmti jvmci \
+ fprof vm-structs jni-check services management all-gcs nmt cds static-build"
+
+# All valid JVM variants
+VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
- AC_MSG_CHECKING([which interpreter of the JVM to build])
- if test "x$with_jvm_interpreter" = x; then
- JVM_INTERPRETER="template"
- else
- JVM_INTERPRETER="$with_jvm_interpreter"
- fi
- AC_MSG_RESULT([$JVM_INTERPRETER])
+###############################################################################
+# Check if the specified JVM variant should be built. To be used in shell if
+# constructs, like this:
+# if HOTSPOT_CHECK_JVM_VARIANT(server); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_VARIANTS has setup variants.
- if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then
- AC_MSG_ERROR([The available JVM interpreters are: template, cpp])
- fi
-
- AC_SUBST(JVM_INTERPRETER)
-])
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+AC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT],
+[ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ])
###############################################################################
-# Check which variants of the JVM that we want to build.
-# Currently we have:
-# server: normal interpreter and a C2 or tiered C1/C2 compiler
-# client: normal interpreter and C1 (no C2 compiler) (only 32-bit platforms)
-# minimal1: reduced form of client with optional VM services and features stripped out
-# zero: no machine code interpreter, no compiler
-# zeroshark: zero interpreter and shark/llvm compiler backend
-# core: interpreter only, no compiler (only works on some platforms)
+# Check if the specified JVM features are explicitly enabled. To be used in
+# shell if constructs, like this:
+# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+AC_DEFUN([HOTSPOT_CHECK_JVM_FEATURE],
+[ [ [[ " $JVM_FEATURES " =~ " $1 " ]] ] ])
+
+###############################################################################
+# Check which variants of the JVM that we want to build. Available variants are:
+# server: normal interpreter, and a tiered C1/C2 compiler
+# client: normal interpreter, and C1 (no C2 compiler)
+# minimal: reduced form of client with optional features stripped out
+# core: normal interpreter only, no compiler
+# zero: C++ based interpreter only, no compiler
+# zeroshark: C++ based interpreter, and a llvm-based compiler
+# custom: baseline JVM with no default features
+#
AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS],
[
- AC_MSG_CHECKING([which variants of the JVM to build])
AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants],
- [JVM variants (separated by commas) to build (server, client, minimal1, zero, zeroshark, core) @<:@server@:>@])])
+ [JVM variants (separated by commas) to build (server,client,minimal,core,zero,zeroshark,custom) @<:@server@:>@])])
if test "x$with_jvm_variants" = x; then
with_jvm_variants="server"
fi
+ JVM_VARIANTS_OPT="$with_jvm_variants"
- JVM_VARIANTS=",$with_jvm_variants,"
- TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'`
+ # Has the user listed more than one variant?
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [ [[ "$JVM_VARIANTS_OPT" =~ "," ]] ]; then
+ BUILDING_MULTIPLE_JVM_VARIANTS=true
+ else
+ BUILDING_MULTIPLE_JVM_VARIANTS=false
+ fi
+ # Replace the commas with AND for use in the build directory name.
+ JVM_VARIANTS_WITH_AND=`$ECHO "$JVM_VARIANTS_OPT" | $SED -e 's/,/AND/g'`
+
+ AC_MSG_CHECKING([which variants of the JVM to build])
+ # JVM_VARIANTS is a space-separated list.
+ # Also use minimal, not minimal1 (which is kept for backwards compatibility).
+ JVM_VARIANTS=`$ECHO $JVM_VARIANTS_OPT | $SED -e 's/,/ /g' -e 's/minimal1/minimal/'`
+ AC_MSG_RESULT([$JVM_VARIANTS])
+
+ # Check that the selected variants are valid
+
+ # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
+ INVALID_VARIANTS=`$GREP -Fvx "${VALID_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ if test "x$INVALID_VARIANTS" != x; then
+ AC_MSG_NOTICE([Unknown variant(s) specified: $INVALID_VARIANTS])
+ AC_MSG_ERROR([The available JVM variants are: $VALID_JVM_VARIANTS])
+ fi
+
+ # All "special" variants share the same output directory ("server")
+ VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}" <<< "${JVM_VARIANTS// /$'\n'}"`
+ if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
+ AC_MSG_ERROR([You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS.])
+ fi
- if test "x$TEST_VARIANTS" != "x,"; then
- AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, zero, zeroshark, core])
+ AC_SUBST(JVM_VARIANTS)
+ AC_SUBST(VALID_JVM_VARIANTS)
+
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ # zero behaves as a platform and rewrites these values. This is really weird. :(
+ # We are guaranteed that we do not build any other variants when building zero.
+ HOTSPOT_TARGET_CPU=zero
+ HOTSPOT_TARGET_CPU_ARCH=zero
fi
- AC_MSG_RESULT([$with_jvm_variants])
+])
+
+###############################################################################
+# Check if dtrace should be enabled and has all prerequisites present.
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_DTRACE],
+[
+ # Test for dtrace dependencies
+ AC_ARG_ENABLE([dtrace], [AS_HELP_STRING([--enable-dtrace@<:@=yes/no/auto@:>@],
+ [enable dtrace. Default is auto, where dtrace is enabled if all dependencies
+ are present.])])
+
+ DTRACE_DEP_MISSING=false
+
+ AC_MSG_CHECKING([for dtrace tool])
+ if test "x$DTRACE" != "x" && test -x "$DTRACE"; then
+ AC_MSG_RESULT([$DTRACE])
+ else
+ AC_MSG_RESULT([not found, cannot build dtrace])
+ DTRACE_DEP_MISSING=true
+ fi
+
+ AC_CHECK_HEADERS([sys/sdt.h], [DTRACE_HEADERS_OK=yes],[DTRACE_HEADERS_OK=no])
+ if test "x$DTRACE_HEADERS_OK" != "xyes"; then
+ DTRACE_DEP_MISSING=true
+ fi
- JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
- JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
- JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS" | $SED -e '/,minimal1,/!s/.*/false/g' -e '/,minimal1,/s/.*/true/g'`
- JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
- JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
- JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
+ AC_MSG_CHECKING([if dtrace should be built])
+ if test "x$enable_dtrace" = "xyes"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ AC_MSG_RESULT([no, missing dependencies])
+ HELP_MSG_MISSING_DEPENDENCY([dtrace])
+ AC_MSG_ERROR([Cannot enable dtrace with missing dependencies. See above. $HELP_MSG])
+ else
+ INCLUDE_DTRACE=true
+ AC_MSG_RESULT([yes, forced])
+ fi
+ elif test "x$enable_dtrace" = "xno"; then
+ INCLUDE_DTRACE=false
+ AC_MSG_RESULT([no, forced])
+ elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
+ if test "x$OPENJDK_TARGET_OS" = "xlinux" && test "x$OPENJDK" != "xtrue"; then
+ INCLUDE_DTRACE=false
+ AC_MSG_RESULT([no, non-open linux build])
+ elif test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ INCLUDE_DTRACE=false
+ AC_MSG_RESULT([no, missing dependencies])
+ else
+ INCLUDE_DTRACE=true
+ AC_MSG_RESULT([yes, dependencies present])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --enable-dtrace: $enable_dtrace])
+ fi
+ AC_SUBST(INCLUDE_DTRACE)
+])
- if test "x$JVM_VARIANT_CLIENT" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- AC_MSG_ERROR([You cannot build a client JVM for a 64-bit machine.])
- fi
+###############################################################################
+# Set up all JVM features for each JVM variant.
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
+[
+ # The user can in some cases supply additional jvm features. For the custom
+ # variant, this defines the entire variant.
+ AC_ARG_WITH([jvm-features], [AS_HELP_STRING([--with-jvm-features],
+ [additional JVM features to enable (separated by comma), use '--help' to show possible values @<:@none@:>@])])
+ if test "x$with_jvm_features" != x; then
+ AC_MSG_CHECKING([additional JVM features])
+ JVM_FEATURES=`$ECHO $with_jvm_features | $SED -e 's/,/ /g'`
+ AC_MSG_RESULT([$JVM_FEATURES])
+ fi
+
+ # Verify that dependencies are met for explicitly set features.
+ if HOTSPOT_CHECK_JVM_FEATURE(jvmti) && ! HOTSPOT_CHECK_JVM_FEATURE(services); then
+ AC_MSG_ERROR([Specified JVM feature 'jvmti' requires feature 'services'])
fi
- if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
- AC_MSG_ERROR([You cannot build a minimal JVM for a 64-bit machine.])
+
+ if HOTSPOT_CHECK_JVM_FEATURE(management) && ! HOTSPOT_CHECK_JVM_FEATURE(nmt); then
+ AC_MSG_ERROR([Specified JVM feature 'management' requires feature 'nmt'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(jvmci) && ! HOTSPOT_CHECK_JVM_FEATURE(compiler2); then
+ AC_MSG_ERROR([Specified JVM feature 'jvmci' requires feature 'compiler2'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(compiler2) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then
+ AC_MSG_ERROR([Specified JVM feature 'compiler2' requires feature 'all-gcs'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(vm-structs) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then
+ AC_MSG_ERROR([Specified JVM feature 'vm-structs' requires feature 'all-gcs'])
+ fi
+
+ # Turn on additional features based on other parts of configure
+ if test "x$INCLUDE_DTRACE" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES dtrace"
+ else
+ if HOTSPOT_CHECK_JVM_FEATURE(dtrace); then
+ AC_MSG_ERROR([To enable dtrace, you must use --enable-dtrace])
fi
fi
- # Replace the commas with AND for use in the build directory name.
- ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/g'`
- 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/'`
- if test "x$COUNT_VARIANTS" != "x,1"; then
- BUILDING_MULTIPLE_JVM_VARIANTS=yes
+ if test "x$STATIC_BUILD" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES static-build"
else
- BUILDING_MULTIPLE_JVM_VARIANTS=no
+ if HOTSPOT_CHECK_JVM_FEATURE(static-build); then
+ AC_MSG_ERROR([To enable static-build, you must use --enable-static-build])
+ fi
+ fi
+
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero) && ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ if HOTSPOT_CHECK_JVM_FEATURE(zero); then
+ AC_MSG_ERROR([To enable zero/zeroshark, you must use --with-jvm-variants=zero/zeroshark])
+ fi
+ fi
+
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ if HOTSPOT_CHECK_JVM_FEATURE(shark); then
+ AC_MSG_ERROR([To enable shark, you must use --with-jvm-variants=zeroshark])
+ fi
+ fi
+
+ # Only enable jvmci on x86_64, sparcv9 and aarch64, and only on server.
+ if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+ test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
+ test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ JVM_FEATURES_jvmci="jvmci"
+ else
+ JVM_FEATURES_jvmci=""
fi
- if test "x$JVM_VARIANT_ZERO" = xtrue && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xyes; then
- AC_MSG_ERROR([You cannot build multiple variants with zero.])
- fi
+ # All variants but minimal (and custom) get these features
+ NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti fprof vm-structs jni-check services management all-gcs nmt cds"
+
+ # Enable features depending on variant.
+ JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci"
+ JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES"
+ JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_zeroshark="zero shark $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_custom="$JVM_FEATURES"
+
+ AC_SUBST(JVM_FEATURES_server)
+ AC_SUBST(JVM_FEATURES_client)
+ AC_SUBST(JVM_FEATURES_core)
+ AC_SUBST(JVM_FEATURES_minimal)
+ AC_SUBST(JVM_FEATURES_zero)
+ AC_SUBST(JVM_FEATURES_zeroshark)
+ AC_SUBST(JVM_FEATURES_custom)
+
+ # Used for verification of Makefiles by check-jvm-feature
+ AC_SUBST(VALID_JVM_FEATURES)
+
+ # We don't support --with-jvm-interpreter anymore, use zero instead.
+ BASIC_DEPRECATED_ARG_WITH(jvm-interpreter)
+])
+
+###############################################################################
+# Validate JVM features once all setup is complete, including custom setup.
+#
+AC_DEFUN_ONCE([HOTSPOT_VALIDATE_JVM_FEATURES],
+[
+ # Keep feature lists sorted and free of duplicates
+ JVM_FEATURES_server="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_server | $SORT -u))"
+ JVM_FEATURES_client="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_client | $SORT -u))"
+ JVM_FEATURES_core="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_core | $SORT -u))"
+ JVM_FEATURES_minimal="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_minimal | $SORT -u))"
+ JVM_FEATURES_zero="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zero | $SORT -u))"
+ JVM_FEATURES_zeroshark="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zeroshark | $SORT -u))"
+ JVM_FEATURES_custom="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_custom | $SORT -u))"
- AC_SUBST(JVM_VARIANTS)
- AC_SUBST(JVM_VARIANT_SERVER)
- AC_SUBST(JVM_VARIANT_CLIENT)
- AC_SUBST(JVM_VARIANT_MINIMAL1)
- AC_SUBST(JVM_VARIANT_ZERO)
- AC_SUBST(JVM_VARIANT_ZEROSHARK)
- AC_SUBST(JVM_VARIANT_CORE)
+ # Validate features
+ for variant in $JVM_VARIANTS; do
+ AC_MSG_CHECKING([JVM features for JVM variant '$variant'])
+ features_var_name=JVM_FEATURES_$variant
+ JVM_FEATURES_TO_TEST=${!features_var_name}
+ AC_MSG_RESULT([$JVM_FEATURES_TO_TEST])
+ INVALID_FEATURES=`$GREP -Fvx "${VALID_JVM_FEATURES// /$'\n'}" <<< "${JVM_FEATURES_TO_TEST// /$'\n'}"`
+ if test "x$INVALID_FEATURES" != x; then
+ AC_MSG_ERROR([Invalid JVM feature(s): $INVALID_FEATURES])
+ fi
+ done
+])
+
+###############################################################################
+# Support for old hotspot build. Remove once new hotspot build has proven
+# to work satisfactory.
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_LEGACY_BUILD],
+[
+ AC_ARG_ENABLE(new-hotspot-build, [AS_HELP_STRING([--disable-new-hotspot-build],
+ [disable the new hotspot build system (use the old) @<:@enabled@:>@])])
+
+ if test "x$enable_new_hotspot_build" = "x" || test "x$enable_new_hotspot_build" = "xyes"; then
+ USE_NEW_HOTSPOT_BUILD=true
+ else
+ USE_NEW_HOTSPOT_BUILD=false
+ fi
+ AC_SUBST(USE_NEW_HOTSPOT_BUILD)
+
+ case $HOTSPOT_DEBUG_LEVEL in
+ product )
+ VARIANT="OPT"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="false"
+ ;;
+ fastdebug )
+ VARIANT="DBG"
+ FASTDEBUG="true"
+ DEBUG_CLASSFILES="true"
+ ;;
+ debug )
+ VARIANT="DBG"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="true"
+ ;;
+ optimized )
+ VARIANT="OPT"
+ FASTDEBUG="false"
+ DEBUG_CLASSFILES="false"
+ ;;
+ esac
+ AC_SUBST(VARIANT)
+ AC_SUBST(FASTDEBUG)
+ AC_SUBST(DEBUG_CLASSFILES)
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
MACOSX_UNIVERSAL="true"
fi
AC_SUBST(MACOSX_UNIVERSAL)
-])
+ # Make sure JVM_VARIANTS_COMMA use minimal1 for backwards compatibility
+ JVM_VARIANTS_COMMA=`$ECHO ,$JVM_VARIANTS_OPT, | $SED -e 's/,minimal,/,minimal1,/'`
-###############################################################################
-# Setup legacy vars/targets and new vars to deal with different debug levels.
-#
-# release: no debug information, all optimizations, no asserts.
-# optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'.
-# fastdebug: debug information (-g), all optimizations, all asserts
-# slowdebug: debug information (-g), no optimizations, all asserts
-#
-AC_DEFUN_ONCE([HOTSPOT_SETUP_DEBUG_LEVEL],
-[
- case $DEBUG_LEVEL in
- release )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- BUILD_VARIANT_RELEASE=""
- HOTSPOT_DEBUG_LEVEL="product"
- HOTSPOT_EXPORT="product"
- ;;
- fastdebug )
- VARIANT="DBG"
- FASTDEBUG="true"
- DEBUG_CLASSFILES="true"
- BUILD_VARIANT_RELEASE="-fastdebug"
- HOTSPOT_DEBUG_LEVEL="fastdebug"
- HOTSPOT_EXPORT="fastdebug"
- ;;
- slowdebug )
- VARIANT="DBG"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="true"
- BUILD_VARIANT_RELEASE="-debug"
- HOTSPOT_DEBUG_LEVEL="debug"
- HOTSPOT_EXPORT="debug"
- ;;
- optimized )
- VARIANT="OPT"
- FASTDEBUG="false"
- DEBUG_CLASSFILES="false"
- BUILD_VARIANT_RELEASE="-optimized"
- HOTSPOT_DEBUG_LEVEL="optimized"
- HOTSPOT_EXPORT="optimized"
- ;;
- esac
-
- # The debug level 'optimized' is a little special because it is currently only
- # applicable to the HotSpot build where it means to build a completely
- # optimized version of the VM without any debugging code (like for the
- # 'release' debug level which is called 'product' in the HotSpot build) but
- # with the exception that it can contain additional code which is otherwise
- # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
- # test new and/or experimental features which are not intended for customer
- # shipment. Because these new features need to be tested and benchmarked in
- # real world scenarios, we want to build the containing JDK at the 'release'
- # debug level.
- if test "x$DEBUG_LEVEL" = xoptimized; then
- DEBUG_LEVEL="release"
- fi
+ JVM_VARIANT_SERVER=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,server,/!s/.*/false/g' -e '/,server,/s/.*/true/g'`
+ JVM_VARIANT_CLIENT=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,client,/!s/.*/false/g' -e '/,client,/s/.*/true/g'`
+ JVM_VARIANT_MINIMAL1=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,minimal1\?,/!s/.*/false/g' -e '/,minimal1\?,/s/.*/true/g'`
+ JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'`
+ JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'`
+ JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'`
+ JVM_VARIANT_CUSTOM=`$ECHO "$JVM_VARIANTS_COMMA" | $SED -e '/,custom,/!s/.*/false/g' -e '/,custom,/s/.*/true/g'`
#####
# Generate the legacy makefile targets for hotspot.
- # The hotspot api for selecting the build artifacts, really, needs to be improved.
- # JDK-7195896 will fix this on the hotspot side by using the JVM_VARIANT_* variables to
- # determine what needs to be built. All we will need to set here is all_product, all_fastdebug etc
- # But until then ...
HOTSPOT_TARGET=""
if test "x$JVM_VARIANT_SERVER" = xtrue; then
@@ -213,27 +387,19 @@
HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core "
fi
- HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT"
+ HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_DEBUG_LEVEL"
# On Macosx universal binaries are produced, but they only contain
# 64 bit intel. This invalidates control of which jvms are built
# from configure, but only server is valid anyway. Fix this
# when hotspot makefiles are rewritten.
if test "x$MACOSX_UNIVERSAL" = xtrue; then
- HOTSPOT_TARGET=universal_${HOTSPOT_EXPORT}
+ HOTSPOT_TARGET=universal_${HOTSPOT_DEBUG_LEVEL}
fi
- #####
+ HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
+ AC_SUBST(HOTSPOT_MAKE_ARGS)
- AC_SUBST(DEBUG_LEVEL)
- AC_SUBST(VARIANT)
- AC_SUBST(FASTDEBUG)
- AC_SUBST(DEBUG_CLASSFILES)
- AC_SUBST(BUILD_VARIANT_RELEASE)
-])
-
-AC_DEFUN_ONCE([HOTSPOT_SETUP_HOTSPOT_OPTIONS],
-[
# Control wether Hotspot runs Queens test after build.
AC_ARG_ENABLE([hotspot-test-in-build], [AS_HELP_STRING([--enable-hotspot-test-in-build],
[run the Queens test after Hotspot build @<:@disabled@:>@])],,
@@ -244,10 +410,29 @@
TEST_IN_BUILD=false
fi
AC_SUBST(TEST_IN_BUILD)
-])
-AC_DEFUN_ONCE([HOTSPOT_SETUP_BUILD_TWEAKS],
-[
- HOTSPOT_MAKE_ARGS="$HOTSPOT_TARGET"
- AC_SUBST(HOTSPOT_MAKE_ARGS)
+ if test "x$USE_NEW_HOTSPOT_BUILD" = xfalse; then
+ if test "x$JVM_VARIANT_CLIENT" = xtrue; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ AC_MSG_ERROR([You cannot build a client JVM for a 64-bit machine.])
+ fi
+ fi
+ if test "x$JVM_VARIANT_MINIMAL1" = xtrue; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ AC_MSG_ERROR([You cannot build a minimal JVM for a 64-bit machine.])
+ fi
+ fi
+ if test "x$JVM_VARIANT_CUSTOM" = xtrue; then
+ AC_MSG_ERROR([You cannot build a custom JVM using the old hotspot build system.])
+ fi
+ fi
+
+ AC_SUBST(JVM_VARIANTS_COMMA)
+ AC_SUBST(JVM_VARIANT_SERVER)
+ AC_SUBST(JVM_VARIANT_CLIENT)
+ AC_SUBST(JVM_VARIANT_MINIMAL1)
+ AC_SUBST(JVM_VARIANT_HOTSPOT)
+ AC_SUBST(JVM_VARIANT_ZERO)
+ AC_SUBST(JVM_VARIANT_ZEROSHARK)
+ AC_SUBST(JVM_VARIANT_CORE)
])
--- a/common/autoconf/jdk-options.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/jdk-options.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -81,6 +81,31 @@
test "x$DEBUG_LEVEL" != xslowdebug; then
AC_MSG_ERROR([Allowed debug levels are: release, fastdebug, slowdebug and optimized])
fi
+
+ # Translate DEBUG_LEVEL to debug level used by Hotspot
+ HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ HOTSPOT_DEBUG_LEVEL="product"
+ elif test "x$DEBUG_LEVEL" = xslowdebug; then
+ HOTSPOT_DEBUG_LEVEL="debug"
+ fi
+
+ if test "x$DEBUG_LEVEL" = xoptimized; then
+ # The debug level 'optimized' is a little special because it is currently only
+ # applicable to the HotSpot build where it means to build a completely
+ # optimized version of the VM without any debugging code (like for the
+ # 'release' debug level which is called 'product' in the HotSpot build) but
+ # with the exception that it can contain additional code which is otherwise
+ # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
+ # test new and/or experimental features which are not intended for customer
+ # shipment. Because these new features need to be tested and benchmarked in
+ # real world scenarios, we want to build the containing JDK at the 'release'
+ # debug level.
+ DEBUG_LEVEL="release"
+ fi
+
+ AC_SUBST(HOTSPOT_DEBUG_LEVEL)
+ AC_SUBST(DEBUG_LEVEL)
])
###############################################################################
@@ -178,10 +203,7 @@
# Should we build the serviceability agent (SA)?
INCLUDE_SA=true
- if test "x$JVM_VARIANT_ZERO" = xtrue ; then
- INCLUDE_SA=false
- fi
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
INCLUDE_SA=false
fi
if test "x$OPENJDK_TARGET_OS" = xaix ; then
--- a/common/autoconf/jdk-version.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/jdk-version.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -72,6 +72,7 @@
AC_SUBST(PRODUCT_SUFFIX)
AC_SUBST(JDK_RC_PLATFORM_NAME)
AC_SUBST(COMPANY_NAME)
+ AC_SUBST(HOTSPOT_VM_DISTRO)
AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
AC_SUBST(MACOSX_BUNDLE_ID_BASE)
--- a/common/autoconf/lib-std.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/lib-std.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -88,13 +88,25 @@
# If dynamic was requested, it's available since it would fail above otherwise.
# If dynamic wasn't requested, go with static unless it isn't available.
AC_MSG_CHECKING([how to link with libstdc++])
- if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
LIBCXX="$LIBCXX -lstdc++"
+ # To help comparisons with old build, put stdc++ first in JVM_LIBS
+ JVM_LIBS="-lstdc++ $JVM_LIBS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LIBS="-lstdc++ $OPENJDK_BUILD_JVM_LIBS"
LDCXX="$CXX"
STATIC_CXX_SETTING="STATIC_CXX=false"
AC_MSG_RESULT([dynamic])
else
LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS -static-libgcc"
+ # To help comparisons with old build, put stdc++ first in JVM_LIBS
+ JVM_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic $JVM_LIBS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -static-libgcc"
+ OPENJDK_BUILD_JVM_LIBS="-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic $OPENJDK_BUILD_JVM_LIBS"
LDCXX="$CC"
STATIC_CXX_SETTING="STATIC_CXX=true"
AC_MSG_RESULT([static])
--- a/common/autoconf/libraries.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/libraries.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -74,7 +74,7 @@
fi
# Check if ffi is needed
- if test "x$JVM_VARIANT_ZERO" = xtrue || test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
NEEDS_LIB_FFI=true
else
NEEDS_LIB_FFI=false
@@ -102,7 +102,7 @@
################################################################################
AC_DEFUN_ONCE([LIB_SETUP_LLVM],
[
- if test "x$JVM_VARIANT_ZEROSHARK" = xtrue; then
+ if HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
AC_CHECK_PROG([LLVM_CONFIG], [llvm-config], [llvm-config])
if test "x$LLVM_CONFIG" != xllvm-config; then
--- a/common/autoconf/platform.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/platform.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -274,168 +274,168 @@
#
AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
[
+ PLATFORM_SETUP_LEGACY_VARS_HELPER([TARGET])
+ PLATFORM_SETUP_LEGACY_VARS_HELPER([BUILD])
+
+ # ZERO_ARCHDEF is used to enable architecture-specific code.
+ # This is used in legacy hotspot build.
+ ZERO_ARCHDEF="$HOTSPOT_TARGET_CPU_DEFINE"
+ AC_SUBST(ZERO_ARCHDEF)
+
+])
+
+# $1 - Either TARGET or BUILD to setup the variables for.
+AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
+[
# Also store the legacy naming of the cpu.
# Ie i586 and amd64 instead of x86 and x86_64
- OPENJDK_TARGET_CPU_LEGACY="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_CPU" = xx86; then
- OPENJDK_TARGET_CPU_LEGACY="i586"
- elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_LEGACY="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_LEGACY="i586"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
# On all platforms except MacOSX replace x86_64 with amd64.
- OPENJDK_TARGET_CPU_LEGACY="amd64"
+ OPENJDK_$1_CPU_LEGACY="amd64"
fi
- AC_SUBST(OPENJDK_TARGET_CPU_LEGACY)
+ AC_SUBST(OPENJDK_$1_CPU_LEGACY)
# And the second legacy naming of the cpu.
# Ie i386 and amd64 instead of x86 and x86_64.
- OPENJDK_TARGET_CPU_LEGACY_LIB="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_CPU" = xx86; then
- OPENJDK_TARGET_CPU_LEGACY_LIB="i386"
- elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
- OPENJDK_TARGET_CPU_LEGACY_LIB="amd64"
- fi
- AC_SUBST(OPENJDK_TARGET_CPU_LEGACY_LIB)
-
- # This is the name of the cpu (but using i386 and amd64 instead of
- # x86 and x86_64, respectively), preceeded by a /, to be used when
- # locating libraries. On macosx, it's empty, though.
- OPENJDK_TARGET_CPU_LIBDIR="/$OPENJDK_TARGET_CPU_LEGACY_LIB"
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
- OPENJDK_TARGET_CPU_LIBDIR=""
+ OPENJDK_$1_CPU_LEGACY_LIB="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_LEGACY_LIB="i386"
+ elif test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_LEGACY_LIB="amd64"
fi
- AC_SUBST(OPENJDK_TARGET_CPU_LIBDIR)
-
- # Now do the same for OPENJDK_BUILD_CPU...
- # Also store the legacy naming of the cpu.
- # Ie i586 and amd64 instead of x86 and x86_64
- OPENJDK_BUILD_CPU_LEGACY="$OPENJDK_BUILD_CPU"
- if test "x$OPENJDK_BUILD_CPU" = xx86; then
- OPENJDK_BUILD_CPU_LEGACY="i586"
- elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
- # On all platforms except MacOSX replace x86_64 with amd64.
- OPENJDK_BUILD_CPU_LEGACY="amd64"
- fi
- AC_SUBST(OPENJDK_BUILD_CPU_LEGACY)
-
- # And the second legacy naming of the cpu.
- # Ie i386 and amd64 instead of x86 and x86_64.
- OPENJDK_BUILD_CPU_LEGACY_LIB="$OPENJDK_BUILD_CPU"
- if test "x$OPENJDK_BUILD_CPU" = xx86; then
- OPENJDK_BUILD_CPU_LEGACY_LIB="i386"
- elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
- OPENJDK_BUILD_CPU_LEGACY_LIB="amd64"
- fi
- AC_SUBST(OPENJDK_BUILD_CPU_LEGACY_LIB)
+ AC_SUBST(OPENJDK_$1_CPU_LEGACY_LIB)
# This is the name of the cpu (but using i386 and amd64 instead of
# x86 and x86_64, respectively), preceeded by a /, to be used when
# locating libraries. On macosx, it's empty, though.
- OPENJDK_BUILD_CPU_LIBDIR="/$OPENJDK_BUILD_CPU_LEGACY_LIB"
- if test "x$OPENJDK_BUILD_OS" = xmacosx; then
- OPENJDK_BUILD_CPU_LIBDIR=""
+ OPENJDK_$1_CPU_LIBDIR="/$OPENJDK_$1_CPU_LEGACY_LIB"
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_CPU_LIBDIR=""
fi
- AC_SUBST(OPENJDK_BUILD_CPU_LIBDIR)
+ AC_SUBST(OPENJDK_$1_CPU_LIBDIR)
- # OPENJDK_TARGET_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
+ # OPENJDK_$1_CPU_ISADIR is normally empty. On 64-bit Solaris systems, it is set to
# /amd64 or /sparcv9. This string is appended to some library paths, like this:
- # /usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libexample.so
- OPENJDK_TARGET_CPU_ISADIR=""
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
- OPENJDK_TARGET_CPU_ISADIR="/amd64"
- elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
- OPENJDK_TARGET_CPU_ISADIR="/sparcv9"
+ # /usr/lib${OPENJDK_$1_CPU_ISADIR}/libexample.so
+ OPENJDK_$1_CPU_ISADIR=""
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_ISADIR="/amd64"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ OPENJDK_$1_CPU_ISADIR="/sparcv9"
fi
fi
- AC_SUBST(OPENJDK_TARGET_CPU_ISADIR)
+ AC_SUBST(OPENJDK_$1_CPU_ISADIR)
- # Setup OPENJDK_TARGET_CPU_OSARCH, which is used to set the os.arch Java system property
- OPENJDK_TARGET_CPU_OSARCH="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$OPENJDK_TARGET_CPU" = xx86; then
+ # Setup OPENJDK_$1_CPU_OSARCH, which is used to set the os.arch Java system property
+ OPENJDK_$1_CPU_OSARCH="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_OS" = xlinux && test "x$OPENJDK_$1_CPU" = xx86; then
# On linux only, we replace x86 with i386.
- OPENJDK_TARGET_CPU_OSARCH="i386"
- elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_OSARCH="i386"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
- OPENJDK_TARGET_CPU_OSARCH="amd64"
+ OPENJDK_$1_CPU_OSARCH="amd64"
fi
- AC_SUBST(OPENJDK_TARGET_CPU_OSARCH)
+ AC_SUBST(OPENJDK_$1_CPU_OSARCH)
- OPENJDK_TARGET_CPU_JLI="$OPENJDK_TARGET_CPU"
- if test "x$OPENJDK_TARGET_CPU" = xx86; then
- OPENJDK_TARGET_CPU_JLI="i386"
- elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_JLI="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_JLI="i386"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
# On all platforms except macosx, we replace x86_64 with amd64.
- OPENJDK_TARGET_CPU_JLI="amd64"
+ OPENJDK_$1_CPU_JLI="amd64"
fi
# Now setup the -D flags for building libjli.
- OPENJDK_TARGET_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_TARGET_CPU_JLI\"'"
- if test "x$OPENJDK_TARGET_OS" = xsolaris; then
- if test "x$OPENJDK_TARGET_CPU_ARCH" = xsparc; then
- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
- elif test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
+ OPENJDK_$1_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_$1_CPU_JLI\"'"
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ if test "x$OPENJDK_$1_CPU_ARCH" = xsparc; then
+ OPENJDK_$1_CPU_JLI_CFLAGS="$OPENJDK_$1_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
+ elif test "x$OPENJDK_$1_CPU_ARCH" = xx86; then
+ OPENJDK_$1_CPU_JLI_CFLAGS="$OPENJDK_$1_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
fi
fi
- AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS)
+ AC_SUBST(OPENJDK_$1_CPU_JLI_CFLAGS)
- OPENJDK_BUILD_CPU_JLI="$OPENJDK_BUILD_CPU"
- if test "x$OPENJDK_BUILD_CPU" = xx86; then
- OPENJDK_BUILD_CPU_JLI="i386"
- elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
- # On all platforms except macosx, we replace x86_64 with amd64.
- OPENJDK_BUILD_CPU_JLI="amd64"
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_$1_OS_EXPORT_DIR=${OPENJDK_$1_OS_TYPE}
fi
- # Now setup the -D flags for building libjli.
- OPENJDK_BUILD_CPU_JLI_CFLAGS="-DLIBARCHNAME='\"$OPENJDK_BUILD_CPU_JLI\"'"
- if test "x$OPENJDK_BUILD_OS" = xsolaris; then
- if test "x$OPENJDK_BUILD_CPU_ARCH" = xsparc; then
- OPENJDK_BUILD_CPU_JLI_CFLAGS="$OPENJDK_BUILD_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"sparc\"' -DLIBARCH64NAME='\"sparcv9\"'"
- elif test "x$OPENJDK_BUILD_CPU_ARCH" = xx86; then
- OPENJDK_BUILD_CPU_JLI_CFLAGS="$OPENJDK_BUILD_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"
- fi
- fi
- AC_SUBST(OPENJDK_BUILD_CPU_JLI_CFLAGS)
+ AC_SUBST(OPENJDK_$1_OS_EXPORT_DIR)
- if test "x$OPENJDK_TARGET_OS" = xmacosx; then
- OPENJDK_TARGET_OS_EXPORT_DIR=macosx
- else
- OPENJDK_TARGET_OS_EXPORT_DIR=${OPENJDK_TARGET_OS_TYPE}
- fi
- AC_SUBST(OPENJDK_TARGET_OS_EXPORT_DIR)
-
- if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ if test "x$OPENJDK_$1_CPU_BITS" = x64; then
A_LP64="LP64:="
# -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
# unpack200.exe
- if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
- ADD_LP64="-D_LP64=1"
+ if test "x$OPENJDK_$1_OS" = xlinux || test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_ADD_LP64="-D_LP64=1"
fi
fi
AC_SUBST(LP64,$A_LP64)
- if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
- if test "x$OPENJDK_BUILD_OS" = xlinux || test "x$OPENJDK_BUILD_OS" = xmacosx; then
- OPENJDK_BUILD_ADD_LP64="-D_LP64=1"
- fi
- fi
if test "x$COMPILE_TYPE" = "xcross"; then
# FIXME: ... or should this include reduced builds..?
- DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_TARGET_CPU_LEGACY"
+ DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_$1_CPU_LEGACY"
else
DEFINE_CROSS_COMPILE_ARCH=""
fi
AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
- # ZERO_ARCHDEF is used to enable architecture-specific code
- case "${OPENJDK_TARGET_CPU}" in
- ppc) ZERO_ARCHDEF=PPC32 ;;
- ppc64) ZERO_ARCHDEF=PPC64 ;;
- s390*) ZERO_ARCHDEF=S390 ;;
- sparc*) ZERO_ARCHDEF=SPARC ;;
- x86_64*) ZERO_ARCHDEF=AMD64 ;;
- x86) ZERO_ARCHDEF=IA32 ;;
- *) ZERO_ARCHDEF=$(echo "${OPENJDK_TARGET_CPU_LEGACY_LIB}" | tr a-z A-Z)
- esac
- AC_SUBST(ZERO_ARCHDEF)
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_$1_OS=${OPENJDK_$1_OS}
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ HOTSPOT_$1_OS=bsd
+ fi
+ AC_SUBST(HOTSPOT_$1_OS)
+
+ HOTSPOT_$1_OS_TYPE=${OPENJDK_$1_OS_TYPE}
+ if test "x$OPENJDK_$1_OS_TYPE" = xunix; then
+ HOTSPOT_$1_OS_TYPE=posix
+ fi
+ AC_SUBST(HOTSPOT_$1_OS_TYPE)
+
+ HOTSPOT_$1_CPU=${OPENJDK_$1_CPU}
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ HOTSPOT_$1_CPU=x86_32
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ HOTSPOT_$1_CPU=sparc
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ HOTSPOT_$1_CPU=ppc_64
+ fi
+ AC_SUBST(HOTSPOT_$1_CPU)
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_$1_CPU_ARCH=${OPENJDK_$1_CPU_ARCH}
+ AC_SUBST(HOTSPOT_$1_CPU_ARCH)
+
+ # Setup HOTSPOT_$1_CPU_DEFINE
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ HOTSPOT_$1_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_$1_CPU" = xx86_64; then
+ HOTSPOT_$1_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ HOTSPOT_$1_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_$1_CPU" = xaarch64; then
+ HOTSPOT_$1_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ HOTSPOT_$1_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_$1_CPU" = xsparc; then
+ HOTSPOT_$1_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_$1_CPU" = xppc; then
+ HOTSPOT_$1_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_$1_CPU" = xs390; then
+ HOTSPOT_$1_CPU_DEFINE=S390
+ elif test "x$OPENJDK_$1_CPU" = ss390x; then
+ HOTSPOT_$1_CPU_DEFINE=S390
+ fi
+ AC_SUBST(HOTSPOT_$1_CPU_DEFINE)
+
])
AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
@@ -521,6 +521,10 @@
CFLAGS_JDK="${CFLAGS_JDK}${ADDED_CFLAGS}"
CXXFLAGS_JDK="${CXXFLAGS_JDK}${ADDED_CXXFLAGS}"
LDFLAGS_JDK="${LDFLAGS_JDK}${ADDED_LDFLAGS}"
+
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
])
AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
@@ -542,6 +546,11 @@
PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
fi
fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_LDFLAGS="$JVM_LDFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_ASFLAGS="$JVM_ASFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ fi
# Make compilation sanity check
AC_CHECK_HEADERS([stdio.h], , [
--- a/common/autoconf/spec.gmk.in Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/spec.gmk.in Mon Apr 11 20:16:33 2016 +0200
@@ -82,6 +82,13 @@
OPENJDK_TARGET_CPU_JLI_CFLAGS:=@OPENJDK_TARGET_CPU_JLI_CFLAGS@
OPENJDK_TARGET_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@
+HOTSPOT_TARGET_OS := @HOTSPOT_TARGET_OS@
+HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_TARGET_OS_TYPE@
+
+HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
+HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
+HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
+
# We are building on this build system.
# When not cross-compiling, it is the same as the target.
OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
@@ -192,6 +199,7 @@
PRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
JDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
COMPANY_NAME:=@COMPANY_NAME@
+HOTSPOT_VM_DISTRO:=@HOTSPOT_VM_DISTRO@
MACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
MACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
USERNAME:=@USERNAME@
@@ -201,11 +209,32 @@
# How to compile the code: release, fastdebug or slowdebug
DEBUG_LEVEL:=@DEBUG_LEVEL@
+HOTSPOT_DEBUG_LEVEL:=@HOTSPOT_DEBUG_LEVEL@
# This is the JDK variant to build.
# The JDK variant is a name for a specific set of modules to be compiled for the JDK.
JDK_VARIANT:=@JDK_VARIANT@
+# Which JVM variants to build (space-separated list)
+JVM_VARIANTS := @JVM_VARIANTS@
+
+# Lists of features per variant. Only relevant for the variants listed in
+# JVM_VARIANTS.
+JVM_FEATURES_server := @JVM_FEATURES_server@
+JVM_FEATURES_client := @JVM_FEATURES_client@
+JVM_FEATURES_core := @JVM_FEATURES_core@
+JVM_FEATURES_minimal := @JVM_FEATURES_minimal@
+JVM_FEATURES_zero := @JVM_FEATURES_zero@
+JVM_FEATURES_zeroshark := @JVM_FEATURES_zeroshark@
+JVM_FEATURES_custom := @JVM_FEATURES_custom@
+
+# Used for make-time verifications
+VALID_JVM_FEATURES := @VALID_JVM_FEATURES@
+VALID_JVM_VARIANTS := @VALID_JVM_VARIANTS@
+
+# Control use of precompiled header in hotspot libjvm build
+USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
+
# Should we compile support for running with a graphical UI? (ie headful)
# Should we compile support for running without? (ie headless)
SUPPORT_HEADFUL:=@SUPPORT_HEADFUL@
@@ -213,25 +242,11 @@
# Legacy defines controlled by the SUPPORT_HEADLESS and SUPPORT_HEADFUL options.
@BUILD_HEADLESS@
-# These are the libjvms that we want to build.
-# The java launcher uses the default.
-# The others can be selected by specifying -client -server -minimal1 -zero or -zeroshark
-# on the java launcher command line.
-JVM_VARIANTS:=@JVM_VARIANTS@
-JVM_VARIANT_SERVER:=@JVM_VARIANT_SERVER@
-JVM_VARIANT_CLIENT:=@JVM_VARIANT_CLIENT@
-JVM_VARIANT_MINIMAL1:=@JVM_VARIANT_MINIMAL1@
-JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@
-JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@
-JVM_VARIANT_CORE:=@JVM_VARIANT_CORE@
+# Legacy support
+USE_NEW_HOTSPOT_BUILD:=@USE_NEW_HOTSPOT_BUILD@
-# Universal binaries on macosx
MACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@
-# Legacy setting: -debug or -fastdebug
-# Still used in version string...
-BUILD_VARIANT_RELEASE:=@BUILD_VARIANT_RELEASE@
-
# JDK_OUTPUTDIR specifies where a working jvm is built.
# You can run $(JDK_OUTPUTDIR)/bin/java
# Though the layout of the contents of $(JDK_OUTPUTDIR) is not
@@ -318,6 +333,11 @@
# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
TOOLCHAIN_VERSION := @TOOLCHAIN_VERSION@
+CC_VERSION_NUMBER := @CC_VERSION_NUMBER@
+CXX_VERSION_NUMBER := @CXX_VERSION_NUMBER@
+
+# Legacy support
+HOTSPOT_TOOLCHAIN_TYPE := @HOTSPOT_TOOLCHAIN_TYPE@
# Option used to tell the compiler whether to create 32- or 64-bit executables
COMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@
@@ -336,14 +356,18 @@
AR_OUT_OPTION:=@AR_OUT_OPTION@
# Flags used for overriding the default opt setting for a C/C++ source file.
+C_O_FLAG_HIGHEST_JVM:=@C_O_FLAG_HIGHEST_JVM@
C_O_FLAG_HIGHEST:=@C_O_FLAG_HIGHEST@
C_O_FLAG_HI:=@C_O_FLAG_HI@
C_O_FLAG_NORM:=@C_O_FLAG_NORM@
C_O_FLAG_NONE:=@C_O_FLAG_NONE@
+C_O_FLAG_SIZE:=@C_O_FLAG_SIZE@
+CXX_O_FLAG_HIGHEST_JVM:=@CXX_O_FLAG_HIGHEST_JVM@
CXX_O_FLAG_HIGHEST:=@CXX_O_FLAG_HIGHEST@
CXX_O_FLAG_HI:=@CXX_O_FLAG_HI@
CXX_O_FLAG_NORM:=@CXX_O_FLAG_NORM@
CXX_O_FLAG_NONE:=@CXX_O_FLAG_NONE@
+CXX_O_FLAG_SIZE:=@CXX_O_FLAG_SIZE@
C_FLAG_DEPS:=@C_FLAG_DEPS@
CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
@@ -372,6 +396,23 @@
LDFLAGS_HASH_STYLE := @LDFLAGS_HASH_STYLE@
+JVM_CFLAGS := @JVM_CFLAGS@
+JVM_CFLAGS_SYMBOLS := @JVM_CFLAGS_SYMBOLS@
+JVM_LDFLAGS := @JVM_LDFLAGS@
+JVM_ASFLAGS := @JVM_ASFLAGS@
+JVM_LIBS := @JVM_LIBS@
+JVM_RCFLAGS := @JVM_RCFLAGS@
+
+# Flags for zeroshark
+LLVM_CFLAGS := @LLVM_CFLAGS@
+LLVM_LIBS := @LLVM_LIBS@
+LLVM_LDFLAGS := @LLVM_LDFLAGS@
+
+# These flags might contain variables set by a custom extension that is included later.
+EXTRA_CFLAGS = @EXTRA_CFLAGS@
+EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
+EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
+
CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
CPP:=@FIXPATH@ @CPP@
@@ -628,6 +669,7 @@
JT_HOME:=@JT_HOME@
JTREGEXE:=@JTREGEXE@
XCODEBUILD=@XCODEBUILD@
+DTRACE := @DTRACE@
FIXPATH:=@FIXPATH@
# Build setup
--- a/common/autoconf/toolchain.m4 Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/toolchain.m4 Mon Apr 11 20:16:33 2016 +0200
@@ -930,6 +930,17 @@
rm -rf version-script.map main.c a.out
fi
AC_SUBST(USING_BROKEN_SUSE_LD)
+
+ # Setup hotspot lecagy names for toolchains
+ HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ HOTSPOT_TOOLCHAIN_TYPE=gcc
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ HOTSPOT_TOOLCHAIN_TYPE=sparcWorks
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ HOTSPOT_TOOLCHAIN_TYPE=visCPP
+ fi
+ AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
])
# Setup the JTReg Regression Test Harness.
--- a/common/autoconf/version-numbers Fri Apr 08 12:36:27 2016 -0400
+++ b/common/autoconf/version-numbers Mon Apr 11 20:16:33 2016 +0200
@@ -32,6 +32,7 @@
PRODUCT_SUFFIX="Runtime Environment"
JDK_RC_PLATFORM_NAME=Platform
COMPANY_NAME=N/A
+HOTSPOT_VM_DISTRO="OpenJDK"
# Might need better names for these
MACOSX_BUNDLE_NAME_BASE="OpenJDK"
--- a/common/bin/compare.sh Fri Apr 08 12:36:27 2016 -0400
+++ b/common/bin/compare.sh Mon Apr 11 20:16:33 2016 +0200
@@ -732,6 +732,13 @@
SYM_SORT_CMD="cat"
fi
+ if [ -n "$SYMBOLS_DIFF_FILTER" ] && [ -z "$NEED_SYMBOLS_DIFF_FILTER" ] \
+ || [[ "$NEED_SYMBOLS_DIFF_FILTER" = *"$BIN_FILE"* ]]; then
+ this_SYMBOLS_DIFF_FILTER="$SYMBOLS_DIFF_FILTER"
+ else
+ this_SYMBOLS_DIFF_FILTER="$CAT"
+ fi
+
# Check symbols
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
# The output from dumpbin on windows differs depending on if the debug symbol
@@ -750,8 +757,16 @@
$NM -j $ORIG_OTHER_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
$NM -j $ORIG_THIS_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
else
- $NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
- $NM -a $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+ $NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME \
+ | $AWK '{print $2, $3, $4, $5}' \
+ | eval "$this_SYMBOLS_DIFF_FILTER" \
+ | $SYM_SORT_CMD \
+ > $WORK_FILE_BASE.symbols.other
+ $NM -a $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME \
+ | $AWK '{print $2, $3, $4, $5}' \
+ | eval "$this_SYMBOLS_DIFF_FILTER" \
+ | $SYM_SORT_CMD \
+ > $WORK_FILE_BASE.symbols.this
fi
LC_ALL=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
@@ -828,9 +843,10 @@
FULLDUMP_DIFF_FILTER="$CAT"
fi
$FULLDUMP_CMD $OTHER_FILE | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
- > $WORK_FILE_BASE.fulldump.other 2>&1
+ > $WORK_FILE_BASE.fulldump.other 2>&1 &
$FULLDUMP_CMD $THIS_FILE | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
- > $WORK_FILE_BASE.fulldump.this 2>&1
+ > $WORK_FILE_BASE.fulldump.this 2>&1 &
+ wait
LC_ALL=C $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
> $WORK_FILE_BASE.fulldump.diff
@@ -854,18 +870,19 @@
FULLDUMP_MSG=" "
DIFF_FULLDUMP=
if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then
- FULLDUMP_MSG=" ! "
+ FULLDUMP_MSG=" ! "
fi
fi
fi
# Compare disassemble output
if [ -n "$DIS_CMD" ] && [ -z "$SKIP_DIS_DIFF" ]; then
- # By default we filter out differences that include references to symbols.
- # To get a raw diff with the complete disassembly, set
- # DIS_DIFF_FILTER="$CAT"
- if [ -z "$DIS_DIFF_FILTER" ]; then
- DIS_DIFF_FILTER="$GREP -v ' # .* <.*>$' | $SED -r -e 's/(\b|x)([0-9a-fA-F]+)(\b|:|>)/X/g'"
+ this_DIS_DIFF_FILTER="$CAT"
+ if [ -n "$DIS_DIFF_FILTER" ]; then
+ if [ -z "$NEED_DIS_DIFF_FILTER" ] \
+ || [[ "$NEED_DIS_DIFF_FILTER" = *"$BIN_FILE"* ]]; then
+ this_DIS_DIFF_FILTER="$DIS_DIFF_FILTER"
+ fi
fi
if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
DIS_GREP_ARG=-a
@@ -873,9 +890,10 @@
DIS_GREP_ARG=
fi
$DIS_CMD $OTHER_FILE | $GREP $DIS_GREP_ARG -v $NAME \
- | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1
+ | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 &
$DIS_CMD $THIS_FILE | $GREP $DIS_GREP_ARG -v $NAME \
- | eval "$DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1
+ | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1 &
+ wait
LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
@@ -884,11 +902,15 @@
DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
DIFF_DIS=true
- if [[ "$KNOWN_DIS_DIFF" != *"$BIN_FILE"* ]]; then
+ if [ "$MAX_KNOWN_DIS_DIFF_SIZE" = "" ]; then
+ MAX_KNOWN_DIS_DIFF_SIZE="0"
+ fi
+ if [[ "$KNOWN_DIS_DIFF" = *"$BIN_FILE"* ]] \
+ && [ "$DIS_DIFF_SIZE" -lt "$MAX_KNOWN_DIS_DIFF_SIZE" ]; then
+ DIS_MSG=" $DIS_MSG "
+ else
DIS_MSG="*$DIS_MSG*"
REGRESSIONS=true
- else
- DIS_MSG=" $DIS_MSG "
fi
else
DIS_MSG="($DIS_MSG)"
--- a/common/bin/compare_exceptions.sh.incl Fri Apr 08 12:36:27 2016 -0400
+++ b/common/bin/compare_exceptions.sh.incl Mon Apr 11 20:16:33 2016 +0200
@@ -113,21 +113,36 @@
./bin/xjc
"
- # Issue with __FILE__ usage in generated header files prevent clean fulldump diff of
- # server jvm with old hotspot build.
- KNOWN_FULLDUMP_DIFF="
- ./lib$OPENJDK_TARGET_CPU_LIBDIR/client/libjvm.so
- ./lib$OPENJDK_TARGET_CPU_LIBDIR/server/libjvm.so
- ./lib$OPENJDK_TARGET_CPU_LIBDIR/minimal/libjvm.so
- "
+ if [ "$OPENJDK_TARGET_CPU" = "arm" ]; then
+ # NOTE: When comparing the old and new hotspot builds, the link time
+ # optimization makes good comparisons impossible. Fulldump compare always
+ # fails and disassembly can end up with some functions in different order.
+ # So for now, accept the difference but put a limit on the size. The
+ # different order of functions shouldn't result in a very big diff.
+ KNOWN_FULLDUMP_DIFF="
+ ./lib$OPENJDK_TARGET_CPU_LIBDIR/minimal/libjvm.so
+ "
- if [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
- KNOWN_DIS_DIFF="
- ./lib$OPENJDK_TARGET_CPU_LIBDIR/server/libjvm.so
+ # Link time optimization adds random numbers to symbol names
+ NEED_DIS_DIFF_FILTER="
+ ./lib$OPENJDK_TARGET_CPU_LIBDIR/minimal/libjvm.so
+ "
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/\.[0-9]+/.X/g' \
+ -e 's/\t[0-9a-f]{4} [0-9a-f]{4} /\tXXXX XXXX /' \
+ -e 's/\t[0-9a-f]{5,} /\t<HEX> /' \
"
- DIS_DIFF_FILTER="$SED \
- -e 's/\(:\t\)\([0-9a-z]\{2,2\} \)\{1,7\}/\1<hex>/g' \
- -e 's/0x[0-9a-z]\{2,9\}/<hex>/g'"
+ KNOWN_DIS_DIFF="
+ ./lib$OPENJDK_TARGET_CPU_LIBDIR/minimal/libjvm.so
+ "
+ MAX_KNOWN_DIS_DIFF_SIZE="3000"
+
+ NEED_SYMBOLS_DIFF_FILTER="
+ ./lib$OPENJDK_TARGET_CPU_LIBDIR/minimal/libjvm.so
+ "
+ SYMBOLS_DIFF_FILTER="$SED -r \
+ -e 's/\.[0-9]+/.X/g'
+ "
fi
fi
@@ -250,15 +265,10 @@
SKIP_FULLDUMP_DIFF="true"
- # Filter random C++ symbol strings.
- # Some numbers differ randomly.
+ # Random strings looking like this differ: <.XAKoKoPIac2W0OA.
DIS_DIFF_FILTER="$SED \
- -e 's/\.[a-zA-Z0-9_\$]\{15\}/<SYM>/g' \
- -e 's/\(\# \)[0-9a-f]*\( <\)/\1<HEX>\2/g' \
- -e 's/0x[0-9a-f]*$/<HEX>/g' \
- -e 's/0x[0-9a-f]*\([,(>]\)/<HEX>\1/g' \
- -e 's/: [0-9a-f][0-9a-f]\( [0-9a-f][0-9a-f]\)\{2,10\}/: <NUMS>/g' \
- -e 's/ [\.A-Za-z0-9%@]\{16\}$/ <BIN>/g'"
+ -e 's/<\.[A-Za-z0-9]\{\15}\./<.SYM./' \
+ "
fi
@@ -380,23 +390,18 @@
./bin/xjc
"
- # Some numbers differ randomly.
DIS_DIFF_FILTER="$SED \
- -e 's/\$[a-zA-Z0-9_\$]\{15\}/<SYM>/g' \
- -e 's/: [0-9a-f][0-9a-f]\( [0-9a-f][0-9a-f]\)\{2,10\}/: <NUMS>/g' \
- -e 's/, [0-9a-fx\-]\{1,8\}/, <CONST>/g' \
- -e 's/call [0-9a-f]\{7\}/call <ADDR>/g' \
+ -e 's/^[0-9a-f]\{16\}/<ADDR>:/' \
+ -e 's/^ *[0-9a-f]\{3,8\}:/ <ADDR>:/' \
+ -e 's/: [0-9a-f][0-9a-f]\( [0-9a-f][0-9a-f]\)\{2,10\}/: <NUMS>/' \
+ -e 's/\$[a-zA-Z0-9_\$]\{15\}\./<SYM>./' \
-e 's/0x[0-9a-f]\{1,8\}/<HEX>/g' \
- -e 's/\! [0-9a-f]\{1,8\} /! <ADDR> /g'"
+ -e 's/\! [0-9a-f]\{1,8\} /! <ADDR> /' \
+ -e 's/, [0-9a-fx\-]\{1,8\}/, <ADDR>/g' \
+ -e 's/call [0-9a-f]\{4,7\}/call <ADDR>/' \
+ "
- # libjvm.so
- # __FILE__ macro usage in debug.hpp causes differences between old and new
- # hotspot builds in ad_sparc.o and ad_sparc_clone.o. The .o files compare
- # equal when stripped, but at link time differences appear. Removing
- # __FILE__ from ShouldNotCallThis() and ShouldNotReachHere() removes
- # the differences.
KNOWN_DIS_DIFF="
- ./lib/sparcv9/server/libjvm.so
./lib/sparcv9/libsaproc.so
"
@@ -419,6 +424,7 @@
./demo/jvmti/minst/lib/minst.dll
./bin/attach.dll
./bin/jsoundds.dll
+ ./bin/client/jvm.dll
./bin/server/jvm.dll
./bin/appletviewer.exe
./bin/idlj.exe
@@ -469,22 +475,39 @@
./bin/jabswitch.exe
"
- # On windows, there are unavoidable allignment issues making
- # a perfect disasm diff impossible. Filter out the following:
- # * Random parts of C++ symbols (this is a bit greedy, but does the trick)
- # @XXXXX
- # * Hexadecimal addresses that are sometimes alligned differently.
- # * Dates in version strings XXXX_XX_XX.
- DIS_DIFF_FILTER="$SED \
- -e 's/^ [0-9A-F]\{16\}: //g' \
- -e 's/[@?][A-Za-z0-9_]\{1,25\}/<SYM>/g' \
- -e 's/\([\[+]\)[0-9A-F]\{4,16\}h\]/\1<HEXSTR>]/g' \
- -e 's/_[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}/_<DATE>/g'"
- #DIS_DIFF_FILTER="$CAT"
+ if [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/^ [0-9A-F]{16}: //' \
+ -e 's/^ [0-9A-F]{8}: / <ADDR>: /' \
+ -e 's/(offset \?\?)_C@_.*/\1<SYM>/' \
+ -e 's/[@?][A-Za-z0-9_]{1,25}/<SYM>/' \
+ -e 's/([-,+])[0-9A-F]{2,16}/\1<HEXSTR>/g' \
+ -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
+ -e 's/: ([a-z]{2}[a-z ]{2}) [0-9A-F]{2,16}h?$/: \1 <HEXSTR>/' \
+ -e 's/_20[0-9]{2}_[0-1][0-9]_[0-9]{2}/_<DATE>/' \
+ "
+ elif [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/^ [0-9A-F]{16}: //' \
+ -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
+ -e 's/([,+])[0-9A-F]{2,16}h/\1<HEXSTR>/' \
+ -e 's/([a-z]{2}[a-z ]{2}) [0-9A-F]{4,16}$/\1 <HEXSTR>/' \
+ -e 's/\[\?\?_C@_.*/[<SYM>]/' \
+ "
+ fi
SKIP_BIN_DIFF="true"
SKIP_FULLDUMP_DIFF="true"
+ # NOTE: When comparing the old and new hotspot builds, the server jvm.dll
+ # cannot be made equal in disassembly. Some functions just always end up
+ # in different order. So for now, accept the difference but put a limit
+ # on the size. The different order of functions shouldn't result in a very
+ # big diff.
+ KNOWN_DIS_DIFF="
+ ./bin/server/jvm.dll
+ "
+ MAX_KNOWN_DIS_DIFF_SIZE="2000000"
fi
@@ -565,6 +588,7 @@
./Contents/Home/lib/libverify.dylib
./Contents/Home/lib/libsaproc.dylib
./Contents/Home/lib/libsplashscreen.dylib
+ ./Contents/Home/lib/server/libjsig.dylib
./Contents/Home/lib/server/libjvm.dylib
./Contents/Home/lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
./Contents/Resources/JavaControlPanelHelper
@@ -590,6 +614,7 @@
./lib/libverify.dylib
./lib/libsaproc.dylib
./lib/libsplashscreen.dylib
+ ./lib/server/libjsig.dylib
./lib/server/libjvm.dylib
./lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
./Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation
@@ -606,7 +631,8 @@
DIS_DIFF_FILTER="LANG=C $SED \
-e 's/0x[0-9a-f]\{3,16\}/<HEXSTR>/g' -e 's/^[0-9a-f]\{12,20\}/<ADDR>/' \
- -e 's/## literal pool for: .Java HotSpot(TM) 64-Bit Server VM.*/<COMMENT>/g'
+ -e 's/-20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]-[0-2][0-9]\{5\}/<DATE>/g' \
+ -e 's/), built on .*/), <DATE>/' \
"
fi
--- a/common/conf/jib-profiles.js Fri Apr 08 12:36:27 2016 -0400
+++ b/common/conf/jib-profiles.js Mon Apr 11 20:16:33 2016 +0200
@@ -241,7 +241,7 @@
target_os: "linux",
target_cpu: "x64",
dependencies: concat(common.dependencies, "devkit"),
- configure_args: concat(common.configure_args, "--with-zlib=system"),
+ configure_args: concat(common.configure_args, "--with-zlib=system"),
make_args: common.make_args
},
@@ -259,7 +259,7 @@
target_os: "macosx",
target_cpu: "x64",
dependencies: concat(common.dependencies, "devkit"),
- configure_args: concat(common.configure_args, "--with-zlib=system"),
+ configure_args: concat(common.configure_args, "--with-zlib=system"),
make_args: common.make_args
},
@@ -267,7 +267,7 @@
target_os: "solaris",
target_cpu: "x64",
dependencies: concat(common.dependencies, "devkit", "cups"),
- configure_args: concat(common.configure_args, "--with-zlib=system"),
+ configure_args: concat(common.configure_args, "--with-zlib=system"),
make_args: common.make_args
},
@@ -275,7 +275,7 @@
target_os: "solaris",
target_cpu: "sparcv9",
dependencies: concat(common.dependencies, "devkit", "cups"),
- configure_args: concat(common.configure_args, "--with-zlib=system"),
+ configure_args: concat(common.configure_args, "--with-zlib=system"),
make_args: common.make_args
},
--- a/make/Jprt.gmk Fri Apr 08 12:36:27 2016 -0400
+++ b/make/Jprt.gmk Mon Apr 11 20:16:33 2016 +0200
@@ -108,7 +108,9 @@
SRC_JRE_MACOSX_BUNDLE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
# Bundle up the images
-bundles: all
+JPRT_TARGET ?= all
+ifeq ($(JPRT_TARGET), all)
+ bundles: $(JPRT_TARGET)
@$(call TargetEnter)
$(MKDIR) -p $(BUILD_OUTPUT)/bundles
$(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r \
@@ -128,9 +130,24 @@
$(BUILD_OUTPUT)/bundles/$(SYMBOLS_IMAGE_SUBDIR).zip . ; \
fi
@$(call TargetExit)
+else
+ # Just fake the bundles
+ bundles: $(JPRT_TARGET)
+ @$(call TargetEnter)
+ $(MKDIR) -p $(BUILD_OUTPUT)/bundles
+ $(CD) $(TOPDIR) && $(ZIP) -y -q -r \
+ $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip README
+ $(CD) $(TOPDIR) && $(ZIP) -y -q -r \
+ $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip README
+ $(CD) $(TOPDIR) && $(ZIP) -y -q -r \
+ $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip README
+ $(CD) $(TOPDIR) && $(ZIP) -y -q -r \
+ $(BUILD_OUTPUT)/bundles/modules.zip README
+ @$(call TargetExit)
+endif
# Copy images to one unified location regardless of platform etc.
-final-images: all
+final-images: $(JPRT_TARGET)
@$(call TargetEnter)
$(RM) -r $(BUILD_OUTPUT)/final-images
$(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)
--- a/make/Main.gmk Fri Apr 08 12:36:27 2016 -0400
+++ b/make/Main.gmk Mon Apr 11 20:16:33 2016 +0200
@@ -229,10 +229,17 @@
ifeq ($(BUILD_HOTSPOT),true)
hotspot:
- +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
+ ifeq ($(USE_NEW_HOTSPOT_BUILD), true)
+ +($(CD) $(HOTSPOT_TOPDIR)/makefiles && $(MAKE) $(MAKE_ARGS) -f BuildHotspot.gmk)
+ else
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f HotspotWrapper.gmk)
+ endif
endif
-ALL_TARGETS += hotspot
+hotspot-ide-project:
+ +($(CD) $(HOTSPOT_TOPDIR)/makefiles && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
+
+ALL_TARGETS += hotspot hotspot-ide-project
################################################################################
# Build demos and samples targets
@@ -462,6 +469,8 @@
$(JAVA_TARGETS): interim-langtools
+ hotspot-ide-project: hotspot exploded-image
+
import-hotspot: hotspot
generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs
--- a/make/common/MakeBase.gmk Fri Apr 08 12:36:27 2016 -0400
+++ b/make/common/MakeBase.gmk Mon Apr 11 20:16:33 2016 +0200
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@@ -731,6 +731,16 @@
"$(subst $(SPACE),$(PATH_SEP),$(strip $1))"
################################################################################
+# Check if a specified hotspot variant is being built, or at least one of a
+# list of variants. Will return 'true' or 'false'.
+# $1 - the variant to test for
+check-jvm-variant = \
+ $(strip \
+ $(if $(filter-out $(VALID_JVM_VARIANTS), $1), \
+ $(error Internal error: Invalid variant tested: $1)) \
+ $(if $(filter $1, $(JVM_VARIANTS)), true, false))
+
+################################################################################
# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, , common/MakeBase.gmk))
--- a/make/common/NativeCompilation.gmk Fri Apr 08 12:36:27 2016 -0400
+++ b/make/common/NativeCompilation.gmk Mon Apr 11 20:16:33 2016 +0200
@@ -197,14 +197,51 @@
$1_$2_THIS_FILE = -DTHIS_FILE='"$$(<F)"'
endif
+ ifeq ($$($1_$(notdir $2)_OPTIMIZATION), )
+ $1_$(notdir $2)_OPT_CFLAGS := $$($1_OPT_CFLAGS)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $$($1_OPT_CXXFLAGS)
+ else
+ ifeq (NONE, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_NONE)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ else ifeq (LOW, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_NORM)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_NORM)
+ else ifeq (HIGH, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HI)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HI)
+ else ifeq (HIGHEST, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HIGHEST)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST)
+ else ifeq (HIGHEST_JVM, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HIGHEST_JVM)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST_JVM)
+ else ifeq (SIZE, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_SIZE)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_SIZE)
+ else
+ $$(error Unknown value for OPTIMIZATION: $$($1_$(notdir $2)_OPTIMIZATION))
+ endif
+ endif
+
+ ifneq ($$($1_PRECOMPILED_HEADER), )
+ ifeq ($$(filter $$(notdir $2), $$($1_PRECOMPILED_HEADER_EXCLUDE)), )
+ $1_$2_USE_PCH_FLAGS := $$($1_USE_PCH_FLAGS)
+ endif
+ endif
+
ifneq (,$$(filter %.c,$2))
# Compile as a C file
- $1_$2_FLAGS=$(CFLAGS_CCACHE) $4 $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_FLAGS=$(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $4 \
+ $$($1_$(notdir $2)_OPT_CFLAGS) \
+ $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
$1_$2_COMP=$5
$1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
else ifneq (,$$(filter %.m,$2))
# Compile as an Objective-C file
- $1_$2_FLAGS=-x objective-c $(CFLAGS_CCACHE) $4 $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_FLAGS=-x objective-c $(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $4 \
+ $$($1_$(notdir $2)_OPT_CFLAGS) \
+ $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
$1_$2_COMP=$5
$1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
else ifneq (,$$(filter %.s %.S,$2))
@@ -214,7 +251,9 @@
$1_$2_DEP_FLAG:=
else ifneq (,$$(filter %.cpp,$2)$$(filter %.cc,$2)$$(filter %.mm,$2))
# Compile as a C++ or Objective-C++ file
- $1_$2_FLAGS=$(CFLAGS_CCACHE) $6 $$($1_$(notdir $2)_CXXFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_FLAGS=$(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $6 \
+ $$($1_$(notdir $2)_OPT_CXXFLAGS) \
+ $$($1_$(notdir $2)_CXXFLAGS) $$($1_$2_THIS_FILE) -c
$1_$2_COMP=$7
$1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
else
@@ -245,8 +284,10 @@
endif
endif
- ifneq ($$($1_$(notdir $2)_CFLAGS)$$($1_$(notdir $2)_CXXFLAGS), )
- $1_$2_VARDEPS := $$($1_$(notdir $2)_CFLAGS) $$($1_$(notdir $2)_CXXFLAGS)
+ ifneq ($$(strip $$($1_$(notdir $2)_CFLAGS) $$($1_$(notdir $2)_CXXFLAGS) \
+ $$($1_$(notdir $2)_OPTIMIZATION)), )
+ $1_$2_VARDEPS := $$($1_$(notdir $2)_CFLAGS) $$($1_$(notdir $2)_CXXFLAGS) \
+ $$($1_$(notdir $2)_OPT_CFLAGS) $$($1_$(notdir $2)_OPT_CXXFLAGS)
$1_$2_VARDEPS_FILE := $$(call DependOnVariable, $1_$2_VARDEPS, \
$$(patsubst %$(OBJ_SUFFIX),%.vardeps,$$($1_$2_OBJ)))
endif
@@ -323,7 +364,7 @@
# mapfile for the output symbols file
# CC the compiler to use, default is $(CC)
# LD the linker to use, default is $(LD)
-# OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST
+# OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST, HIGHEST_JVM, SIZE
# DISABLED_WARNINGS_<toolchain> Disable the given warnings for the specified toolchain
# DISABLED_WARNINGS_C_<toolchain> Disable the given warnings for the specified toolchain
# when compiling C code
@@ -331,7 +372,11 @@
# toolchain when compiling C++ code
# STRIP_SYMBOLS Set to true to strip the final binary if the toolchain allows for it
# DEBUG_SYMBOLS Set to false to disable generation of debug symbols
+# CFLAGS_DEBUG_SYMBOLS Overrides the default cflags for enabling debug symbols
+# CXXFLAGS_DEBUG_SYMBOLS Overrides the default cxxflags for enabling debug symbols
# STRIPFLAGS Optionally change the flags given to the strip command
+# PRECOMPILED_HEADER Header file to use as precompiled header
+# PRECOMPILED_HEADER_EXCLUDE List of source files that should not use PCH
SetupNativeCompilation = $(NamedParamsMacroTemplate)
define SetupNativeCompilationBody
@@ -556,8 +601,10 @@
endif
ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
- $1_EXTRA_CFLAGS += $(CFLAGS_DEBUG_SYMBOLS)
- $1_EXTRA_CXXFLAGS += $(CXXFLAGS_DEBUG_SYMBOLS)
+ $$(call SetIfEmpty, $1_CFLAGS_DEBUG_SYMBOLS, $(CFLAGS_DEBUG_SYMBOLS))
+ $$(call SetIfEmpty, $1_CXXFLAGS_DEBUG_SYMBOLS, $(CXXFLAGS_DEBUG_SYMBOLS))
+ $1_EXTRA_CFLAGS += $$($1_CFLAGS_DEBUG_SYMBOLS)
+ $1_EXTRA_CXXFLAGS += $$($1_CXXFLAGS_DEBUG_SYMBOLS)
endif
ifneq (,$$($1_REORDER))
@@ -597,17 +644,23 @@
endif
ifeq (NONE, $$($1_OPTIMIZATION))
- $1_EXTRA_CFLAGS += $(C_O_FLAG_NONE)
- $1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_NONE)
+ $1_OPT_CFLAGS := $(C_O_FLAG_NONE)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_NONE)
else ifeq (LOW, $$($1_OPTIMIZATION))
- $1_EXTRA_CFLAGS += $(C_O_FLAG_NORM)
- $1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_NORM)
+ $1_OPT_CFLAGS := $(C_O_FLAG_NORM)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_NORM)
else ifeq (HIGH, $$($1_OPTIMIZATION))
- $1_EXTRA_CFLAGS += $(C_O_FLAG_HI)
- $1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_HI)
+ $1_OPT_CFLAGS := $(C_O_FLAG_HI)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HI)
else ifeq (HIGHEST, $$($1_OPTIMIZATION))
- $1_EXTRA_CFLAGS += $(C_O_FLAG_HIGHEST)
- $1_EXTRA_CXXFLAGS += $(CXX_O_FLAG_HIGHEST)
+ $1_OPT_CFLAGS := $(C_O_FLAG_HIGHEST)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST)
+ else ifeq (HIGHEST_JVM, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_HIGHEST_JVM)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST_JVM)
+ else ifeq (SIZE, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_SIZE)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_SIZE)
else ifneq (, $$($1_OPTIMIZATION))
$$(error Unknown value for OPTIMIZATION: $$($1_OPTIMIZATION))
endif
@@ -618,11 +671,65 @@
# lines for all object files in this setup. This includes at least all the
# variables used in the call to add_native_source below.
$1_COMPILE_VARDEPS := $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
- $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) \
+ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_OPT_CFLAGS) $$($1_OPT_CXXFLAGS) \
$$($1_CC) $$($1_CXX) $$($1_AS) $$($1_ASFLAGS)
$1_COMPILE_VARDEPS_FILE := $$(call DependOnVariable, $1_COMPILE_VARDEPS, \
$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).comp.vardeps)
+ ifneq ($$($1_PRECOMPILED_HEADER), )
+ ifeq ($(USE_PRECOMPILED_HEADER), 1)
+ ifeq ($(TOOLCHAIN_TYPE), microsoft)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/$1.pch
+ $1_GENERATED_PCH_SRC := $$($1_OBJECT_DIR)/$1_pch.cpp
+ $1_GENERATED_PCH_OBJ := $$($1_OBJECT_DIR)/$1_pch.obj
+
+ $$(eval $$(call add_native_source,$1,$$($1_GENERATED_PCH_SRC), \
+ $$($1_OBJECT_DIR),,, \
+ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_SYSROOT_CFLAGS) \
+ -Fp$$($1_PCH_FILE) -Yc$$(notdir $$($1_PRECOMPILED_HEADER)), \
+ $$($1_CXX),,no_this_file))
+
+ $1_USE_PCH_FLAGS := \
+ -Fp$$($1_PCH_FILE) -Yu$$(notdir $$($1_PRECOMPILED_HEADER))
+
+ $$($1_ALL_OBJS): $$($1_GENERATED_PCH_OBJ)
+
+ # Explicitly add the pch obj file first to ease comparing to old
+ # hotspot build.
+ $1_ALL_OBJS := $$($1_GENERATED_PCH_OBJ) $$($1_ALL_OBJS)
+
+ $$($1_GENERATED_PCH_SRC):
+ $(ECHO) "#include \"$$(notdir $$($1_PRECOMPILED_HEADER))\"" > $$@
+
+ else ifneq ($(findstring $(TOOLCHAIN_TYPE), gcc clang), )
+ ifeq ($(TOOLCHAIN_TYPE), gcc)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/precompiled/$$(notdir $$($1_PRECOMPILED_HEADER)).gch
+ $1_USE_PCH_FLAGS := -I$$($1_OBJECT_DIR)/precompiled
+ else ifeq ($(TOOLCHAIN_TYPE), clang)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/precompiled/$$(notdir $$($1_PRECOMPILED_HEADER)).pch
+ $1_USE_PCH_FLAGS := -include-pch $$($1_PCH_FILE)
+ endif
+ $1_PCH_DEP := $$($1_PCH_FILE).d
+ $1_PCH_DEP_TARGETS := $$($1_PCH_FILE).d.targets
+
+ -include $$($1_PCH_DEP)
+ -include $$($1_PCH_DEP_TARGETS)
+
+ $$($1_PCH_FILE): $$($1_PRECOMPILED_HEADER) $$($1_COMPILE_VARDEPS_FILE)
+ $$(call LogInfo, Generating precompiled header)
+ $$(call MakeDir, $$(@D))
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_CC) $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
+ $$($1_OPT_CFLAGS) \
+ -x c++-header -c $(C_FLAG_DEPS) $$($1_PCH_DEP) $$< -o $$@)
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_PCH_DEP) > $$($1_PCH_DEP_TARGETS)
+
+ $$($1_ALL_OBJS): $$($1_PCH_FILE)
+
+ endif
+ endif
+ endif
+
# Now call add_native_source for each source file we are going to compile.
$$(foreach p,$$($1_SRCS), \
$$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR), \
--- a/make/jprt.properties Fri Apr 08 12:36:27 2016 -0400
+++ b/make/jprt.properties Mon Apr 11 20:16:33 2016 +0200
@@ -129,9 +129,15 @@
jprt.build.flavor.optimizedOpen.target=jprt_bundle
jprt.build.flavor.slowdebug.target=jprt_bundle
-# Use these configure args to define debug level
+# Use these configure args to define debug level or provide specific
+# configuration details not covered by Jib profiles.
jprt.slowdebug.build.configure.args=
jprt.fastdebug.build.configure.args=--disable-precompiled-headers
+# Don't disable precompiled headers on windows. It's simply too slow.
+jprt.windows_i586.fastdebug.build.configure.args=
+jprt.windows_x64.fastdebug.build.configure.args=
+jprt.windows_i586.fastdebugOpen.build.configure.args=
+jprt.windows_x64.fastdebugOpen.build.configure.args=
jprt.product.build.configure.args=
jprt.optimized.build.configure.args=--with-debug-level=optimized
jprt.slowdebugOpen.build.configure.args=${jprt.slowdebug.build.configure.args}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jtreg-ext/requires/VMProps.java Mon Apr 11 20:16:33 2016 +0200
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package requires;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * The Class to be invoked by jtreg prior Test Suite execution to
+ * collect information about VM.
+ * Properties set by this Class will be available in the @requires expressions.
+ */
+public class VMProps implements Callable<Map<String, String>> {
+
+ /**
+ * Collects information about VM properties.
+ * This method will be invoked by jtreg.
+ *
+ * @return Map of property-value pairs.
+ */
+ @Override
+ public Map<String, String> call() {
+ Map<String, String> map = new HashMap<>();
+ map.put("vm.flavor", vmFlavor());
+ map.put("vm.compMode", vmCompMode());
+ map.put("vm.bits", vmBits());
+ dump(map);
+ return map;
+ }
+
+ /**
+ * @return VM type value extracted from the "java.vm.name" property.
+ */
+ protected String vmFlavor() {
+ // E.g. "Java HotSpot(TM) 64-Bit Server VM"
+ String vmName = System.getProperty("java.vm.name");
+ if (vmName == null) {
+ return null;
+ }
+
+ Pattern startP = Pattern.compile(".* (\\S+) VM");
+ Matcher m = startP.matcher(vmName);
+ if (m.matches()) {
+ return m.group(1).toLowerCase();
+ }
+ return null;
+ }
+
+ /**
+ * @return VM compilation mode extracted from the "java.vm.info" property.
+ */
+ protected String vmCompMode() {
+ // E.g. "mixed mode"
+ String vmInfo = System.getProperty("java.vm.info");
+ if (vmInfo == null) {
+ return null;
+ }
+ int k = vmInfo.toLowerCase().indexOf(" mode");
+ if (k < 0) {
+ return null;
+ }
+ vmInfo = vmInfo.substring(0, k);
+ switch (vmInfo) {
+ case "mixed" : return "Xmixed";
+ case "compiled" : return "Xcomp";
+ case "interpreted" : return "Xint";
+ default: return null;
+ }
+ }
+
+ /**
+ * @return VM bitness, the value of the "sun.arch.data.model" property.
+ */
+ protected String vmBits() {
+ return System.getProperty("sun.arch.data.model");
+ }
+
+ /**
+ * Dumps the map to the file if the file name is given as the property.
+ * This functionality could be helpful to know context in the real
+ * execution.
+ *
+ * @param map
+ */
+ protected void dump(Map<String, String> map) {
+ String dumpFileName = System.getProperty("vmprops.dump");
+ if (dumpFileName == null) {
+ return;
+ }
+ List<String> lines = new ArrayList<>();
+ map.forEach((k,v) -> lines.add(k + ":" + v));
+ try {
+ Files.write(Paths.get(dumpFileName), lines);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to dump properties into '"
+ + dumpFileName + "'", e);
+ }
+ }
+
+ /**
+ * This method is for the testing purpose only.
+ * @param args
+ */
+ public static void main(String args[]) {
+ Map<String, String> map = new VMProps().call();
+ map.forEach((k,v) -> System.out.println(k + ": '" + v + "'"));
+ }
+}