common/autoconf/toolchain.m4
changeset 22473 210fdf11f9df
parent 22458 6a74da13c52f
parent 22472 684253431974
child 22475 777928354ad9
equal deleted inserted replaced
22459:def24c6b5019 22473:210fdf11f9df
    42       AC_MSG_ERROR([Sun Studio compiler is required. Try setting --with-tools-dir.])
    42       AC_MSG_ERROR([Sun Studio compiler is required. Try setting --with-tools-dir.])
    43     else
    43     else
    44       COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"`
    44       COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/p"`
    45       COMPILER_VENDOR="Sun Studio"
    45       COMPILER_VENDOR="Sun Studio"
    46     fi
    46     fi
       
    47   elif test  "x$OPENJDK_TARGET_OS" = xaix; then
       
    48       COMPILER_VERSION_TEST=`$COMPILER -qversion  2>&1 | $TAIL -n 1`
       
    49       $ECHO $COMPILER_VERSION_TEST | $GREP "^Version: " > /dev/null
       
    50       if test $? -ne 0; then
       
    51         AC_MSG_ERROR([Failed to detect the compiler version of $COMPILER ....])
       
    52       else
       
    53         COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n 's/Version: \([0-9][0-9]\.[0-9][0-9]*\).*/\1/p'`
       
    54         COMPILER_VENDOR='IBM'
       
    55       fi
    47   elif test  "x$OPENJDK_TARGET_OS" = xwindows; then
    56   elif test  "x$OPENJDK_TARGET_OS" = xwindows; then
    48     # First line typically looks something like:
    57     # First line typically looks something like:
    49     # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
    58     # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
    50     COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
    59     COMPILER_VERSION_TEST=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
    51     COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \(@<:@1-9@:>@@<:@0-9.@:>@*\) .*/\1/p"`
    60     COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.*Version \(@<:@1-9@:>@@<:@0-9.@:>@*\) .*/\1/p"`
   159     fi
   168     fi
   160   fi
   169   fi
   161 
   170 
   162   # Now we have a compiler binary in $1. Make sure it's okay.
   171   # Now we have a compiler binary in $1. Make sure it's okay.
   163   BASIC_FIXUP_EXECUTABLE($1)
   172   BASIC_FIXUP_EXECUTABLE($1)
   164   AC_MSG_CHECKING([resolved symbolic links for $1])
       
   165   TEST_COMPILER="[$]$1"
   173   TEST_COMPILER="[$]$1"
   166   BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER)
   174   # Don't remove symbolic links on AIX because 'xlc_r' and 'xlC_r' may all be links
   167   AC_MSG_RESULT([$TEST_COMPILER])
   175   # to 'xlc' but it is crucial that we invoke the compiler with the right name!
       
   176   if test "x$OPENJDK_BUILD_OS" != xaix; then
       
   177     AC_MSG_CHECKING([resolved symbolic links for $1])
       
   178     BASIC_REMOVE_SYMBOLIC_LINKS(TEST_COMPILER)
       
   179     AC_MSG_RESULT([$TEST_COMPILER])
       
   180   fi
   168   AC_MSG_CHECKING([if $1 is disguised ccache])
   181   AC_MSG_CHECKING([if $1 is disguised ccache])
   169 
   182 
   170   COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
   183   COMPILER_BASENAME=`$BASENAME "$TEST_COMPILER"`
   171   if test "x$COMPILER_BASENAME" = "xccache"; then
   184   if test "x$COMPILER_BASENAME" = "xccache"; then
   172     AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler])
   185     AC_MSG_RESULT([yes, trying to find proper $COMPILER_NAME compiler])
   274 
   287 
   275   if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
   288   if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
   276     COMPILER_CHECK_LIST="cl"
   289     COMPILER_CHECK_LIST="cl"
   277   elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
   290   elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
   278     COMPILER_CHECK_LIST="cc gcc"
   291     COMPILER_CHECK_LIST="cc gcc"
       
   292   elif test "x$OPENJDK_TARGET_OS" = "xaix"; then
       
   293     # Do not probe for cc on AIX.
       
   294     COMPILER_CHECK_LIST="xlc_r"
   279   else
   295   else
   280     COMPILER_CHECK_LIST="gcc cc"
   296     COMPILER_CHECK_LIST="gcc cc"
   281   fi
   297   fi
   282 
   298 
   283   TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST])
   299   TOOLCHAIN_FIND_COMPILER([CC],[C],[$COMPILER_CHECK_LIST])
   284   # Now that we have resolved CC ourself, let autoconf have its go at it
   300   # Now that we have resolved CC ourself, let autoconf have its go at it
   285   AC_PROG_CC([$CC])
   301   AC_PROG_CC([$CC])
       
   302 
       
   303   # Option used to tell the compiler whether to create 32- or 64-bit executables
       
   304   # Notice that CC contains the full compiler path at this point.
       
   305   case $CC in
       
   306     *xlc_r) COMPILER_TARGET_BITS_FLAG="-q";;
       
   307     *)      COMPILER_TARGET_BITS_FLAG="-m";;
       
   308   esac
       
   309   AC_SUBST(COMPILER_TARGET_BITS_FLAG)
   286 
   310 
   287   ### Locate C++ compiler (CXX)
   311   ### Locate C++ compiler (CXX)
   288 
   312 
   289   if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
   313   if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
   290     COMPILER_CHECK_LIST="cl"
   314     COMPILER_CHECK_LIST="cl"
   291   elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
   315   elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
   292     COMPILER_CHECK_LIST="CC g++"
   316     COMPILER_CHECK_LIST="CC g++"
       
   317   elif test "x$OPENJDK_TARGET_OS" = "xaix"; then
       
   318     # Do not probe for CC on AIX .
       
   319     COMPILER_CHECK_LIST="xlC_r"
   293   else
   320   else
   294     COMPILER_CHECK_LIST="g++ CC"
   321     COMPILER_CHECK_LIST="g++ CC"
   295   fi
   322   fi
   296 
   323 
   297   TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST])
   324   TOOLCHAIN_FIND_COMPILER([CXX],[C++],[$COMPILER_CHECK_LIST])
   329     AC_CHECK_TOOL(AR, ar)
   356     AC_CHECK_TOOL(AR, ar)
   330     BASIC_FIXUP_EXECUTABLE(AR)
   357     BASIC_FIXUP_EXECUTABLE(AR)
   331   fi
   358   fi
   332   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
   359   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
   333     ARFLAGS="-r"
   360     ARFLAGS="-r"
       
   361   elif test "x$OPENJDK_TARGET_OS" = xaix; then
       
   362     ARFLAGS="-X64"
   334   else
   363   else
   335     ARFLAGS=""
   364     ARFLAGS=""
   336   fi
   365   fi
   337   AC_SUBST(ARFLAGS)
   366   AC_SUBST(ARFLAGS)
   338 
   367 
   571       CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
   600       CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
   572       CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
   601       CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
   573       CFLAGS_JDKLIB_EXTRA='-xstrconst'
   602       CFLAGS_JDKLIB_EXTRA='-xstrconst'
   574       POST_STRIP_CMD="$STRIP -x"
   603       POST_STRIP_CMD="$STRIP -x"
   575       POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
   604       POST_MCS_CMD="$MCS -d -a \"JDK $FULL_VERSION\""
       
   605     fi
       
   606     if test "x$OPENJDK_TARGET_OS" = xaix; then
       
   607         COMPILER_NAME=xlc
       
   608         PICFLAG="-qpic=large"
       
   609         LIBRARY_PREFIX=lib
       
   610         SHARED_LIBRARY='lib[$]1.so'
       
   611         STATIC_LIBRARY='lib[$]1.a'
       
   612         SHARED_LIBRARY_FLAGS="-qmkshrobj"
       
   613         SHARED_LIBRARY_SUFFIX='.so'
       
   614         STATIC_LIBRARY_SUFFIX='.a'
       
   615         OBJ_SUFFIX='.o'
       
   616         EXE_SUFFIX=''
       
   617         SET_SHARED_LIBRARY_NAME=''
       
   618         SET_SHARED_LIBRARY_MAPFILE=''
       
   619         C_FLAG_REORDER=''
       
   620         CXX_FLAG_REORDER=''
       
   621         SET_SHARED_LIBRARY_ORIGIN=''
       
   622         SET_EXECUTABLE_ORIGIN=""
       
   623         CFLAGS_JDK=""
       
   624         CXXFLAGS_JDK=""
       
   625         CFLAGS_JDKLIB_EXTRA=''
       
   626         POST_STRIP_CMD="$STRIP -X32_64"
       
   627         POST_MCS_CMD=""
   576     fi
   628     fi
   577     if test "x$OPENJDK_TARGET_OS" = xwindows; then
   629     if test "x$OPENJDK_TARGET_OS" = xwindows; then
   578       # If it is not gcc, then assume it is the MS Visual Studio compiler
   630       # If it is not gcc, then assume it is the MS Visual Studio compiler
   579       COMPILER_NAME=cl
   631       COMPILER_NAME=cl
   580       PICFLAG=""
   632       PICFLAG=""
   748               ;;
   800               ;;
   749           esac
   801           esac
   750 
   802 
   751           CFLAGS_DEBUG_SYMBOLS="-g -xs"
   803           CFLAGS_DEBUG_SYMBOLS="-g -xs"
   752           CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
   804           CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
       
   805           ;;
       
   806         xlc )
       
   807           C_FLAG_DEPS="-qmakedep=gcc -MF"
       
   808           CXX_FLAG_DEPS="-qmakedep=gcc -MF"
       
   809           C_O_FLAG_HIGHEST="-O3"
       
   810           C_O_FLAG_HI="-O3 -qstrict"
       
   811           C_O_FLAG_NORM="-O2"
       
   812           C_O_FLAG_NONE=""
       
   813           CXX_O_FLAG_HIGHEST="-O3"
       
   814           CXX_O_FLAG_HI="-O3 -qstrict"
       
   815           CXX_O_FLAG_NORM="-O2"
       
   816           CXX_O_FLAG_NONE=""
       
   817           CFLAGS_DEBUG_SYMBOLS="-g"
       
   818           CXXFLAGS_DEBUG_SYMBOLS="-g"
       
   819           LDFLAGS_JDK="${LDFLAGS_JDK} -q64 -brtl -bnolibpath -liconv -bexpall"
       
   820           CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt"
       
   821           CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -q64 -qfullpath -qsaveopt"
       
   822           ;;
   753       esac
   823       esac
   754       ;;
   824       ;;
   755     CL )
   825     CL )
   756       C_O_FLAG_HIGHEST="-O2"
   826       C_O_FLAG_HIGHEST="-O2"
   757       C_O_FLAG_HI="-O1"
   827       C_O_FLAG_HI="-O1"
   858       CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
   928       CXXFLAGS_JDK="$CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
   859 
   929 
   860       LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
   930       LDFLAGS_JDK="$LDFLAGS_JDK -z defs -xildoff -ztext"
   861       LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
   931       LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK -norunpath -xnolib"
   862       ;;
   932       ;;
       
   933     xlc )
       
   934       CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
       
   935       CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
       
   936 
       
   937       LDFLAGS_JDK="$LDFLAGS_JDK"
       
   938       LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK"
       
   939       ;;
   863     cl )
   940     cl )
   864       CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
   941       CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
   865       -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
   942       -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
   866       -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
   943       -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
   867       -DWIN32 -DIAL"
   944       -DWIN32 -DIAL"
   927     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS"
  1004     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS"
   928   fi
  1005   fi
   929   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
  1006   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
   930     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS"
  1007     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS"
   931   fi
  1008   fi
       
  1009   if test "x$OPENJDK_TARGET_OS" = xaix; then
       
  1010     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64"
       
  1011   fi
   932   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
  1012   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
   933     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
  1013     CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
   934     # Setting these parameters makes it an error to link to macosx APIs that are
  1014     # Setting these parameters makes it an error to link to macosx APIs that are
   935     # newer than the given OS version and makes the linked binaries compatible even
  1015     # newer than the given OS version and makes the linked binaries compatible even
   936     # if built on a newer version of the OS.
  1016     # if built on a newer version of the OS.
  1094 [
  1174 [
  1095   # Some Zero and Shark settings.
  1175   # Some Zero and Shark settings.
  1096   # ZERO_ARCHFLAG tells the compiler which mode to build for
  1176   # ZERO_ARCHFLAG tells the compiler which mode to build for
  1097   case "${OPENJDK_TARGET_CPU}" in
  1177   case "${OPENJDK_TARGET_CPU}" in
  1098     s390)
  1178     s390)
  1099       ZERO_ARCHFLAG="-m31"
  1179       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31"
  1100       ;;
  1180       ;;
  1101     *)
  1181     *)
  1102       ZERO_ARCHFLAG="-m${OPENJDK_TARGET_CPU_BITS}"
  1182       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
  1103   esac
  1183   esac
  1104   TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
  1184   TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
  1105   AC_SUBST(ZERO_ARCHFLAG)
  1185   AC_SUBST(ZERO_ARCHFLAG)
  1106 
  1186 
  1107   # Check that the compiler supports -mX flags
  1187   # Check that the compiler supports -mX (or -qX on AIX) flags
  1108   # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
  1188   # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
  1109   TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([-m${OPENJDK_TARGET_CPU_BITS}],
  1189   TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
  1110       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
  1190       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
  1111       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
  1191       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
  1112   AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
  1192   AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
       
  1193 
       
  1194 
       
  1195   # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed in executable.'
       
  1196   USING_BROKEN_SUSE_LD=no
       
  1197   if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$GCC" = xyes; then
       
  1198     AC_MSG_CHECKING([for broken SuSE 'ld' which only understands anonymous version tags in executables])
       
  1199     echo "SUNWprivate_1.1 { local: *; };" > version-script.map
       
  1200     echo "int main() { }" > main.c
       
  1201     if $CXX -Xlinker -version-script=version-script.map main.c 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
       
  1202       AC_MSG_RESULT(no)
       
  1203       USING_BROKEN_SUSE_LD=no
       
  1204     else
       
  1205       AC_MSG_RESULT(yes)
       
  1206       USING_BROKEN_SUSE_LD=yes
       
  1207     fi
       
  1208     rm -rf version-script.map main.c
       
  1209   fi
       
  1210   AC_SUBST(USING_BROKEN_SUSE_LD)
  1113 ])
  1211 ])
  1114 
  1212 
  1115 # Setup the JTREG paths
  1213 # Setup the JTREG paths
  1116 AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
  1214 AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
  1117 [
  1215 [