--- a/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
1a52a30674cd28c24d4d388150336121f2e9ddf9 jdk9-b87
16b4968f9bb8f34371b42c0ba483d76e91ba84d8 jdk9-b88
4a0312f2894bcbe1fd20266c8fda8d983bd2fcf6 jdk9-b89
+d131f4b8433a79408f935eff9bf92a0664229b60 jdk9-b90
--- a/.hgtags-top-repo Fri Oct 30 10:34:46 2015 +0100
+++ b/.hgtags-top-repo Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
fd4f4f7561074dc0dbc1772c8489c7b902b6b8a9 jdk9-b87
0bb87e05d83e1cf41cfb7ddeb2c8eaec539fd907 jdk9-b88
895353113f382d24e623191fdab0e29a3ce34738 jdk9-b89
+cf1dc4c035fb84693d4ae5ad818785cb4d1465d1 jdk9-b90
--- a/common/autoconf/basics.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/basics.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -283,6 +283,7 @@
# use that value, otherwise search for the tool using the supplied code snippet.
# $1: variable to set
# $2: code snippet to call to look for the tool
+# $3: code snippet to call if variable was used to find tool
AC_DEFUN([BASIC_SETUP_TOOL],
[
# Publish this variable in the help.
@@ -340,6 +341,7 @@
fi
fi
fi
+ $3
fi
])
@@ -848,17 +850,8 @@
# Goes looking for a usable version of GNU make.
AC_DEFUN([BASIC_CHECK_GNU_MAKE],
[
- # We need to find a recent version of GNU make. Especially on Solaris, this can be tricky.
- if test "x$MAKE" != x; then
- # User has supplied a make, test it.
- if test ! -f "$MAKE"; then
- AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not found.])
- fi
- BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE])
- if test "x$FOUND_MAKE" = x; then
- AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer.])
- fi
- else
+ BASIC_SETUP_TOOL([MAKE],
+ [
# Try our hardest to locate a correct version of GNU make
AC_PATH_PROGS(CHECK_GMAKE, gmake)
BASIC_CHECK_MAKE_VERSION("$CHECK_GMAKE", [gmake in PATH])
@@ -886,7 +879,13 @@
if test "x$FOUND_MAKE" = x; then
AC_MSG_ERROR([Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.])
fi
- fi
+ ],[
+ # If MAKE was set by user, verify the version
+ BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE])
+ if test "x$FOUND_MAKE" = x; then
+ AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer.])
+ fi
+ ])
MAKE=$FOUND_MAKE
AC_SUBST(MAKE)
--- a/common/autoconf/flags.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/flags.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -72,49 +72,50 @@
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
# that configure can use them while detecting compilers.
# TOOLCHAIN_TYPE is available here.
-AC_DEFUN_ONCE([FLAGS_SETUP_SYSROOT_FLAGS],
+# Param 1 - Optional prefix to all variables. (e.g BUILD_)
+AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
[
- if test "x$SYSROOT" != "x"; then
+ if test "x[$]$1SYSROOT" != "x"; then
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
if test "x$OPENJDK_TARGET_OS" = xsolaris; then
# Solaris Studio does not have a concept of sysroot. Instead we must
# make sure the default include and lib dirs are appended to each
# compile and link command line.
- SYSROOT_CFLAGS="-I$SYSROOT/usr/include"
- SYSROOT_LDFLAGS="-L$SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
- -L$SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR \
- -L$SYSROOT/usr/ccs/lib$OPENJDK_TARGET_CPU_ISADIR"
+ $1SYSROOT_CFLAGS="-I[$]$1SYSROOT/usr/include"
+ $1SYSROOT_LDFLAGS="-L[$]$1SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L[$]$1SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L[$]$1SYSROOT/usr/ccs/lib$OPENJDK_TARGET_CPU_ISADIR"
fi
elif test "x$TOOLCHAIN_TYPE" = xgcc; then
- SYSROOT_CFLAGS="--sysroot=$SYSROOT"
- SYSROOT_LDFLAGS="--sysroot=$SYSROOT"
+ $1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
+ $1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
elif test "x$TOOLCHAIN_TYPE" = xclang; then
- SYSROOT_CFLAGS="-isysroot $SYSROOT"
- SYSROOT_LDFLAGS="-isysroot $SYSROOT"
+ $1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
+ $1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
fi
# Propagate the sysroot args to hotspot
- LEGACY_EXTRA_CFLAGS="$LEGACY_EXTRA_CFLAGS $SYSROOT_CFLAGS"
- LEGACY_EXTRA_CXXFLAGS="$LEGACY_EXTRA_CXXFLAGS $SYSROOT_CFLAGS"
- LEGACY_EXTRA_LDFLAGS="$LEGACY_EXTRA_LDFLAGS $SYSROOT_LDFLAGS"
+ $1LEGACY_EXTRA_CFLAGS="[$]$1LEGACY_EXTRA_CFLAGS [$]$1SYSROOT_CFLAGS"
+ $1LEGACY_EXTRA_CXXFLAGS="[$]$1LEGACY_EXTRA_CXXFLAGS [$]$1SYSROOT_CFLAGS"
+ $1LEGACY_EXTRA_LDFLAGS="[$]$1LEGACY_EXTRA_LDFLAGS [$]$1SYSROOT_LDFLAGS"
# The global CFLAGS and LDFLAGS variables need these for configure to function
- CFLAGS="$CFLAGS $SYSROOT_CFLAGS"
- CPPFLAGS="$CPPFLAGS $SYSROOT_CFLAGS"
- CXXFLAGS="$CXXFLAGS $SYSROOT_CFLAGS"
- LDFLAGS="$LDFLAGS $SYSROOT_LDFLAGS"
+ $1CFLAGS="[$]$1CFLAGS [$]$1SYSROOT_CFLAGS"
+ $1CPPFLAGS="[$]$1CPPFLAGS [$]$1SYSROOT_CFLAGS"
+ $1CXXFLAGS="[$]$1CXXFLAGS [$]$1SYSROOT_CFLAGS"
+ $1LDFLAGS="[$]$1LDFLAGS [$]$1SYSROOT_LDFLAGS"
fi
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
# We also need -iframework<path>/System/Library/Frameworks
- SYSROOT_CFLAGS="$SYSROOT_CFLAGS -iframework $SYSROOT/System/Library/Frameworks"
- SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -iframework $SYSROOT/System/Library/Frameworks"
+ $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
+ $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
# These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
# set this here so it doesn't have to be peppered throughout the forest
- SYSROOT_CFLAGS="$SYSROOT_CFLAGS -F $SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
- SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -F $SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
fi
- AC_SUBST(SYSROOT_CFLAGS)
- AC_SUBST(SYSROOT_LDFLAGS)
+ AC_SUBST($1SYSROOT_CFLAGS)
+ AC_SUBST($1SYSROOT_LDFLAGS)
])
AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
@@ -785,7 +786,7 @@
LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
- LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -liconv -bexpall -bernotok"
+ LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"
fi
# Customize LDFLAGS for executables
@@ -808,7 +809,7 @@
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -dll -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
- LDFLAGS_JDKLIB_SUFFIX=""
+ JDKLIB_LIBS=""
else
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS} \
-L${OUTPUT_ROOT}/support/modules_libs/java.base${OPENJDK_TARGET_CPU_LIBDIR}"
@@ -827,27 +828,25 @@
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L${OUTPUT_ROOT}/support/modules_libs/java.base${OPENJDK_TARGET_CPU_LIBDIR}/server"
fi
- LDFLAGS_JDKLIB_SUFFIX="-ljava -ljvm"
+ JDKLIB_LIBS="-ljava -ljvm"
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
- LDFLAGS_JDKLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX -lc"
+ JDKLIB_LIBS="$JDKLIB_LIBS -lc"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ JDKLIB_LIBS="$JDKLIB_LIBS -liconv"
fi
fi
AC_SUBST(LDFLAGS_JDKLIB)
AC_SUBST(LDFLAGS_JDKEXE)
- AC_SUBST(LDFLAGS_JDKLIB_SUFFIX)
- AC_SUBST(LDFLAGS_JDKEXE_SUFFIX)
+ AC_SUBST(JDKLIB_LIBS)
+ AC_SUBST(JDKEXE_LIBS)
AC_SUBST(LDFLAGS_CXX_JDK)
LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
- LDFLAGS_TESTLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX"
- LDFLAGS_TESTEXE_SUFFIX="$LDFLAGS_JDKEXE_SUFFIX"
AC_SUBST(LDFLAGS_TESTLIB)
AC_SUBST(LDFLAGS_TESTEXE)
- AC_SUBST(LDFLAGS_TESTLIB_SUFFIX)
- AC_SUBST(LDFLAGS_TESTEXE_SUFFIX)
])
# FLAGS_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
--- a/common/autoconf/generated-configure.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/generated-configure.sh Thu Nov 05 13:43:17 2015 -0800
@@ -688,13 +688,11 @@
WARNINGS_AS_ERRORS
COMPILER_SUPPORTS_TARGET_BITS_FLAG
ZERO_ARCHFLAG
-LDFLAGS_TESTEXE_SUFFIX
-LDFLAGS_TESTLIB_SUFFIX
LDFLAGS_TESTEXE
LDFLAGS_TESTLIB
LDFLAGS_CXX_JDK
-LDFLAGS_JDKEXE_SUFFIX
-LDFLAGS_JDKLIB_SUFFIX
+JDKEXE_LIBS
+JDKLIB_LIBS
LDFLAGS_JDKEXE
LDFLAGS_JDKLIB
CXXFLAGS_TESTEXE
@@ -743,11 +741,11 @@
HOTSPOT_CXX
HOTSPOT_RC
HOTSPOT_MT
-BUILD_SYSROOT_LDFLAGS
-BUILD_SYSROOT_CFLAGS
BUILD_LD
BUILD_CXX
BUILD_CC
+BUILD_SYSROOT_LDFLAGS
+BUILD_SYSROOT_CFLAGS
ac_ct_OBJDUMP
OBJDUMP
ac_ct_OBJCOPY
@@ -873,11 +871,11 @@
FIND_DELETE
OUTPUT_SYNC
OUTPUT_SYNC_SUPPORTED
-MAKE
CHECK_TOOLSDIR_MAKE
CHECK_TOOLSDIR_GMAKE
CHECK_MAKE
CHECK_GMAKE
+MAKE
PKGHANDLER
CONFIGURESUPPORT_OUTPUTDIR
OUTPUT_ROOT
@@ -1082,6 +1080,7 @@
with_extra_cxxflags
with_extra_ldflags
with_toolchain_version
+with_build_devkit
with_jtreg
enable_warnings_as_errors
enable_debug_symbols
@@ -1173,6 +1172,7 @@
DF
CPIO
NICE
+MAKE
UNZIP
ZIP
LDD
@@ -1212,7 +1212,6 @@
OBJDUMP
BUILD_CC
BUILD_CXX
-BUILD_LD
JTREGEXE
XMKMF
FREETYPE_CFLAGS
@@ -1945,6 +1944,7 @@
the version of the toolchain to look for, use
'--help' to show possible values [platform
dependent]
+ --with-build-devkit Devkit to use for the build platform toolchain
--with-jtreg Regression Test Harness [probed]
--with-stdc++lib=<static>,<dynamic>,<default>
force linking of the C++ runtime on Linux to either
@@ -2055,6 +2055,7 @@
DF Override default value for DF
CPIO Override default value for CPIO
NICE Override default value for NICE
+ MAKE Override default value for MAKE
UNZIP Override default value for UNZIP
ZIP Override default value for ZIP
LDD Override default value for LDD
@@ -2095,7 +2096,6 @@
OBJDUMP Override default value for OBJDUMP
BUILD_CC Override default value for BUILD_CC
BUILD_CXX Override default value for BUILD_CXX
- BUILD_LD Override default value for BUILD_LD
JTREGEXE Override default value for JTREGEXE
XMKMF Path to xmkmf, Makefile generator for X Window System
FREETYPE_CFLAGS
@@ -3435,6 +3435,7 @@
# use that value, otherwise search for the tool using the supplied code snippet.
# $1: variable to set
# $2: code snippet to call to look for the tool
+# $3: code snippet to call if variable was used to find tool
# Call BASIC_SETUP_TOOL with AC_PATH_PROGS to locate the tool
@@ -3744,6 +3745,7 @@
# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
# that configure can use them while detecting compilers.
# TOOLCHAIN_TYPE is available here.
+# Param 1 - Optional prefix to all variables. (e.g BUILD_)
@@ -4595,7 +4597,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1445964676
+DATE_WHEN_GENERATED=1446135203
###############################################################################
#
@@ -4838,6 +4840,7 @@
fi
fi
fi
+
fi
@@ -5041,6 +5044,7 @@
fi
fi
fi
+
fi
@@ -5244,6 +5248,7 @@
fi
fi
fi
+
fi
@@ -5447,6 +5452,7 @@
fi
fi
fi
+
fi
@@ -5650,6 +5656,7 @@
fi
fi
fi
+
fi
@@ -5853,6 +5860,7 @@
fi
fi
fi
+
fi
@@ -6056,6 +6064,7 @@
fi
fi
fi
+
fi
@@ -6259,6 +6268,7 @@
fi
fi
fi
+
fi
@@ -6462,6 +6472,7 @@
fi
fi
fi
+
fi
@@ -6665,6 +6676,7 @@
fi
fi
fi
+
fi
@@ -6868,6 +6880,7 @@
fi
fi
fi
+
fi
@@ -7071,6 +7084,7 @@
fi
fi
fi
+
fi
@@ -7274,6 +7288,7 @@
fi
fi
fi
+
fi
@@ -7477,6 +7492,7 @@
fi
fi
fi
+
fi
@@ -7680,6 +7696,7 @@
fi
fi
fi
+
fi
@@ -7883,6 +7900,7 @@
fi
fi
fi
+
fi
@@ -8086,6 +8104,7 @@
fi
fi
fi
+
fi
@@ -8289,6 +8308,7 @@
fi
fi
fi
+
fi
@@ -8492,6 +8512,7 @@
fi
fi
fi
+
fi
@@ -8695,6 +8716,7 @@
fi
fi
fi
+
fi
@@ -8898,6 +8920,7 @@
fi
fi
fi
+
fi
@@ -9101,6 +9124,7 @@
fi
fi
fi
+
fi
@@ -9304,6 +9328,7 @@
fi
fi
fi
+
fi
@@ -9507,6 +9532,7 @@
fi
fi
fi
+
fi
@@ -9710,6 +9736,7 @@
fi
fi
fi
+
fi
@@ -9913,6 +9940,7 @@
fi
fi
fi
+
fi
@@ -10116,6 +10144,7 @@
fi
fi
fi
+
fi
@@ -10319,6 +10348,7 @@
fi
fi
fi
+
fi
@@ -10522,6 +10552,7 @@
fi
fi
fi
+
fi
@@ -10725,6 +10756,7 @@
fi
fi
fi
+
fi
@@ -10928,6 +10960,7 @@
fi
fi
fi
+
fi
@@ -11131,6 +11164,7 @@
fi
fi
fi
+
fi
@@ -11334,6 +11368,7 @@
fi
fi
fi
+
fi
@@ -11537,6 +11572,7 @@
fi
fi
fi
+
fi
@@ -11740,6 +11776,7 @@
fi
fi
fi
+
fi
@@ -11943,6 +11980,7 @@
fi
fi
fi
+
fi
@@ -12146,6 +12184,7 @@
fi
fi
fi
+
fi
@@ -12344,6 +12383,7 @@
fi
fi
fi
+
fi
@@ -12581,6 +12621,7 @@
fi
fi
fi
+
fi
@@ -12826,6 +12867,7 @@
fi
fi
fi
+
fi
@@ -13071,6 +13113,7 @@
fi
fi
fi
+
fi
@@ -13320,6 +13363,7 @@
fi
fi
fi
+
fi
@@ -13530,6 +13574,7 @@
fi
fi
fi
+
fi
@@ -13726,6 +13771,7 @@
fi
fi
fi
+
fi
@@ -13922,6 +13968,7 @@
fi
fi
fi
+
fi
@@ -14118,6 +14165,7 @@
fi
fi
fi
+
fi
@@ -14314,6 +14362,7 @@
fi
fi
fi
+
fi
@@ -16477,15 +16526,446 @@
# Setup tools that requires more complex handling, or that is not needed by the configure script.
- # We need to find a recent version of GNU make. Especially on Solaris, this can be tricky.
- if test "x$MAKE" != x; then
- # User has supplied a make, test it.
- if test ! -f "$MAKE"; then
- as_fn_error $? "The specified make (by MAKE=$MAKE) is not found." "$LINENO" 5
- fi
-
- MAKE_CANDIDATE=""$MAKE""
- DESCRIPTION="user supplied MAKE=$MAKE"
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${MAKE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ # Try our hardest to locate a correct version of GNU make
+ for ac_prog in gmake
+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_CHECK_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_GMAKE="$CHECK_GMAKE" # 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_CHECK_GMAKE="$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
+CHECK_GMAKE=$ac_cv_path_CHECK_GMAKE
+if test -n "$CHECK_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_GMAKE" >&5
+$as_echo "$CHECK_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_GMAKE""
+ DESCRIPTION="gmake in PATH"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+ IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+ if test "x$IS_GNU_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+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_CHECK_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_MAKE="$CHECK_MAKE" # 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_CHECK_MAKE="$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
+CHECK_MAKE=$ac_cv_path_CHECK_MAKE
+if test -n "$CHECK_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_MAKE" >&5
+$as_echo "$CHECK_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_MAKE""
+ DESCRIPTION="make in PATH"
# On Cygwin, we require a newer version of make than on other platforms
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
@@ -16820,10 +17300,801 @@
fi
fi
+ fi
+
if test "x$FOUND_MAKE" = x; then
- as_fn_error $? "The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer." "$LINENO" 5
- fi
- else
+ if test "x$TOOLCHAIN_PATH" != x; then
+ # We have a toolchain path, check that as well before giving up.
+ OLD_PATH=$PATH
+ PATH=$TOOLCHAIN_PATH:$PATH
+ for ac_prog in gmake
+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_CHECK_TOOLSDIR_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_GMAKE="$CHECK_TOOLSDIR_GMAKE" # 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_CHECK_TOOLSDIR_GMAKE="$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
+CHECK_TOOLSDIR_GMAKE=$ac_cv_path_CHECK_TOOLSDIR_GMAKE
+if test -n "$CHECK_TOOLSDIR_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_GMAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_GMAKE""
+ DESCRIPTION="gmake in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+ IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+ if test "x$IS_GNU_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+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_CHECK_TOOLSDIR_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_MAKE="$CHECK_TOOLSDIR_MAKE" # 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_CHECK_TOOLSDIR_MAKE="$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
+CHECK_TOOLSDIR_MAKE=$ac_cv_path_CHECK_TOOLSDIR_MAKE
+if test -n "$CHECK_TOOLSDIR_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_MAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_MAKE""
+ DESCRIPTION="make in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+ IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+ if test "x$IS_GNU_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ fi
+ PATH=$OLD_PATH
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ as_fn_error $? "Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
+ fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !MAKE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MAKE!/}
+ 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 "xMAKE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MAKE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of MAKE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
# Try our hardest to locate a correct version of GNU make
for ac_prog in gmake
do
@@ -18371,7 +19642,435 @@
if test "x$FOUND_MAKE" = x; then
as_fn_error $? "Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
fi
- fi
+
+ 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$MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool MAKE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool MAKE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAKE" >&5
+$as_echo_n "checking for MAKE... " >&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="$MAKE"
+ 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 MAKE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool MAKE=$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_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MAKE="$MAKE" # 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_MAKE="$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
+MAKE=$ac_cv_path_MAKE
+if test -n "$MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5
+$as_echo "$MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$MAKE" = 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 MAKE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool MAKE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAKE" >&5
+$as_echo_n "checking for MAKE... " >&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 MAKE=$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
+
+ # If MAKE was set by user, verify the version
+
+ MAKE_CANDIDATE=""$MAKE""
+ DESCRIPTION="user supplied MAKE=$MAKE"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ MAKE_VERSION_STRING=`$MAKE_CANDIDATE --version | $HEAD -n 1`
+ IS_GNU_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP 'GNU Make'`
+ if test "x$IS_GNU_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ as_fn_error $? "The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer." "$LINENO" 5
+ fi
+
+ fi
+
MAKE=$FOUND_MAKE
@@ -18638,6 +20337,7 @@
fi
fi
fi
+
fi
@@ -18841,6 +20541,7 @@
fi
fi
fi
+
fi
@@ -19046,6 +20747,7 @@
fi
fi
fi
+
fi
@@ -19248,6 +20950,7 @@
fi
fi
fi
+
fi
@@ -19447,6 +21150,7 @@
fi
fi
fi
+
fi
@@ -19643,6 +21347,7 @@
fi
fi
fi
+
fi
@@ -19839,6 +21544,7 @@
fi
fi
fi
+
fi
@@ -20035,6 +21741,7 @@
fi
fi
fi
+
fi
@@ -20231,6 +21938,7 @@
fi
fi
fi
+
fi
@@ -20438,6 +22146,7 @@
fi
fi
fi
+
fi
@@ -20641,6 +22350,7 @@
fi
fi
fi
+
fi
@@ -20843,6 +22553,7 @@
fi
fi
fi
+
fi
@@ -21056,6 +22767,7 @@
fi
fi
fi
+
fi
@@ -26572,6 +28284,7 @@
fi
fi
fi
+
fi
@@ -26709,6 +28422,7 @@
fi
fi
fi
+
fi
@@ -26846,6 +28560,7 @@
fi
fi
fi
+
fi
@@ -26983,6 +28698,7 @@
fi
fi
fi
+
fi
@@ -27120,6 +28836,7 @@
fi
fi
fi
+
fi
@@ -33747,6 +35464,7 @@
fi
fi
fi
+
fi
@@ -34388,6 +36106,7 @@
fi
fi
fi
+
fi
@@ -34874,6 +36593,7 @@
fi
fi
fi
+
fi
@@ -36410,6 +38130,7 @@
fi
fi
fi
+
fi
@@ -36892,6 +38613,7 @@
fi
fi
fi
+
fi
@@ -37374,6 +39096,7 @@
fi
fi
fi
+
fi
@@ -37968,6 +39691,7 @@
fi
fi
fi
+
fi
@@ -38560,6 +40284,7 @@
fi
fi
fi
+
fi
@@ -39159,6 +40884,7 @@
fi
fi
fi
+
fi
@@ -39798,6 +41524,7 @@
fi
fi
fi
+
fi
@@ -40111,11 +41838,254 @@
# path, otherwise we might pick up cross-compilers which don't use standard
# naming.
+ OLDPATH="$PATH"
+
+
+# Check whether --with-build-devkit was given.
+if test "${with_build_devkit+set}" = set; then :
+ withval=$with_build_devkit;
+fi
+
+ if test "x$with_build_devkit" = "xyes"; then
+ as_fn_error $? "--with-build-devkit must have a value" "$LINENO" 5
+ elif test -n "$with_build_devkit"; then
+ if test ! -d "$with_build_devkit"; then
+ as_fn_error $? "--with-build-devkit points to non existing dir: $with_build_devkit" "$LINENO" 5
+ else
+
+ # Only process if variable expands to non-empty
+
+ if test "x$with_build_devkit" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$with_build_devkit"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of with_build_devkit" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ with_build_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_build_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_build_devkit to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$with_build_devkit"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ with_build_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_build_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_build_devkit to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$with_build_devkit"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of with_build_devkit, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ with_build_devkit="`cd "$path"; $THEPWDCMD -L`"
+ fi
+ fi
+
+ BUILD_DEVKIT_ROOT="$with_build_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
+ # Process devkit.info so that existing devkit variables are not
+ # modified by this
+ $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
+ -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
+ -e "s/\$host/\$build/g" \
+ $BUILD_DEVKIT_ROOT/devkit.info \
+ > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+
+ if test "x$BUILD_DEVKIT_NAME" = x; then
+ eval BUILD_DEVKIT_NAME="\${BUILD_DEVKIT_NAME_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-extra-path
+
+ if test "x$BUILD_DEVKIT_EXTRA_PATH" = x; then
+ eval BUILD_DEVKIT_EXTRA_PATH="\${BUILD_DEVKIT_EXTRA_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-toolchain-path
+
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ eval BUILD_DEVKIT_TOOLCHAIN_PATH="\${BUILD_DEVKIT_TOOLCHAIN_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-sysroot
+
+ if test "x$BUILD_DEVKIT_SYSROOT" = x; then
+ eval BUILD_DEVKIT_SYSROOT="\${BUILD_DEVKIT_SYSROOT_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Skip the Window specific parts
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build platform devkit" >&5
+$as_echo_n "checking for build platform devkit... " >&6; }
+ if test "x$BUILD_DEVKIT_NAME" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT" >&5
+$as_echo "$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_DEVKIT_ROOT" >&5
+$as_echo "$BUILD_DEVKIT_ROOT" >&6; }
+ fi
+
+ BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
+
+ if test "x$BUILD_SYSROOT" != "x"; then
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # Solaris Studio does not have a concept of sysroot. Instead we must
+ # make sure the default include and lib dirs are appended to each
+ # compile and link command line.
+ BUILD_SYSROOT_CFLAGS="-I$BUILD_SYSROOT/usr/include"
+ BUILD_SYSROOT_LDFLAGS="-L$BUILD_SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L$BUILD_SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L$BUILD_SYSROOT/usr/ccs/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ BUILD_SYSROOT_CFLAGS="--sysroot=$BUILD_SYSROOT"
+ BUILD_SYSROOT_LDFLAGS="--sysroot=$BUILD_SYSROOT"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ BUILD_SYSROOT_CFLAGS="-isysroot $BUILD_SYSROOT"
+ BUILD_SYSROOT_LDFLAGS="-isysroot $BUILD_SYSROOT"
+ fi
+ # Propagate the sysroot args to hotspot
+ BUILD_LEGACY_EXTRA_CFLAGS="$BUILD_LEGACY_EXTRA_CFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_LEGACY_EXTRA_CXXFLAGS="$BUILD_LEGACY_EXTRA_CXXFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_LEGACY_EXTRA_LDFLAGS="$BUILD_LEGACY_EXTRA_LDFLAGS $BUILD_SYSROOT_LDFLAGS"
+ # The global CFLAGS and LDFLAGS variables need these for configure to function
+ BUILD_CFLAGS="$BUILD_CFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_CPPFLAGS="$BUILD_CPPFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_CXXFLAGS="$BUILD_CXXFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_LDFLAGS="$BUILD_LDFLAGS $BUILD_SYSROOT_LDFLAGS"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # We also need -iframework<path>/System/Library/Frameworks
+ BUILD_SYSROOT_CFLAGS="$BUILD_SYSROOT_CFLAGS -iframework $BUILD_SYSROOT/System/Library/Frameworks"
+ BUILD_SYSROOT_LDFLAGS="$BUILD_SYSROOT_LDFLAGS -iframework $BUILD_SYSROOT/System/Library/Frameworks"
+ # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
+ # set this here so it doesn't have to be peppered throughout the forest
+ BUILD_SYSROOT_CFLAGS="$BUILD_SYSROOT_CFLAGS -F $BUILD_SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ BUILD_SYSROOT_LDFLAGS="$BUILD_SYSROOT_LDFLAGS -F $BUILD_SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ fi
+
+
+
+
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
+ fi
+ PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
+ fi
+ fi
+
# FIXME: we should list the discovered compilers as an exclude pattern!
# If we do that, we can do this detection before POST_DETECTION, and still
# find the build compilers in the tools dir, if needed.
+
# Publish this variable in the help.
@@ -40307,6 +42277,13 @@
fi
fi
fi
+
+ fi
+
+
+
+ if test "x$BUILD_CC" = x; then
+ as_fn_error $? "Could not find required tool for BUILD_CC" "$LINENO" 5
fi
@@ -40598,6 +42575,7 @@
+
# Publish this variable in the help.
@@ -40789,6 +42767,13 @@
fi
fi
fi
+
+ fi
+
+
+
+ if test "x$BUILD_CXX" = x; then
+ as_fn_error $? "Could not find required tool for BUILD_CXX" "$LINENO" 5
fi
@@ -41078,490 +43063,9 @@
fi
fi
-
-
- # Publish this variable in the help.
-
-
- if [ -z "${BUILD_LD+x}" ]; then
- # The variable is not set by user, try to locate tool using the code snippet
- for ac_prog in ld
-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_BUILD_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $BUILD_LD in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_BUILD_LD="$BUILD_LD" # 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_BUILD_LD="$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
-BUILD_LD=$ac_cv_path_BUILD_LD
-if test -n "$BUILD_LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_LD" >&5
-$as_echo "$BUILD_LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$BUILD_LD" && break
-done
-
- else
- # The variable is set, but is it from the command line or the environment?
-
- # Try to remove the string !BUILD_LD! from our list.
- try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_LD!/}
- 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 "xBUILD_LD" != xBASH; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_LD from the environment. Use command line variables instead." >&5
-$as_echo "$as_me: WARNING: Ignoring value of BUILD_LD from the environment. Use command line variables instead." >&2;}
- fi
- # Try to locate tool using the code snippet
- for ac_prog in ld
-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_BUILD_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $BUILD_LD in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_BUILD_LD="$BUILD_LD" # 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_BUILD_LD="$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
-BUILD_LD=$ac_cv_path_BUILD_LD
-if test -n "$BUILD_LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_LD" >&5
-$as_echo "$BUILD_LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$BUILD_LD" && 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$BUILD_LD" = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_LD= (no value)" >&5
-$as_echo "$as_me: Setting user supplied tool BUILD_LD= (no value)" >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_LD" >&5
-$as_echo_n "checking for BUILD_LD... " >&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="$BUILD_LD"
- 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 BUILD_LD=$tool_basename" >&5
-$as_echo "$as_me: Will search for user supplied tool BUILD_LD=$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_BUILD_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $BUILD_LD in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_BUILD_LD="$BUILD_LD" # 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_BUILD_LD="$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
-BUILD_LD=$ac_cv_path_BUILD_LD
-if test -n "$BUILD_LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_LD" >&5
-$as_echo "$BUILD_LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- if test "x$BUILD_LD" = 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 BUILD_LD=$tool_specified" >&5
-$as_echo "$as_me: Will use user supplied tool BUILD_LD=$tool_specified" >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_LD" >&5
-$as_echo_n "checking for BUILD_LD... " >&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 BUILD_LD=$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
-
-
-
- # Only process if variable expands to non-empty
-
- if test "x$BUILD_LD" != x; then
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
-
- # First separate the path from the arguments. This will split at the first
- # space.
- complete="$BUILD_LD"
- path="${complete%% *}"
- tmp="$complete EOL"
- arguments="${tmp#* }"
-
- # Input might be given as Windows format, start by converting to
- # unix format.
- new_path=`$CYGPATH -u "$path"`
-
- # Now try to locate executable using which
- new_path=`$WHICH "$new_path" 2> /dev/null`
- # bat and cmd files are not always considered executable in cygwin causing which
- # to not find them
- if test "x$new_path" = x \
- && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
- && test "x`$LS \"$path\" 2>/dev/null`" != x; then
- new_path=`$CYGPATH -u "$path"`
- fi
- if test "x$new_path" = x; then
- # Oops. Which didn't find the executable.
- # The splitting of arguments from the executable at a space might have been incorrect,
- # since paths with space are more likely in Windows. Give it another try with the whole
- # argument.
- path="$complete"
- arguments="EOL"
- new_path=`$CYGPATH -u "$path"`
- new_path=`$WHICH "$new_path" 2> /dev/null`
- # bat and cmd files are not always considered executable in cygwin causing which
- # to not find them
- if test "x$new_path" = x \
- && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
- && test "x`$LS \"$path\" 2>/dev/null`" != x; then
- new_path=`$CYGPATH -u "$path"`
- fi
- if test "x$new_path" = x; then
- # It's still not found. Now this is an unrecoverable error.
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
-$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
- has_space=`$ECHO "$complete" | $GREP " "`
- if test "x$has_space" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
-$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
- fi
- as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
- fi
- fi
-
- # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
- # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
- # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
- # "foo.exe" is OK but "foo" is an error.
- #
- # This test is therefore slightly more accurate than "test -f" to check for file presence.
- # It is also a way to make sure we got the proper file name for the real test later on.
- test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
- if test "x$test_shortpath" = x; then
- # Short path failed, file does not exist as specified.
- # Try adding .exe or .cmd
- if test -f "${new_path}.exe"; then
- input_to_shortpath="${new_path}.exe"
- elif test -f "${new_path}.cmd"; then
- input_to_shortpath="${new_path}.cmd"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$new_path\", is invalid." >&5
-$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$new_path\", is invalid." >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
-$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
- as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
- fi
- else
- input_to_shortpath="$new_path"
- fi
-
- # Call helper function which possibly converts this using DOS-style short mode.
- # If so, the updated path is stored in $new_path.
- new_path="$input_to_shortpath"
-
- input_path="$input_to_shortpath"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- shortmode_path=`$CYGPATH -s -m -a "$input_path"`
- path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
- if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
- # Going to short mode and back again did indeed matter. Since short mode is
- # case insensitive, let's make it lowercase to improve readability.
- shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Now convert it back to Unix-style (cygpath)
- input_path=`$CYGPATH -u "$shortmode_path"`
- new_path="$input_path"
- fi
- fi
-
- test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
- if test "x$test_cygdrive_prefix" = x; then
- # As a simple fix, exclude /usr/bin since it's not a real path.
- if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
- # The path is in a Cygwin special directory (e.g. /home). We need this converted to
- # a path prefixed by /cygdrive for fixpath to work.
- new_path="$CYGWIN_ROOT_PATH$input_path"
- fi
- fi
-
- # remove trailing .exe if any
- new_path="${new_path/%.exe/}"
-
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
-
- # First separate the path from the arguments. This will split at the first
- # space.
- complete="$BUILD_LD"
- path="${complete%% *}"
- tmp="$complete EOL"
- arguments="${tmp#* }"
-
- # Input might be given as Windows format, start by converting to
- # unix format.
- new_path="$path"
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
-
- # Now try to locate executable using which
- new_path=`$WHICH "$new_path" 2> /dev/null`
-
- if test "x$new_path" = x; then
- # Oops. Which didn't find the executable.
- # The splitting of arguments from the executable at a space might have been incorrect,
- # since paths with space are more likely in Windows. Give it another try with the whole
- # argument.
- path="$complete"
- arguments="EOL"
- new_path="$path"
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
-
- new_path=`$WHICH "$new_path" 2> /dev/null`
- # bat and cmd files are not always considered executable in MSYS causing which
- # to not find them
- if test "x$new_path" = x \
- && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
- && test "x`$LS \"$path\" 2>/dev/null`" != x; then
- new_path="$path"
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
- fi
-
- if test "x$new_path" = x; then
- # It's still not found. Now this is an unrecoverable error.
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
-$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
- has_space=`$ECHO "$complete" | $GREP " "`
- if test "x$has_space" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
-$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
- fi
- as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
- fi
- fi
-
- # Now new_path has a complete unix path to the binary
- if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
- # Keep paths in /bin as-is, but remove trailing .exe if any
- new_path="${new_path/%.exe/}"
- # Do not save /bin paths to all_fixpath_prefixes!
- else
- # Not in mixed or Windows style, start by that.
- new_path=`cmd //c echo $new_path`
-
- input_path="$new_path"
- # Check if we need to convert this using DOS-style short mode. If the path
- # contains just simple characters, use it. Otherwise (spaces, weird characters),
- # take no chances and rewrite it.
- # Note: m4 eats our [], so we need to use [ and ] instead.
- has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
- if test "x$has_forbidden_chars" != x; then
- # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
- new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- fi
-
- # Output is in $new_path
-
- windows_path="$new_path"
- if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
- unix_path=`$CYGPATH -u "$windows_path"`
- new_path="$unix_path"
- elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
- unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
- new_path="$unix_path"
- fi
-
- # remove trailing .exe if any
- new_path="${new_path/%.exe/}"
-
- # Save the first 10 bytes of this path to the storage, so fixpath can work.
- all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
- fi
-
- else
- # We're on a unix platform. Hooray! :)
- # First separate the path from the arguments. This will split at the first
- # space.
- complete="$BUILD_LD"
- path="${complete%% *}"
- tmp="$complete EOL"
- arguments="${tmp#* }"
-
- # Cannot rely on the command "which" here since it doesn't always work.
- is_absolute_path=`$ECHO "$path" | $GREP ^/`
- if test -z "$is_absolute_path"; then
- # Path to executable is not absolute. Find it.
- IFS_save="$IFS"
- IFS=:
- for p in $PATH; do
- if test -f "$p/$path" && test -x "$p/$path"; then
- new_path="$p/$path"
- break
- fi
- done
- IFS="$IFS_save"
- else
- # This is an absolute path, we can use it without further modifications.
- new_path="$path"
- fi
-
- if test "x$new_path" = x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&5
-$as_echo "$as_me: The path of BUILD_LD, which resolves as \"$complete\", is not found." >&6;}
- has_space=`$ECHO "$complete" | $GREP " "`
- if test "x$has_space" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
-$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
- fi
- as_fn_error $? "Cannot locate the the path of BUILD_LD" "$LINENO" 5
- fi
- fi
-
- # Now join together the path and the arguments once again
- if test "x$arguments" != xEOL; then
- new_complete="$new_path ${arguments% *}"
- else
- new_complete="$new_path"
- fi
-
- if test "x$complete" != "x$new_complete"; then
- BUILD_LD="$new_complete"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_LD to \"$new_complete\"" >&5
-$as_echo "$as_me: Rewriting BUILD_LD to \"$new_complete\"" >&6;}
- fi
- fi
-
- BUILD_SYSROOT_CFLAGS=""
- BUILD_SYSROOT_LDFLAGS=""
+ BUILD_LD="$BUILD_CC"
+
+ PATH="$OLDPATH"
else
# If we are not cross compiling, use the normal target compilers for
# building the build platform executables.
@@ -42220,6 +43724,7 @@
fi
fi
fi
+
fi
@@ -43568,7 +45073,7 @@
LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
elif test "x$TOOLCHAIN_TYPE" = xxlc; then
- LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -liconv -bexpall -bernotok"
+ LDFLAGS_JDK="${LDFLAGS_JDK} -brtl -bnolibpath -bexpall -bernotok"
fi
# Customize LDFLAGS for executables
@@ -43591,7 +45096,7 @@
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -dll -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
- LDFLAGS_JDKLIB_SUFFIX=""
+ JDKLIB_LIBS=""
else
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS} \
-L${OUTPUT_ROOT}/support/modules_libs/java.base${OPENJDK_TARGET_CPU_LIBDIR}"
@@ -43610,9 +45115,11 @@
LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} -L${OUTPUT_ROOT}/support/modules_libs/java.base${OPENJDK_TARGET_CPU_LIBDIR}/server"
fi
- LDFLAGS_JDKLIB_SUFFIX="-ljava -ljvm"
+ JDKLIB_LIBS="-ljava -ljvm"
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
- LDFLAGS_JDKLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX -lc"
+ JDKLIB_LIBS="$JDKLIB_LIBS -lc"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ JDKLIB_LIBS="$JDKLIB_LIBS -liconv"
fi
fi
@@ -43624,10 +45131,6 @@
LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
- LDFLAGS_TESTLIB_SUFFIX="$LDFLAGS_JDKLIB_SUFFIX"
- LDFLAGS_TESTEXE_SUFFIX="$LDFLAGS_JDKEXE_SUFFIX"
-
-
@@ -46894,7 +48397,7 @@
if test "x$NEEDS_LIB_X11" = xfalse; then
- if test "x${with_x}" != x; then
+ if (test "x${with_x}" != x && test "x${with_x}" != xno); then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: X11 is not used, so --with-x is ignored" >&5
$as_echo "$as_me: WARNING: X11 is not used, so --with-x is ignored" >&2;}
fi
@@ -47790,9 +49293,10 @@
if test "x$NEEDS_LIB_CUPS" = xfalse; then
- if test "x${with_cups}" != x || test "x${with_cups_include}" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups not used, so --with-cups is ignored" >&5
-$as_echo "$as_me: WARNING: cups not used, so --with-cups is ignored" >&2;}
+ if (test "x${with_cups}" != x && test "x${with_cups}" != xno) || \
+ (test "x${with_cups_include}" != x && test "x${with_cups_include}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups not used, so --with-cups[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: cups not used, so --with-cups[-*] is ignored" >&2;}
fi
CUPS_CFLAGS=
else
@@ -47922,11 +49426,14 @@
FREETYPE_BUNDLE_LIB_PATH=
if test "x$NEEDS_LIB_FREETYPE" = xfalse; then
- if test "x$with_freetype" != x || test "x$with_freetype_include" != x || test "x$with_freetype_lib" != x || test "x$with_freetype_src" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: freetype not used, so --with-freetype is ignored" >&5
-$as_echo "$as_me: WARNING: freetype not used, so --with-freetype is ignored" >&2;}
- fi
- if test "x$enable_freetype_bundling" != x; then
+ if (test "x$with_freetype" != x && test "x$with_freetype" != xno) || \
+ (test "x$with_freetype_include" != x && test "x$with_freetype_include" != xno) || \
+ (test "x$with_freetype_lib" != x && test "x$with_freetype_lib" != xno) || \
+ (test "x$with_freetype_src" != x && test "x$with_freetype_src" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: freetype not used, so --with-freetype[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: freetype not used, so --with-freetype[-*] is ignored" >&2;}
+ fi
+ if (test "x$enable_freetype_bundling" != x && test "x$enable_freetype_bundling" != xno); then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: freetype not used, so --enable-freetype-bundling is ignored" >&5
$as_echo "$as_me: WARNING: freetype not used, so --enable-freetype-bundling is ignored" >&2;}
fi
@@ -51926,9 +53433,11 @@
if test "x$NEEDS_LIB_ALSA" = xfalse; then
- if test "x${with_alsa}" != x || test "x${with_alsa_include}" != x || test "x${with_alsa_lib}" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: alsa not used, so --with-alsa is ignored" >&5
-$as_echo "$as_me: WARNING: alsa not used, so --with-alsa is ignored" >&2;}
+ if (test "x${with_alsa}" != x && test "x${with_alsa}" != xno) || \
+ (test "x${with_alsa_include}" != x && test "x${with_alsa_include}" != xno) || \
+ (test "x${with_alsa_lib}" != x && test "x${with_alsa_lib}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: alsa not used, so --with-alsa[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: alsa not used, so --with-alsa[-*] is ignored" >&2;}
fi
ALSA_CFLAGS=
ALSA_LIBS=
@@ -52105,9 +53614,11 @@
if test "x$NEEDS_LIB_FFI" = xfalse; then
- if test "x${with_libffi}" != x || test "x${with_libffi_include}" != x || test "x${with_libffi_lib}" != x; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libffi not used, so --with-libffi is ignored" >&5
-$as_echo "$as_me: WARNING: libffi not used, so --with-libffi is ignored" >&2;}
+ if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \
+ (test "x${with_libffi_include}" != x && test "x${with_libffi_include}" != xno) || \
+ (test "x${with_libffi_lib}" != x && test "x${with_libffi_lib}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libffi not used, so --with-libffi[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: libffi not used, so --with-libffi[-*] is ignored" >&2;}
fi
LIBFFI_CFLAGS=
LIBFFI_LIBS=
@@ -53808,6 +55319,7 @@
fi
fi
fi
+
fi
--- a/common/autoconf/lib-alsa.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/lib-alsa.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -37,8 +37,10 @@
[specify directory for the alsa library])])
if test "x$NEEDS_LIB_ALSA" = xfalse; then
- if test "x${with_alsa}" != x || test "x${with_alsa_include}" != x || test "x${with_alsa_lib}" != x; then
- AC_MSG_WARN([alsa not used, so --with-alsa is ignored])
+ if (test "x${with_alsa}" != x && test "x${with_alsa}" != xno) || \
+ (test "x${with_alsa_include}" != x && test "x${with_alsa_include}" != xno) || \
+ (test "x${with_alsa_lib}" != x && test "x${with_alsa_lib}" != xno); then
+ AC_MSG_WARN([[alsa not used, so --with-alsa[-*] is ignored]])
fi
ALSA_CFLAGS=
ALSA_LIBS=
--- a/common/autoconf/lib-cups.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/lib-cups.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -35,8 +35,9 @@
[specify directory for the cups include files])])
if test "x$NEEDS_LIB_CUPS" = xfalse; then
- if test "x${with_cups}" != x || test "x${with_cups_include}" != x; then
- AC_MSG_WARN([cups not used, so --with-cups is ignored])
+ if (test "x${with_cups}" != x && test "x${with_cups}" != xno) || \
+ (test "x${with_cups_include}" != x && test "x${with_cups_include}" != xno); then
+ AC_MSG_WARN([[cups not used, so --with-cups[-*] is ignored]])
fi
CUPS_CFLAGS=
else
--- a/common/autoconf/lib-ffi.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/lib-ffi.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -37,8 +37,10 @@
[specify directory for the libffi library])])
if test "x$NEEDS_LIB_FFI" = xfalse; then
- if test "x${with_libffi}" != x || test "x${with_libffi_include}" != x || test "x${with_libffi_lib}" != x; then
- AC_MSG_WARN([libffi not used, so --with-libffi is ignored])
+ if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \
+ (test "x${with_libffi_include}" != x && test "x${with_libffi_include}" != xno) || \
+ (test "x${with_libffi_lib}" != x && test "x${with_libffi_lib}" != xno); then
+ AC_MSG_WARN([[libffi not used, so --with-libffi[-*] is ignored]])
fi
LIBFFI_CFLAGS=
LIBFFI_LIBS=
--- a/common/autoconf/lib-freetype.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/lib-freetype.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -202,10 +202,13 @@
FREETYPE_BUNDLE_LIB_PATH=
if test "x$NEEDS_LIB_FREETYPE" = xfalse; then
- if test "x$with_freetype" != x || test "x$with_freetype_include" != x || test "x$with_freetype_lib" != x || test "x$with_freetype_src" != x; then
- AC_MSG_WARN([freetype not used, so --with-freetype is ignored])
+ if (test "x$with_freetype" != x && test "x$with_freetype" != xno) || \
+ (test "x$with_freetype_include" != x && test "x$with_freetype_include" != xno) || \
+ (test "x$with_freetype_lib" != x && test "x$with_freetype_lib" != xno) || \
+ (test "x$with_freetype_src" != x && test "x$with_freetype_src" != xno); then
+ AC_MSG_WARN([[freetype not used, so --with-freetype[-*] is ignored]])
fi
- if test "x$enable_freetype_bundling" != x; then
+ if (test "x$enable_freetype_bundling" != x && test "x$enable_freetype_bundling" != xno); then
AC_MSG_WARN([freetype not used, so --enable-freetype-bundling is ignored])
fi
else
--- a/common/autoconf/lib-x11.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/lib-x11.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -29,7 +29,7 @@
AC_DEFUN_ONCE([LIB_SETUP_X11],
[
if test "x$NEEDS_LIB_X11" = xfalse; then
- if test "x${with_x}" != x; then
+ if (test "x${with_x}" != x && test "x${with_x}" != xno); then
AC_MSG_WARN([X11 is not used, so --with-x is ignored])
fi
X_CFLAGS=
--- a/common/autoconf/spec.gmk.in Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/spec.gmk.in Thu Nov 05 13:43:17 2015 -0800
@@ -340,11 +340,11 @@
# LDFLAGS used to link the jdk native libraries (C-code)
LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
-LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
+JDKLIB_LIBS:=@JDKLIB_LIBS@
# LDFLAGS used to link the jdk native launchers (C-code)
LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
-LDFLAGS_JDKEXE_SUFFIX:=@LDFLAGS_JDKEXE_SUFFIX@
+JDKEXE_LIBS:=@JDKEXE_LIBS@
# LDFLAGS specific to C++ linking.
LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
@@ -360,9 +360,7 @@
CFLAGS_TESTEXE:=@CFLAGS_TESTEXE@
CXXFLAGS_TESTEXE:=@CXXFLAGS_TESTEXE@
LDFLAGS_TESTLIB:=@LDFLAGS_TESTLIB@
-LDFLAGS_TESTLIB_SUFFIX:=@LDFLAGS_TESTLIB_SUFFIX@
LDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
-LDFLAGS_TESTEXE_SUFFIX:=@LDFLAGS_TESTEXE_SUFFIX@
# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
# build platform.
--- a/common/autoconf/toolchain.m4 Fri Oct 30 10:34:46 2015 +0100
+++ b/common/autoconf/toolchain.m4 Thu Nov 05 13:43:17 2015 -0800
@@ -647,17 +647,68 @@
# path, otherwise we might pick up cross-compilers which don't use standard
# naming.
+ OLDPATH="$PATH"
+
+ AC_ARG_WITH(build-devkit, [AS_HELP_STRING([--with-build-devkit],
+ [Devkit to use for the build platform toolchain])])
+ if test "x$with_build_devkit" = "xyes"; then
+ AC_MSG_ERROR([--with-build-devkit must have a value])
+ elif test -n "$with_build_devkit"; then
+ if test ! -d "$with_build_devkit"; then
+ AC_MSG_ERROR([--with-build-devkit points to non existing dir: $with_build_devkit])
+ else
+ BASIC_FIXUP_PATH([with_build_devkit])
+ BUILD_DEVKIT_ROOT="$with_build_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
+ # Process devkit.info so that existing devkit variables are not
+ # modified by this
+ $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
+ -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
+ -e "s/\$host/\$build/g" \
+ $BUILD_DEVKIT_ROOT/devkit.info \
+ > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
+ # Corresponds to --with-extra-path
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
+ # Corresponds to --with-toolchain-path
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
+ # Corresponds to --with-sysroot
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
+ # Skip the Window specific parts
+ fi
+
+ AC_MSG_CHECKING([for build platform devkit])
+ if test "x$BUILD_DEVKIT_NAME" != x; then
+ AC_MSG_RESULT([$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT])
+ else
+ AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
+ fi
+
+ BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
+ FLAGS_SETUP_SYSROOT_FLAGS([BUILD_])
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
+ fi
+ PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
+ fi
+ fi
+
# FIXME: we should list the discovered compilers as an exclude pattern!
# If we do that, we can do this detection before POST_DETECTION, and still
# find the build compilers in the tools dir, if needed.
- BASIC_PATH_PROGS(BUILD_CC, [cl cc gcc])
+ BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
BASIC_FIXUP_EXECUTABLE(BUILD_CC)
- BASIC_PATH_PROGS(BUILD_CXX, [cl CC g++])
+ BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
- BASIC_PATH_PROGS(BUILD_LD, ld)
- BASIC_FIXUP_EXECUTABLE(BUILD_LD)
- BUILD_SYSROOT_CFLAGS=""
- BUILD_SYSROOT_LDFLAGS=""
+ BUILD_LD="$BUILD_CC"
+
+ PATH="$OLDPATH"
else
# If we are not cross compiling, use the normal target compilers for
# building the build platform executables.
--- a/corba/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/corba/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
a5c40ac9b916ff44d512ee764fa919ed2097e149 jdk9-b87
00f48ecbc09915f793d9e5ad74ab0b25f2549bf5 jdk9-b88
c847a53b38d2fffb87afc483c74db05eced9b4f4 jdk9-b89
+29cc8228d62319af21cad7c90817671e0813b6bd jdk9-b90
--- a/hotspot/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/hotspot/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -492,3 +492,4 @@
d7ffd16382fe7071181b967932b47cff6d1312e1 jdk9-b87
bc48b669bc6610fac97e16593050c0f559cf6945 jdk9-b88
20dff0211deda8d5877fda0e80b6d165ab93c6c2 jdk9-b89
+7fe46dc64bb3a8df554b24cde0153ffb24f39c5e jdk9-b90
--- a/jaxp/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/jaxp/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
eb435c878c2cbbfb043d0b205f4d5bd6faffd44a jdk9-b87
4700fd67e942714046df1d0514f2ef4ddcac78bb jdk9-b88
5021da4c949690e5c2578c073c36fb161e4b35e5 jdk9-b89
+35f68242b624112cb6ef7e6226059674d6b499f4 jdk9-b90
--- a/jaxws/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/jaxws/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -335,3 +335,5 @@
f7dba191a38cfc29665b0d77174615a530803297 jdk9-b87
f6425fec60abe3c096c5251be61e4621c817be80 jdk9-b88
2d84c6f4cbbac5871b099e97f8f968d9de6b52bc jdk9-b89
+b3e45213d574618f6520fa6978e4a14ba577c2db jdk9-b90
+3b2a3cb658e41618bd152a7598d12e1f0c10e8f7 jdk9-b91
--- a/jdk/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
110fc90bdfa0fe59606c047c2301ed75d2bad6cf jdk9-b87
6e50b992bef4def597a5033e696e5b1d4fe5b294 jdk9-b88
0d0a63b325592607974612f9cfb48590975aa2d6 jdk9-b89
+b433e4dfb830fea60e5187e4580791b62cc362d2 jdk9-b90
--- a/jdk/make/CompileDemos.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/CompileDemos.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -269,11 +269,11 @@
DISABLED_WARNINGS_microsoft := $(11), \
LDFLAGS := $(filter-out -incremental:no -opt:ref, $(LDFLAGS_JDKLIB)), \
LDFLAGS_macosx := $(call SET_EXECUTABLE_ORIGIN), \
- LDFLAGS_SUFFIX := $$($1_EXTRA_CXX), \
- LDFLAGS_SUFFIX_unix := $5, \
- LDFLAGS_SUFFIX_windows := $6, \
- LDFLAGS_SUFFIX_solaris := $7 -lc, \
- LDFLAGS_SUFFIX_linux := $8, \
+ LIBS := $$($1_EXTRA_CXX), \
+ LIBS_unix := $5, \
+ LIBS_linux := $8, \
+ LIBS_solaris := $7 -lc, \
+ LIBS_windows := $6, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $$(RC_FLAGS) \
-D "JDK_FNAME=$1.dll" \
@@ -409,7 +409,7 @@
CFLAGS := $(CFLAGS_JDKLIB) \
-I$(SUPPORT_OUTPUTDIR)/demo/classes/jni/Poller, \
LDFLAGS := $(LDFLAGS_JDKLIB), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS_solaris := -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/demo/native/jni/Poller, \
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/demo/native, \
LIBRARY := Poller))
--- a/jdk/make/launcher/Launcher-java.base.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/launcher/Launcher-java.base.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -125,7 +125,7 @@
JSPAWNHELPER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/unix/native/libjava
BUILD_JSPAWNHELPER_DST_DIR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)
LINK_JSPAWNHELPER_OBJECTS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o
-LINK_JSPAWNHELPER_FLAGS :=
+BUILD_JSPAWNHELPER_LDFLAGS :=
ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
BUILD_JSPAWNHELPER := 1
@@ -136,7 +136,7 @@
endif
ifeq ($(OPENJDK_TARGET_CPU_BITS), 64)
- LINK_JSPAWNHELPER_FLAGS += $(COMPILER_TARGET_BITS_FLAG)64
+ BUILD_JSPAWNHELPER_LDFLAGS += $(COMPILER_TARGET_BITS_FLAG)64
endif
ifeq ($(BUILD_JSPAWNHELPER), 1)
@@ -145,8 +145,8 @@
INCLUDE_FILES := jspawnhelper.c, \
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKEXE) $(JSPAWNHELPER_CFLAGS), \
- LDFLAGS := $(LDFLAGS_JDKEXE) $(LINK_JSPAWNHELPER_FLAGS), \
- LDFLAGS_SUFFIX := $(LINK_JSPAWNHELPER_OBJECTS), \
+ LDFLAGS := $(LDFLAGS_JDKEXE) $(BUILD_JSPAWNHELPER_LDFLAGS), \
+ LIBS := $(LINK_JSPAWNHELPER_OBJECTS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jspawnhelper, \
OUTPUT_DIR := $(BUILD_JSPAWNHELPER_DST_DIR), \
PROGRAM := jspawnhelper))
--- a/jdk/make/launcher/Launcher-jdk.accessibility.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/launcher/Launcher-jdk.accessibility.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -40,8 +40,8 @@
-analyze- -Od -Gd -D_WINDOWS \
-D_UNICODE -DUNICODE -RTC1 -EHsc, \
DISABLED_WARNINGS_microsoft := 4267 4996, \
- LDFLAGS := $(LDFLAGS_JDKEXE) \
- Advapi32.lib Version.lib User32.lib, \
+ LDFLAGS := $(LDFLAGS_JDKEXE), \
+ LIBS := advapi32.lib version.lib user32.lib, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/jdk.accessibility/jabswitch, \
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/jdk.accessibility, \
PROGRAM := jabswitch, \
--- a/jdk/make/launcher/Launcher-jdk.jconsole.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/launcher/Launcher-jdk.jconsole.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -26,9 +26,8 @@
include LauncherCommon.gmk
BUILD_LAUNCHER_jconsole_CFLAGS_windows := -DJAVAW
-BUILD_LAUNCHER_jconsole_LDFLAGS_windows := user32.lib
+BUILD_LAUNCHER_jconsole_LIBS_windows := user32.lib
$(eval $(call SetupLauncher,jconsole, \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "-J-Djconsole.showOutputViewer"$(COMMA) "sun.tools.jconsole.JConsole"$(COMMA) }' \
-DAPP_CLASSPATH='{ "/lib/jconsole.jar"$(COMMA) "/lib/tools.jar"$(COMMA) "/classes" }'))
-
--- a/jdk/make/launcher/Launcher-jdk.pack200.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/launcher/Launcher-jdk.pack200.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -90,9 +90,8 @@
$(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_linux := , \
- LDFLAGS_solaris := $(UNPACKEXE_LDFLAGS_solaris) -lc, \
- LDFLAGS_SUFFIX := $(UNPACKEXE_LIBS) $(LIBCXX), \
+ LIBS := $(UNPACKEXE_LIBS) $(LIBCXX), \
+ LIBS_solaris := -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe$(OUTPUT_SUBDIR), \
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE), \
PROGRAM := unpack200, \
--- a/jdk/make/launcher/LauncherCommon.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/launcher/LauncherCommon.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -75,8 +75,8 @@
# Parameter 1 is the name of the launcher (java, javac, jar...)
# Parameter 2 is extra CFLAGS
# Parameter 3 is extra LDFLAGS
- # Parameter 4 is extra LDFLAGS_SUFFIX_unix
- # Parameter 5 is extra LDFLAGS_SUFFIX_windows
+ # Parameter 4 is extra LIBS_unix
+ # Parameter 5 is extra LIBS_windows
# Parameter 6 is optional Windows JLI library (full path)
# Parameter 7 is optional Windows resource (RC) flags
# Parameter 8 is optional Windows version resource file (.rc)
@@ -96,7 +96,7 @@
endif
$1_LDFLAGS := $3
- $1_LDFLAGS_SUFFIX :=
+ $1_LIBS :=
ifeq ($(OPENJDK_TARGET_OS), macosx)
$1_PLIST_FILE := Info-cmdline.plist
ifneq ($(11), )
@@ -107,17 +107,18 @@
endif
$1_LDFLAGS += -Wl,-all_load $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a \
- -framework Cocoa -framework Security -framework ApplicationServices \
-sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE)
- $1_LDFLAGS_SUFFIX += -pthread
+ $1_LIBS += -framework Cocoa -framework Security \
+ -framework ApplicationServices
endif
ifeq ($(OPENJDK_TARGET_OS), aix)
- $1_LDFLAGS_SUFFIX += -L$(SUPPORT_OUTPUTDIR)/native/java.base -ljli_static
+ $1_LDFLAGS += -L$(SUPPORT_OUTPUTDIR)/native/java.base
+ $1_LIBS += -ljli_static
endif
ifeq ($(USE_EXTERNAL_LIBZ), true)
- $1_LDFLAGS_SUFFIX += -lz
+ $1_LIBS += -lz
endif
$1_OUTPUT_DIR_ARG := $9
@@ -130,7 +131,7 @@
$1_OPTIMIZATION_ARG := HIGH
$1_LDFLAGS_solaris := -R$(OPENWIN_HOME)/lib$(OPENJDK_TARGET_CPU_ISADIR)
else
- $1_OPTIMIZATION_ARG := LOW
+ $1_OPTIMIZATION_ARG := LOW
endif
$1_CFLAGS := $(CFLAGS_JDKEXE)
@@ -172,18 +173,20 @@
LDFLAGS := $(LDFLAGS_JDKEXE) \
$(ORIGIN_ARG) \
$$($1_LDFLAGS), \
+ LDFLAGS_linux := \
+ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)) \
+ -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli, \
LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_NAME,$1), \
- LDFLAGS_linux := -lpthread \
- $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \
- $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)), \
+ $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)$(SHARED_LIBRARY_SUFFIX)) \
+ -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli, \
MAPFILE := $$($1_MAPFILE), \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKEXE_SUFFIX) $$($1_LDFLAGS_SUFFIX), \
- LDFLAGS_SUFFIX_unix := $4, \
- LDFLAGS_SUFFIX_windows := $$($1_WINDOWS_JLI_LIB) \
+ LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
+ LIBS_unix := $4, \
+ LIBS_linux := -lpthread -ljli $(LIBDL) -lc, \
+ LIBS_solaris := -ljli -lthread $(LIBDL) -lc, \
+ LIBS_windows := $$($1_WINDOWS_JLI_LIB) \
$(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib $5, \
- LDFLAGS_SUFFIX_linux := -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli $(LIBDL) -lc, \
- LDFLAGS_SUFFIX_solaris := -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base$(OPENJDK_TARGET_CPU_LIBDIR)/jli -ljli -lthread $(LIBDL) -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$1_objs$(OUTPUT_SUBDIR), \
OUTPUT_DIR := $$($1_OUTPUT_DIR_ARG)$(OUTPUT_SUBDIR), \
PROGRAM := $1, \
--- a/jdk/make/lib/Awt2dLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Awt2dLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -60,9 +60,9 @@
MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBMLIB_LDLIBS) \
- $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := $(BUILD_LIBMLIB_LDLIBS) \
+ $(JDKLIB_LIBS), \
+ LIBS_solaris := -lc, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=mlib_image.dll" \
@@ -131,9 +131,8 @@
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
- $(BUILD_LIBMLIB_LDLIBS) -ljava -ljvm \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := -ljava -ljvm -lc $(BUILD_LIBMLIB_LDLIBS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmlib_image_v, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -253,27 +252,27 @@
ASFLAGS := $(LIBAWT_ASFLAGS), \
MAPFILE := $(LIBAWT_MAPFILE), \
LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \
- LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \
- LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\
- LDFLAGS_SUFFIX_macosx := -L$(INSTALL_LIBRARIES_HERE) \
- -lmlib_image -ljvm $(LIBM) \
+ LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \
+ LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \
+ -delayload:shell32.dll -delayload:winmm.dll \
+ -delayload:winspool.drv -delayload:imm32.dll \
+ -delayload:ole32.dll -delayload:comdlg32.dll \
+ -delayload:comctl32.dll -delayload:shlwapi.dll, \
+ LIBS_unix := -ljvm -ljava $(LIBM), \
+ LIBS_linux := $(LIBDL), \
+ LIBS_solaris := $(LIBDL) -lc, \
+ LIBS_aix := $(LIBDL),\
+ LIBS_macosx := -lmlib_image \
-framework Cocoa \
-framework OpenGL \
-framework JavaNativeFoundation \
-framework JavaRuntimeSupport \
-framework ApplicationServices \
- -framework AudioToolbox \
- -ljava, \
- LDFLAGS_SUFFIX_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \
+ -framework AudioToolbox, \
+ LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \
imm32.lib ole32.lib uuid.lib shell32.lib \
comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \
- delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib \
- -DELAYLOAD:user32.dll -DELAYLOAD:gdi32.dll \
- -DELAYLOAD:shell32.dll -DELAYLOAD:winmm.dll \
- -DELAYLOAD:winspool.drv -DELAYLOAD:imm32.dll \
- -DELAYLOAD:ole32.dll -DELAYLOAD:comdlg32.dll \
- -DELAYLOAD:comctl32.dll -DELAYLOAD:shlwapi.dll, \
+ delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib, \
VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) $(LIBAWT_RC_FLAGS) \
-D "JDK_FNAME=awt.dll" \
@@ -338,11 +337,10 @@
endif
endif
- LIBAWT_XAWT_LDFLAGS_SUFFIX := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc
+ LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc
ifeq ($(OPENJDK_TARGET_OS), linux)
- # To match old build, add this to LDFLAGS instead of suffix.
- LIBAWT_XAWT_LDFLAGS += -lpthread
+ LIBAWT_XAWT_LIBS += -lpthread
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \
@@ -361,11 +359,10 @@
WARNINGS_AS_ERRORS_gcc := false, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
- $(X_LIBS) $(LIBAWT_XAWT_LDFLAGS) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
$(call SET_SHARED_LIBRARY_ORIGIN,/..) \
-L$(INSTALL_LIBRARIES_HERE), \
- LDFLAGS_SUFFIX := $(LIBAWT_XAWT_LDFLAGS_SUFFIX), \
+ LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=xawt.dll" \
@@ -424,11 +421,12 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
LDFLAGS_solaris := /usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2, \
- LDFLAGS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
- LDFLAGS_SUFFIX_solaris := -lawt -ljava -ljvm -lc $(LCMS_LIBS), \
- LDFLAGS_SUFFIX_macosx := $(LIBM) -lawt -ljava -ljvm $(LCMS_LIBS), \
- LDFLAGS_SUFFIX_linux := -lm -lawt -ljava -ljvm $(LCMS_LIBS), \
- LDFLAGS_SUFFIX_aix := -lm -lawt -ljava -ljvm $(LCMS_LIBS),\
+ LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS), \
+ LIBS_linux := $(LIBM), \
+ LIBS_macosx := $(LIBM), \
+ LIBS_solaris := -lc, \
+ LIBS_aix := $(LIBM),\
+ LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=lcms.dll" \
@@ -502,8 +500,8 @@
MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_windows := $(WIN_JAVA_LIB) jvm.lib, \
- LDFLAGS_SUFFIX := $(LIBJPEG_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
+ LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
+ LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=javajpeg.dll" \
@@ -575,11 +573,10 @@
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
- LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN)., \
REORDER := $(LIBAWT_HEADLESS_REORDER), \
- LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \
- LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\
- LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \
+ LIBS_unix := -lawt -ljvm -ljava, \
+ LIBS_linux := -lm $(LIBDL), \
+ LIBS_solaris := -lm $(LIBDL) $(LIBCXX) -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_headless, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -662,13 +659,13 @@
LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
- LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
- LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
- LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\
- LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
- -ljava -ljvm, \
- LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
+ LDFLAGS_macosx := -undefined dynamic_lookup, \
+ LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \
+ LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \
+ LIBS_linux := -lc, \
+ LIBS_solaris := -lawt_headless -lc, \
+ LIBS_aix := -lawt_headless,\
+ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \
$(WIN_AWT_LIB), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
@@ -713,9 +710,8 @@
CFLAGS := $(CXXFLAGS_JDKLIB) \
-EHsc -DUNICODE -D_UNICODE \
$(LIBJAWT_CFLAGS), \
- LDFLAGS := $(LDFLAGS_JDKLIB) $(KERNEL32_LIB) $(LDFLAGS_CXX_JDK) \
- advapi32.lib $(WIN_AWT_LIB), \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
+ LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
+ LIBS := $(JDKLIB_LIBS) $(KERNEL32_LIB) advapi32.lib $(WIN_AWT_LIB), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jawt.dll" \
@@ -776,12 +772,10 @@
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
- LDFLAGS_solaris := $(X_LIBS), \
- LDFLAGS_SUFFIX_linux := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\
- LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \
- LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \
- -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \
+ LDFLAGS_macosx := -Xlinker -rpath -Xlinker @loader_path, \
+ LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \
+ LIBS_solaris := $(X_LIBS) -lXrender, \
+ LIBS_macosx := -framework Cocoa, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -809,14 +803,14 @@
#
ifeq ($(USE_EXTERNAL_LIBGIF), true)
- GIFLIB_LDFLAGS := -lgif
+ GIFLIB_LIBS := -lgif
LIBSPLASHSCREEN_EXCLUDES := giflib
else
LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen/giflib
endif
ifeq ($(USE_EXTERNAL_LIBJPEG), true)
- LIBJPEG_LDFLAGS := -ljpeg
+ LIBJPEG_LIBS := -ljpeg
else
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
@@ -857,7 +851,7 @@
LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS)
endif
- LIBSPLASHSCREEN_LDFLAGS_SUFFIX :=
+ LIBSPLASHSCREEN_LIBS :=
ifneq ($(USE_EXTERNAL_LIBZ), true)
LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib-1.2.8
@@ -865,17 +859,18 @@
endif
ifeq ($(OPENJDK_TARGET_OS), macosx)
- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += \
- -L$(INSTALL_LIBRARIES_HERE) \
+ LIBSPLASHSCREEN_LDFLAGS := -L$(INSTALL_LIBRARIES_HERE)
+ LIBSPLASHSCREEN_LIBS += \
$(LIBM) -lpthread -liconv -losxapp \
-framework ApplicationServices \
-framework Foundation \
-framework Cocoa \
-framework JavaNativeFoundation
else ifeq ($(OPENJDK_TARGET_OS), windows)
- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += kernel32.lib user32.lib gdi32.lib delayimp.lib -DELAYLOAD:user32.dll
+ LIBSPLASHSCREEN_LDFLAGS := -delayload:user32.dll
+ LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib
else
- LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
+ LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBSPLASHSCREEN, \
@@ -893,11 +888,11 @@
E_STATEMENT_NOT_REACHED, \
DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
- LDFLAGS := $(LDFLAGS_JDKLIB) \
+ LDFLAGS := $(LIBSPLASHSCREEN_LDFLAGS) $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LIBSPLASHSCREEN_LDFLAGS_SUFFIX) $(LIBZ) \
- $(GIFLIB_LDFLAGS) $(LIBJPEG_LDFLAGS) $(PNG_LIBS), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := $(LIBSPLASHSCREEN_LIBS) $(LIBZ) \
+ $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \
+ LIBS_solaris := -lc, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=splashscreen.dll" \
@@ -967,7 +962,7 @@
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
-L$(INSTALL_LIBRARIES_HERE), \
- LDFLAGS_SUFFIX_macosx := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \
+ LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \
-framework Accelerate \
-framework ApplicationServices \
-framework AudioToolbox \
@@ -1014,7 +1009,7 @@
$(call SET_SHARED_LIBRARY_ORIGIN) \
-Xlinker -rpath -Xlinker @loader_path \
-L$(INSTALL_LIBRARIES_HERE), \
- LDFLAGS_SUFFIX_macosx := -lawt -losxapp -lawt_lwawt \
+ LIBS := -lawt -losxapp -lawt_lwawt \
-framework Cocoa \
-framework Carbon \
-framework ApplicationServices \
--- a/jdk/make/lib/CoreLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/CoreLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -97,8 +97,8 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_unix := -ljvm -lc, \
- LDFLAGS_SUFFIX_windows := jvm.lib, \
+ LIBS_unix := -ljvm -lc, \
+ LIBS_windows := jvm.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=verify.dll" \
@@ -150,19 +150,20 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_unix := -ljvm -lverify, \
- LDFLAGS_SUFFIX_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
- LDFLAGS_SUFFIX_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
- LDFLAGS_SUFFIX_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
- LDFLAGS_SUFFIX_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/ -lfdlibm \
+ LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \
+ LDFLAGS_windows := -export:winFileHandleOpen -export:handleLseek \
+ -export:getLastErrorString \
+ -export:getErrorString -delayload:shell32.dll, \
+ LIBS_unix := -ljvm -lverify, \
+ LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \
+ LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \
+ LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) -lm,\
+ LIBS_macosx := -lfdlibm \
-framework CoreFoundation \
-framework Foundation \
-framework Security -framework SystemConfiguration, \
- LDFLAGS_SUFFIX_windows := -export:winFileHandleOpen -export:handleLseek \
- -export:getLastErrorString \
- -export:getErrorString \
- jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
- shell32.lib delayimp.lib -DELAYLOAD:shell32.dll \
+ LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \
+ shell32.lib delayimp.lib \
advapi32.lib version.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
@@ -215,16 +216,13 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
REORDER := $(BUILD_LIBZIP_REORDER), \
LDFLAGS := $(LDFLAGS_JDKLIB) \
- $(call SET_SHARED_LIBRARY_ORIGIN) \
- $(EXPORT_ZIP_FUNCS), \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \
-export:ZIP_ReadEntry -export:ZIP_GetNextEntry \
- -export:ZIP_InflateFully -export:ZIP_CRC32 \
- jvm.lib $(WIN_JAVA_LIB), \
- LDFLAGS_SUFFIX_linux := -ljvm -ljava $(LIBZ), \
- LDFLAGS_SUFFIX_solaris := -ljvm -ljava $(LIBZ) -lc, \
- LDFLAGS_SUFFIX_aix := -ljvm -ljava $(LIBZ),\
- LDFLAGS_SUFFIX_macosx := $(LIBZ) -ljava -ljvm, \
+ -export:ZIP_InflateFully -export:ZIP_CRC32, \
+ LIBS_unix := -ljvm -ljava $(LIBZ), \
+ LIBS_solaris := -lc, \
+ LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=zip.dll" \
@@ -261,18 +259,15 @@
CFLAGS_unix := -UDEBUG, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
- $(call SET_SHARED_LIBRARY_ORIGIN) \
- $(EXPORT_JIMAGE_FUNCS), \
+ $(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_windows := -export:JIMAGE_Open -export:JIMAGE_Close \
-export:JIMAGE_PackageToModule \
-export:JIMAGE_FindResource -export:JIMAGE_GetResource \
-export:JIMAGE_ResourceIterator, \
- LDFLAGS_SUFFIX_unix := -ljvm -ldl $(LIBCXX), \
- LDFLAGS_SUFFIX_linux := , \
- LDFLAGS_SUFFIX_solaris := -lc, \
- LDFLAGS_SUFFIX_aix := ,\
- LDFLAGS_SUFFIX_macosx := -lc++, \
- LDFLAGS_SUFFIX_windows := jvm.lib, \
+ LIBS_unix := -ljvm -ldl $(LIBCXX), \
+ LIBS_solaris := -lc, \
+ LIBS_macosx := -lc++, \
+ LIBS_windows := jvm.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jimage.dll" \
@@ -364,12 +359,7 @@
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
- LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
- LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \
- LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \
- LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\
- LDFLAGS_SUFFIX_macosx := $(LIBZ), \
- LDFLAGS_SUFFIX_windows := \
+ LDFLAGS_windows := \
-export:JLI_Launch \
-export:JLI_ManifestIterate \
-export:JLI_SetTraceLauncher \
@@ -387,10 +377,13 @@
-export:JLI_MemFree \
-export:JLI_InitArgProcessing \
-export:JLI_PreprocessArg \
- -export:JLI_GetAppArgIndex \
- advapi32.lib \
- comctl32.lib \
- user32.lib, \
+ -export:JLI_GetAppArgIndex, \
+ LIBS_unix := $(LIBZ), \
+ LIBS_linux := $(LIBDL) -lc -lpthread, \
+ LIBS_solaris := $(LIBDL) -lc, \
+ LIBS_aix := $(LIBDL),\
+ LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
+ LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jli.dll" \
--- a/jdk/make/lib/Lib-java.instrument.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-java.instrument.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -40,20 +40,13 @@
-I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
#
-LIBINSTRUMENT_LDFLAGS :=
-LIBINSTRUMENT_LDFLAGS_SUFFIX :=
-
ifeq ($(OPENJDK_TARGET_OS), windows)
- LIBINSTRUMENT_LDFLAGS += $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib $(WIN_JAVA_LIB) \
- -export:Agent_OnAttach advapi32.lib
# Statically link the C runtime so that there are not dependencies on modules
# not on the search patch when invoked from the Windows system directory
# (or elsewhere).
LIBINSTRUMENT_CFLAGS := $(filter-out -MD, $(LIBINSTRUMENT_CFLAGS))
# equivalent of strcasecmp is stricmp on Windows
LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp
-else
- LIBINSTRUMENT_LDFLAGS_SUFFIX := -ljava
endif
$(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \
@@ -68,15 +61,21 @@
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN) \
$(LIBINSTRUMENT_LDFLAGS), \
- LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
- LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \
- LDFLAGS_macosx := -Xlinker -all_load $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a \
- -framework Cocoa -framework Security -framework ApplicationServices, \
- LDFLAGS_SUFFIX := $(LIBINSTRUMENT_LDFLAGS_SUFFIX), \
- LDFLAGS_SUFFIX_macosx := -liconv $(LIBZ), \
- LDFLAGS_SUFFIX_solaris := $(LIBZ) -L$(call FindLibDirForModule, java.base)/jli -ljli $(LIBDL) -lc, \
- LDFLAGS_SUFFIX_linux := $(LIBZ) -L$(call FindLibDirForModule, java.base)/jli -ljli $(LIBDL), \
- LDFLAGS_SUFFIX_aix := $(LIBZ) -L$(SUPPORT_OUTPUTDIR)/native/java.base -ljli_static $(LIBDL),\
+ LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \
+ -L$(call FindLibDirForModule, java.base)/jli, \
+ LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \
+ -L$(call FindLibDirForModule, java.base)/jli, \
+ LDFLAGS_macosx := -Xlinker -all_load $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a, \
+ LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
+ LDFLAGS_windows := -export:Agent_OnAttach, \
+ LIBS_unix := -ljava $(LIBZ), \
+ LIBS_linux := -ljli $(LIBDL), \
+ LIBS_solaris := -ljli $(LIBDL) -lc, \
+ LIBS_aix := -ljli_static $(LIBDL),\
+ LIBS_macosx := -liconv -framework Cocoa -framework Security \
+ -framework ApplicationServices, \
+ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib \
+ $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=instrument.dll" \
--- a/jdk/make/lib/Lib-java.management.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-java.management.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -54,10 +54,10 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_solaris := -lkstat, \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \
- LDFLAGS_SUFFIX_aix := -lperfstat,\
+ LIBS := $(JDKLIB_LIBS), \
+ LIBS_solaris := -lkstat, \
+ LIBS_aix := -lperfstat,\
+ LIBS_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=management.dll" \
--- a/jdk/make/lib/Lib-java.prefs.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-java.prefs.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -43,11 +43,12 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libprefs/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := -ljvm -ljava, \
- LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lc, \
- LDFLAGS_SUFFIX_aix := -ljvm -ljava, \
- LDFLAGS_SUFFIX_windows := advapi32.lib jvm.lib $(WIN_JAVA_LIB), \
- LDFLAGS_SUFFIX_macosx := -ljvm -framework CoreFoundation -framework Foundation, \
+ LIBS_unix := -ljvm, \
+ LIBS_linux := -ljava, \
+ LIBS_solaris := -ljava -lc, \
+ LIBS_aix := -ljava, \
+ LIBS_macosx := -framework CoreFoundation -framework Foundation, \
+ LIBS_windows := advapi32.lib jvm.lib $(WIN_JAVA_LIB), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=prefs.dll" \
--- a/jdk/make/lib/Lib-java.security.jgss.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-java.security.jgss.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -43,8 +43,8 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2gss/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LIBDL), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := $(LIBDL), \
+ LIBS_solaris := -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libj2gss, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -85,7 +85,7 @@
DISABLED_WARNINGS_clang := deprecated-declarations, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(BUILD_LIBKRB5_LIBS), \
+ LIBS := $(BUILD_LIBKRB5_LIBS), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=$(BUILD_LIBKRB5_NAME).dll" \
--- a/jdk/make/lib/Lib-java.smartcardio.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-java.smartcardio.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -43,9 +43,9 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pcsc/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_unix := $(LIBDL), \
- LDFLAGS_SUFFIX_windows := winscard.lib, \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS_unix := $(LIBDL), \
+ LIBS_solaris := -lc, \
+ LIBS_windows := winscard.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=j2pcsc.dll" \
--- a/jdk/make/lib/Lib-jdk.accessibility.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.accessibility.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -50,11 +50,11 @@
$(addprefix -I,$(JAVA_AB_SRCDIR)) \
-I$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge \
-DACCESSBRIDGE_ARCH_$2, \
- LDFLAGS := $(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \
+ LDFLAGS := $(LDFLAGS_JDKLIB) -subsystem:windows, \
+ LIBS := kernel32.lib user32.lib gdi32.lib \
winspool.lib comdlg32.lib advapi32.lib shell32.lib \
$(SUPPORT_OUTPUTDIR)/native/java.desktop/libjawt/jawt.lib \
- ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
- -subsystem:windows, \
+ ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib, \
VERSIONINFO_RESOURCE := $(ROOT_SRCDIR)/common/AccessBridgeStatusWindow.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=javaaccessbridge$1.dll" \
@@ -80,11 +80,11 @@
$(addprefix -I,$(WIN_AB_SRCDIR)) \
-I$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge \
-DACCESSBRIDGE_ARCH_$2, \
- LDFLAGS := $(LDFLAGS_JDKLIB) kernel32.lib user32.lib gdi32.lib \
+ LDFLAGS := $(LDFLAGS_JDKLIB) -subsystem:windows \
+ -def:$(ROOT_SRCDIR)/libwindowsaccessbridge/WinAccessBridge.DEF, \
+ LIBS := kernel32.lib user32.lib gdi32.lib \
winspool.lib comdlg32.lib advapi32.lib shell32.lib \
- ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib \
- -subsystem:windows \
- -def:$(ROOT_SRCDIR)/libwindowsaccessbridge/WinAccessBridge.DEF, \
+ ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib, \
VERSIONINFO_RESOURCE := $(ROOT_SRCDIR)/common/AccessBridgeStatusWindow.rc, \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=windowsaccessbridge$1.dll" \
--- a/jdk/make/lib/Lib-jdk.attach.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.attach.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -51,10 +51,10 @@
-D "JDK_FTYPE=0x2L", \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_solaris := -ldoor, \
- LDFLAGS_windows := /ORDER:@$(JDK_TOPDIR)/make/mapfiles/libattach/reorder-windows-$(OPENJDK_TARGET_CPU), \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_windows := $(WIN_JAVA_LIB) advapi32.lib psapi.lib, \
+ LDFLAGS_windows := -order:@$(JDK_TOPDIR)/make/mapfiles/libattach/reorder-windows-$(OPENJDK_TARGET_CPU), \
+ LIBS := $(JDKLIB_LIBS), \
+ LIBS_solaris := -ldoor, \
+ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib psapi.lib, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libattach, \
DEBUG_SYMBOLS := true))
--- a/jdk/make/lib/Lib-jdk.crypto.ec.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.crypto.ec.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -59,9 +59,9 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsunec/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LIBCXX), \
- LDFLAGS_SUFFIX_linux := -lc, \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := $(LIBCXX), \
+ LIBS_linux := -lc, \
+ LIBS_solaris := -lc, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunec.dll" \
--- a/jdk/make/lib/Lib-jdk.crypto.mscapi.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.crypto.mscapi.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -40,7 +40,7 @@
-I$(LIBSUNMSCAPI_SRC), \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := Crypt32.Lib advapi32.lib, \
+ LIBS := crypt32.lib advapi32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=sunmscapi.dll" \
--- a/jdk/make/lib/Lib-jdk.crypto.pkcs11.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.crypto.pkcs11.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -43,8 +43,8 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pkcs11/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_unix := $(LIBDL), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS_unix := $(LIBDL), \
+ LIBS_solaris := -lc, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=j2pkcs11.dll" \
--- a/jdk/make/lib/Lib-jdk.crypto.ucrypto.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.crypto.ucrypto.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2015, 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
@@ -41,8 +41,8 @@
DISABLED_WARNINGS_solstudio := E_MACRO_REDEFINED, \
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2ucrypto/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB), \
- LDFLAGS_SUFFIX := $(LIBDL), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS := $(LIBDL), \
+ LIBS_solaris := -lc, \
OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libj2ucrypto, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
--- a/jdk/make/lib/Lib-jdk.deploy.osx.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.deploy.osx.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -42,10 +42,10 @@
DISABLED_WARNINGS_clang := implicit-function-declaration format, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := -framework Cocoa \
+ LIBS := -framework Cocoa \
-framework Carbon \
-framework JavaNativeFoundation \
- $(LDFLAGS_JDKLIB_SUFFIX), \
+ $(JDKLIB_LIBS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libAppleScriptEngine, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -74,14 +74,14 @@
LDFLAGS := $(LDFLAGS_JDKLIB) \
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.desktop \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_macosx := \
+ LIBS := \
-losxapp \
-framework Cocoa \
-framework ApplicationServices \
-framework JavaNativeFoundation \
-framework JavaRuntimeSupport \
-framework SystemConfiguration \
- $(LDFLAGS_JDKLIB_SUFFIX), \
+ $(JDKLIB_LIBS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libosx, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
--- a/jdk/make/lib/Lib-jdk.internal.le.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.internal.le.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -44,7 +44,7 @@
CFLAGS := $(CFLAGS_JDKLIB) $(LIBJAVA_HEADER_FLAGS)\
$(LIBLE_CPPFLAGS), \
LDFLAGS := $(LDFLAGS_JDKLIB), \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX) user32.lib, \
+ LIBS := $(JDKLIB_LIBS) user32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=le.dll" \
--- a/jdk/make/lib/Lib-jdk.jdi.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.jdi.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -48,7 +48,7 @@
$(LIBDT_SHMEM_CPPFLAGS), \
LDFLAGS := $(LDFLAGS_JDKLIB), \
LDFLAGS_windows := -export:jdwpTransport_OnLoad, \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
+ LIBS := $(JDKLIB_LIBS), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=dt_shmem.dll" \
--- a/jdk/make/lib/Lib-jdk.jdwp.agent.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.jdwp.agent.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -46,9 +46,10 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libdt_socket/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := -lpthread, \
- LDFLAGS_SUFFIX_solaris := -lnsl -lsocket -lc, \
- LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX) -export:jdwpTransport_OnLoad ws2_32.lib, \
+ LDFLAGS_windows := -export:jdwpTransport_OnLoad, \
+ LIBS_linux := -lpthread, \
+ LIBS_solaris := -lnsl -lsocket -lc, \
+ LIBS_windows := $(JDKLIB_LIBS) ws2_32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=dt_socket.dll" \
@@ -83,10 +84,10 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjdwp/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := $(LIBDL), \
- LDFLAGS_SUFFIX_solaris := $(LIBDL) -lc, \
- LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_macosx := -liconv, \
+ LIBS_linux := $(LIBDL), \
+ LIBS_solaris := $(LIBDL) -lc, \
+ LIBS_macosx := -liconv, \
+ LIBS_windows := $(JDKLIB_LIBS), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jdwp.dll" \
--- a/jdk/make/lib/Lib-jdk.management.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.management.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -63,10 +63,10 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement_ext/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_solaris := -lkstat, \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \
- LDFLAGS_SUFFIX_aix := -lperfstat,\
+ LIBS := $(JDKLIB_LIBS), \
+ LIBS_solaris := -lkstat, \
+ LIBS_aix := -lperfstat,\
+ LIBS_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=management_ext.dll" \
--- a/jdk/make/lib/Lib-jdk.pack200.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.pack200.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -43,9 +43,9 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_windows := -map:$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpack.map -debug \
- jvm.lib $(WIN_JAVA_LIB), \
- LDFLAGS_SUFFIX_unix := -ljvm $(LIBCXX) -ljava -lc, \
+ LDFLAGS_windows := -map:$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpack.map -debug, \
+ LIBS_unix := -ljvm $(LIBCXX) -ljava -lc, \
+ LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libunpack, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
--- a/jdk/make/lib/Lib-jdk.sctp.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.sctp.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -49,10 +49,9 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsctp/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := -lpthread $(LIBDL) -ljava -ljvm, \
- LDFLAGS_SUFFIX_unix := -lnio -lnet, \
- LDFLAGS_SUFFIX_solaris := -lsocket -ljava -ljvm -lc, \
- LDFLAGS_SUFFIX_macosx := -ljava -ljvm, \
+ LIBS_unix := -lnio -lnet -ljava -ljvm, \
+ LIBS_linux := -lpthread $(LIBDL), \
+ LIBS_solaris := -lsocket -lc, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libsctp, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
--- a/jdk/make/lib/Lib-jdk.security.auth.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/Lib-jdk.security.auth.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2015, 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
@@ -45,11 +45,10 @@
OPTIMIZATION := LOW, \
CFLAGS := $(CFLAGS_JDKLIB) -I$(SUPPORT_OUTPUTDIR)/headers/jdk.security.auth, \
MAPFILE := $(LIBJAAS_MAPFILE), \
- LDFLAGS := $(filter-out -ljava, $(LDFLAGS_JDKLIB)) \
+ LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_windows := netapi32.lib user32.lib mpr.lib advapi32.lib, \
- LDFLAGS_SUFFIX_windows := $(LDFLAGS_JDKLIB_SUFFIX), \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS_solaris := -lc, \
+ LIBS_windows := netapi32.lib user32.lib mpr.lib advapi32.lib $(JDKLIB_LIBS), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=$(LIBJAAS_NAME).dll" \
--- a/jdk/make/lib/NetworkingLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/NetworkingLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -39,13 +39,13 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnet/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_macosx := -ljvm -ljava, \
- LDFLAGS_SUFFIX_solaris := -ljvm -ljava -lnsl -lsocket $(LIBDL) -lc, \
- LDFLAGS_SUFFIX_linux := $(LIBDL) -ljvm -lpthread -ljava, \
- LDFLAGS_SUFFIX_aix := $(LIBDL) -ljvm -ljava,\
- LDFLAGS_SUFFIX_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
- delayimp.lib $(WIN_JAVA_LIB) advapi32.lib \
- -DELAYLOAD:secur32.dll -DELAYLOAD:iphlpapi.dll, \
+ LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \
+ LIBS_unix := -ljvm -ljava, \
+ LIBS_linux := $(LIBDL) -lpthread, \
+ LIBS_solaris := -lnsl -lsocket $(LIBDL) -lc, \
+ LIBS_aix := $(LIBDL),\
+ LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib \
+ delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=net.dll" \
--- a/jdk/make/lib/NioLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/NioLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -70,18 +70,18 @@
CFLAGS := $(CFLAGS_JDKLIB) \
$(BUILD_LIBNIO_CFLAGS), \
MAPFILE := $(BUILD_LIBNIO_MAPFILE), \
- LDFLAGS := $(LDFLAGS_JDKLIB) $(BUILD_LIBNIO_LDFLAGS) \
+ LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_linux := -ljava -lnet -lpthread $(LIBDL), \
- LDFLAGS_SUFFIX_aix := -ljava -lnet $(LIBDL),\
- LDFLAGS_SUFFIX_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \
- -lsendfile -ljava -lnet -lc, \
- LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
+ LIBS_unix := -ljava -lnet, \
+ LIBS_linux := -lpthread $(LIBDL), \
+ LIBS_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \
+ -lsendfile -lc, \
+ LIBS_aix := $(LIBDL), \
+ LIBS_macosx := \
+ -framework CoreFoundation -framework CoreServices, \
+ LIBS_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
advapi32.lib, \
- LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread \
- -framework CoreFoundation -framework CoreServices, \
- LDFLAGS_SUFFIX :=, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=nio.dll" \
--- a/jdk/make/lib/PlatformLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/PlatformLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -40,7 +40,7 @@
DISABLED_WARNINGS_clang := objc-method-access objc-root-class, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_macosx := \
+ LIBS := \
-framework Accelerate \
-framework ApplicationServices \
-framework AudioToolbox \
--- a/jdk/make/lib/SecurityLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/SecurityLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -44,13 +44,13 @@
DISABLED_WARNINGS_clang := deprecated-declarations, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
-L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base \
- $(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX_macosx := \
- -fobjc-link-runtime \
+ $(call SET_SHARED_LIBRARY_ORIGIN) \
+ -fobjc-link-runtime, \
+ LIBS := \
-framework JavaNativeFoundation \
-framework CoreServices \
-framework Security \
- $(LDFLAGS_JDKLIB_SUFFIX), \
+ $(JDKLIB_LIBS), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libosxsecurity, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
--- a/jdk/make/lib/SoundLibraries.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/make/lib/SoundLibraries.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -126,12 +126,12 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsound/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_macosx := -framework CoreAudio -framework CoreFoundation \
+ LIBS_unix := -ljava -ljvm, \
+ LIBS_solaris := -lc, \
+ LIBS_macosx := -framework CoreAudio -framework CoreFoundation \
-framework CoreServices -framework AudioUnit $(LIBCXX) \
-framework CoreMIDI -framework AudioToolbox, \
- LDFLAGS_windows := $(WIN_JAVA_LIB) advapi32.lib winmm.lib, \
- LDFLAGS_SUFFIX_unix := -ljava -ljvm, \
- LDFLAGS_SUFFIX_solaris := -lc, \
+ LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib winmm.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jsound.dll" \
@@ -171,7 +171,7 @@
MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(ALSA_LIBS) -ljava -ljvm, \
+ LIBS := $(ALSA_LIBS) -ljava -ljvm, \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjsoundalsa, \
DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))
@@ -197,7 +197,7 @@
-DUSE_DAUDIO=TRUE, \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
- LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX) dsound.lib winmm.lib user32.lib ole32.lib, \
+ LIBS := $(JDKLIB_LIBS) dsound.lib winmm.lib user32.lib ole32.lib, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=jsoundds.dll" \
--- a/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/io/ObjectInputStream.java Thu Nov 05 13:43:17 2015 -0800
@@ -3383,10 +3383,11 @@
* Registers a dependency (in exception status) of one handle on
* another. The dependent handle must be "open" (i.e., assigned, but
* not finished yet). No action is taken if either dependent or target
- * handle is NULL_HANDLE.
+ * handle is NULL_HANDLE. Additionally, no action is taken if the
+ * dependent and target are the same.
*/
void markDependency(int dependent, int target) {
- if (dependent == NULL_HANDLE || target == NULL_HANDLE) {
+ if (dependent == target || dependent == NULL_HANDLE || target == NULL_HANDLE) {
return;
}
switch (status[dependent]) {
--- a/jdk/src/java.base/share/classes/java/util/zip/ZipUtils.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/src/java.base/share/classes/java/util/zip/ZipUtils.java Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,9 @@
package java.util.zip;
import java.nio.file.attribute.FileTime;
-import java.util.Date;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.util.concurrent.TimeUnit;
class ZipUtils {
@@ -66,15 +68,16 @@
/**
* Converts DOS time to Java time (number of milliseconds since epoch).
*/
- private static long dosToJavaTime(long dtime) {
- @SuppressWarnings("deprecation") // Use of date constructor.
- Date d = new Date((int)(((dtime >> 25) & 0x7f) + 80),
- (int)(((dtime >> 21) & 0x0f) - 1),
- (int)((dtime >> 16) & 0x1f),
- (int)((dtime >> 11) & 0x1f),
- (int)((dtime >> 5) & 0x3f),
- (int)((dtime << 1) & 0x3e));
- return d.getTime();
+ public static long dosToJavaTime(long dtime) {
+ LocalDateTime ldt = LocalDateTime.of(
+ (int) (((dtime >> 25) & 0x7f) + 1980),
+ (int) ((dtime >> 21) & 0x0f),
+ (int) ((dtime >> 16) & 0x1f),
+ (int) ((dtime >> 11) & 0x1f),
+ (int) ((dtime >> 5) & 0x3f),
+ (int) ((dtime << 1) & 0x3e));
+ return TimeUnit.MILLISECONDS.convert(ldt.toEpochSecond(
+ ZoneId.systemDefault().getRules().getOffset(ldt)), TimeUnit.SECONDS);
}
/**
@@ -92,16 +95,20 @@
/**
* Converts Java time to DOS time.
*/
- @SuppressWarnings("deprecation") // Use of date methods
private static long javaToDosTime(long time) {
- Date d = new Date(time);
- int year = d.getYear() + 1900;
- if (year < 1980) {
- return ZipEntry.DOSTIME_BEFORE_1980;
+ Instant instant = Instant.ofEpochMilli(time);
+ LocalDateTime ldt = LocalDateTime.ofInstant(
+ instant, ZoneId.systemDefault());
+ int year = ldt.getYear() - 1980;
+ if (year < 0) {
+ return (1 << 21) | (1 << 16);
}
- return ((year - 1980) << 25 | (d.getMonth() + 1) << 21 |
- d.getDate() << 16 | d.getHours() << 11 | d.getMinutes() << 5 |
- d.getSeconds() >> 1) & 0xffffffffL;
+ return (year << 25 |
+ ldt.getMonthValue() << 21 |
+ ldt.getDayOfMonth() << 16 |
+ ldt.getHour() << 11 |
+ ldt.getMinute() << 5 |
+ ldt.getSecond() >> 1) & 0xffffffffL;
}
/**
--- a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipUtils.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipUtils.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,8 +27,10 @@
import java.io.IOException;
import java.io.OutputStream;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.util.Arrays;
-import java.util.Date;
import java.util.regex.PatternSyntaxException;
import java.util.concurrent.TimeUnit;
@@ -103,30 +105,35 @@
/*
* Converts DOS time to Java time (number of milliseconds since epoch).
*/
- @SuppressWarnings("deprecation")
public static long dosToJavaTime(long dtime) {
- Date d = new Date((int)(((dtime >> 25) & 0x7f) + 80),
- (int)(((dtime >> 21) & 0x0f) - 1),
- (int)((dtime >> 16) & 0x1f),
- (int)((dtime >> 11) & 0x1f),
- (int)((dtime >> 5) & 0x3f),
- (int)((dtime << 1) & 0x3e));
- return d.getTime();
+ LocalDateTime ldt = LocalDateTime.of(
+ (int) (((dtime >> 25) & 0x7f) + 1980),
+ (int) ((dtime >> 21) & 0x0f),
+ (int) ((dtime >> 16) & 0x1f),
+ (int) ((dtime >> 11) & 0x1f),
+ (int) ((dtime >> 5) & 0x3f),
+ (int) ((dtime << 1) & 0x3e));
+ return TimeUnit.MILLISECONDS.convert(ldt.toEpochSecond(
+ ZoneId.systemDefault().getRules().getOffset(ldt)), TimeUnit.SECONDS);
}
/*
* Converts Java time to DOS time.
*/
- @SuppressWarnings("deprecation")
public static long javaToDosTime(long time) {
- Date d = new Date(time);
- int year = d.getYear() + 1900;
- if (year < 1980) {
+ Instant instant = Instant.ofEpochMilli(time);
+ LocalDateTime ldt = LocalDateTime.ofInstant(
+ instant, ZoneId.systemDefault());
+ int year = ldt.getYear() - 1980;
+ if (year < 0) {
return (1 << 21) | (1 << 16);
}
- return (year - 1980) << 25 | (d.getMonth() + 1) << 21 |
- d.getDate() << 16 | d.getHours() << 11 | d.getMinutes() << 5 |
- d.getSeconds() >> 1;
+ return (year << 25 |
+ ldt.getMonthValue() << 21 |
+ ldt.getDayOfMonth() << 16 |
+ ldt.getHour() << 11 |
+ ldt.getMinute() << 5 |
+ ldt.getSecond() >> 1) & 0xffffffffL;
}
--- a/jdk/test/ProblemList.txt Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/ProblemList.txt Thu Nov 05 13:43:17 2015 -0800
@@ -300,9 +300,6 @@
# 8074580
sun/security/pkcs11/rsa/TestKeyPairGenerator.java generic-all
-# 8139860
-com/oracle/security/ucrypto/TestRSA.java solaris-all
-
############################################################################
# jdk_sound
--- a/jdk/test/com/oracle/security/ucrypto/TestRSA.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/com/oracle/security/ucrypto/TestRSA.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, 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
@@ -171,17 +171,24 @@
return kpg.generateKeyPair();
}
- private static KeyPair genPredefinedRSAKeyPair() throws Exception {
- KeyFactory kf = KeyFactory.getInstance("RSA");
- BigInteger mod = new BigInteger(MOD);
- BigInteger pub = new BigInteger(PUB_EXP);
+ private static KeyPair genPredefinedRSAKeyPair(String prov) throws Exception {
+ KeyFactory kf;
+ if (prov == null) {
+ kf = KeyFactory.getInstance("RSA");
+ System.out.println("Using default KeyFactory: "+kf.getProvider().getName());
+ } else {
+ kf = KeyFactory.getInstance("RSA", prov);
+ System.out.println("Using specified KeyFactory: "+kf.getProvider().getName());
+ }
+ BigInteger mod = new BigInteger(1, MOD);
+ BigInteger pub = new BigInteger(1, PUB_EXP);
PrivateKey privKey = kf.generatePrivate
(new RSAPrivateCrtKeySpec
- (mod, pub, new BigInteger(PRIV_EXP),
- new BigInteger(PRIME_P), new BigInteger(PRIME_Q),
- new BigInteger(EXP_P), new BigInteger(EXP_Q),
- new BigInteger(CRT_COEFF)));
+ (mod, pub, new BigInteger(1, PRIV_EXP),
+ new BigInteger(1, PRIME_P), new BigInteger(1, PRIME_Q),
+ new BigInteger(1, EXP_P), new BigInteger(1, EXP_Q),
+ new BigInteger(1, CRT_COEFF)));
PublicKey pubKey = kf.generatePublic(new RSAPublicKeySpec(mod, pub));
return new KeyPair(pubKey, privKey);
}
@@ -210,11 +217,20 @@
public void doTest(Provider prov) throws Exception {
// first test w/ predefine KeyPair
- KeyPair pkp = genPredefinedRSAKeyPair();
System.out.println("Test against Predefined RSA Key Pair");
+ KeyPair pkp = genPredefinedRSAKeyPair("SunPKCS11-Solaris");
testCipher(pkp, 128, true, prov);
testSignature(pkp, true, prov);
+ pkp = genPredefinedRSAKeyPair("SunRsaSign");
+ testCipher(pkp, 128, true, prov);
+ testSignature(pkp, true, prov);
+
+ pkp = genPredefinedRSAKeyPair(null);
+ testCipher(pkp, 128, true, prov);
+ testSignature(pkp, true, prov);
+
+ System.out.println("Running key length test loop");
for (int i = 0; i < 10; i++) {
// then test w/ various key lengths
int keyLens[] = { 1024, 2048 };
--- a/jdk/test/java/lang/ProcessHandle/TEST.properties Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/ProcessHandle/TEST.properties Thu Nov 05 13:43:17 2015 -0800
@@ -1,4 +1,4 @@
# ProcessHandle tests use TestNG
TestNG.dirs = .
lib.dirs = /lib/testlibrary
-
+modules = jdk.management
--- a/jdk/test/java/lang/annotation/AnnotationType/AnnotationTypeDeadlockTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/annotation/AnnotationType/AnnotationTypeDeadlockTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -25,6 +25,7 @@
* @test
* @bug 7122142
* @summary Test deadlock situation when recursive annotations are parsed
+ * @modules java.management
*/
import java.lang.annotation.Retention;
--- a/jdk/test/java/lang/instrument/AddTransformerTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/AddTransformerTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary confirms that added transformers all really run
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build AddTransformerTest ATransformerManagementTestCase
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar AddTransformerTest AddTransformerTest
--- a/jdk/test/java/lang/instrument/AppendToBootstrapClassPathTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/AppendToBootstrapClassPathTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple test for the Boot-Class-Path manifest attribute
* @author Gabriel Adauto, Wily Technology, Robert Field, Sun Microsystems
*
- * @modules java.instrument
* @run build AppendToBootstrapClassPathTest ExampleForBootClassPath
* @run shell AppendToBootstrapClassPathSetUp.sh
* @run shell MakeJAR.sh bootclasspathAgent
--- a/jdk/test/java/lang/instrument/AppendToClassPathTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/AppendToClassPathTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple test for the Class-Path manifest attribute
* @author Gabriel Adauto, Wily Technology; Robert Field, Sun Microsystems
*
- * @modules java.instrument
* @run build AppendToClassPathTest
* @run shell AppendToClassPathSetUp.sh
* @run shell MakeJAR.sh classpathAgent
--- a/jdk/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
# attribute.
#
# @key intermittent
-# @modules java.instrument
# @run shell/timeout=240 BootClassPathTest.sh
if [ "${TESTJAVA}" = "" ]
--- a/jdk/test/java/lang/instrument/FromShutdownHook.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/FromShutdownHook.java Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
* @bug 5050487
* @summary Check that Instrumentation methods can execute from a runtime
* shutdown hook
- * @modules java.instrument
* @run build FromShutdownHook
* @run shell MakeJAR.sh basicAgent
* @run main/othervm -javaagent:basicAgent.jar FromShutdownHook FromShutdownHook
--- a/jdk/test/java/lang/instrument/GetAllLoadedClassesTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/GetAllLoadedClassesTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple tests for getAllLoadedClasses (is Object there? does a newly loaded class show up?)
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build GetAllLoadedClassesTest DummyClass
* @run shell MakeJAR.sh basicAgent
* @run main/othervm -javaagent:basicAgent.jar GetAllLoadedClassesTest GetAllLoadedClassesTest
--- a/jdk/test/java/lang/instrument/GetInitiatedClassesTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/GetInitiatedClassesTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple tests for getInitiatedClasses (does a newly loaded class show up?)
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build GetInitiatedClassesTest DummyClass
* @run shell MakeJAR.sh basicAgent
* @run main/othervm -javaagent:basicAgent.jar GetInitiatedClassesTest GetInitiatedClassesTest
--- a/jdk/test/java/lang/instrument/GetObjectSizeTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/GetObjectSizeTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary round-trip test for getObjectSize (does it return, and is the result non-zero?)
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build GetObjectSizeTest
* @run shell MakeJAR.sh basicAgent
* @run main/othervm -javaagent:basicAgent.jar GetObjectSizeTest GetObjectSizeTest
--- a/jdk/test/java/lang/instrument/IsModifiableClassAgent.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/IsModifiableClassAgent.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test isModifiableClass
* @author Robert Field, Sun Microsystems
*
- * @modules java.instrument
* @run build IsModifiableClassApp IsModifiableClassAgent
* @run shell MakeJAR3.sh IsModifiableClassAgent 'Can-Retransform-Classes: true'
* @run main/othervm -javaagent:IsModifiableClassAgent.jar IsModifiableClassApp
--- a/jdk/test/java/lang/instrument/ManifestTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/ManifestTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
# @author Daniel D. Daugherty
#
# @key intermittent
-# @modules java.instrument
# @run build ManifestTestApp ExampleForBootClassPath
# @run shell/timeout=900 ManifestTest.sh
#
--- a/jdk/test/java/lang/instrument/NativeMethodPrefixAgent.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NativeMethodPrefixAgent.java Thu Nov 05 13:43:17 2015 -0800
@@ -28,6 +28,8 @@
* @author Robert Field, Sun Microsystems
*
* @modules java.base/jdk.internal.org.objectweb.asm
+ * java.management
+ * java.instrument
* @run shell/timeout=240 MakeJAR2.sh NativeMethodPrefixAgent NativeMethodPrefixApp 'Can-Retransform-Classes: true' 'Can-Set-Native-Method-Prefix: true'
* @run main/othervm -javaagent:NativeMethodPrefixAgent.jar NativeMethodPrefixApp
*/
--- a/jdk/test/java/lang/instrument/NoTransformerAddedTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NoTransformerAddedTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary make sure no transformers run when none are registered
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build NoTransformerAddedTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar NoTransformerAddedTest NoTransformerAddedTest
--- a/jdk/test/java/lang/instrument/NullGetObjectSizeTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NullGetObjectSizeTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary make sure getObjectSize(null) throws NullPointerException.
* @author Robert Field as modified from the code of Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build NullGetObjectSizeTest
* @run shell MakeJAR.sh basicAgent
* @run main/othervm -javaagent:basicAgent.jar NullGetObjectSizeTest NullGetObjectSizeTest
--- a/jdk/test/java/lang/instrument/NullRedefineClassesTests.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NullRedefineClassesTests.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary make sure redefineClasses throws NullPointerException in the right places.
* @author Robert Field as modified from the code of Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build NullRedefineClassesTests
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar NullRedefineClassesTests NullRedefineClassesTests
--- a/jdk/test/java/lang/instrument/NullTransformerAddTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NullTransformerAddTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary make sure addTransformer(null) throws what it should
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build NullTransformerAddTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar NullTransformerAddTest NullTransformerAddTest
--- a/jdk/test/java/lang/instrument/NullTransformerRemoveTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/NullTransformerRemoveTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary make sure removeTransformer(null) throws NullPointerException
* @author Robert Field as modified from the code of Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build NullTransformerRemoveTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar NullTransformerRemoveTest NullTransformerRemoveTest
--- a/jdk/test/java/lang/instrument/ParallelTransformerLoader.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/ParallelTransformerLoader.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Test parallel class loading by parallel transformers.
# @author Daniel D. Daugherty as modified from the code of Daryl Puryear @ Wily
#
-# @modules java.instrument
# @run shell MakeJAR3.sh ParallelTransformerLoaderAgent
# @run build ParallelTransformerLoaderApp
# @run shell/timeout=240 ParallelTransformerLoader.sh
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent0010.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent0010.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (0,0,1,0): declared 2-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent0010
* @run main/othervm -javaagent:InheritAgent0010.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent0011.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent0011.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (0,0,1,1): declared 2-arg and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent0011
* @run main/othervm -javaagent:InheritAgent0011.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent0110.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent0110.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (0,1,1,0): inherited 1-arg and declared 2-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent0110
* @run main/othervm -javaagent:InheritAgent0110.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent0111.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent0111.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (0,1,1,1): inherited 1-arg, declared 2-arg and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent0111
* @run main/othervm -javaagent:InheritAgent0111.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1000.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1000.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,0,0,0): inherited 2-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1000
* @run main/othervm -javaagent:InheritAgent1000.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1001.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1001.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,0,0,1): inherited 2-arg, and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1001
* @run main/othervm -javaagent:InheritAgent1001.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1010.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1010.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,0,1,0): inherited 2-arg, and declared 2-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1010
* @run main/othervm -javaagent:InheritAgent1010.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1011.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1011.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,0,1,1): inherited 2-arg, declared 2-arg and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1011
* @run main/othervm -javaagent:InheritAgent1011.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1100.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1100.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,1,0,0): inherited 2-arg and inherited 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1100
* @run main/othervm -javaagent:InheritAgent1100.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1101.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1101.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,1,0,1): inherited 2-arg, inherited 1-arg, and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1101
* @run main/othervm -javaagent:InheritAgent1101.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1110.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1110.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,1,1,0): inherited 2-arg, inherited 1-arg, and declared 2-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1110
* @run main/othervm -javaagent:InheritAgent1110.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/PremainClass/InheritAgent1111.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/PremainClass/InheritAgent1111.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test config (1,1,1,1): inherited 2-arg, inherited 1-arg, declared 2-arg and declared 1-arg in agent class
* @author Daniel D. Daugherty, Sun Microsystems
*
- * @modules java.instrument
* @run shell ../MakeJAR3.sh InheritAgent1111
* @run main/othervm -javaagent:InheritAgent1111.jar DummyMain
*/
--- a/jdk/test/java/lang/instrument/RedefineBigClass.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineBigClass.sh Thu Nov 05 13:43:17 2015 -0800
@@ -28,6 +28,7 @@
#
# @key intermittent
# @modules java.instrument
+# java.management
# @run shell MakeJAR3.sh RedefineBigClassAgent 'Can-Redefine-Classes: true'
# @run build BigClass RedefineBigClassApp NMTHelper
# @run shell/timeout=600 RedefineBigClass.sh
--- a/jdk/test/java/lang/instrument/RedefineClassWithNativeMethod.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineClassWithNativeMethod.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Redefine a class with a native method.
# @author Daniel D. Daugherty as modified from the test submitted by clovis@par.univie.ac.at
#
-# @modules java.instrument
# @run shell MakeJAR3.sh RedefineClassWithNativeMethodAgent 'Can-Redefine-Classes: true'
# @run build RedefineClassWithNativeMethodApp
# @run shell RedefineClassWithNativeMethod.sh
--- a/jdk/test/java/lang/instrument/RedefineClassesDisabledTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineClassesDisabledTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test that redefineClasses and isRedefineClassesSupported behave correctly when redefine is not enabled
* @author Robert Field, Sun Microsystems -- as modified from the work of Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build RedefineClassesDisabledTest
* @run shell RedefineSetUp.sh
* @run shell MakeJAR.sh basicAgent
--- a/jdk/test/java/lang/instrument/RedefineClassesTests.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineClassesTests.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary insure redefine is supported. exercise a class, then redefine it and do it again
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build RedefineClassesTests
* @run shell RedefineSetUp.sh
* @run shell MakeJAR.sh redefineAgent
--- a/jdk/test/java/lang/instrument/RedefineMethodAddInvoke.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodAddInvoke.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Reflexive invocation of newly added methods broken.
# @author Daniel D. Daugherty
#
-# @modules java.instrument
# @run shell MakeJAR3.sh RedefineMethodAddInvokeAgent 'Can-Redefine-Classes: true'
# @run build RedefineMethodAddInvokeApp
# @run shell RedefineMethodAddInvoke.sh
--- a/jdk/test/java/lang/instrument/RedefineMethodDelInvoke.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodDelInvoke.sh Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
# @author Daniel D. Daugherty
# @author Serguei Spitsyn
#
-# @modules java.instrument
# @run shell MakeJAR3.sh RedefineMethodDelInvokeAgent 'Can-Redefine-Classes: true'
# @run build RedefineMethodDelInvokeApp
# @run shell RedefineMethodDelInvoke.sh
--- a/jdk/test/java/lang/instrument/RedefineMethodInBacktrace.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodInBacktrace.sh Thu Nov 05 13:43:17 2015 -0800
@@ -27,6 +27,7 @@
# @author Stefan Karlsson
#
# @modules java.instrument
+# java.management
# @run shell MakeJAR3.sh RedefineMethodInBacktraceAgent 'Can-Redefine-Classes: true'
# @run build RedefineMethodInBacktraceTarget RedefineMethodInBacktraceApp
# @run shell RedefineMethodInBacktrace.sh
--- a/jdk/test/java/lang/instrument/RedefineMethodWithAnnotations.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineMethodWithAnnotations.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Method annotations are incorrectly set when redefining classes.
# @author Stefan Karlsson
#
-# @modules java.instrument
# @run shell MakeJAR3.sh RedefineMethodWithAnnotationsAgent 'Can-Redefine-Classes: true'
# @run build RedefineMethodWithAnnotationsTarget RedefineMethodWithAnnotationsApp RedefineMethodWithAnnotationsAnnotations
# @run shell RedefineMethodWithAnnotations.sh
--- a/jdk/test/java/lang/instrument/RedefineSubclassWithTwoInterfaces.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RedefineSubclassWithTwoInterfaces.sh Thu Nov 05 13:43:17 2015 -0800
@@ -28,7 +28,6 @@
# verify that the right methods are called.
# @author Daniel D. Daugherty
#
-# @modules java.instrument
# @run shell MakeJAR3.sh RedefineSubclassWithTwoInterfacesAgent 'Can-Redefine-Classes: true'
# @run build RedefineSubclassWithTwoInterfacesApp
# @run shell RedefineSubclassWithTwoInterfaces.sh
--- a/jdk/test/java/lang/instrument/RemoveAbsentTransformerTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RemoveAbsentTransformerTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary remove an transformer that was never added
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build RemoveAbsentTransformerTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar RemoveAbsentTransformerTest RemoveAbsentTransformerTest
--- a/jdk/test/java/lang/instrument/RemoveTransformerTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RemoveTransformerTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple remove of a transformer that was added
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build RemoveTransformerTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar RemoveTransformerTest RemoveTransformerTest
--- a/jdk/test/java/lang/instrument/RetransformBigClass.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/RetransformBigClass.sh Thu Nov 05 13:43:17 2015 -0800
@@ -28,6 +28,7 @@
#
# @key intermittent
# @modules java.instrument
+# java.management
# @run shell MakeJAR4.sh RetransformBigClassAgent SimpleIdentityTransformer 'Can-Retransform-Classes: true'
# @run build BigClass RetransformBigClassApp NMTHelper
# @run shell/timeout=600 RetransformBigClass.sh
--- a/jdk/test/java/lang/instrument/SingleTransformerTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/SingleTransformerTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary simple test with one transformer (makes sure it gets called)
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build SingleTransformerTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar SingleTransformerTest SingleTransformerTest
--- a/jdk/test/java/lang/instrument/StressGetObjectSizeTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/StressGetObjectSizeTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary stress getObjectSize() API
# @author Daniel D. Daugherty as modified from the code of fischman@google.com
#
-# @modules java.instrument
# @run build StressGetObjectSizeApp
# @run shell MakeJAR.sh basicAgent
# @run shell StressGetObjectSizeTest.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/instrument/TEST.properties Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,1 @@
+modules = java.instrument
--- a/jdk/test/java/lang/instrument/TransformMethodTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/TransformMethodTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary test transformer add/remove pairs in sequence
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build TransformMethodTest
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar TransformMethodTest TransformMethodTest
--- a/jdk/test/java/lang/instrument/TransformerManagementThreadAddTests.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/TransformerManagementThreadAddTests.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary multi-thread test to exercise sync and contention for adds to transformer registry
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build TransformerManagementThreadAddTests
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar TransformerManagementThreadAddTests TransformerManagementThreadAddTests
--- a/jdk/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,7 +27,6 @@
* @summary multi-thread test to exercise sync and contention for removes to transformer registry
* @author Gabriel Adauto, Wily Technology
*
- * @modules java.instrument
* @run build TransformerManagementThreadRemoveTests
* @run shell MakeJAR.sh redefineAgent
* @run main/othervm -javaagent:redefineAgent.jar TransformerManagementThreadRemoveTests TransformerManagementThreadRemoveTests
--- a/jdk/test/java/lang/instrument/VerifyLocalVariableTableOnRetransformTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/VerifyLocalVariableTableOnRetransformTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -29,7 +29,6 @@
# transform() on a retransform operation.
# @author Daniel D. Daugherty
#
-# @modules java.instrument
# @run build VerifyLocalVariableTableOnRetransformTest
# @run compile -g DummyClassWithLVT.java
# @run shell MakeJAR.sh retransformAgent
--- a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Unit tests for appendToBootstrapClassLoaderSearch and
# appendToSystemClasLoaderSearch methods.
#
-# @modules java.instrument
# @run shell/timeout=240 CircularityErrorTest.sh
if [ "${TESTSRC}" = "" ]
--- a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -26,7 +26,6 @@
# @summary Unit tests for appendToBootstrapClassLoaderSearch and
# appendToSystemClasLoaderSearch methods.
#
-# @modules java.instrument
# @build ClassUnloadTest
# @run shell ClassUnloadTest.sh
--- a/jdk/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh Thu Nov 05 13:43:17 2015 -0800
@@ -29,7 +29,6 @@
# @summary Unit tests for appendToBootstrapClassLoaderSearch and
# appendToSystemClasLoaderSearch methods.
#
-# @modules java.instrument
# @build Agent AgentSupport BootSupport BasicTest PrematureLoadTest DynamicTest
# @run shell/timeout=240 run_tests.sh
--- a/jdk/test/java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -28,6 +28,7 @@
* @summary Test verifies that lambda forms are cached when run with multiple threads
* @author kshefov
* @library /lib/testlibrary/jsr292 /lib/testlibrary
+ * @modules java.management
* @build TestMethods
* @build LambdaFormTestCase
* @build LFCachingTestCase
--- a/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -26,6 +26,7 @@
* @bug 8003881
* @summary tests DoPrivileged action (implemented as lambda expressions) by
* inserting them into the BootClassPath.
+ * @modules jdk.compiler
* @compile -XDignore.symbol.file LambdaAccessControlDoPrivilegedTest.java LUtils.java
* @run main/othervm LambdaAccessControlDoPrivilegedTest
*/
--- a/jdk/test/java/lang/invoke/lambda/LambdaAccessControlTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/invoke/lambda/LambdaAccessControlTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2015, 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
@@ -25,6 +25,7 @@
* @test
* @bug 8003881
* @summary tests Lambda expression with a a security manager at top level
+ * @modules jdk.compiler
* @compile -XDignore.symbol.file LambdaAccessControlTest.java LUtils.java
*
* @run main/othervm LambdaAccessControlTest
--- a/jdk/test/java/lang/invoke/lambda/LambdaAsm.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/invoke/lambda/LambdaAsm.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
--- a/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java Thu Nov 05 13:43:17 2015 -0800
@@ -26,6 +26,7 @@
* @bug 8025636
* @summary Synthetic frames should be hidden in exceptions
* @modules java.base/jdk.internal.org.objectweb.asm
+ * jdk.compiler
* @compile -XDignore.symbol.file LUtils.java LambdaStackTrace.java
* @run main LambdaStackTrace
*/
--- a/jdk/test/java/util/Currency/PropertiesTest.sh Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/java/util/Currency/PropertiesTest.sh Thu Nov 05 13:43:17 2015 -0800
@@ -101,11 +101,7 @@
# without disturbing other users, including concurrently executing tests.
WRITABLEJDK=.${FS}testjava
cp -H -R $TESTJAVA $WRITABLEJDK || exit 1
-if [ -d ${TESTJAVA}${FS}jre ]; then
- PROPLOCATION=${WRITABLEJDK}${FS}jre${FS}lib
-else
- PROPLOCATION=${WRITABLEJDK}${FS}lib
-fi
+PROPLOCATION=${WRITABLEJDK}${FS}lib
chmod -R +w $WRITABLEJDK || exit 1
cp ${PROPS} $PROPLOCATION || exit 1
echo "Properties location: ${PROPLOCATION}"
--- a/jdk/test/jdk/lambda/TEST.properties Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/jdk/lambda/TEST.properties Thu Nov 05 13:43:17 2015 -0800
@@ -3,3 +3,4 @@
TestNG.dirs = .
javatest.maxOutputSize = 250000
+modules = jdk.compiler
--- a/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2015, 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
@@ -26,6 +26,8 @@
* @bug 6887710
* @summary Verify the impact of sun.misc.JarIndex.metaInfFilenames on ServiceLoader
* @modules jdk.jartool/sun.tools.jar
+ * jdk.httpserver
+ * jdk.compiler
* @run main/othervm Basic
*/
--- a/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -26,7 +26,7 @@
* @bug 7194897
* @summary JSR 292: Cannot create more than 16 instances of an anonymous class
* @modules java.base/sun.misc
- * @modules java.management
+ * java.management
* @library /lib/testlibrary
* @author Robert Field
* @compile -XDignore.symbol.file ManyNewInstanceAnonTest.java
--- a/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTestsRun.java Fri Oct 30 10:34:46 2015 +0100
+++ b/jdk/test/vm/verifier/defaultMethods/DefaultMethodRegressionTestsRun.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2015, 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
@@ -25,6 +25,7 @@
* @test
* @bug 8003639
* @summary defaultMethod resolution and verification using an URLClassLoader
+ * @modules jdk.compiler
* @compile -XDignore.symbol.file=true DefaultMethodRegressionTestsRun.java
* @run main DefaultMethodRegressionTestsRun
*/
--- a/langtools/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -332,3 +332,4 @@
45f796d8cdcd8dbde5d4d660c3e749a14c923e6d jdk9-b87
ac57d80b205db48d726084ade228e0199735831b jdk9-b88
16873e56156e9917ad97ba5da0d0abe44fc94003 jdk9-b89
+00a25f93cee8a82096a0736716da392cafdb0cb0 jdk9-b90
--- a/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTrees.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/source/util/DocTrees.java Thu Nov 05 13:43:17 2015 -0800
@@ -25,11 +25,14 @@
package com.sun.source.util;
+import java.io.IOException;
+import java.text.BreakIterator;
import java.util.List;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.Element;
import javax.tools.Diagnostic;
+import javax.tools.FileObject;
import javax.tools.JavaCompiler.CompilationTask;
import com.sun.source.doctree.DocCommentTree;
@@ -65,6 +68,16 @@
}
/**
+ * Returns the break iterator used to compute the first sentence of
+ * documentation comments.
+ * Returns {@code null} if none has been specified.
+ * @return the break iterator
+ *
+ * @since 1.9
+ */
+ public abstract BreakIterator getBreakIterator();
+
+ /**
* Returns the doc comment tree, if any, for the Tree node identified by a given TreePath.
* Returns {@code null} if no doc comment was found.
* @param path the path for the tree node
@@ -73,6 +86,47 @@
public abstract DocCommentTree getDocCommentTree(TreePath path);
/**
+ * Returns the doc comment tree of the given element.
+ * Returns {@code null} if no doc comment was found.
+ * @param e an element whose documentation is required
+ * @return the doc comment tree
+ *
+ * @since 1.9
+ */
+ public abstract DocCommentTree getDocCommentTree(Element e);
+
+ /**
+ * Returns the doc comment tree of the given file. The file must be
+ * an HTML file, in which case the doc comment tree represents the
+ * contents of the <body> tag, and any enclosing tags are ignored.
+ * Returns {@code null} if no doc comment was found.
+ * Future releases may support additional file types.
+ *
+ * @param fileObject the content container
+ * @return the doc comment tree
+ *
+ * @since 1.9
+ */
+ public abstract DocCommentTree getDocCommentTree(FileObject fileObject);
+
+ /**
+ * Returns the doc comment tree of the given file whose path is
+ * specified relative to the given element. The file must be an HTML
+ * file, in which case the doc comment tree represents the contents
+ * of the <body> tag, and any enclosing tags are ignored.
+ * Returns {@code null} if no doc comment was found.
+ * Future releases may support additional file types.
+ *
+ * @param e an element whose path is used as a reference
+ * @param relativePath the relative path from the Element
+ * @return the doc comment tree
+ * @throws java.io.IOException if an exception occurs
+ *
+ * @since 1.9
+ */
+ public abstract DocCommentTree getDocCommentTree(Element e, String relativePath) throws IOException;
+
+ /**
* Returns the language model element referred to by the leaf node of the given
* {@link DocTreePath}, or {@code null} if unknown.
* @param path the path for the tree node
@@ -112,4 +166,14 @@
com.sun.source.doctree.DocTree t,
com.sun.source.doctree.DocCommentTree c,
com.sun.source.tree.CompilationUnitTree root);
+
+ /**
+ * Sets the break iterator to compute the first sentence of
+ * documentation comments.
+ * @param breakiterator a break iterator or {@code null} to specify the default
+ * sentence breaker
+ *
+ * @since 1.9
+ */
+ public abstract void setBreakIterator(BreakIterator breakiterator);
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Thu Nov 05 13:43:17 2015 -0800
@@ -25,8 +25,13 @@
package com.sun.tools.javac.api;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.text.BreakIterator;
import java.util.HashSet;
import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
@@ -34,13 +39,22 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.NestingKind;
+import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.tools.Diagnostic;
+import javax.tools.FileObject;
+import javax.tools.ForwardingFileObject;
+import javax.tools.ForwardingJavaFileObject;
import javax.tools.JavaCompiler;
+import javax.tools.JavaFileManager;
import javax.tools.JavaFileObject;
+import javax.tools.JavaFileObject.Kind;
+import javax.tools.StandardLocation;
import com.sun.source.doctree.DocCommentTree;
import com.sun.source.doctree.DocTree;
@@ -74,7 +88,12 @@
import com.sun.tools.javac.comp.Env;
import com.sun.tools.javac.comp.MemberEnter;
import com.sun.tools.javac.comp.Resolve;
+import com.sun.tools.javac.file.BaseFileManager;
import com.sun.tools.javac.model.JavacElements;
+import com.sun.tools.javac.parser.DocCommentParser;
+import com.sun.tools.javac.parser.ParserFactory;
+import com.sun.tools.javac.parser.Tokens.Comment;
+import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
import com.sun.tools.javac.tree.DCTree;
import com.sun.tools.javac.tree.DCTree.DCBlockTag;
@@ -104,6 +123,7 @@
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.DefinedBy;
import com.sun.tools.javac.util.DefinedBy.Api;
+import com.sun.tools.javac.util.DiagnosticSource;
import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
import com.sun.tools.javac.util.List;
@@ -141,6 +161,9 @@
private Names names;
private Types types;
private DocTreeMaker doctreeMaker;
+ private BreakIterator breakIterator;
+ private JavaFileManager fileManager;
+ private ParserFactory parser;
// called reflectively from Trees.instance(CompilationTask task)
public static JavacTrees instance(JavaCompiler.CompilationTask task) {
@@ -164,6 +187,7 @@
}
protected JavacTrees(Context context) {
+ this.breakIterator = null;
context.put(JavacTrees.class, this);
init(context);
}
@@ -183,31 +207,37 @@
names = Names.instance(context);
types = Types.instance(context);
doctreeMaker = DocTreeMaker.instance(context);
-
+ parser = ParserFactory.instance(context);
+ fileManager = context.get(JavaFileManager.class);
JavacTask t = context.get(JavacTask.class);
if (t instanceof JavacTaskImpl)
javacTaskImpl = (JavacTaskImpl) t;
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public BreakIterator getBreakIterator() {
+ return breakIterator;
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
public DocSourcePositions getSourcePositions() {
return new DocSourcePositions() {
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public long getStartPosition(CompilationUnitTree file, Tree tree) {
return TreeInfo.getStartPos((JCTree) tree);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public long getEndPosition(CompilationUnitTree file, Tree tree) {
EndPosTable endPosTable = ((JCCompilationUnit) file).endPositions;
return TreeInfo.getEndPos((JCTree) tree, endPosTable);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public long getStartPosition(CompilationUnitTree file, DocCommentTree comment, DocTree tree) {
return ((DCTree) tree).getSourcePosition((DCDocComment) comment);
}
- @SuppressWarnings("fallthrough") @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE) @SuppressWarnings("fallthrough")
public long getEndPosition(CompilationUnitTree file, DocCommentTree comment, DocTree tree) {
DCDocComment dcComment = (DCDocComment) comment;
if (tree instanceof DCEndPosTree) {
@@ -278,27 +308,27 @@
return last[0];
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JCClassDecl getTree(TypeElement element) {
return (JCClassDecl) getTree((Element) element);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JCMethodDecl getTree(ExecutableElement method) {
return (JCMethodDecl) getTree((Element) method);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JCTree getTree(Element element) {
return getTree(element, null);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JCTree getTree(Element e, AnnotationMirror a) {
return getTree(e, a, null);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JCTree getTree(Element e, AnnotationMirror a, AnnotationValue v) {
Pair<JCTree, JCCompilationUnit> treeTopLevel = elements.getTreeAndTopLevel(e, a, v);
if (treeTopLevel == null)
@@ -306,22 +336,22 @@
return treeTopLevel.fst;
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TreePath getPath(CompilationUnitTree unit, Tree node) {
return TreePath.getPath(unit, node);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TreePath getPath(Element e) {
return getPath(e, null, null);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TreePath getPath(Element e, AnnotationMirror a) {
return getPath(e, a, null);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TreePath getPath(Element e, AnnotationMirror a, AnnotationValue v) {
final Pair<JCTree, JCCompilationUnit> treeTopLevel = elements.getTreeAndTopLevel(e, a, v);
if (treeTopLevel == null)
@@ -329,7 +359,7 @@
return TreePath.getPath(treeTopLevel.snd, treeTopLevel.fst);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public Symbol getElement(TreePath path) {
JCTree tree = (JCTree) path.getLeaf();
Symbol sym = TreeInfo.symbolFor(tree);
@@ -479,7 +509,7 @@
/** @see com.sun.tools.javadoc.ClassDocImpl#findField */
private VarSymbol findField(ClassSymbol tsym, Name fieldName) {
- return searchField(tsym, fieldName, new HashSet<ClassSymbol>());
+ return searchField(tsym, fieldName, new HashSet<>());
}
/** @see com.sun.tools.javadoc.ClassDocImpl#searchField */
@@ -543,7 +573,7 @@
/** @see com.sun.tools.javadoc.ClassDocImpl#findMethod */
private MethodSymbol findMethod(ClassSymbol tsym, Name methodName, List<Type> paramTypes) {
- return searchMethod(tsym, methodName, paramTypes, new HashSet<ClassSymbol>());
+ return searchMethod(tsym, methodName, paramTypes, new HashSet<>());
}
/** @see com.sun.tools.javadoc.ClassDocImpl#searchMethod */
@@ -708,19 +738,19 @@
}
};
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TypeMirror getTypeMirror(TreePath path) {
Tree t = path.getLeaf();
Type ty = ((JCTree)t).type;
return ty == null ? null : ty.stripMetadataIfNeeded();
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public JavacScope getScope(TreePath path) {
return JavacScope.create(getAttrContext(path));
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public String getDocComment(TreePath path) {
CompilationUnitTree t = path.getCompilationUnit();
Tree leaf = path.getLeaf();
@@ -733,7 +763,7 @@
return null;
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public DocCommentTree getDocCommentTree(TreePath path) {
CompilationUnitTree t = path.getCompilationUnit();
Tree leaf = path.getLeaf();
@@ -746,7 +776,28 @@
return null;
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public DocCommentTree getDocCommentTree(Element e) {
+ TreePath path = getPath(e);
+ if (path == null) {
+ return null;
+ }
+ return getDocCommentTree(path);
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public DocCommentTree getDocCommentTree(Element e, String relativeFileName) throws IOException {
+ PackageElement pkg = elements.getPackageOf(e);
+ FileObject fileForInput = fileManager.getFileForInput(StandardLocation.SOURCE_PATH,
+ pkg.getQualifiedName().toString(), relativeFileName);
+
+ if (fileForInput == null) {
+ throw new FileNotFoundException(relativeFileName);
+ }
+ return getDocCommentTree(fileForInput);
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
public boolean isAccessible(Scope scope, TypeElement type) {
if (scope instanceof JavacScope && type instanceof ClassSymbol) {
Env<AttrContext> env = ((JavacScope) scope).env;
@@ -755,7 +806,7 @@
return false;
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public boolean isAccessible(Scope scope, Element member, DeclaredType type) {
if (scope instanceof JavacScope
&& member instanceof Symbol
@@ -862,6 +913,109 @@
}
}
+ private JavaFileObject asJavaFileObject(FileObject fileObject) {
+ JavaFileObject jfo = null;
+
+ if (fileObject instanceof JavaFileObject) {
+ jfo = (JavaFileObject) fileObject;
+ checkHtmlKind(fileObject, Kind.HTML);
+ return jfo;
+ }
+
+ checkHtmlKind(fileObject);
+ jfo = new HtmlFileObject(fileObject);
+ return jfo;
+ }
+
+ private void checkHtmlKind(FileObject fileObject) {
+ checkHtmlKind(fileObject, BaseFileManager.getKind(fileObject.getName()));
+ }
+
+ private void checkHtmlKind(FileObject fileObject, JavaFileObject.Kind kind) {
+ if (kind != JavaFileObject.Kind.HTML) {
+ throw new IllegalArgumentException("HTML file expected:" + fileObject.getName());
+ }
+ }
+
+ private static class HtmlFileObject extends ForwardingFileObject<FileObject>
+ implements JavaFileObject {
+
+ public HtmlFileObject(FileObject fileObject) {
+ super(fileObject);
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
+ public Kind getKind() {
+ return BaseFileManager.getKind(fileObject.getName());
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
+ public boolean isNameCompatible(String simpleName, Kind kind) {
+ return false;
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
+ public NestingKind getNestingKind() {
+ return null;
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
+ public Modifier getAccessLevel() {
+ return null;
+ }
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public DocCommentTree getDocCommentTree(FileObject fileObject) {
+ JavaFileObject jfo = asJavaFileObject(fileObject);
+ DiagnosticSource diagSource = new DiagnosticSource(jfo, log);
+
+ final Comment comment = new Comment() {
+ int offset = 0;
+ @Override
+ public String getText() {
+ try {
+ CharSequence rawDoc = fileObject.getCharContent(true);
+ Pattern bodyPat =
+ Pattern.compile("(?is).*?<body\\b[^>]*>(.*)</body\\b.*");
+ Matcher m = bodyPat.matcher(rawDoc);
+ if (m.matches()) {
+ offset = m.end(1);
+ return m.group(1);
+ } else {
+ // Assume doclint will do the right thing.
+ return "";
+ }
+ } catch (IOException ignore) {
+ // do nothing
+ }
+ return "";
+ }
+
+ @Override
+ public int getSourcePos(int index) {
+ return offset + index;
+ }
+
+ @Override
+ public CommentStyle getStyle() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isDeprecated() {
+ throw new UnsupportedOperationException();
+ }
+ };
+
+ return new DocCommentParser(parser, diagSource, comment).parse();
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public void setBreakIterator(BreakIterator breakiterator) {
+ this.breakIterator = breakiterator;
+ }
+
/**
* Makes a copy of a tree, noting the value resulting from copying a particular leaf.
**/
@@ -891,7 +1045,7 @@
* @return TypeMirror corresponding to the original type, replaced by the ErrorType.
* noType (type.tag == NONE) is returned if there is no original type.
*/
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public TypeMirror getOriginalType(javax.lang.model.type.ErrorType errorType) {
if (errorType instanceof com.sun.tools.javac.code.Type.ErrorType) {
return ((com.sun.tools.javac.code.Type.ErrorType)errorType).getOriginalType();
@@ -909,14 +1063,14 @@
* @param t the tree to use as a position hint
* @param root the compilation unit that contains tree
*/
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public void printMessage(Diagnostic.Kind kind, CharSequence msg,
com.sun.source.tree.Tree t,
com.sun.source.tree.CompilationUnitTree root) {
printMessage(kind, msg, ((JCTree) t).pos(), root);
}
- @DefinedBy(Api.COMPILER_TREE)
+ @Override @DefinedBy(Api.COMPILER_TREE)
public void printMessage(Diagnostic.Kind kind, CharSequence msg,
com.sun.source.doctree.DocTree t,
com.sun.source.doctree.DocCommentTree c,
@@ -971,4 +1125,30 @@
return v.type;
}
}
+
+ public TreePath makeTreePath(final FileObject fileObject, final int offset) {
+ JavaFileObject jfo = asJavaFileObject(fileObject);
+ JCCompilationUnit jcCompilationUnit = new JCCompilationUnit(List.nil()) {
+ public int getPos() {
+ return offset;
+ }
+
+ public JavaFileObject getSourcefile() {
+ return jfo;
+ }
+
+ @Override @DefinedBy(Api.COMPILER_TREE)
+ public Position.LineMap getLineMap() {
+ try {
+ CharSequence content = fileObject.getCharContent(true);
+ String s = content.toString();
+ return Position.makeLineMap(s.toCharArray(), s.length(), true);
+ } catch (IOException ignore) {}
+ return null;
+ }
+ };
+ jcCompilationUnit.sourcefile = jfo;
+ enter.main(List.of(jcCompilationUnit));
+ return new TreePath(jcCompilationUnit);
+ }
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DocTreeMaker.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DocTreeMaker.java Thu Nov 05 13:43:17 2015 -0800
@@ -30,15 +30,15 @@
import java.util.Collection;
import java.util.EnumSet;
import java.util.ListIterator;
-import java.util.Locale;
import com.sun.source.doctree.AttributeTree.ValueKind;
import com.sun.source.doctree.DocTree;
import com.sun.source.doctree.DocTree.Kind;
import com.sun.source.doctree.EndElementTree;
import com.sun.source.doctree.StartElementTree;
+import com.sun.source.doctree.TextTree;
import com.sun.tools.doclint.HtmlTag;
-
+import com.sun.tools.javac.api.JavacTrees;
import com.sun.tools.javac.parser.Tokens.Comment;
import com.sun.tools.javac.tree.DCTree.DCAttribute;
import com.sun.tools.javac.tree.DCTree.DCAuthor;
@@ -75,7 +75,6 @@
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Name;
-import com.sun.tools.javac.util.Options;
import com.sun.tools.javac.util.Pair;
import com.sun.tools.javac.util.Position;
@@ -97,8 +96,6 @@
// anywhere but the zero'th position in the first sentence.
final EnumSet<HtmlTag> sentenceBreakTags;
- private final BreakIterator sentenceBreaker;
-
/** Get the TreeMaker instance. */
public static DocTreeMaker instance(Context context) {
DocTreeMaker instance = context.get(treeMakerKey);
@@ -114,21 +111,16 @@
/** Access to diag factory for ErroneousTrees. */
private final JCDiagnostic.Factory diags;
+ private final JavacTrees trees;
+
/** Create a tree maker with NOPOS as initial position.
*/
protected DocTreeMaker(Context context) {
context.put(treeMakerKey, this);
diags = JCDiagnostic.Factory.instance(context);
this.pos = Position.NOPOS;
+ trees = JavacTrees.instance(context);
sentenceBreakTags = EnumSet.of(H1, H2, H3, H4, H5, H6, PRE, P);
- Locale locale = (context.get(Locale.class) != null)
- ? context.get(Locale.class)
- : Locale.getDefault();
- Options options = Options.instance(context);
- boolean useBreakIterator = options.isSet("breakiterator");
- sentenceBreaker = (useBreakIterator || !locale.getLanguage().equals(Locale.ENGLISH.getLanguage()))
- ? BreakIterator.getSentenceInstance(locale)
- : null;
}
/** Reassign current position.
@@ -176,10 +168,23 @@
}
public DCDocComment DocComment(Comment comment, List<DCTree> fullBody, List<DCTree> tags) {
- final int savepos = pos;
Pair<List<DCTree>, List<DCTree>> pair = splitBody(fullBody);
DCDocComment tree = new DCDocComment(comment, fullBody, pair.fst, pair.snd, tags);
- this.pos = tree.pos = savepos;
+ tree.pos = pos;
+ return tree;
+ }
+
+ /*
+ * Primarily to produce a DocCommenTree when given a
+ * first sentence and a body, this is useful, in cases
+ * where the trees are being synthesized by a tool.
+ */
+ public DCDocComment DocComment(List<DCTree> firstSentence, List<DCTree> body, List<DCTree> tags) {
+ ListBuffer<DCTree> lb = new ListBuffer<>();
+ lb.addAll(firstSentence);
+ lb.addAll(body);
+ List<DCTree> fullBody = lb.toList();
+ DCDocComment tree = new DCDocComment(null, fullBody, firstSentence, body, tags);
return tree;
}
@@ -341,74 +346,88 @@
/*
* Breaks up the body tags into the first sentence and its successors.
- * The first sentence is determined with the presence of a period, block tag,
- * or a sentence break, as returned by the BreakIterator. Trailing
- * whitespaces are trimmed.
+ * The first sentence is determined with the presence of a period,
+ * block tag, or a sentence break, as returned by the BreakIterator.
+ * Trailing whitespaces are trimmed.
*/
- Pair<List<DCTree>, List<DCTree>> splitBody(Collection<? extends DocTree> list) {
- ListBuffer<DCTree> body = new ListBuffer<>();
- // split body into first sentence and body
- ListBuffer<DCTree> fs = new ListBuffer<>();
- if (list.isEmpty()) {
- return new Pair<>(fs.toList(), body.toList());
- }
- boolean foundFirstSentence = false;
- ArrayList<DocTree> alist = new ArrayList<>(list);
- ListIterator<DocTree> itr = alist.listIterator();
- while (itr.hasNext()) {
- boolean isFirst = itr.previousIndex() == -1;
- DocTree dt = itr.next();
- int spos = ((DCTree)dt).pos;
- if (foundFirstSentence) {
- body.add((DCTree) dt);
- continue;
+ private Pair<List<DCTree>, List<DCTree>> splitBody(Collection<? extends DocTree> list) {
+ // pos is modified as we create trees, therefore
+ // we save the pos and restore it later.
+ final int savedpos = this.pos;
+ try {
+ ListBuffer<DCTree> body = new ListBuffer<>();
+ // split body into first sentence and body
+ ListBuffer<DCTree> fs = new ListBuffer<>();
+ if (list.isEmpty()) {
+ return new Pair<>(fs.toList(), body.toList());
}
- switch (dt.getKind()) {
- case TEXT:
- DCText tt = (DCText)dt;
- String s = tt.getBody();
- int sbreak = getSentenceBreak(s);
- if (sbreak > 0) {
- s = removeTrailingWhitespace(s.substring(0, sbreak));
- DCText text = this.at(spos).Text(s);
- fs.add(text);
- foundFirstSentence = true;
- int nwPos = skipWhiteSpace(tt.getBody(), sbreak);
- if (nwPos > 0) {
- DCText text2 = this.at(spos + nwPos).Text(tt.getBody().substring(nwPos));
- body.add(text2);
- }
- continue;
- } else if (itr.hasNext()) {
- // if the next doctree is a break, remove trailing spaces
- DocTree next = itr.next();
- boolean sbrk = isSentenceBreak(next, false);
- if (sbrk) {
- s = removeTrailingWhitespace(s);
+ boolean foundFirstSentence = false;
+ ArrayList<DocTree> alist = new ArrayList<>(list);
+ ListIterator<DocTree> itr = alist.listIterator();
+ while (itr.hasNext()) {
+ boolean isFirst = !itr.hasPrevious();
+ DocTree dt = itr.next();
+ int spos = ((DCTree) dt).pos;
+ if (foundFirstSentence) {
+ body.add((DCTree) dt);
+ continue;
+ }
+ switch (dt.getKind()) {
+ case TEXT:
+ DCText tt = (DCText) dt;
+ String s = tt.getBody();
+ DocTree peekedNext = itr.hasNext()
+ ? alist.get(itr.nextIndex())
+ : null;
+ int sbreak = getSentenceBreak(s, peekedNext);
+ if (sbreak > 0) {
+ s = removeTrailingWhitespace(s.substring(0, sbreak));
DCText text = this.at(spos).Text(s);
fs.add(text);
- body.add((DCTree)next);
+ foundFirstSentence = true;
+ int nwPos = skipWhiteSpace(tt.getBody(), sbreak);
+ if (nwPos > 0) {
+ DCText text2 = this.at(spos + nwPos).Text(tt.getBody().substring(nwPos));
+ body.add(text2);
+ }
+ continue;
+ } else if (itr.hasNext()) {
+ // if the next doctree is a break, remove trailing spaces
+ peekedNext = alist.get(itr.nextIndex());
+ boolean sbrk = isSentenceBreak(peekedNext, false);
+ if (sbrk) {
+ DocTree next = itr.next();
+ s = removeTrailingWhitespace(s);
+ DCText text = this.at(spos).Text(s);
+ fs.add(text);
+ body.add((DCTree) next);
+ foundFirstSentence = true;
+ continue;
+ }
+ }
+ break;
+ default:
+ if (isSentenceBreak(dt, isFirst)) {
+ body.add((DCTree) dt);
foundFirstSentence = true;
continue;
}
- // reset to previous for further processing
- itr.previous();
- }
- break;
- default:
- if (isSentenceBreak(dt, isFirst)) {
- body.add((DCTree)dt);
- foundFirstSentence = true;
- continue;
- }
+ break;
+ }
+ fs.add((DCTree) dt);
}
- fs.add((DCTree)dt);
+ return new Pair<>(fs.toList(), body.toList());
+ } finally {
+ this.pos = savedpos;
}
- return new Pair<>(fs.toList(), body.toList());
+ }
+
+ private boolean isTextTree(DocTree tree) {
+ return tree.getKind() == Kind.TEXT;
}
/*
- * Computes the first sentence break.
+ * Computes the first sentence break, a simple dot-space algorithm.
*/
int defaultSentenceBreak(String s) {
// scan for period followed by whitespace
@@ -437,12 +456,74 @@
return -1;
}
- int getSentenceBreak(String s) {
- if (sentenceBreaker == null) {
+ /*
+ * Computes the first sentence, if using a default breaker,
+ * the break is returned, if not then a -1, indicating that
+ * more doctree elements are required to be examined.
+ *
+ * BreakIterator.next points to the the start of the following sentence,
+ * and does not provide an easy way to disambiguate between "sentence break",
+ * "possible sentence break" and "not a sentence break" at the end of the input.
+ * For example, BreakIterator.next returns the index for the end
+ * of the string for all of these examples,
+ * using vertical bars to delimit the bounds of the example text
+ * |Abc| (not a valid end of sentence break, if followed by more text)
+ * |Abc.| (maybe a valid end of sentence break, depending on the following text)
+ * |Abc. | (maybe a valid end of sentence break, depending on the following text)
+ * |"Abc." | (maybe a valid end of sentence break, depending on the following text)
+ * |Abc. | (definitely a valid end of sentence break)
+ * |"Abc." | (definitely a valid end of sentence break)
+ * Therefore, we have to probe further to determine whether
+ * there really is a sentence break or not at the end of this run of text.
+ */
+ int getSentenceBreak(String s, DocTree dt) {
+ BreakIterator breakIterator = trees.getBreakIterator();
+ if (breakIterator == null) {
return defaultSentenceBreak(s);
}
- sentenceBreaker.setText(s);
- return sentenceBreaker.first();
+ breakIterator.setText(s);
+ final int sbrk = breakIterator.next();
+ // This is the last doctree, found the droid we are looking for
+ if (dt == null) {
+ return sbrk;
+ }
+
+ // If the break is well within the span of the string ie. not
+ // at EOL, then we have a clear break.
+ if (sbrk < s.length() - 1) {
+ return sbrk;
+ }
+
+ if (isTextTree(dt)) {
+ // Two adjacent text trees, a corner case, perhaps
+ // produced by a tool synthesizing a doctree. In
+ // this case, does the break lie within the first span,
+ // then we have the droid, otherwise allow the callers
+ // logic to handle the break in the adjacent doctree.
+ TextTree ttnext = (TextTree) dt;
+ String combined = s + ttnext.getBody();
+ breakIterator.setText(combined);
+ int sbrk2 = breakIterator.next();
+ if (sbrk < sbrk2) {
+ return sbrk;
+ }
+ }
+
+ // Is the adjacent tree a sentence breaker ?
+ if (isSentenceBreak(dt, false)) {
+ return sbrk;
+ }
+
+ // At this point the adjacent tree is either a javadoc tag ({@..),
+ // html tag (<..) or an entity (&..). Perform a litmus test, by
+ // concatenating a sentence, to validate the break earlier identified.
+ String combined = s + "Dummy Sentence.";
+ breakIterator.setText(combined);
+ int sbrk2 = breakIterator.next();
+ if (sbrk2 <= sbrk) {
+ return sbrk2;
+ }
+ return -1; // indeterminate at this time
}
boolean isSentenceBreak(javax.lang.model.element.Name tagName) {
@@ -476,7 +557,7 @@
}
String removeTrailingWhitespace(String s) {
- for (int i = s.length() - 1 ; i > 0 ; i--) {
+ for (int i = s.length() - 1 ; i >= 0 ; i--) {
char ch = s.charAt(i);
if (!Character.isWhitespace(ch)) {
return s.substring(0, i + 1);
--- a/langtools/test/tools/javac/doctree/DocCommentTester.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/test/tools/javac/doctree/DocCommentTester.java Thu Nov 05 13:43:17 2015 -0800
@@ -27,10 +27,14 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
+import java.text.BreakIterator;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import javax.lang.model.element.Name;
import javax.tools.JavaFileObject;
@@ -55,16 +59,28 @@
public class DocCommentTester {
+ public static final String BI_MARKER = "BREAK_ITERATOR";
+ public final boolean useBreakIterator;
+
+ public DocCommentTester(boolean useBreakIterator) {
+ this.useBreakIterator = useBreakIterator;
+ }
public static void main(String... args) throws Exception {
- new DocCommentTester().run(args);
+ ArrayList<String> list = new ArrayList(Arrays.asList(args));
+ if (!list.isEmpty() && "-useBreakIterator".equals(list.get(0))) {
+ list.remove(0);
+ new DocCommentTester(true).run(list);
+ } else {
+ new DocCommentTester(false).run(list);
+ }
}
- public void run(String... args) throws Exception {
+ public void run(List<String> args) throws Exception {
String testSrc = System.getProperty("test.src");
- List<File> files = new ArrayList<File>();
- for (String arg: args)
- files.add(new File(testSrc, arg));
+ List<File> files = args.stream()
+ .map(arg -> new File(testSrc, arg))
+ .collect(Collectors.toList());
JavacTool javac = JavacTool.create();
StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null);
@@ -74,6 +90,11 @@
JavacTask t = javac.getTask(null, fm, null, null, null, fos);
final DocTrees trees = DocTrees.instance(t);
+ if (useBreakIterator) {
+ // BreakIterators are locale dependent wrt. behavior
+ trees.setBreakIterator(BreakIterator.getSentenceInstance(Locale.ENGLISH));
+ }
+
final Checker[] checkers = {
new ASTChecker(this, trees),
new PosChecker(this, trees),
@@ -179,9 +200,11 @@
static final String NEWLINE = System.getProperty("line.separator");
Printer printer = new Printer();
String source;
+ DocCommentTester test;
ASTChecker(DocCommentTester test, DocTrees t) {
test.super(t);
+ this.test = test;
}
@Override
@@ -200,11 +223,21 @@
out.flush();
String found = out.toString().replace(NEWLINE, "\n");
- // Look for the first block comment after the first occurrence of name
- int start = source.indexOf("\n/*\n", findName(source, name));
+ /*
+ * Look for the first block comment after the first occurrence
+ * of name, noting that, block comments with BI_MARKER may
+ * very well be present.
+ */
+ int start = test.useBreakIterator
+ ? source.indexOf("\n/*\n" + BI_MARKER + "\n", findName(source, name))
+ : source.indexOf("\n/*\n", findName(source, name));
int end = source.indexOf("\n*/\n", start);
- String expect = source.substring(start + 4, end + 1);
+ int startlen = start + (test.useBreakIterator ? BI_MARKER.length() + 1 : 0) + 4;
+ String expect = source.substring(startlen, end + 1);
if (!found.equals(expect)) {
+ if (test.useBreakIterator) {
+ System.err.println("Using BreakIterator");
+ }
System.err.println("Expect:\n" + expect);
System.err.println("Found:\n" + found);
error("AST mismatch for " + name);
--- a/langtools/test/tools/javac/doctree/FirstSentenceTest.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/test/tools/javac/doctree/FirstSentenceTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 7021614 8078320
+ * @bug 7021614 8078320 8132096
* @summary extend com.sun.source API to support parsing javadoc comments
* @modules jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.file
@@ -31,6 +31,7 @@
* jdk.compiler/com.sun.tools.javac.util
* @build DocCommentTester
* @run main DocCommentTester FirstSentenceTest.java
+ * @run main DocCommentTester -useBreakIterator FirstSentenceTest.java
*/
class FirstSentenceTest {
@@ -43,6 +44,14 @@
block tags: empty
]
*/
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:-1
+ firstSentence: empty
+ body: empty
+ block tags: empty
+]
+*/
/** abc def ghi */
void no_terminator() { }
@@ -54,6 +63,15 @@
block tags: empty
]
*/
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:0
+ firstSentence: 1
+ Text[TEXT, pos:0, abc_def_ghi]
+ body: empty
+ block tags: empty
+]
+*/
/**
* abc def ghi.
@@ -67,7 +85,15 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi.]
+ body: empty
+ block tags: empty
+]
+*/
/**
* abc def ghi. jkl mno pqr.
*/
@@ -81,7 +107,15 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi._jkl_mno_pqr.]
+ body: empty
+ block tags: empty
+]
+*/
/**
* abc def ghi.
* jkl mno pqr
@@ -96,7 +130,16 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi.]
+ body: 1
+ Text[TEXT, pos:15, jkl_mno_pqr]
+ block tags: empty
+]
+*/
/**
* abc def ghi
* <p>jkl mno pqr
@@ -115,7 +158,20 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi]
+ body: 2
+ StartElement[START_ELEMENT, pos:14
+ name:p
+ attributes: empty
+ ]
+ Text[TEXT, pos:17, jkl_mno_pqr]
+ block tags: empty
+]
+*/
/**
*
* <p>abc def ghi.
@@ -135,7 +191,20 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:2
+ firstSentence: 2
+ StartElement[START_ELEMENT, pos:2
+ name:p
+ attributes: empty
+ ]
+ Text[TEXT, pos:5, abc_def_ghi.]
+ body: 1
+ Text[TEXT, pos:19, jdl_mno_pqf]
+ block tags: empty
+]
+*/
/**
* abc def ghi
* </p>jkl mno pqr
@@ -151,7 +220,17 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi]
+ body: 2
+ EndElement[END_ELEMENT, pos:14, p]
+ Text[TEXT, pos:18, jkl_mno_pqr]
+ block tags: empty
+]
+*/
/**
* abc < ghi. jkl mno pqr.
*/
@@ -167,7 +246,17 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 3
+ Text[TEXT, pos:1, abc_]
+ Entity[ENTITY, pos:5, lt]
+ Text[TEXT, pos:9, _ghi._jkl_mno_pqr.]
+ body: empty
+ block tags: empty
+]
+*/
/**
* abc {@code code} ghi. jkl mno pqr.
*/
@@ -183,7 +272,17 @@
block tags: empty
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 3
+ Text[TEXT, pos:1, abc_]
+ Literal[CODE, pos:5, code]
+ Text[TEXT, pos:17, _ghi._jkl_mno_pqr.]
+ body: empty
+ block tags: empty
+]
+*/
/**
* abc def ghi
* @author jjg
@@ -201,7 +300,19 @@
]
]
*/
-
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc_def_ghi]
+ body: empty
+ block tags: 1
+ Author[AUTHOR, pos:14
+ name: 1
+ Text[TEXT, pos:22, jjg]
+ ]
+]
+*/
/**
* @author jjg
*/
@@ -217,6 +328,18 @@
]
]
*/
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: empty
+ body: empty
+ block tags: 1
+ Author[AUTHOR, pos:1
+ name: 1
+ Text[TEXT, pos:9, jjg]
+ ]
+]
+*/
/**
* <p> abc def.
* ghi jkl
@@ -235,6 +358,21 @@
block tags: empty
]
*/
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 2
+ StartElement[START_ELEMENT, pos:1
+ name:p
+ attributes: empty
+ ]
+ Text[TEXT, pos:4, _abc_def.]
+ body: 1
+ Text[TEXT, pos:15, ghi_jkl]
+ block tags: empty
+]
+*/
+
/**
* abc <p> def. ghi jkl
*/
@@ -252,5 +390,19 @@
block tags: empty
]
*/
+/*
+BREAK_ITERATOR
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, abc]
+ body: 2
+ StartElement[START_ELEMENT, pos:5
+ name:p
+ attributes: empty
+ ]
+ Text[TEXT, pos:8, _def._ghi_jkl]
+ block tags: empty
+]
+*/
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/DocCommentTreeApiTester.java Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,275 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/*
+ * @test
+ * @bug 8132096
+ * @summary test the APIs in the DocTree interface
+ * @modules jdk.compiler/com.sun.tools.javac.api
+ * jdk.compiler/com.sun.tools.javac.file
+ * jdk.compiler/com.sun.tools.javac.tree
+ * jdk.compiler/com.sun.tools.javac.util
+ * @compile ../DocCommentTester.java DocCommentTreeApiTester.java
+ * @run main DocCommentTreeApiTester
+ */
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.text.BreakIterator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+import javax.lang.model.element.Element;
+import javax.tools.FileObject;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+import com.sun.source.doctree.DocTree;
+import com.sun.source.doctree.DocCommentTree;
+import com.sun.source.util.DocTrees;
+import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.api.JavacTool;
+import com.sun.tools.javac.tree.DocPretty;
+
+public class DocCommentTreeApiTester {
+
+ private static final String MARKER_START = "<!-- EXPECT_START";
+ private static final String MARKER_END = "EXPECT_END -->";
+
+ private static final String testSrc = System.getProperty("test.src", ".");
+
+ private static final JavacTool javac = JavacTool.create();
+
+ private static final DocCommentTester.ASTChecker.Printer printer =
+ new DocCommentTester.ASTChecker.Printer();
+ int pass;
+ int fail;
+
+ public DocCommentTreeApiTester() {
+ pass = 0;
+ fail = 0;
+ }
+
+ public static void main(String... args) throws Exception {
+ DocCommentTreeApiTester test = new DocCommentTreeApiTester();
+ try {
+ // test getting a DocTree from an element
+ test.runElementAndBreakIteratorTests("OverviewTest.java", "OverviewTest test.");
+
+ // test relative paths in a class within a package
+ test.runRelativePathTest("pkg/Anchor.java", "package.html");
+
+ // tests files relative path in an unnamed package
+ test.runRelativePathTest("OverviewTest.java", "overview0.html");
+
+ // test for correct parsing using valid and some invalid html tags
+ for (int i = 0; i < 7; i++) {
+ String hname = "overview" + i + ".html";
+ test.runFileObjectTest(hname);
+ }
+
+ } finally {
+ test.status();
+ }
+ }
+ void status() throws Exception {
+ System.err.println("pass:" + pass + " fail: " + fail);
+ if (fail > 0) {
+ throw new Exception("Fails");
+ }
+ }
+
+ /**
+ * Tests getting a DocCommentTree from an element, as well
+ * as test if break iterator setter/getter works correctly.
+ *
+ * @param javaFileName a test file to be processed
+ * @param expected the expected output
+ * @throws java.io.IOException
+ */
+ public void runElementAndBreakIteratorTests(String javaFileName, String expected) throws IOException {
+ List<File> javaFiles = new ArrayList<>();
+ javaFiles.add(new File(testSrc, javaFileName));
+
+ List<File> dirs = new ArrayList<>();
+ dirs.add(new File(testSrc));
+
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
+ fm.setLocation(javax.tools.StandardLocation.SOURCE_PATH, dirs);
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(javaFiles);
+
+ final JavacTask t = javac.getTask(null, fm, null, null, null, fos);
+ final DocTrees trees = DocTrees.instance(t);
+
+ Iterable<? extends Element> elements = t.analyze();
+
+ Element klass = elements.iterator().next();
+ DocCommentTree dcTree = trees.getDocCommentTree(klass);
+
+ List<? extends DocTree> firstSentence = dcTree.getFirstSentence();
+ StringWriter sw = new StringWriter();
+ DocPretty pretty = new DocPretty(sw);
+ pretty.print(firstSentence);
+ check("getDocCommentTree(Element)", expected, sw.toString());
+
+ BreakIterator bi = BreakIterator.getSentenceInstance(Locale.FRENCH);
+ trees.setBreakIterator(bi);
+ BreakIterator nbi = trees.getBreakIterator();
+ if (bi.equals(nbi)) {
+ pass++;
+ check("getDocCommentTree(Element) with BreakIterator", expected, sw.toString());
+ } else {
+ fail++;
+ System.err.println("BreakIterators don't match");
+ }
+ }
+ }
+ /**
+ * Tests DocTrees.getDocCommentTree(Element e, String relpath) using relative path.
+ *
+ * @param javaFileName the reference java file
+ * @param fileName the relative html file
+ * @throws java.lang.Exception ouch
+ */
+ public void runRelativePathTest(String javaFileName, String fileName) throws Exception {
+ List<File> javaFiles = new ArrayList<>();
+ javaFiles.add(new File(testSrc, javaFileName));
+
+ List<File> dirs = new ArrayList<>();
+ dirs.add(new File(testSrc));
+
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
+ fm.setLocation(javax.tools.StandardLocation.SOURCE_PATH, dirs);
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(javaFiles);
+
+ final JavacTask t = javac.getTask(null, fm, null, null, null, fos);
+ final DocTrees trees = DocTrees.instance(t);
+
+ Iterable<? extends Element> elements = t.analyze();
+
+ Element klass = elements.iterator().next();
+
+ DocCommentTree dcTree = trees.getDocCommentTree(klass, fileName);
+ StringWriter sw = new StringWriter();
+ printer.print(dcTree, sw);
+ String found = sw.toString();
+
+ FileObject htmlFo = fm.getFileForInput(javax.tools.StandardLocation.SOURCE_PATH,
+ t.getElements().getPackageOf(klass).getQualifiedName().toString(),
+ fileName);
+
+ String expected = getExpected(htmlFo.openReader(true));
+ astcheck(fileName, expected, found);
+ }
+ }
+
+ /**
+ * Tests DocTrees.getDocCommentTree(FileObject fo).
+ *
+ * @param htmlfileName the file to be parsed
+ * @throws Exception when an error occurs.
+ */
+ public void runFileObjectTest(String htmlfileName) throws Exception {
+ List<File> javaFiles = Collections.emptyList();
+
+ List<File> otherFiles = new ArrayList<>();
+ otherFiles.add(new File(testSrc, htmlfileName));
+
+ try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
+ Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(javaFiles);
+ Iterable<? extends JavaFileObject> others = fm.getJavaFileObjectsFromFiles(otherFiles);
+
+ final JavacTask t = javac.getTask(null, fm, null, null, null, fos);
+ final DocTrees trees = DocTrees.instance(t);
+
+ StringWriter sw = new StringWriter();
+
+ printer.print(trees.getDocCommentTree(others.iterator().next()), sw);
+ String found = sw.toString();
+ String expected = getExpected(otherFiles.iterator().next().toPath());
+ astcheck(otherFiles.toString(), expected, found);
+ }
+ }
+
+ void astcheck(String testinfo, String expected, String found) {
+ System.err.print("ASTChecker: " + testinfo);
+ check0(expected, found);
+ }
+ void check(String testinfo, String expected, String found) {
+ System.err.print(testinfo);
+ check0(expected, found);
+ }
+ void check0(String expected, String found) {
+ if (expected.equals(found)) {
+ pass++;
+ System.err.println(" PASS");
+ } else {
+ fail++;
+ System.err.println(" FAILED");
+ System.err.println("Expect:\n" + expected);
+ System.err.println("Found:\n" + found);
+ }
+ }
+
+ String getExpected(Reader inrdr) throws IOException {
+ BufferedReader rdr = new BufferedReader(inrdr);
+ List<String> lines = new ArrayList<>();
+ String line = rdr.readLine();
+ while (line != null) {
+ lines.add(line);
+ line = rdr.readLine();
+ }
+ return getExpected(lines);
+ }
+
+ String getExpected(Path p) throws IOException {
+ return getExpected(Files.readAllLines(p));
+ }
+
+ String getExpected(List<String> lines) {
+ boolean start = false;
+ StringWriter sw = new StringWriter();
+ PrintWriter out = new PrintWriter(sw);
+ for (String line : lines) {
+ if (!start) {
+ start = line.startsWith(MARKER_START);
+ continue;
+ }
+ if (line.startsWith(MARKER_END)) {
+ out.flush();
+ return sw.toString();
+ }
+ out.println(line);
+ }
+ return out.toString() + "Warning: html comment end not found";
+ }
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/OverviewTest.java Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/**
+ * OverviewTest test.
+ */
+public class OverviewTest {}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview0.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,48 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, A_simple_well_fo...rmed_html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:36
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:41, overview0.html]
+ StartElement[START_ELEMENT, pos:55
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:60, .]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+A simple well formed html document <pre>overview0.html<pre>.
+</BODY>
+</HTML>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview1.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,47 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, Html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:15
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:20, overview1.html]
+ StartElement[START_ELEMENT, pos:34
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:39, .|Missing_HTML.]
+ block tags: empty
+]
+EXPECT_END -->
+<HEAD>
+</HEAD>
+<BODY>
+Html document <pre>overview1.html<pre>.
+Missing HTML.
+</BODY>
+</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview2.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,47 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, Html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:15
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:20, overview2.html]
+ StartElement[START_ELEMENT, pos:34
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:39, .|Missing_HEAD.]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+</HEAD>
+<BODY>
+Html document <pre>overview2.html<pre>.
+Missing HEAD.
+</BODY>
+</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview3.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,47 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, Html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:15
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:20, overview3.html]
+ StartElement[START_ELEMENT, pos:34
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:39, .|Missing_enclosing_HEAD.]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+<HEAD>
+<BODY>
+Html document <pre>overview3.html<pre>.
+Missing enclosing HEAD.
+</BODY>
+</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview4.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,44 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, Html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:15
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:20, overview4.html]
+ StartElement[START_ELEMENT, pos:34
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:39, .|Only_BODY]
+ block tags: empty
+]
+EXPECT_END -->
+<BODY>
+Html document <pre>overview4.html<pre>.
+Only BODY
+</BODY>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview5.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,47 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, Html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:15
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:20, overview5.html]
+ StartElement[START_ELEMENT, pos:34
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:39, .|Missing_enclosing_HTML]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+Html document <pre>overview5.html<pre>.
+Missing enclosing HTML
+</BODY>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/overview6.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,49 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, The_first_correct_body_pair.]
+ body: 4
+ EndElement[END_ELEMENT, pos:30, BODY]
+ Text[TEXT, pos:37, ||]
+ StartElement[START_ELEMENT, pos:39
+ name:BODY
+ attributes: empty
+ ]
+ Text[TEXT, pos:45, |Illegal_second_...body_pair,_the_first_body_should_not_be_ignored.]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+The first correct body pair.
+</BODY>
+
+<BODY>
+Illegal second body pair, the first body should not be ignored.
+</BODY>
+</HTML>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/package.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,47 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+A simple well formed html document <pre>package.html<pre>.
+</BODY>
+</HTML>
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, This_is_a_very_simple]
+ body: 4
+ StartElement[START_ELEMENT, pos:23
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:28, _well_formed_html_document_]
+ StartElement[START_ELEMENT, pos:55
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:60, _using_some_html_tags.]
+ block tags: empty
+]
+EXPECT_END -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/pkg/Anchor.java Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2015, 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 pkg;
+
+/**
+ * The anchor class.
+ */
+public class Anchor {}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/doctree/dcapi/pkg/package.html Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,48 @@
+<!--
+ Copyright (c) 2015, 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.
+-->
+<!-- EXPECT_START
+DocComment[DOC_COMMENT, pos:1
+ firstSentence: 1
+ Text[TEXT, pos:1, A_simple_well_fo...rmed_html_document]
+ body: 4
+ StartElement[START_ELEMENT, pos:36
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:41, package.html]
+ StartElement[START_ELEMENT, pos:53
+ name:pre
+ attributes: empty
+ ]
+ Text[TEXT, pos:58, .|In_package_pkg.]
+ block tags: empty
+]
+EXPECT_END -->
+<HTML>
+<HEAD>
+</HEAD>
+<BODY>
+A simple well formed html document <pre>package.html<pre>.
+In package pkg.
+</BODY>
+</HTML>
--- a/langtools/test/tools/javac/tree/NoPrivateTypesExported.java Fri Oct 30 10:34:46 2015 +0100
+++ b/langtools/test/tools/javac/tree/NoPrivateTypesExported.java Thu Nov 05 13:43:17 2015 -0800
@@ -23,7 +23,7 @@
/*
* @test
- * @bug 8026180
+ * @bug 8026180 8132096
* @summary Ensuring javax.lang.model.**, javax.tools.**, javax.annotation.processing.**
* and com.sun.source.** don't export inappropriate types.
* @library /tools/javac/lib
@@ -87,6 +87,7 @@
"java.lang.",
"java.net.",
"java.nio.",
+ "java.text.",
"java.util.",
"javax.lang.model.",
"javax.annotation.processing.SupportedSourceVersion",
--- a/make/common/MakeBase.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/make/common/MakeBase.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -321,7 +321,7 @@
################################################################################
-MAX_PARAMS := 30
+MAX_PARAMS := 35
PARAM_SEQUENCE := $(call sequence, 2, $(MAX_PARAMS))
# Template for creating a macro taking named parameters. To use it, assign the
--- a/make/common/NativeCompilation.gmk Fri Oct 30 10:34:46 2015 +0100
+++ b/make/common/NativeCompilation.gmk Thu Nov 05 13:43:17 2015 -0800
@@ -250,8 +250,7 @@
# CFLAGS the compiler flags to be used, used both for C and C++.
# CXXFLAGS the compiler flags to be used for c++, if set overrides CFLAGS.
# LDFLAGS the linker flags to be used, used both for C and C++.
-# LDFLAGS_SUFFIX the linker flags to be added last on the commandline
-# typically the libraries linked to.
+# LIBS the libraries to link to
# ARFLAGS the archiver flags to be used
# OBJECT_DIR the directory where we store the object files
# LIBRARY the resulting library file
@@ -610,9 +609,9 @@
endif
# Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
- # for LDFLAGS and LDFLAGS_SUFFIX
+ # for LDFLAGS and LIBS
$1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
- $1_EXTRA_LDFLAGS_SUFFIX:=$$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_SUFFIX_$(OPENJDK_TARGET_OS))
+ $1_EXTRA_LIBS:=$$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
ifneq (,$$($1_REAL_MAPFILE))
$1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
endif
@@ -689,10 +688,10 @@
$1_EXTRA_LDFLAGS += "-implib:$$($1_OBJECT_DIR)/$$($1_LIBRARY).lib"
endif
- $1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
+ $1_EXTRA_LIBS += $(GLOBAL_LIBS)
$1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
- $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX) $$($1_CREATE_DEBUGINFO_CMDS) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_CREATE_DEBUGINFO_CMDS) \
$$($1_STRIP_CMD)
$1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps)
@@ -704,7 +703,7 @@
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
$(LD_OUT_OPTION)$$@ \
$$($1_EXPECTED_OBJS) $$($1_RES) \
- $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX)) ; \
+ $$($1_LIBS) $$($1_EXTRA_LIBS)) ; \
$$($1_CREATE_DEBUGINFO_CMDS)
$$($1_STRIP_CMD)
# Touch target to make sure it has a later time stamp than the debug
@@ -716,8 +715,8 @@
endif
ifneq (,$$($1_STATIC_LIBRARY))
- $1_VARDEPS := $$($1_AR) $$($1_ARFLAGS) $$($1_LDFLAGS_SUFFIX) \
- $$($1_EXTRA_LDFLAGS_SUFFIX)
+ $1_VARDEPS := $$($1_AR) $$($1_ARFLAGS) $$($1_LIBS) \
+ $$($1_EXTRA_LIBS)
$1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps)
@@ -726,15 +725,15 @@
$(ECHO) $(LOG_INFO) "Archiving $$($1_STATIC_LIBRARY)"
$(call LogFailures, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link.log, $$($1_SAFE_NAME)_link, \
$$($1_AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_EXPECTED_OBJS) \
- $$($1_RES) $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX))
+ $$($1_RES) $$($1_LIBS) $$($1_EXTRA_LIBS))
endif
ifneq (,$$($1_PROGRAM))
# A executable binary has been specified, setup the target for it.
- $1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)
+ $1_EXTRA_LIBS += $(GLOBAL_LIBS)
$1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
- $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX) $$($1_MT) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_MT) \
$$($1_CODESIGN) $$($1_CREATE_DEBUGINFO_CMDS) $$($1_MANIFEST_VERSION) \
$$($1_STRIP_CMD)
$1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
@@ -747,7 +746,7 @@
$$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
$(EXE_OUT_OPTION)$$($1_TARGET) \
$$($1_EXPECTED_OBJS) $$($1_RES) \
- $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX))
+ $$($1_LIBS) $$($1_EXTRA_LIBS))
ifeq ($(OPENJDK_TARGET_OS), windows)
ifneq ($$($1_MANIFEST), )
$$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_PROGRAM).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
--- a/make/jprt.properties Fri Oct 30 10:34:46 2015 +0100
+++ b/make/jprt.properties Thu Nov 05 13:43:17 2015 -0800
@@ -93,6 +93,7 @@
--with-output-sync=recurse \
--with-boot-jdk=$ALT_BOOTDIR \
--with-jobs=$ALT_PARALLEL_COMPILE_JOBS \
+ MAKE=$JPRT_MAKE \
${my.additional.build.configure.args.${jprt.test.set}} \
${my.custom.build.configure.args}
--- a/nashorn/.hgtags Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/.hgtags Thu Nov 05 13:43:17 2015 -0800
@@ -323,3 +323,4 @@
0bf2fe0c7b3277cd247ed4f6faaf2b56d83139cf jdk9-b87
a2aa804daac974289e20bf8f9106740732f08b34 jdk9-b88
62641244c378c17183b7208f3f1d75ba5f248a79 jdk9-b89
+bc92163c4e0aa3fcca51a290c55715c54a5faa5f jdk9-b90
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/RuntimeNode.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/RuntimeNode.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -83,7 +83,9 @@
/** is undefined */
IS_UNDEFINED(TokenType.EQ_STRICT, Type.BOOLEAN, 2),
/** is not undefined */
- IS_NOT_UNDEFINED(TokenType.NE_STRICT, Type.BOOLEAN, 2);
+ IS_NOT_UNDEFINED(TokenType.NE_STRICT, Type.BOOLEAN, 2),
+ /** Get template object from raw and cooked string arrays. */
+ GET_TEMPLATE_OBJECT(TokenType.TEMPLATE, Type.SCRIPT_OBJECT, 2);
/** token type */
private final TokenType tokenType;
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Lexer.java Thu Nov 05 13:43:17 2015 -0800
@@ -46,6 +46,10 @@
import static jdk.nashorn.internal.parser.TokenType.REGEX;
import static jdk.nashorn.internal.parser.TokenType.RPAREN;
import static jdk.nashorn.internal.parser.TokenType.STRING;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_HEAD;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_MIDDLE;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_TAIL;
import static jdk.nashorn.internal.parser.TokenType.XML;
import java.io.Serializable;
@@ -96,6 +100,8 @@
private final boolean pauseOnFunctionBody;
private boolean pauseOnNextLeftBrace;
+ private int templateExpressionOpenBraces;
+
private static final String SPACETAB = " \t"; // ASCII space and tab
private static final String LFCR = "\n\r"; // line feed and carriage return (ctrl-m)
@@ -392,13 +398,19 @@
}
/**
- * Test if char is a string delimiter, e.g. '\' or '"'. Also scans exec
- * strings ('`') in scripting mode.
+ * Test if char is a string delimiter, e.g. '\' or '"'.
* @param ch a char
* @return true if string delimiter
*/
protected boolean isStringDelimiter(final char ch) {
- return ch == '\'' || ch == '"' || (scripting && ch == '`');
+ return ch == '\'' || ch == '"';
+ }
+
+ /**
+ * Test if char is a template literal delimiter ('`').
+ */
+ private static boolean isTemplateDelimiter(char ch) {
+ return ch == '`';
}
/**
@@ -943,6 +955,10 @@
sb.append(next);
break;
}
+ } else if (ch0 == '\r') {
+ // Convert CR-LF or CR to LF line terminator.
+ sb.append('\n');
+ skip(ch1 == '\n' ? 2 : 1);
} else {
// Add regular character.
sb.append(ch0);
@@ -958,7 +974,7 @@
/**
* Scan over a string literal.
- * @param add true if we nare not just scanning but should actually modify the token stream
+ * @param add true if we are not just scanning but should actually modify the token stream
*/
protected void scanString(final boolean add) {
// Type of string.
@@ -1034,6 +1050,70 @@
}
/**
+ * Scan over a template string literal.
+ */
+ private void scanTemplate() {
+ assert ch0 == '`';
+ TokenType type = TEMPLATE;
+
+ // Skip over quote and record beginning of string content.
+ skip(1);
+ State stringState = saveState();
+
+ // Scan until close quote
+ while (!atEOF()) {
+ // Skip over escaped character.
+ if (ch0 == '`') {
+ skip(1);
+ // Record end of string.
+ stringState.setLimit(position - 1);
+ add(type == TEMPLATE ? type : TEMPLATE_TAIL, stringState.position, stringState.limit);
+ return;
+ } else if (ch0 == '$' && ch1 == '{') {
+ skip(2);
+ stringState.setLimit(position - 2);
+ add(type == TEMPLATE ? TEMPLATE_HEAD : type, stringState.position, stringState.limit);
+
+ // scan to RBRACE
+ Lexer expressionLexer = new Lexer(this, saveState());
+ expressionLexer.templateExpressionOpenBraces = 1;
+ expressionLexer.lexify();
+ restoreState(expressionLexer.saveState());
+
+ // scan next middle or tail of the template literal
+ assert ch0 == '}';
+ type = TEMPLATE_MIDDLE;
+
+ // Skip over rbrace and record beginning of string content.
+ skip(1);
+ stringState = saveState();
+
+ continue;
+ } else if (ch0 == '\\') {
+ skip(1);
+ // EscapeSequence
+ if (!isEscapeCharacter(ch0)) {
+ error(Lexer.message("invalid.escape.char"), TEMPLATE, position, limit);
+ }
+ if (isEOL(ch0)) {
+ // LineContinuation
+ skipEOL(false);
+ continue;
+ }
+ } else if (isEOL(ch0)) {
+ // LineTerminatorSequence
+ skipEOL(false);
+ continue;
+ }
+
+ // Skip literal character.
+ skip(1);
+ }
+
+ error(Lexer.message("missing.close.quote"), TEMPLATE, position, limit);
+ }
+
+ /**
* Is the given character a valid escape char after "\" ?
*
* @param ch character to be checked
@@ -1621,6 +1701,16 @@
// Scan and add a number.
scanNumber();
} else if ((type = TokenLookup.lookupOperator(ch0, ch1, ch2, ch3)) != null) {
+ if (templateExpressionOpenBraces > 0) {
+ if (type == LBRACE) {
+ templateExpressionOpenBraces++;
+ } else if (type == RBRACE) {
+ if (--templateExpressionOpenBraces == 0) {
+ break;
+ }
+ }
+ }
+
// Get the number of characters in the token.
final int typeLength = type.getLength();
// Skip that many characters.
@@ -1644,6 +1734,12 @@
} else if (Character.isDigit(ch0)) {
// Scan and add a number.
scanNumber();
+ } else if (isTemplateDelimiter(ch0) && es6) {
+ // Scan and add template in ES6 mode.
+ scanTemplate();
+ } else if (isTemplateDelimiter(ch0) && scripting) {
+ // Scan and add an exec string ('`') in scripting mode.
+ scanString(true);
} else {
// Don't recognize this character.
skip(1);
@@ -1699,6 +1795,11 @@
return valueOfIdent(start, len); // String
case REGEX:
return valueOfPattern(start, len); // RegexToken::LexerToken
+ case TEMPLATE:
+ case TEMPLATE_HEAD:
+ case TEMPLATE_MIDDLE:
+ case TEMPLATE_TAIL:
+ return valueOfString(start, len, true); // String
case XML:
return valueOfXML(start, len); // XMLToken::LexerToken
case DIRECTIVE_COMMENT:
@@ -1711,6 +1812,45 @@
}
/**
+ * Get the raw string value of a template literal string part.
+ *
+ * @param token template string token
+ * @return raw string
+ */
+ public String valueOfRawString(final long token) {
+ final int start = Token.descPosition(token);
+ final int length = Token.descLength(token);
+
+ // Save the current position.
+ final int savePosition = position;
+ // Calculate the end position.
+ final int end = start + length;
+ // Reset to beginning of string.
+ reset(start);
+
+ // Buffer for recording characters.
+ final StringBuilder sb = new StringBuilder(length);
+
+ // Scan until end of string.
+ while (position < end) {
+ if (ch0 == '\r') {
+ // Convert CR-LF or CR to LF line terminator.
+ sb.append('\n');
+ skip(ch1 == '\n' ? 2 : 1);
+ } else {
+ // Add regular character.
+ sb.append(ch0);
+ skip(1);
+ }
+ }
+
+ // Restore position.
+ reset(savePosition);
+
+ return sb.toString();
+ }
+
+ /**
* Get the correctly localized error message for a given message id format arguments
* @param msgId message id
* @param args format arguments
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -51,6 +51,10 @@
import static jdk.nashorn.internal.parser.TokenType.RBRACKET;
import static jdk.nashorn.internal.parser.TokenType.RPAREN;
import static jdk.nashorn.internal.parser.TokenType.SEMICOLON;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_HEAD;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_MIDDLE;
+import static jdk.nashorn.internal.parser.TokenType.TEMPLATE_TAIL;
import static jdk.nashorn.internal.parser.TokenType.TERNARY;
import static jdk.nashorn.internal.parser.TokenType.WHILE;
@@ -64,6 +68,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+
import jdk.internal.dynalink.support.NameCodec;
import jdk.nashorn.internal.codegen.CompilerConstants;
import jdk.nashorn.internal.codegen.Namespace;
@@ -1926,10 +1931,10 @@
* Literal
* ArrayLiteral
* ObjectLiteral
+ * RegularExpressionLiteral
+ * TemplateLiteral
* ( Expression )
*
- * See 11.1
- *
* Parse primary expression.
* @return Expression node.
*/
@@ -1989,6 +1994,9 @@
expect(RPAREN);
return expression;
+ case TEMPLATE:
+ case TEMPLATE_HEAD:
+ return templateLiteral();
default:
// In this context some operator tokens mark the start of a literal.
@@ -2387,6 +2395,8 @@
}
/**
+ * Parse left hand side expression.
+ *
* LeftHandSideExpression :
* NewExpression
* CallExpression
@@ -2396,10 +2406,8 @@
* CallExpression Arguments
* CallExpression [ Expression ]
* CallExpression . IdentifierName
+ * CallExpression TemplateLiteral
*
- * See 11.2
- *
- * Parse left hand side expression.
* @return Expression node.
*/
private Expression leftHandSideExpression() {
@@ -2426,7 +2434,7 @@
callToken = token;
switch (type) {
- case LPAREN:
+ case LPAREN: {
// Get NEW or FUNCTION arguments.
final List<Expression> arguments = optimizeList(argumentList());
@@ -2434,8 +2442,8 @@
lhs = new CallNode(callLine, callToken, finish, lhs, arguments, false);
break;
-
- case LBRACKET:
+ }
+ case LBRACKET: {
next();
// Get array index.
@@ -2447,8 +2455,8 @@
lhs = new IndexNode(callToken, finish, lhs, rhs);
break;
-
- case PERIOD:
+ }
+ case PERIOD: {
next();
final IdentNode property = getIdentifierName();
@@ -2457,7 +2465,16 @@
lhs = new AccessNode(callToken, finish, lhs, property.getName());
break;
-
+ }
+ case TEMPLATE:
+ case TEMPLATE_HEAD: {
+ // tagged template literal
+ final List<Expression> arguments = templateLiteralArgumentList();
+
+ lhs = new CallNode(callLine, callToken, finish, lhs, arguments, false);
+
+ break;
+ }
default:
break loop;
}
@@ -2516,16 +2533,16 @@
}
/**
+ * Parse member expression.
+ *
* MemberExpression :
* PrimaryExpression
* FunctionExpression
* MemberExpression [ Expression ]
* MemberExpression . IdentifierName
+ * MemberExpression TemplateLiteral
* new MemberExpression Arguments
*
- * See 11.2
- *
- * Parse member expression.
* @return Expression node.
*/
private Expression memberExpression() {
@@ -2582,6 +2599,16 @@
break;
}
+ case TEMPLATE:
+ case TEMPLATE_HEAD: {
+ // tagged template literal
+ final int callLine = line;
+ final List<Expression> arguments = templateLiteralArgumentList();
+
+ lhs = new CallNode(callLine, callToken, finish, lhs, arguments, false);
+
+ break;
+ }
default:
break loop;
}
@@ -3035,6 +3062,20 @@
final ParserState parserState = (ParserState)data.getEndParserState();
assert parserState != null;
+ if (k < stream.last() && start < parserState.position && parserState.position <= Token.descPosition(stream.get(stream.last()))) {
+ // RBRACE is already in the token stream, so fast forward to it
+ for (; k < stream.last(); k++) {
+ long nextToken = stream.get(k + 1);
+ if (Token.descPosition(nextToken) == parserState.position && Token.descType(nextToken) == RBRACE) {
+ token = stream.get(k);
+ type = Token.descType(token);
+ next();
+ assert type == RBRACE && start == parserState.position;
+ return true;
+ }
+ }
+ }
+
stream.reset();
lexer = parserState.createLexer(source, lexer, stream, scripting && !env._no_syntax_extensions, env._es6);
line = parserState.line;
@@ -3425,6 +3466,79 @@
}
}
+ /**
+ * Parse untagged template literal as string concatenation.
+ */
+ private Expression templateLiteral() {
+ assert type == TEMPLATE || type == TEMPLATE_HEAD;
+ final boolean noSubstitutionTemplate = type == TEMPLATE;
+ long lastLiteralToken = token;
+ LiteralNode<?> literal = getLiteral();
+ if (noSubstitutionTemplate) {
+ return literal;
+ }
+
+ Expression concat = literal;
+ TokenType lastLiteralType;
+ do {
+ Expression expression = expression();
+ if (type != TEMPLATE_MIDDLE && type != TEMPLATE_TAIL) {
+ throw error(AbstractParser.message("unterminated.template.expression"), token);
+ }
+ concat = new BinaryNode(Token.recast(lastLiteralToken, TokenType.ADD), concat, expression);
+ lastLiteralType = type;
+ lastLiteralToken = token;
+ literal = getLiteral();
+ concat = new BinaryNode(Token.recast(lastLiteralToken, TokenType.ADD), concat, literal);
+ } while (lastLiteralType == TEMPLATE_MIDDLE);
+ return concat;
+ }
+
+ /**
+ * Parse tagged template literal as argument list.
+ * @return argument list for a tag function call (template object, ...substitutions)
+ */
+ private List<Expression> templateLiteralArgumentList() {
+ assert type == TEMPLATE || type == TEMPLATE_HEAD;
+ final ArrayList<Expression> argumentList = new ArrayList<>();
+ final ArrayList<Expression> rawStrings = new ArrayList<>();
+ final ArrayList<Expression> cookedStrings = new ArrayList<>();
+ argumentList.add(null); // filled at the end
+
+ final long templateToken = token;
+ final boolean hasSubstitutions = type == TEMPLATE_HEAD;
+ addTemplateLiteralString(rawStrings, cookedStrings);
+
+ if (hasSubstitutions) {
+ TokenType lastLiteralType;
+ do {
+ Expression expression = expression();
+ if (type != TEMPLATE_MIDDLE && type != TEMPLATE_TAIL) {
+ throw error(AbstractParser.message("unterminated.template.expression"), token);
+ }
+ argumentList.add(expression);
+
+ lastLiteralType = type;
+ addTemplateLiteralString(rawStrings, cookedStrings);
+ } while (lastLiteralType == TEMPLATE_MIDDLE);
+ }
+
+ final LiteralNode<Expression[]> rawStringArray = LiteralNode.newInstance(templateToken, finish, rawStrings);
+ final LiteralNode<Expression[]> cookedStringArray = LiteralNode.newInstance(templateToken, finish, cookedStrings);
+ final RuntimeNode templateObject = new RuntimeNode(templateToken, finish, RuntimeNode.Request.GET_TEMPLATE_OBJECT, rawStringArray, cookedStringArray);
+ argumentList.set(0, templateObject);
+ return optimizeList(argumentList);
+ }
+
+ private void addTemplateLiteralString(final ArrayList<Expression> rawStrings, final ArrayList<Expression> cookedStrings) {
+ final long stringToken = token;
+ final String rawString = lexer.valueOfRawString(stringToken);
+ final String cookedString = (String) getValue();
+ next();
+ rawStrings.add(LiteralNode.newInstance(stringToken, finish, rawString));
+ cookedStrings.add(LiteralNode.newInstance(stringToken, finish, cookedString));
+ }
+
@Override
public String toString() {
return "'JavaScript Parsing'";
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Token.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Token.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -71,11 +71,21 @@
public static long withDelimiter(final long token) {
final TokenType tokenType = Token.descType(token);
switch(tokenType) {
- case STRING: case ESCSTRING: case EXECSTRING: {
+ case STRING:
+ case ESCSTRING:
+ case EXECSTRING:
+ case TEMPLATE:
+ case TEMPLATE_TAIL: {
final int start = Token.descPosition(token) - 1;
final int len = Token.descLength(token) + 2;
return toDesc(tokenType, start, len);
}
+ case TEMPLATE_HEAD:
+ case TEMPLATE_MIDDLE: {
+ final int start = Token.descPosition(token) - 1;
+ final int len = Token.descLength(token) + 3;
+ return toDesc(tokenType, start, len);
+ }
default: {
return token;
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/TokenType.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/TokenType.java Thu Nov 05 13:43:17 2015 -0800
@@ -183,6 +183,10 @@
XML (LITERAL, null),
OBJECT (LITERAL, null),
ARRAY (LITERAL, null),
+ TEMPLATE (LITERAL, null),
+ TEMPLATE_HEAD (LITERAL, null),
+ TEMPLATE_MIDDLE(LITERAL, null),
+ TEMPLATE_TAIL (LITERAL, null),
COMMALEFT (IR, null),
DECPOSTFIX (IR, null),
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptRuntime.java Thu Nov 05 13:43:17 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2015, 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
@@ -45,6 +45,7 @@
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Objects;
+
import jdk.internal.dynalink.beans.StaticClass;
import jdk.nashorn.api.scripting.JSObject;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
@@ -1050,4 +1051,20 @@
context.getLogger(ApplySpecialization.class).info("Overwrote special name '" + name +"' - invalidating switchpoint");
SwitchPoint.invalidateAll(new SwitchPoint[] { sp });
}
+
+ /**
+ * ES6 12.2.9.3 Runtime Semantics: GetTemplateObject(templateLiteral).
+ *
+ * @param rawStrings array of template raw values
+ * @param cookedStrings array of template values
+ * @return template object
+ */
+ public static ScriptObject GET_TEMPLATE_OBJECT(final Object rawStrings, final Object cookedStrings) {
+ final ScriptObject template = (ScriptObject)cookedStrings;
+ final ScriptObject rawObj = (ScriptObject)rawStrings;
+ assert rawObj.getArray().length() == template.getArray().length();
+ template.addOwnProperty("raw", Property.NOT_WRITABLE | Property.NOT_ENUMERABLE | Property.NOT_CONFIGURABLE, rawObj.freeze());
+ template.freeze();
+ return template;
+ }
}
--- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Fri Oct 30 10:34:46 2015 +0100
+++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Thu Nov 05 13:43:17 2015 -0800
@@ -60,6 +60,7 @@
parser.error.regex.syntax={0}
parser.error.trailing.comma.in.json=Trailing comma is not allowed in JSON
parser.error.missing.const.assignment=Missing assignment to constant "{0}"
+parser.error.unterminated.template.expression=Expected } after expression in template literal
# strict mode error messages
parser.error.strict.no.with="with" statement cannot be used in strict mode
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/es6/template-literals.js Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2015, 2015, 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.
+ */
+
+/**
+ * JDK-8134941: Implement ES6 template literal support
+ *
+ * @test
+ * @option --language=es6
+ */
+
+function tag(template) {
+ return JSON.stringify([template, template.raw, Array.prototype.slice.call(arguments, 1)]);
+}
+
+var i;
+print(`a\x62\u0063\n${i = 0, ++i}${++i} $ {\$$\
+${{toString: function(){return '}';}}}
+${`ne${`st`}e`}d`);
+print(tag`a\x62\u0063\n${i = 0, ++i}${++i} $ {\$$\
+${{toString: function(){return '}';}}}
+${`ne${`st`}e`}d`);
+
+if (eval("`\r`") !== "\n" || eval("`\r\n`") !== "\n") {
+ throw "expected LF";
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nashorn/test/script/basic/es6/template-literals.js.EXPECTED Thu Nov 05 13:43:17 2015 -0800
@@ -0,0 +1,4 @@
+abc
+12 $ {$$}
+nested
+[["abc\n",""," $ {$$","\n","d"],["a\\x62\\u0063\\n",""," $ {\\$$\\\n","\n","d"],[1,2,{},"neste"]]