1.1 --- a/common/autoconf/toolchain.m4 Thu Sep 05 10:58:25 2013 -0700 1.2 +++ b/common/autoconf/toolchain.m4 Thu Sep 12 12:29:17 2013 -0700 1.3 @@ -44,6 +44,15 @@ 1.4 COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"` 1.5 COMPILER_VENDOR="Sun Studio" 1.6 fi 1.7 + elif test "x$OPENJDK_TARGET_OS" = xaix; then 1.8 + COMPILER_VERSION_TEST=`$COMPILER -qversion 2>&1 | $TAIL -n 1` 1.9 + $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null 1.10 + if test $? -ne 0; then 1.11 + AC_MSG_ERROR([Failed to detect the compiler version of $COMPILER ....]) 1.12 + else 1.13 + COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \([0-9][0-9]\.[0-9][0-9]*\).*/\1/p'` 1.14 + COMPILER_VENDOR='IBM' 1.15 + fi 1.16 elif test "x$OPENJDK_TARGET_OS" = xwindows; then 1.17 # First line typically looks something like: 1.18 # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 1.19 @@ -137,10 +146,14 @@ 1.20 AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG]) 1.21 fi 1.22 BASIC_FIXUP_EXECUTABLE($1) 1.23 - AC_MSG_CHECKING([resolved symbolic links for $1]) 1.24 TEST_COMPILER="[$]$1" 1.25 - BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) 1.26 - AC_MSG_RESULT([$TEST_COMPILER]) 1.27 + # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links 1.28 + # to 'xlc' but it is crucial that we invoke the compiler with the right name! 1.29 + if test "x$OPENJDK_BUILD_OS" != xaix; then 1.30 + AC_MSG_CHECKING([resolved symbolic links for $1]) 1.31 + BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER) 1.32 + AC_MSG_RESULT([$TEST_COMPILER]) 1.33 + fi 1.34 AC_MSG_CHECKING([if $1 is disguised ccache]) 1.35 1.36 COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"` 1.37 @@ -250,6 +263,9 @@ 1.38 COMPILER_CHECK_LIST="cl" 1.39 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 1.40 COMPILER_CHECK_LIST="cc gcc" 1.41 +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then 1.42 + # Do not probe for cc on AIX. 1.43 + COMPILER_CHECK_LIST="xlc_r" 1.44 else 1.45 COMPILER_CHECK_LIST="gcc cc" 1.46 fi 1.47 @@ -258,6 +274,14 @@ 1.48 # Now that we have resolved CC ourself, let autoconf have its go at it 1.49 AC_PROG_CC([$CC]) 1.50 1.51 +# Option used to tell the compiler whether to create 32- or 64-bit executables 1.52 +# Notice that CC contains the full compiler path at this point. 1.53 +case $CC in 1.54 + *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";; 1.55 + *) COMPILER_TARGET_BITS_FLAG="-m";; 1.56 +esac 1.57 +AC_SUBST(COMPILER_TARGET_BITS_FLAG) 1.58 + 1.59 ### Locate C++ compiler (CXX) 1.60 1.61 if test "x$CXX" != x; then 1.62 @@ -266,6 +290,9 @@ 1.63 COMPILER_CHECK_LIST="cl" 1.64 elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then 1.65 COMPILER_CHECK_LIST="CC g++" 1.66 +elif test "x$OPENJDK_TARGET_OS" = "xaix"; then 1.67 + # Do not probe for CC on AIX . 1.68 + COMPILER_CHECK_LIST="xlC_r" 1.69 else 1.70 COMPILER_CHECK_LIST="g++ CC" 1.71 fi 1.72 @@ -307,6 +334,8 @@ 1.73 fi 1.74 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 1.75 ARFLAGS="-r" 1.76 +elif test "x$OPENJDK_TARGET_OS" = xaix; then 1.77 + ARFLAGS="-X64" 1.78 else 1.79 ARFLAGS="" 1.80 fi 1.81 @@ -371,7 +400,7 @@ 1.82 ]) 1.83 1.84 # The version variables used to create RC_FLAGS may be overridden 1.85 - # in a custom configure script, or possibly the command line. 1.86 + # in a custom configure script, or possibly the command line. 1.87 # Let those variables be expanded at make time in spec.gmk. 1.88 # The \$ are escaped to the shell, and the $(...) variables 1.89 # are evaluated by make. 1.90 @@ -550,6 +579,29 @@ 1.91 POST_STRIP_CMD="$STRIP -x" 1.92 POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\"" 1.93 fi 1.94 + if test "x$OPENJDK_TARGET_OS" = xaix; then 1.95 + COMPILER_NAME=xlc 1.96 + PICFLAG="-qpic=large" 1.97 + LIBRARY_PREFIX=lib 1.98 + SHARED_LIBRARY='lib[$]1.so' 1.99 + STATIC_LIBRARY='lib[$]1.a' 1.100 + SHARED_LIBRARY_FLAGS="-qmkshrobj" 1.101 + SHARED_LIBRARY_SUFFIX='.so' 1.102 + STATIC_LIBRARY_SUFFIX='.a' 1.103 + OBJ_SUFFIX='.o' 1.104 + EXE_SUFFIX='' 1.105 + SET_SHARED_LIBRARY_NAME='' 1.106 + SET_SHARED_LIBRARY_MAPFILE='' 1.107 + C_FLAG_REORDER='' 1.108 + CXX_FLAG_REORDER='' 1.109 + SET_SHARED_LIBRARY_ORIGIN='' 1.110 + SET_EXECUTABLE_ORIGIN="" 1.111 + CFLAGS_JDK="" 1.112 + CXXFLAGS_JDK="" 1.113 + CFLAGS_JDKLIB_EXTRA='' 1.114 + POST_STRIP_CMD="$STRIP -X32_64" 1.115 + POST_MCS_CMD="" 1.116 + fi 1.117 if test "x$OPENJDK_TARGET_OS" = xwindows; then 1.118 # If it is not gcc, then assume it is the MS Visual Studio compiler 1.119 COMPILER_NAME=cl 1.120 @@ -723,8 +775,26 @@ 1.121 ;; 1.122 esac 1.123 1.124 - CFLAGS_DEBUG_SYMBOLS="-g -xs" 1.125 - CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" 1.126 + CFLAGS_DEBUG_SYMBOLS="-g -xs" 1.127 + CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs" 1.128 + ;; 1.129 + xlc ) 1.130 + C_FLAG_DEPS="-qmakedep=gcc -MF" 1.131 + CXX_FLAG_DEPS="-qmakedep=gcc -MF" 1.132 + C_O_FLAG_HIGHEST="-O3" 1.133 + C_O_FLAG_HI="-O3 -qstrict" 1.134 + C_O_FLAG_NORM="-O2" 1.135 + C_O_FLAG_NONE="" 1.136 + CXX_O_FLAG_HIGHEST="-O3" 1.137 + CXX_O_FLAG_HI="-O3 -qstrict" 1.138 + CXX_O_FLAG_NORM="-O2" 1.139 + CXX_O_FLAG_NONE="" 1.140 + CFLAGS_DEBUG_SYMBOLS="-g" 1.141 + CXXFLAGS_DEBUG_SYMBOLS="-g" 1.142 + LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall" 1.143 + CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" 1.144 + CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt" 1.145 + ;; 1.146 esac 1.147 ;; 1.148 CL ) 1.149 @@ -835,6 +905,13 @@ 1.150 LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext" 1.151 LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib" 1.152 ;; 1.153 + xlc ) 1.154 + CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" 1.155 + CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC" 1.156 + 1.157 + LDFLAGS_JDK="$LDFLAGS_JDK" 1.158 + LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK" 1.159 + ;; 1.160 cl ) 1.161 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \ 1.162 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \ 1.163 @@ -904,6 +981,9 @@ 1.164 if test "x$OPENJDK_TARGET_OS" = xsolaris; then 1.165 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS" 1.166 fi 1.167 +if test "x$OPENJDK_TARGET_OS" = xaix; then 1.168 + CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64" 1.169 +fi 1.170 if test "x$OPENJDK_TARGET_OS" = xmacosx; then 1.171 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT" 1.172 # Setting these parameters makes it an error to link to macosx APIs that are 1.173 @@ -1073,17 +1153,17 @@ 1.174 # ZERO_ARCHFLAG tells the compiler which mode to build for 1.175 case "${OPENJDK_TARGET_CPU}" in 1.176 s390) 1.177 - ZERO_ARCHFLAG="-m31" 1.178 + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31" 1.179 ;; 1.180 *) 1.181 - ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}" 1.182 + ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" 1.183 esac 1.184 TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""]) 1.185 AC_SUBST(ZERO_ARCHFLAG) 1.186 1.187 - # Check that the compiler supports -mX flags 1.188 + # Check that the compiler supports -mX (or -qX on AIX) flags 1.189 # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does 1.190 - TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}], 1.191 + TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}], 1.192 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true], 1.193 [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false]) 1.194 AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)