< prev index next >

make/autoconf/toolchain.m4

Print this page

        

*** 178,194 **** --- 178,196 ---- SHARED_LIBRARY_SUFFIX='.dll' STATIC_LIBRARY_SUFFIX='.lib' SHARED_LIBRARY='[$]1.dll' STATIC_LIBRARY='[$]1.lib' OBJ_SUFFIX='.obj' + EXE_SUFFIX='.exe' else LIBRARY_PREFIX=lib SHARED_LIBRARY_SUFFIX='.so' STATIC_LIBRARY_SUFFIX='.a' SHARED_LIBRARY='lib[$]1.so' STATIC_LIBRARY='lib[$]1.a' OBJ_SUFFIX='.o' + EXE_SUFFIX='' if test "x$OPENJDK_TARGET_OS" = xmacosx; then # For full static builds, we're overloading the SHARED_LIBRARY # variables in order to limit the amount of changes required. # It would be better to remove SHARED and just use LIBRARY and # LIBRARY_SUFFIX for libraries that can be built either
*** 208,217 **** --- 210,220 ---- AC_SUBST(SHARED_LIBRARY_SUFFIX) AC_SUBST(STATIC_LIBRARY_SUFFIX) AC_SUBST(SHARED_LIBRARY) AC_SUBST(STATIC_LIBRARY) AC_SUBST(OBJ_SUFFIX) + AC_SUBST(EXE_SUFFIX) ]) # Determine which toolchain type to use, and make sure it is valid for this # platform. Setup various information about the selected toolchain. AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
*** 274,317 **** # No flag given, use default TOOLCHAIN_TYPE=$DEFAULT_TOOLCHAIN fi AC_SUBST(TOOLCHAIN_TYPE) - # on AIX, check for xlclang++ on the PATH and TOOLCHAIN_PATH and use it if it is available - if test "x$OPENJDK_TARGET_OS" = xaix; then - if test "x$TOOLCHAIN_PATH" != x; then - XLC_TEST_PATH=${TOOLCHAIN_PATH}/ - fi - - XLCLANG_VERSION_OUTPUT=`${XLC_TEST_PATH}xlclang++ -qversion 2>&1 | $HEAD -n 1` - $ECHO "$XLCLANG_VERSION_OUTPUT" | $GREP "IBM XL C/C++ for AIX" > /dev/null - if test $? -eq 0; then - AC_MSG_NOTICE([xlclang++ output: $XLCLANG_VERSION_OUTPUT]) - XLC_USES_CLANG=true - fi - fi - TOOLCHAIN_CC_BINARY_clang="clang" TOOLCHAIN_CC_BINARY_gcc="gcc" ! TOOLCHAIN_CC_BINARY_microsoft="cl$EXE_SUFFIX" TOOLCHAIN_CC_BINARY_solstudio="cc" TOOLCHAIN_CC_BINARY_xlc="xlc_r" TOOLCHAIN_CXX_BINARY_clang="clang++" TOOLCHAIN_CXX_BINARY_gcc="g++" ! TOOLCHAIN_CXX_BINARY_microsoft="cl$EXE_SUFFIX" TOOLCHAIN_CXX_BINARY_solstudio="CC" TOOLCHAIN_CXX_BINARY_xlc="xlC_r" - if test "x$OPENJDK_TARGET_OS" = xaix; then - if test "x$XLC_USES_CLANG" = xtrue; then - AC_MSG_NOTICE([xlclang++ detected, using it]) - TOOLCHAIN_CC_BINARY_xlc="xlclang" - TOOLCHAIN_CXX_BINARY_xlc="xlclang++" - fi - fi - # Use indirect variable referencing toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE TOOLCHAIN_DESCRIPTION=${!toolchain_var_name} toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name} --- 277,298 ---- # No flag given, use default TOOLCHAIN_TYPE=$DEFAULT_TOOLCHAIN fi AC_SUBST(TOOLCHAIN_TYPE) TOOLCHAIN_CC_BINARY_clang="clang" TOOLCHAIN_CC_BINARY_gcc="gcc" ! TOOLCHAIN_CC_BINARY_microsoft="cl" TOOLCHAIN_CC_BINARY_solstudio="cc" TOOLCHAIN_CC_BINARY_xlc="xlc_r" TOOLCHAIN_CXX_BINARY_clang="clang++" TOOLCHAIN_CXX_BINARY_gcc="g++" ! TOOLCHAIN_CXX_BINARY_microsoft="cl" TOOLCHAIN_CXX_BINARY_solstudio="CC" TOOLCHAIN_CXX_BINARY_xlc="xlC_r" # Use indirect variable referencing toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE TOOLCHAIN_DESCRIPTION=${!toolchain_var_name} toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name}
*** 350,370 **** # after toolchain detection is done, since the compiler (on x86) uses # it for DLL resolution in runtime. if test "x$OPENJDK_BUILD_OS" = "xwindows" \ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV ! if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.wsl"; then ! # Append VS_PATH. In WSL, VS_PATH will not contain the WSL env path needed ! # for using basic Unix tools, so need to keep the original PATH. ! BASIC_APPEND_TO_PATH(PATH, $VS_PATH) ! BASIC_APPEND_TO_PATH(WSLENV, "PATH/l:LIB:INCLUDE") ! export WSLENV ! else ! # Reset path to VS_PATH. It will include everything that was on PATH at the time we ! # ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV. ! PATH="$VS_PATH" ! fi # The microsoft toolchain also requires INCLUDE and LIB to be set. export INCLUDE="$VS_INCLUDE" export LIB="$VS_LIB" else if test "x$XCODE_VERSION_OUTPUT" != x; then --- 331,343 ---- # after toolchain detection is done, since the compiler (on x86) uses # it for DLL resolution in runtime. if test "x$OPENJDK_BUILD_OS" = "xwindows" \ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV ! # Reset path to VS_PATH. It will include everything that was on PATH at the time we ! # ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV. ! PATH="$VS_PATH" # The microsoft toolchain also requires INCLUDE and LIB to be set. export INCLUDE="$VS_INCLUDE" export LIB="$VS_LIB" else if test "x$XCODE_VERSION_OUTPUT" != x; then
*** 455,465 **** $SED -e 's/^.*, V\(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'` elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # There is no specific version flag, but all output starts with a version string. # First line typically looks something like: # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 ! COMPILER_VERSION_OUTPUT=`"$COMPILER" 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'` # Check that this is likely to be Microsoft CL.EXE. $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null if test $? -ne 0; then AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.]) AC_MSG_NOTICE([The result from running it was: "$COMPILER_VERSION_OUTPUT"]) --- 428,438 ---- $SED -e 's/^.*, V\(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'` elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # There is no specific version flag, but all output starts with a version string. # First line typically looks something like: # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86 ! COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'` # Check that this is likely to be Microsoft CL.EXE. $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null if test $? -ne 0; then AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.]) AC_MSG_NOTICE([The result from running it was: "$COMPILER_VERSION_OUTPUT"])
*** 615,625 **** # $1 = linker to test (LD or BUILD_LD) # $2 = human readable name of linker (Linker or BuildLinker) AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION], [ LINKER=[$]$1 ! LINKER_NAME="$2" if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -Wl,-V output typically looks like # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.2329 --- 588,598 ---- # $1 = linker to test (LD or BUILD_LD) # $2 = human readable name of linker (Linker or BuildLinker) AC_DEFUN([TOOLCHAIN_EXTRACT_LD_VERSION], [ LINKER=[$]$1 ! LINKER_NAME=$2 if test "x$TOOLCHAIN_TYPE" = xsolstudio; then # cc -Wl,-V output typically looks like # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.2329
*** 641,665 **** LINKER_VERSION_STRING=`$LD 2>&1 | $HEAD -n 1 | $TR -d '\r'` # Extract version number [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \ $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ] elif test "x$TOOLCHAIN_TYPE" = xgcc; then ! # gcc -Wl,-version output typically looks like: # GNU ld (GNU Binutils for Ubuntu) 2.26.1 # Copyright (C) 2015 Free Software Foundation, Inc. # This program is free software; [...] ! # If using gold it will look like: ! # GNU gold (GNU Binutils 2.30) 1.15 ! LINKER_VERSION_STRING=`$LD -Wl,--version 2> /dev/null | $HEAD -n 1` # Extract version number ! if [ [[ "$LINKER_VERSION_STRING" == *gold* ]] ]; then ! [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \ ! $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*) .*/\1/'` ] ! else ! [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \ ! $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ] ! fi elif test "x$TOOLCHAIN_TYPE" = xclang; then # clang -Wl,-v output typically looks like # @(#)PROGRAM:ld PROJECT:ld64-305 # configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) # Library search paths: [...] --- 614,631 ---- LINKER_VERSION_STRING=`$LD 2>&1 | $HEAD -n 1 | $TR -d '\r'` # Extract version number [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \ $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ] elif test "x$TOOLCHAIN_TYPE" = xgcc; then ! # gcc -Wl,-version output typically looks like # GNU ld (GNU Binutils for Ubuntu) 2.26.1 # Copyright (C) 2015 Free Software Foundation, Inc. # This program is free software; [...] ! LINKER_VERSION_STRING=`$LD -Wl,-version 2>&1 | $HEAD -n 1` # Extract version number ! [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \ ! $SED -e 's/.* \([0-9][0-9]*\(\.[0-9][0-9]*\)*\).*/\1/'` ] elif test "x$TOOLCHAIN_TYPE" = xclang; then # clang -Wl,-v output typically looks like # @(#)PROGRAM:ld PROJECT:ld64-305 # configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS) # Library search paths: [...]
*** 730,740 **** # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # In the Microsoft toolchain we have a separate LD command "link". # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is # a cygwin program for something completely different. ! AC_CHECK_PROG([LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK]) BASIC_FIXUP_EXECUTABLE(LD) # Verify that we indeed succeeded with this trick. AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker]) "$LD" --version > /dev/null if test $? -eq 0 ; then --- 696,706 ---- # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # In the Microsoft toolchain we have a separate LD command "link". # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is # a cygwin program for something completely different. ! AC_CHECK_PROG([LD], [link],[link],,, [$CYGWIN_LINK]) BASIC_FIXUP_EXECUTABLE(LD) # Verify that we indeed succeeded with this trick. AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker]) "$LD" --version > /dev/null if test $? -eq 0 ; then
*** 742,763 **** AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.]) else AC_MSG_RESULT([yes]) fi LDCXX="$LD" - # jaotc being a windows program expects the linker to be supplied with exe suffix. - LD_JAOTC="$LD$EXE_SUFFIX" else # All other toolchains use the compiler to link. LD="$CC" LDCXX="$CXX" - # jaotc expects 'ld' as the linker rather than the compiler. - BASIC_CHECK_TOOLS([LD_JAOTC], ld) - BASIC_FIXUP_EXECUTABLE(LD_JAOTC) fi AC_SUBST(LD) - AC_SUBST(LD_JAOTC) # FIXME: it should be CXXLD, according to standard (cf CXXCPP) AC_SUBST(LDCXX) TOOLCHAIN_EXTRACT_LD_VERSION([LD], [linker]) TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS --- 708,723 ----
*** 788,798 **** # # Setup the archiver (AR) # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # The corresponding ar tool is lib.exe (used to create static libraries) ! AC_CHECK_PROG([AR], [lib$EXE_SUFFIX],[lib$EXE_SUFFIX],,,) elif test "x$TOOLCHAIN_TYPE" = xgcc; then BASIC_CHECK_TOOLS(AR, ar gcc-ar) else BASIC_CHECK_TOOLS(AR, ar) fi --- 748,758 ---- # # Setup the archiver (AR) # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # The corresponding ar tool is lib.exe (used to create static libraries) ! AC_CHECK_PROG([AR], [lib],[lib],,,) elif test "x$TOOLCHAIN_TYPE" = xgcc; then BASIC_CHECK_TOOLS(AR, ar gcc-ar) else BASIC_CHECK_TOOLS(AR, ar) fi
*** 812,836 **** BASIC_REQUIRE_PROGS(INSTALL_NAME_TOOL, install_name_tool) BASIC_FIXUP_EXECUTABLE(INSTALL_NAME_TOOL) fi if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then ! AC_CHECK_PROG([MT], [mt$EXE_SUFFIX], [mt$EXE_SUFFIX],,, [/usr/bin/mt]) BASIC_FIXUP_EXECUTABLE(MT) # Setup the resource compiler (RC) ! AC_CHECK_PROG([RC], [rc$EXE_SUFFIX], [rc$EXE_SUFFIX],,, [/usr/bin/rc]) BASIC_FIXUP_EXECUTABLE(RC) ! AC_CHECK_PROG([DUMPBIN], [dumpbin$EXE_SUFFIX], [dumpbin$EXE_SUFFIX],,,) BASIC_FIXUP_EXECUTABLE(DUMPBIN) # We need to check for 'msbuild.exe' because at the place where we expect to # find 'msbuild.exe' there's also a directory called 'msbuild' and configure # won't find the 'msbuild.exe' executable in that case (and the # 'ac_executable_extensions' is unusable due to performance reasons). # Notice that we intentionally don't fix up the path to MSBUILD because we # will call it in a DOS shell during freetype detection on Windows (see # 'LIB_SETUP_FREETYPE' in "libraries.m4" ! AC_CHECK_PROG([MSBUILD], [msbuild$EXE_SUFFIX], [msbuild$EXE_SUFFIX],,,) fi if test "x$OPENJDK_TARGET_OS" = xsolaris; then BASIC_PATH_PROGS(STRIP, strip) BASIC_FIXUP_EXECUTABLE(STRIP) --- 772,796 ---- BASIC_REQUIRE_PROGS(INSTALL_NAME_TOOL, install_name_tool) BASIC_FIXUP_EXECUTABLE(INSTALL_NAME_TOOL) fi if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then ! AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt]) BASIC_FIXUP_EXECUTABLE(MT) # Setup the resource compiler (RC) ! AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc]) BASIC_FIXUP_EXECUTABLE(RC) ! AC_CHECK_PROG([DUMPBIN], [dumpbin], [dumpbin],,,) BASIC_FIXUP_EXECUTABLE(DUMPBIN) # We need to check for 'msbuild.exe' because at the place where we expect to # find 'msbuild.exe' there's also a directory called 'msbuild' and configure # won't find the 'msbuild.exe' executable in that case (and the # 'ac_executable_extensions' is unusable due to performance reasons). # Notice that we intentionally don't fix up the path to MSBUILD because we # will call it in a DOS shell during freetype detection on Windows (see # 'LIB_SETUP_FREETYPE' in "libraries.m4" ! AC_CHECK_PROG([MSBUILD], [msbuild.exe], [msbuild.exe],,,) fi if test "x$OPENJDK_TARGET_OS" = xsolaris; then BASIC_PATH_PROGS(STRIP, strip) BASIC_FIXUP_EXECUTABLE(STRIP)
*** 1037,1047 **** AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], [ # Check for extra potential brokenness. if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # On Windows, double-check that we got the right compiler. ! CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'` COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"` if test "x$OPENJDK_TARGET_CPU" = "xx86"; then if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".]) fi --- 997,1007 ---- AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], [ # Check for extra potential brokenness. if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then # On Windows, double-check that we got the right compiler. ! CC_VERSION_OUTPUT=`$CC 2>&1 | $HEAD -n 1 | $TR -d '\r'` COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"` if test "x$OPENJDK_TARGET_CPU" = "xx86"; then if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".]) fi
< prev index next >