855 if test "x$with_build_devkit" = "xyes"; then
856 AC_MSG_ERROR([--with-build-devkit must have a value])
857 elif test -n "$with_build_devkit"; then
858 if test ! -d "$with_build_devkit"; then
859 AC_MSG_ERROR([--with-build-devkit points to non existing dir: $with_build_devkit])
860 else
861 UTIL_FIXUP_PATH([with_build_devkit])
862 BUILD_DEVKIT_ROOT="$with_build_devkit"
863 # Check for a meta data info file in the root of the devkit
864 if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
865 # Process devkit.info so that existing devkit variables are not
866 # modified by this
867 $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
868 -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
869 -e "s/\$host/\$build/g" \
870 $BUILD_DEVKIT_ROOT/devkit.info \
871 > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
872 . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
873 # This potentially sets the following:
874 # A descriptive name of the devkit
875 BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
876 # Corresponds to --with-extra-path
877 BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
878 # Corresponds to --with-toolchain-path
879 BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
880 # Corresponds to --with-sysroot
881 BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
882 # Skip the Window specific parts
883 fi
884
885 AC_MSG_CHECKING([for build platform devkit])
886 if test "x$BUILD_DEVKIT_NAME" != x; then
887 AC_MSG_RESULT([$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT])
888 else
889 AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
890 fi
891
892 BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
893
894 # Fallback default of just /bin if DEVKIT_PATH is not defined
895 if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
896 BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
897 fi
898 PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
899 fi
900 fi
901
902 # FIXME: we should list the discovered compilers as an exclude pattern!
903 # If we do that, we can do this detection before POST_DETECTION, and still
904 # find the build compilers in the tools dir, if needed.
905 if test "x$OPENJDK_BUILD_OS" = xmacosx; then
906 UTIL_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
907 UTIL_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
908 else
909 UTIL_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
910 UTIL_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
911 fi
912 UTIL_FIXUP_EXECUTABLE(BUILD_CC)
913 UTIL_FIXUP_EXECUTABLE(BUILD_CXX)
914 UTIL_PATH_PROGS(BUILD_NM, nm gcc-nm)
915 UTIL_FIXUP_EXECUTABLE(BUILD_NM)
916 UTIL_PATH_PROGS(BUILD_AR, ar gcc-ar)
917 UTIL_FIXUP_EXECUTABLE(BUILD_AR)
918 UTIL_PATH_PROGS(BUILD_OBJCOPY, objcopy)
919 UTIL_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
920 UTIL_PATH_PROGS(BUILD_STRIP, strip)
921 UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
922 # Assume the C compiler is the assembler
923 BUILD_AS="$BUILD_CC -c"
924 # Just like for the target compiler, use the compiler as linker
925 BUILD_LD="$BUILD_CC"
926 BUILD_LDCXX="$BUILD_CXX"
927
928 PATH="$OLDPATH"
929
930 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
931 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
932 TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_], [build ])
933 TOOLCHAIN_EXTRACT_LD_VERSION(BUILD_LD, [build linker])
934 TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
935 else
936 # If we are not cross compiling, use the normal target compilers for
937 # building the build platform executables.
938 BUILD_CC="$CC"
939 BUILD_CXX="$CXX"
940 BUILD_LD="$LD"
941 BUILD_LDCXX="$LDCXX"
942 BUILD_NM="$NM"
943 BUILD_AS="$AS"
944 BUILD_OBJCOPY="$OBJCOPY"
945 BUILD_STRIP="$STRIP"
946 BUILD_AR="$AR"
956 AC_SUBST(BUILD_NM)
957 AC_SUBST(BUILD_AS)
958 AC_SUBST(BUILD_AR)
959 ])
960
961 # Do some additional checks on the detected tools.
962 AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
963 [
964 # Check for extra potential brokenness.
965 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
966 # On Windows, double-check that we got the right compiler.
967 CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
968 COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
969 if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
970 if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
971 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".])
972 fi
973 elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
974 if test "x$COMPILER_CPU_TEST" != "xx64"; then
975 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
976 fi
977 fi
978 fi
979
980 if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
981 # Check if linker has -z noexecstack.
982 HAS_NOEXECSTACK=`$CC -Wl,--help 2>/dev/null | $GREP 'z noexecstack'`
983 # This is later checked when setting flags.
984 fi
985
986 # Setup hotspot lecagy names for toolchains
987 HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
988 if test "x$TOOLCHAIN_TYPE" = xclang; then
989 HOTSPOT_TOOLCHAIN_TYPE=gcc
990 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
991 HOTSPOT_TOOLCHAIN_TYPE=visCPP
992 fi
993 AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
994 ])
995
|
855 if test "x$with_build_devkit" = "xyes"; then
856 AC_MSG_ERROR([--with-build-devkit must have a value])
857 elif test -n "$with_build_devkit"; then
858 if test ! -d "$with_build_devkit"; then
859 AC_MSG_ERROR([--with-build-devkit points to non existing dir: $with_build_devkit])
860 else
861 UTIL_FIXUP_PATH([with_build_devkit])
862 BUILD_DEVKIT_ROOT="$with_build_devkit"
863 # Check for a meta data info file in the root of the devkit
864 if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
865 # Process devkit.info so that existing devkit variables are not
866 # modified by this
867 $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
868 -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
869 -e "s/\$host/\$build/g" \
870 $BUILD_DEVKIT_ROOT/devkit.info \
871 > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
872 . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
873 # This potentially sets the following:
874 # A descriptive name of the devkit
875 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
876 # Corresponds to --with-extra-path
877 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
878 # Corresponds to --with-toolchain-path
879 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
880 # Corresponds to --with-sysroot
881 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
882
883 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
884 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_INCLUDE])
885 BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_LIB])
886 fi
887 fi
888
889 AC_MSG_CHECKING([for build platform devkit])
890 if test "x$BUILD_DEVKIT_NAME" != x; then
891 AC_MSG_RESULT([$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT])
892 else
893 AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
894 fi
895
896 UTIL_PREPEND_TO_PATH([PATH],$BUILD_DEVKIT_EXTRA_PATH)
897
898 # Fallback default of just /bin if DEVKIT_PATH is not defined
899 if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
900 BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
901 fi
902 UTIL_PREPEND_TO_PATH([PATH],$BUILD_DEVKIT_TOOLCHAIN_PATH)
903
904 BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
905
906 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
907 BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
908 BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
909
910 TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
911 fi
912 fi
913 fi
914
915 # FIXME: we should list the discovered compilers as an exclude pattern!
916 # If we do that, we can do this detection before POST_DETECTION, and still
917 # find the build compilers in the tools dir, if needed.
918 if test "x$OPENJDK_BUILD_OS" = xmacosx; then
919 UTIL_REQUIRE_PROGS(BUILD_CC, [clang cl cc gcc])
920 UTIL_REQUIRE_PROGS(BUILD_CXX, [clang++ cl CC g++])
921 else
922 UTIL_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
923 UTIL_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
924 fi
925 UTIL_FIXUP_EXECUTABLE(BUILD_CC)
926 UTIL_FIXUP_EXECUTABLE(BUILD_CXX)
927 UTIL_PATH_PROGS(BUILD_NM, nm gcc-nm)
928 UTIL_FIXUP_EXECUTABLE(BUILD_NM)
929 UTIL_PATH_PROGS(BUILD_AR, ar gcc-ar)
930 UTIL_FIXUP_EXECUTABLE(BUILD_AR)
931 UTIL_PATH_PROGS(BUILD_OBJCOPY, objcopy)
932 UTIL_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
933 UTIL_PATH_PROGS(BUILD_STRIP, strip)
934 UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
935 # Assume the C compiler is the assembler
936 BUILD_AS="$BUILD_CC -c"
937 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
938 # In the Microsoft toolchain we have a separate LD command "link".
939 # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
940 # a cygwin program for something completely different.
941 AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
942 UTIL_FIXUP_EXECUTABLE(BUILD_LD)
943 # Verify that we indeed succeeded with this trick.
944 AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
945
946 # Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
947 # which, in combination with WSLENV, will make the WSL layer complain
948 old_path="$PATH"
949 PATH=
950
951 "$BUILD_LD" --version > /dev/null
952
953 if test $? -eq 0 ; then
954 AC_MSG_RESULT([no])
955 AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
956 else
957 AC_MSG_RESULT([yes])
958 fi
959
960 PATH="$old_path"
961
962 BUILD_LDCXX="$BUILD_LD"
963 else
964 # Just like for the target compiler, use the compiler as linker
965 BUILD_LD="$BUILD_CC"
966 BUILD_LDCXX="$BUILD_CXX"
967 fi
968
969 PATH="$OLDPATH"
970
971 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
972 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
973 TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_], [build ])
974 TOOLCHAIN_EXTRACT_LD_VERSION(BUILD_LD, [build linker])
975 TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
976 else
977 # If we are not cross compiling, use the normal target compilers for
978 # building the build platform executables.
979 BUILD_CC="$CC"
980 BUILD_CXX="$CXX"
981 BUILD_LD="$LD"
982 BUILD_LDCXX="$LDCXX"
983 BUILD_NM="$NM"
984 BUILD_AS="$AS"
985 BUILD_OBJCOPY="$OBJCOPY"
986 BUILD_STRIP="$STRIP"
987 BUILD_AR="$AR"
997 AC_SUBST(BUILD_NM)
998 AC_SUBST(BUILD_AS)
999 AC_SUBST(BUILD_AR)
1000 ])
1001
1002 # Do some additional checks on the detected tools.
1003 AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
1004 [
1005 # Check for extra potential brokenness.
1006 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
1007 # On Windows, double-check that we got the right compiler.
1008 CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
1009 COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
1010 if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
1011 if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
1012 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".])
1013 fi
1014 elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
1015 if test "x$COMPILER_CPU_TEST" != "xx64"; then
1016 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
1017 fi
1018 elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
1019 if test "x$COMPILER_CPU_TEST" != "xARM64"; then
1020 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
1021 fi
1022 fi
1023 fi
1024
1025 if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
1026 # Check if linker has -z noexecstack.
1027 HAS_NOEXECSTACK=`$CC -Wl,--help 2>/dev/null | $GREP 'z noexecstack'`
1028 # This is later checked when setting flags.
1029 fi
1030
1031 # Setup hotspot lecagy names for toolchains
1032 HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
1033 if test "x$TOOLCHAIN_TYPE" = xclang; then
1034 HOTSPOT_TOOLCHAIN_TYPE=gcc
1035 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
1036 HOTSPOT_TOOLCHAIN_TYPE=visCPP
1037 fi
1038 AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
1039 ])
1040
|