common/autoconf/toolchain.m4

changeset 971
584dc2e95e04
parent 970
e885c762cedd
child 972
f3697e0783e2
     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)

mercurial