Merge

Wed, 02 Apr 2014 10:01:38 -0700

author
asaha
date
Wed, 02 Apr 2014 10:01:38 -0700
changeset 1028
feeb67be5886
parent 1027
065b9ded4bf2
parent 982
00b798f15cc6
child 1029
a214741db29f

Merge

.hgtags file | annotate | diff | comparison | revisions
common/autoconf/generated-configure.sh file | annotate | diff | comparison | revisions
common/autoconf/jdk-options.m4 file | annotate | diff | comparison | revisions
     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  

mercurial