Wed, 02 Apr 2014 10:01:38 -0700
Merge
1.1 --- a/.hgtags Mon Mar 31 14:06:57 2014 -0700 1.2 +++ b/.hgtags Wed Apr 02 10:01:38 2014 -0700 1.3 @@ -280,3 +280,4 @@ 1.4 69e0af208dad70fdef65a89ab2c4c468ed9e24b8 jdk8u20-b05 1.5 ae6a3aec6aa29509a0fd5f53709889b99b1e27da jdk8u20-b06 1.6 6403ef94cb0db32d9221a5e8f09f3664cd7744dc jdk8u20-b07 1.7 +b7750b6ee1578fd5b2b1f6758f905b332503d8ed jdk8u20-b08
2.1 --- a/common/autoconf/boot-jdk.m4 Mon Mar 31 14:06:57 2014 -0700 2.2 +++ b/common/autoconf/boot-jdk.m4 Wed Apr 02 10:01:38 2014 -0700 2.3 @@ -316,7 +316,7 @@ 2.4 2.5 # Minimum amount of heap memory. 2.6 ADD_JVM_ARG_IF_OK([-Xms64M],boot_jdk_jvmargs,[$JAVA]) 2.7 - if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then 2.8 + if test "x$OPENJDK_TARGET_OS" = "xmacosx" || test "x$OPENJDK_TARGET_CPU" = "xppc64" ; then 2.9 # Why does macosx need more heap? Its the huge JDK batch. 2.10 ADD_JVM_ARG_IF_OK([-Xmx1600M],boot_jdk_jvmargs,[$JAVA]) 2.11 else
3.1 --- a/common/autoconf/build-aux/config.guess Mon Mar 31 14:06:57 2014 -0700 3.2 +++ b/common/autoconf/build-aux/config.guess Wed Apr 02 10:01:38 2014 -0700 3.3 @@ -60,4 +60,20 @@ 3.4 esac 3.5 fi 3.6 3.7 +# Test and fix architecture string on AIX 3.8 +# On AIX 'config.guess' returns 'powerpc' as architecture but 'powerpc' is 3.9 +# implicitely handled as 32-bit architecture in 'platform.m4' so we check 3.10 +# for the kernel mode rewrite it to 'powerpc64' if we'Re running in 64-bit mode. 3.11 +# The check could also be done with `/usr/sbin/prtconf | grep "Kernel Type" | grep "64-bit"` 3.12 +echo $OUT | grep powerpc-ibm-aix > /dev/null 2> /dev/null 3.13 +if test $? = 0; then 3.14 + if [ -x /bin/getconf ] ; then 3.15 + KERNEL_BITMODE=`getconf KERNEL_BITMODE` 3.16 + if [ "$KERNEL_BITMODE" = "32" ]; then 3.17 + KERNEL_BITMODE="" 3.18 + fi 3.19 + fi 3.20 + OUT=powerpc$KERNEL_BITMODE`echo $OUT | sed -e 's/[^-]*//'` 3.21 +fi 3.22 + 3.23 echo $OUT
4.1 --- a/common/autoconf/build-performance.m4 Mon Mar 31 14:06:57 2014 -0700 4.2 +++ b/common/autoconf/build-performance.m4 Wed Apr 02 10:01:38 2014 -0700 4.3 @@ -41,6 +41,9 @@ 4.4 # Looks like a MacOSX system 4.5 NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk '{print [$]5}'` 4.6 FOUND_CORES=yes 4.7 + elif test "x$OPENJDK_BUILD_OS" = xaix ; then 4.8 + NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'` 4.9 + FOUND_CORES=yes 4.10 elif test -n "$NUMBER_OF_PROCESSORS"; then 4.11 # On windows, look in the env 4.12 NUM_CORES=$NUMBER_OF_PROCESSORS 4.13 @@ -68,8 +71,8 @@ 4.14 MEMORY_SIZE=`expr $MEMORY_SIZE / 1024` 4.15 FOUND_MEM=yes 4.16 elif test -x /usr/sbin/prtconf; then 4.17 - # Looks like a Solaris system 4.18 - MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'` 4.19 + # Looks like a Solaris or AIX system 4.20 + MEMORY_SIZE=`/usr/sbin/prtconf | grep "^Memory [[Ss]]ize" | awk '{ print [$]3 }'` 4.21 FOUND_MEM=yes 4.22 elif test -x /usr/sbin/system_profiler; then 4.23 # Looks like a MacOSX system
5.1 --- a/common/autoconf/configure.ac Mon Mar 31 14:06:57 2014 -0700 5.2 +++ b/common/autoconf/configure.ac Wed Apr 02 10:01:38 2014 -0700 5.3 @@ -88,6 +88,7 @@ 5.4 5.5 # These are needed to be able to create a configuration name (and thus the output directory) 5.6 JDKOPT_SETUP_JDK_VARIANT 5.7 +JDKOPT_SETUP_JVM_INTERPRETER 5.8 JDKOPT_SETUP_JVM_VARIANTS 5.9 JDKOPT_SETUP_DEBUG_LEVEL 5.10
6.1 --- a/common/autoconf/help.m4 Mon Mar 31 14:06:57 2014 -0700 6.2 +++ b/common/autoconf/help.m4 Wed Apr 02 10:01:38 2014 -0700 6.3 @@ -52,8 +52,6 @@ 6.4 pkgutil_help $MISSING_DEPENDENCY ;; 6.5 pkgadd) 6.6 pkgadd_help $MISSING_DEPENDENCY ;; 6.7 - * ) 6.8 - break ;; 6.9 esac 6.10 6.11 if test "x$PKGHANDLER_COMMAND" != x; then 6.12 @@ -92,8 +90,6 @@ 6.13 If you put the resulting build in \"C:\Program Files\GnuWin32\", it will be found automatically." 6.14 fi 6.15 ;; 6.16 - * ) 6.17 - break ;; 6.18 esac 6.19 } 6.20 6.21 @@ -119,8 +115,6 @@ 6.22 PKGHANDLER_COMMAND="sudo apt-get install libX11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;; 6.23 ccache) 6.24 PKGHANDLER_COMMAND="sudo apt-get install ccache" ;; 6.25 - * ) 6.26 - break ;; 6.27 esac 6.28 } 6.29 6.30 @@ -142,8 +136,6 @@ 6.31 PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel" ;; 6.32 ccache) 6.33 PKGHANDLER_COMMAND="sudo yum install ccache" ;; 6.34 - * ) 6.35 - break ;; 6.36 esac 6.37 } 6.38
7.1 --- a/common/autoconf/hotspot-spec.gmk.in Mon Mar 31 14:06:57 2014 -0700 7.2 +++ b/common/autoconf/hotspot-spec.gmk.in Wed Apr 02 10:01:38 2014 -0700 7.3 @@ -91,6 +91,11 @@ 7.4 ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR) 7.5 ALT_EXPORT_PATH=$(HOTSPOT_DIST) 7.6 7.7 +JVM_INTERPRETER:=@JVM_INTERPRETER@ 7.8 +ifeq ($(JVM_INTERPRETER), cpp) 7.9 + CC_INTERP=true 7.10 +endif 7.11 + 7.12 HOTSPOT_MAKE_ARGS:=@HOTSPOT_MAKE_ARGS@ @STATIC_CXX_SETTING@ 7.13 # This is used from the libjvm build for C/C++ code. 7.14 HOTSPOT_BUILD_JOBS:=$(JOBS)
8.1 --- a/common/autoconf/jdk-options.m4 Mon Mar 31 14:06:57 2014 -0700 8.2 +++ b/common/autoconf/jdk-options.m4 Wed Apr 02 10:01:38 2014 -0700 8.3 @@ -51,6 +51,33 @@ 8.4 AC_MSG_RESULT([$JDK_VARIANT]) 8.5 ]) 8.6 8.7 +AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_INTERPRETER], 8.8 +[ 8.9 +############################################################################### 8.10 +# 8.11 +# Check which interpreter of the JVM we want to build. 8.12 +# Currently we have: 8.13 +# template: Template interpreter (the default) 8.14 +# cpp : C++ interpreter 8.15 +AC_MSG_CHECKING([which interpreter of the JVM to build]) 8.16 +AC_ARG_WITH([jvm-interpreter], [AS_HELP_STRING([--with-jvm-interpreter], 8.17 + [JVM interpreter to build (template, cpp) @<:@template@:>@])]) 8.18 + 8.19 +if test "x$with_jvm_interpreter" = x; then 8.20 + with_jvm_interpreter="template" 8.21 +fi 8.22 + 8.23 +JVM_INTERPRETER="$with_jvm_interpreter" 8.24 + 8.25 +if test "x$JVM_INTERPRETER" != xtemplate && test "x$JVM_INTERPRETER" != xcpp; then 8.26 + AC_MSG_ERROR([The available JVM interpreters are: template, cpp]) 8.27 +fi 8.28 + 8.29 +AC_SUBST(JVM_INTERPRETER) 8.30 + 8.31 +AC_MSG_RESULT([$with_jvm_interpreter]) 8.32 +]) 8.33 + 8.34 AC_DEFUN_ONCE([JDKOPT_SETUP_JVM_VARIANTS], 8.35 [ 8.36 8.37 @@ -65,19 +92,20 @@ 8.38 # ie normal interpreter and C1, only the serial GC, kernel jvmti etc 8.39 # zero: no machine code interpreter, no compiler 8.40 # zeroshark: zero interpreter and shark/llvm compiler backend 8.41 +# core: interpreter only, no compiler (only works on some platforms) 8.42 AC_MSG_CHECKING([which variants of the JVM to build]) 8.43 AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants], 8.44 - [JVM variants (separated by commas) to build (server, client, minimal1, kernel, zero, zeroshark) @<:@server@:>@])]) 8.45 + [JVM variants (separated by commas) to build (server, client, minimal1, kernel, zero, zeroshark, core) @<:@server@:>@])]) 8.46 8.47 if test "x$with_jvm_variants" = x; then 8.48 with_jvm_variants="server" 8.49 fi 8.50 8.51 JVM_VARIANTS=",$with_jvm_variants," 8.52 - TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//'` 8.53 + TEST_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,//' -e 's/client,//' -e 's/minimal1,//' -e 's/kernel,//' -e 's/zero,//' -e 's/zeroshark,//' -e 's/core,//'` 8.54 8.55 if test "x$TEST_VARIANTS" != "x,"; then 8.56 - AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark]) 8.57 + AC_MSG_ERROR([The available JVM variants are: server, client, minimal1, kernel, zero, zeroshark, core]) 8.58 fi 8.59 AC_MSG_RESULT([$with_jvm_variants]) 8.60 8.61 @@ -87,6 +115,7 @@ 8.62 JVM_VARIANT_KERNEL=`$ECHO "$JVM_VARIANTS" | $SED -e '/,kernel,/!s/.*/false/g' -e '/,kernel,/s/.*/true/g'` 8.63 JVM_VARIANT_ZERO=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zero,/!s/.*/false/g' -e '/,zero,/s/.*/true/g'` 8.64 JVM_VARIANT_ZEROSHARK=`$ECHO "$JVM_VARIANTS" | $SED -e '/,zeroshark,/!s/.*/false/g' -e '/,zeroshark,/s/.*/true/g'` 8.65 + JVM_VARIANT_CORE=`$ECHO "$JVM_VARIANTS" | $SED -e '/,core,/!s/.*/false/g' -e '/,core,/s/.*/true/g'` 8.66 8.67 if test "x$JVM_VARIANT_CLIENT" = xtrue; then 8.68 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then 8.69 @@ -106,7 +135,7 @@ 8.70 8.71 # Replace the commas with AND for use in the build directory name. 8.72 ANDED_JVM_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/^,//' -e 's/,$//' -e 's/,/AND/'` 8.73 - COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/'` 8.74 + COUNT_VARIANTS=`$ECHO "$JVM_VARIANTS" | $SED -e 's/server,/1/' -e 's/client,/1/' -e 's/minimal1,/1/' -e 's/kernel,/1/' -e 's/zero,/1/' -e 's/zeroshark,/1/' -e 's/core,/1/'` 8.75 if test "x$COUNT_VARIANTS" != "x,1"; then 8.76 BUILDING_MULTIPLE_JVM_VARIANTS=yes 8.77 else 8.78 @@ -120,6 +149,7 @@ 8.79 AC_SUBST(JVM_VARIANT_KERNEL) 8.80 AC_SUBST(JVM_VARIANT_ZERO) 8.81 AC_SUBST(JVM_VARIANT_ZEROSHARK) 8.82 + AC_SUBST(JVM_VARIANT_CORE) 8.83 8.84 INCLUDE_SA=true 8.85 if test "x$JVM_VARIANT_ZERO" = xtrue ; then 8.86 @@ -128,6 +158,9 @@ 8.87 if test "x$JVM_VARIANT_ZEROSHARK" = xtrue ; then 8.88 INCLUDE_SA=false 8.89 fi 8.90 + if test "x$VAR_CPU" = xppc64 ; then 8.91 + INCLUDE_SA=false 8.92 + fi 8.93 AC_SUBST(INCLUDE_SA) 8.94 8.95 if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then 8.96 @@ -236,6 +269,10 @@ 8.97 HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}shark " 8.98 fi 8.99 8.100 + if test "x$JVM_VARIANT_CORE" = xtrue; then 8.101 + HOTSPOT_TARGET="$HOTSPOT_TARGET${HOTSPOT_DEBUG_LEVEL}core " 8.102 + fi 8.103 + 8.104 HOTSPOT_TARGET="$HOTSPOT_TARGET docs export_$HOTSPOT_EXPORT" 8.105 8.106 # On Macosx universal binaries are produced, but they only contain
9.1 --- a/common/autoconf/libraries.m4 Mon Mar 31 14:06:57 2014 -0700 9.2 +++ b/common/autoconf/libraries.m4 Wed Apr 02 10:01:38 2014 -0700 9.3 @@ -43,6 +43,14 @@ 9.4 AC_MSG_RESULT([alsa pulse]) 9.5 fi 9.6 9.7 + if test "x$OPENJDK_TARGET_OS" = xaix; then 9.8 + AC_MSG_CHECKING([what is not needed on AIX?]) 9.9 + ALSA_NOT_NEEDED=yes 9.10 + PULSE_NOT_NEEDED=yes 9.11 + AC_MSG_RESULT([alsa pulse]) 9.12 + fi 9.13 + 9.14 + 9.15 if test "x$OPENJDK_TARGET_OS" = xwindows; then 9.16 AC_MSG_CHECKING([what is not needed on Windows?]) 9.17 CUPS_NOT_NEEDED=yes
10.1 --- a/common/autoconf/platform.m4 Mon Mar 31 14:06:57 2014 -0700 10.2 +++ b/common/autoconf/platform.m4 Wed Apr 02 10:01:38 2014 -0700 10.3 @@ -126,6 +126,11 @@ 10.4 VAR_OS_API=winapi 10.5 VAR_OS_ENV=windows.msys 10.6 ;; 10.7 + *aix*) 10.8 + VAR_OS=aix 10.9 + VAR_OS_API=posix 10.10 + VAR_OS_ENV=aix 10.11 + ;; 10.12 *) 10.13 AC_MSG_ERROR([unsupported operating system $1]) 10.14 ;; 10.15 @@ -432,9 +437,9 @@ 10.16 # keep track of these additions in ADDED_CFLAGS etc. These 10.17 # will later be checked to make sure only controlled additions 10.18 # have been made to CFLAGS etc. 10.19 - ADDED_CFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 10.20 - ADDED_CXXFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 10.21 - ADDED_LDFLAGS=" -m${OPENJDK_TARGET_CPU_BITS}" 10.22 + ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" 10.23 + ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" 10.24 + ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" 10.25 10.26 CFLAGS="${CFLAGS}${ADDED_CFLAGS}" 10.27 CXXFLAGS="${CXXFLAGS}${ADDED_CXXFLAGS}" 10.28 @@ -454,8 +459,9 @@ 10.29 # is made at runtime.) 10.30 # 10.31 10.32 - if test "x$OPENJDK_TARGET_OS" = xsolaris; then 10.33 - # Always specify -m flags on Solaris 10.34 + if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then 10.35 + # Always specify -m flag on Solaris 10.36 + # And -q on AIX because otherwise the compiler produces 32-bit objects by default 10.37 PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 10.38 elif test "x$COMPILE_TYPE" = xreduced; then 10.39 if test "x$OPENJDK_TARGET_OS" != xwindows; then 10.40 @@ -477,19 +483,34 @@ 10.41 10.42 AC_CHECK_SIZEOF([int *], [1111]) 10.43 10.44 - if test "x$SIZEOF_INT_P" != "x$ac_cv_sizeof_int_p"; then 10.45 - # Workaround autoconf bug, see http://lists.gnu.org/archive/html/autoconf/2010-07/msg00004.html 10.46 - SIZEOF_INT_P="$ac_cv_sizeof_int_p" 10.47 - fi 10.48 - 10.49 - if test "x$SIZEOF_INT_P" = x; then 10.50 + # AC_CHECK_SIZEOF defines 'ac_cv_sizeof_int_p' to hold the number of bytes used by an 'int*' 10.51 + if test "x$ac_cv_sizeof_int_p" = x; then 10.52 # The test failed, lets stick to the assumed value. 10.53 AC_MSG_WARN([The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS.]) 10.54 else 10.55 - TESTED_TARGET_CPU_BITS=`expr 8 \* $SIZEOF_INT_P` 10.56 + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` 10.57 10.58 if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then 10.59 - AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)]) 10.60 + # This situation may happen on 64-bit platforms where the compiler by default only generates 32-bit objects 10.61 + # Let's try to implicitely set the compilers target architecture and retry the test 10.62 + AC_MSG_NOTICE([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS).]) 10.63 + AC_MSG_NOTICE([I'll retry after setting the platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}]) 10.64 + PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS 10.65 + 10.66 + # We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value! 10.67 + unset ac_cv_sizeof_int_p 10.68 + # And we have to undef the definition of SIZEOF_INT_P in confdefs.h by the previous invocation of AC_CHECK_SIZEOF 10.69 + cat >>confdefs.h <<_ACEOF 10.70 +#undef SIZEOF_INT_P 10.71 +_ACEOF 10.72 + 10.73 + AC_CHECK_SIZEOF([int *], [1111]) 10.74 + 10.75 + TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p` 10.76 + 10.77 + if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then 10.78 + AC_MSG_ERROR([The tested number of bits in the target ($TESTED_TARGET_CPU_BITS) differs from the number of bits expected to be found in the target ($OPENJDK_TARGET_CPU_BITS)]) 10.79 + fi 10.80 fi 10.81 fi 10.82
11.1 --- a/common/autoconf/spec.gmk.in Mon Mar 31 14:06:57 2014 -0700 11.2 +++ b/common/autoconf/spec.gmk.in Wed Apr 02 10:01:38 2014 -0700 11.3 @@ -208,6 +208,7 @@ 11.4 JVM_VARIANT_KERNEL:=@JVM_VARIANT_KERNEL@ 11.5 JVM_VARIANT_ZERO:=@JVM_VARIANT_ZERO@ 11.6 JVM_VARIANT_ZEROSHARK:=@JVM_VARIANT_ZEROSHARK@ 11.7 +JVM_VARIANT_CORE:=@JVM_VARIANT_CORE@ 11.8 11.9 # Universal binaries on macosx 11.10 MACOSX_UNIVERSAL=@MACOSX_UNIVERSAL@ 11.11 @@ -297,6 +298,8 @@ 11.12 COMPILER_TYPE:=@COMPILER_TYPE@ 11.13 COMPILER_NAME:=@COMPILER_NAME@ 11.14 11.15 +# Option used to tell the compiler whether to create 32- or 64-bit executables 11.16 +COMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@ 11.17 COMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@ 11.18 11.19 CC_OUT_OPTION:=@CC_OUT_OPTION@ 11.20 @@ -340,6 +343,11 @@ 11.21 # The linker can be gcc or ld on posix systems, or link.exe on windows systems. 11.22 LD:=@FIXPATH@ @LD@ 11.23 11.24 +# The linker on older SuSE distros (e.g. on SLES 10) complains with: 11.25 +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." 11.26 +# if feeded with a version script which contains named tags. 11.27 +USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@ 11.28 + 11.29 # LDFLAGS used to link the jdk native libraries (C-code) 11.30 LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@ 11.31 LDFLAGS_JDKLIB_SUFFIX:=@LDFLAGS_JDKLIB_SUFFIX@
12.1 --- a/common/autoconf/toolchain.m4 Mon Mar 31 14:06:57 2014 -0700 12.2 +++ b/common/autoconf/toolchain.m4 Wed Apr 02 10:01:38 2014 -0700 12.3 @@ -44,6 +44,15 @@ 12.4 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"` 12.5 COMPILER_VENDOR="Sun Studio" 12.6 fi 12.7 + elif test "x$OPENJDK_TARGET_OS" = xaix; then 12.8 + COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1` 12.9 + $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null 12.10 + if test $? -ne 0; then 12.11 + AC_MSG_ERROR([Failed to detect the compiler version of $COMPILER ....]) 12.12 + else 12.13 + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \([0-9][0-9]\.[0-9][0-9]*\).*/\1/p'` 12.14 + COMPILER_VENDOR='IBM' 12.15 + fi 12.16 elif test "x$OPENJDK_TARGET_OS" = xwindows; then 12.17 # First line typically looks something like: 12.18 # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 12.19 @@ -137,10 +146,14 @@ 12.20 AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) 12.21 fi 12.22 BASIC_FIXUP_EXECUTABLE($1) 12.23 - AC_MSG_CHECKING([resolved symbolic links for $1]) 12.24 TEST_COMPILER="[$]$1" 12.25 - BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) 12.26 - AC_MSG_RESULT([$TEST_COMPILER]) 12.27 + # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links 12.28 + # to 'xlc' but it is crucial that we invoke the compiler with the right name! 12.29 + if test "x$OPENJDK_BUILD_OS" != xaix; then 12.30 + AC_MSG_CHECKING([resolved symbolic links for $1]) 12.31 + BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) 12.32 + AC_MSG_RESULT([$TEST_COMPILER]) 12.33 + fi 12.34 AC_MSG_CHECKING([if $1 is disguised ccache]) 12.35 12.36 COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"` 12.37 @@ -254,6 +267,9 @@ 12.38 COMPILER_CHECK_LIST="cl" 12.39 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 12.40 COMPILER_CHECK_LIST="cc gcc" 12.41 + elif test "x$OPENJDK_TARGET_OS" = "xaix"; then 12.42 + # Do not probe for cc on AIX. 12.43 + COMPILER_CHECK_LIST="xlc_r" 12.44 else 12.45 COMPILER_CHECK_LIST="gcc cc" 12.46 fi 12.47 @@ -262,6 +278,14 @@ 12.48 # Now that we have resolved CC ourself, let autoconf have its go at it 12.49 AC_PROG_CC([$CC]) 12.50 12.51 + # Option used to tell the compiler whether to create 32- or 64-bit executables 12.52 + # Notice that CC contains the full compiler path at this point. 12.53 + case $CC in 12.54 + *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";; 12.55 + *) COMPILER_TARGET_BITS_FLAG="-m";; 12.56 + esac 12.57 + AC_SUBST(COMPILER_TARGET_BITS_FLAG) 12.58 + 12.59 ### Locate C++ compiler (CXX) 12.60 12.61 if test "x$CXX" != x; then 12.62 @@ -270,6 +294,9 @@ 12.63 COMPILER_CHECK_LIST="cl" 12.64 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 12.65 COMPILER_CHECK_LIST="CC g++" 12.66 + elif test "x$OPENJDK_TARGET_OS" = "xaix"; then 12.67 + # Do not probe for CC on AIX . 12.68 + COMPILER_CHECK_LIST="xlC_r" 12.69 else 12.70 COMPILER_CHECK_LIST="g++ CC" 12.71 fi 12.72 @@ -311,6 +338,8 @@ 12.73 fi 12.74 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 12.75 ARFLAGS="-r" 12.76 + elif test "x$OPENJDK_TARGET_OS" = xaix; then 12.77 + ARFLAGS="-X64" 12.78 else 12.79 ARFLAGS="" 12.80 fi 12.81 @@ -554,6 +583,29 @@ 12.82 POST_STRIP_CMD="$STRIP -x" 12.83 POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\"" 12.84 fi 12.85 + if test "x$OPENJDK_TARGET_OS" = xaix; then 12.86 + COMPILER_NAME=xlc 12.87 + PICFLAG="-qpic=large" 12.88 + LIBRARY_PREFIX=lib 12.89 + SHARED_LIBRARY='lib[$]1.so' 12.90 + STATIC_LIBRARY='lib[$]1.a' 12.91 + SHARED_LIBRARY_FLAGS="-qmkshrobj" 12.92 + SHARED_LIBRARY_SUFFIX='.so' 12.93 + STATIC_LIBRARY_SUFFIX='.a' 12.94 + OBJ_SUFFIX='.o' 12.95 + EXE_SUFFIX='' 12.96 + SET_SHARED_LIBRARY_NAME='' 12.97 + SET_SHARED_LIBRARY_MAPFILE='' 12.98 + C_FLAG_REORDER='' 12.99 + CXX_FLAG_REORDER='' 12.100 + SET_SHARED_LIBRARY_ORIGIN='' 12.101 + SET_EXECUTABLE_ORIGIN="" 12.102 + CFLAGS_JDK="" 12.103 + CXXFLAGS_JDK="" 12.104 + CFLAGS_JDKLIB_EXTRA='' 12.105 + POST_STRIP_CMD="$STRIP -X32_64" 12.106 + POST_MCS_CMD="" 12.107 + fi 12.108 if test "x$OPENJDK_TARGET_OS" = xwindows; then 12.109 # If it is not gcc, then assume it is the MS Visual Studio compiler 12.110 COMPILER_NAME=cl 12.111 @@ -730,6 +782,24 @@ 12.112 12.113 CFLAGS_DEBUG_SYMBOLS="-g -xs" 12.114 CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" 12.115 + ;; 12.116 + xlc ) 12.117 + C_FLAG_DEPS="-qmakedep=gcc -MF" 12.118 + CXX_FLAG_DEPS="-qmakedep=gcc -MF" 12.119 + C_O_FLAG_HIGHEST="-O3" 12.120 + C_O_FLAG_HI="-O3 -qstrict" 12.121 + C_O_FLAG_NORM="-O2" 12.122 + C_O_FLAG_NONE="" 12.123 + CXX_O_FLAG_HIGHEST="-O3" 12.124 + CXX_O_FLAG_HI="-O3 -qstrict" 12.125 + CXX_O_FLAG_NORM="-O2" 12.126 + CXX_O_FLAG_NONE="" 12.127 + CFLAGS_DEBUG_SYMBOLS="-g" 12.128 + CXXFLAGS_DEBUG_SYMBOLS="-g" 12.129 + LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall" 12.130 + CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" 12.131 + CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" 12.132 + ;; 12.133 esac 12.134 ;; 12.135 CL ) 12.136 @@ -840,6 +910,13 @@ 12.137 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" 12.138 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" 12.139 ;; 12.140 + xlc ) 12.141 + CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" 12.142 + CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" 12.143 + 12.144 + LDFLAGS_JDK="$LDFLAGS_JDK" 12.145 + LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" 12.146 + ;; 12.147 cl ) 12.148 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ 12.149 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ 12.150 @@ -909,6 +986,9 @@ 12.151 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 12.152 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" 12.153 fi 12.154 + if test "x$OPENJDK_TARGET_OS" = xaix; then 12.155 + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" 12.156 + fi 12.157 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 12.158 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" 12.159 # Setting these parameters makes it an error to link to macosx APIs that are 12.160 @@ -1076,20 +1156,38 @@ 12.161 # ZERO_ARCHFLAG tells the compiler which mode to build for 12.162 case "${OPENJDK_TARGET_CPU}" in 12.163 s390) 12.164 - ZERO_ARCHFLAG="-m31" 12.165 + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31" 12.166 ;; 12.167 *) 12.168 - ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" 12.169 + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" 12.170 esac 12.171 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""]) 12.172 AC_SUBST(ZERO_ARCHFLAG) 12.173 12.174 - # Check that the compiler supports -mX flags 12.175 + # Check that the compiler supports -mX (or -qX on AIX) flags 12.176 # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does 12.177 - TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}], 12.178 + TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}], 12.179 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], 12.180 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) 12.181 AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG) 12.182 + 12.183 + 12.184 + # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed in executable.' 12.185 + USING_BROKEN_SUSE_LD=no 12.186 + if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$GCC" = xyes; then 12.187 + AC_MSG_CHECKING([for broken SuSE 'ld' which only understands anonymous version tags in executables]) 12.188 + echo "SUNWprivate_1.1 { local: *; };" > version-script.map 12.189 + echo "int main() { }" > main.c 12.190 + if $CXX -Xlinker -version-script=version-script.map main.c 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then 12.191 + AC_MSG_RESULT(no) 12.192 + USING_BROKEN_SUSE_LD=no 12.193 + else 12.194 + AC_MSG_RESULT(yes) 12.195 + USING_BROKEN_SUSE_LD=yes 12.196 + fi 12.197 + rm -rf version-script.map main.c 12.198 + fi 12.199 + AC_SUBST(USING_BROKEN_SUSE_LD) 12.200 ]) 12.201 12.202 # Setup the JTREG paths
13.1 --- a/make/common/JavaCompilation.gmk Mon Mar 31 14:06:57 2014 -0700 13.2 +++ b/make/common/JavaCompilation.gmk Wed Apr 02 10:01:38 2014 -0700 13.3 @@ -163,11 +163,12 @@ 13.4 13.5 # The capture contents macro finds all files (matching the patterns, typically 13.6 # .class and .prp) that are newer than the jar-file, ie the new content to be put into the jar. 13.7 + # NOTICE: please leave the parentheses space separated otherwise the AIX build will break! 13.8 $1_CAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS), \ 13.9 - (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \ 13.10 + ( ( $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \ 13.11 $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' && \ 13.12 - $(ECHO) $$(subst $$(src)/,,$$($1_EXTRA_FILES))) > \ 13.13 - $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE)) 13.14 + $(ECHO) $$(subst $$(src)/,,$$($1_EXTRA_FILES) ) ) > \ 13.15 + $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) ) 13.16 # The capture metainf macro finds all files below the META-INF directory that are newer than the jar-file. 13.17 ifeq (,$$($1_SKIP_METAINF)) 13.18 $1_CAPTURE_METAINF =$$(foreach src,$$($1_SRCS),($(FIND) $$(src)/META-INF -type f -a -newer $$@ 2> /dev/null | $(SED) 's|$$(src)/||g' >> $$(src)/_the.$$($1_JARNAME)_contents ) $$(NEWLINE)) 13.19 @@ -176,19 +177,20 @@ 13.20 # tells us what to remove from the jar-file. 13.21 $1_CAPTURE_DELETES=$$(foreach src,$$($1_SRCS),($(FIND) $$(src) -name _the.package.deleted -newer $$@ -exec $(SED) 's|$$(src)||g' \{\} >> $$($1_DELETES_FILE) \;) $$(NEWLINE)) 13.22 # The update contents macro updates the jar file with the previously capture contents. 13.23 - # xargs is used to trim the whitespace from the contents file, to see if it is empty. 13.24 + # Use 'wc -w' to see if the contents file is empty. 13.25 $1_UPDATE_CONTENTS=$$(foreach src,$$($1_SRCS), \ 13.26 (cd $$(src) && \ 13.27 - if [ -n "`$(CAT) _the.$$($1_JARNAME)_contents | $(XARGS)`" ]; then \ 13.28 + if [ "`$(WC) -w _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'`" -gt "0" ]; then \ 13.29 $(ECHO) " updating" `$(WC) -l _the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \ 13.30 $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @_the.$$($1_JARNAME)_contents; \ 13.31 fi) $$(NEWLINE)) 13.32 # The s-variants of the above macros are used when the jar is created from scratch. 13.33 + # NOTICE: please leave the parentheses space separated otherwise the AIX build will break! 13.34 $1_SCAPTURE_CONTENTS=$$(foreach src,$$($1_SRCS), \ 13.35 - (($(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \ 13.36 + ( ( $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \ 13.37 $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/||g' && \ 13.38 - $$(subst $$(src)/,,$(ECHO) $$($1_EXTRA_FILES))) > \ 13.39 - $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE)) 13.40 + $$(subst $$(src)/,,$(ECHO) $$($1_EXTRA_FILES) ) ) > \ 13.41 + $$(src)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) ) 13.42 13.43 ifeq (,$$($1_SKIP_METAINF)) 13.44 $1_SCAPTURE_METAINF=$$(foreach src,$$($1_SRCS), \
14.1 --- a/make/common/NativeCompilation.gmk Mon Mar 31 14:06:57 2014 -0700 14.2 +++ b/make/common/NativeCompilation.gmk Wed Apr 02 10:01:38 2014 -0700 14.3 @@ -501,7 +501,7 @@ 14.4 # Generating a static library, ie object file archive. 14.5 $$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) 14.6 $$(call ARCHIVING_MSG,$$($1_LIBRARY)) 14.7 - $(AR) $$($1_AR_FLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_EXPECTED_OBJS) \ 14.8 + $(AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_EXPECTED_OBJS) \ 14.9 $$($1_RES) $$($1_LDFLAGS_SUFFIX) $$($1_EXTRA_LDFLAGS_SUFFIX) 14.10 endif 14.11