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 UTIL_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
906 UTIL_FIXUP_EXECUTABLE(BUILD_CC)
907 UTIL_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
908 UTIL_FIXUP_EXECUTABLE(BUILD_CXX)
909 UTIL_PATH_PROGS(BUILD_NM, nm gcc-nm)
910 UTIL_FIXUP_EXECUTABLE(BUILD_NM)
911 UTIL_PATH_PROGS(BUILD_AR, ar gcc-ar)
912 UTIL_FIXUP_EXECUTABLE(BUILD_AR)
913 UTIL_PATH_PROGS(BUILD_OBJCOPY, objcopy)
914 UTIL_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
915 UTIL_PATH_PROGS(BUILD_STRIP, strip)
916 UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
917 # Assume the C compiler is the assembler
918 BUILD_AS="$BUILD_CC -c"
919 # Just like for the target compiler, use the compiler as linker
920 BUILD_LD="$BUILD_CC"
921 BUILD_LDCXX="$BUILD_CXX"
922
923 PATH="$OLDPATH"
924
925 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
926 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
927 TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_], [build ])
928 TOOLCHAIN_EXTRACT_LD_VERSION(BUILD_LD, [build linker])
929 TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
930 else
931 # If we are not cross compiling, use the normal target compilers for
932 # building the build platform executables.
933 BUILD_CC="$CC"
934 BUILD_CXX="$CXX"
935 BUILD_LD="$LD"
936 BUILD_LDCXX="$LDCXX"
937 BUILD_NM="$NM"
938 BUILD_AS="$AS"
939 BUILD_OBJCOPY="$OBJCOPY"
940 BUILD_STRIP="$STRIP"
941 BUILD_AR="$AR"
951 AC_SUBST(BUILD_NM)
952 AC_SUBST(BUILD_AS)
953 AC_SUBST(BUILD_AR)
954 ])
955
956 # Do some additional checks on the detected tools.
957 AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
958 [
959 # Check for extra potential brokenness.
960 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
961 # On Windows, double-check that we got the right compiler.
962 CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
963 COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
964 if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
965 if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
966 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".])
967 fi
968 elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
969 if test "x$COMPILER_CPU_TEST" != "xx64"; then
970 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
971 fi
972 fi
973 fi
974
975 if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
976 # Check if linker has -z noexecstack.
977 HAS_NOEXECSTACK=`$CC -Wl,--help 2>/dev/null | $GREP 'z noexecstack'`
978 # This is later checked when setting flags.
979 fi
980
981 # Setup hotspot lecagy names for toolchains
982 HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
983 if test "x$TOOLCHAIN_TYPE" = xclang; then
984 HOTSPOT_TOOLCHAIN_TYPE=gcc
985 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
986 HOTSPOT_TOOLCHAIN_TYPE=visCPP
987 fi
988 AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
989 ])
990
|
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 UTIL_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
919 UTIL_FIXUP_EXECUTABLE(BUILD_CC)
920 UTIL_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
921 UTIL_FIXUP_EXECUTABLE(BUILD_CXX)
922 UTIL_PATH_PROGS(BUILD_NM, nm gcc-nm)
923 UTIL_FIXUP_EXECUTABLE(BUILD_NM)
924 UTIL_PATH_PROGS(BUILD_AR, ar gcc-ar)
925 UTIL_FIXUP_EXECUTABLE(BUILD_AR)
926 UTIL_PATH_PROGS(BUILD_OBJCOPY, objcopy)
927 UTIL_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
928 UTIL_PATH_PROGS(BUILD_STRIP, strip)
929 UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
930 # Assume the C compiler is the assembler
931 BUILD_AS="$BUILD_CC -c"
932 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
933 # In the Microsoft toolchain we have a separate LD command "link".
934 # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
935 # a cygwin program for something completely different.
936 AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
937 UTIL_FIXUP_EXECUTABLE(BUILD_LD)
938 # Verify that we indeed succeeded with this trick.
939 AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
940
941 # Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
942 # which, in combination with WSLENV, will make the WSL layer complain
943 old_path="$PATH"
944 PATH=
945
946 "$BUILD_LD" --version > /dev/null
947
948 if test $? -eq 0 ; then
949 AC_MSG_RESULT([no])
950 AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
951 else
952 AC_MSG_RESULT([yes])
953 fi
954
955 PATH="$old_path"
956
957 BUILD_LDCXX="$BUILD_LD"
958 else
959 # Just like for the target compiler, use the compiler as linker
960 BUILD_LD="$BUILD_CC"
961 BUILD_LDCXX="$BUILD_CXX"
962 fi
963
964 PATH="$OLDPATH"
965
966 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
967 TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
968 TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_], [build ])
969 TOOLCHAIN_EXTRACT_LD_VERSION(BUILD_LD, [build linker])
970 TOOLCHAIN_PREPARE_FOR_LD_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
971 else
972 # If we are not cross compiling, use the normal target compilers for
973 # building the build platform executables.
974 BUILD_CC="$CC"
975 BUILD_CXX="$CXX"
976 BUILD_LD="$LD"
977 BUILD_LDCXX="$LDCXX"
978 BUILD_NM="$NM"
979 BUILD_AS="$AS"
980 BUILD_OBJCOPY="$OBJCOPY"
981 BUILD_STRIP="$STRIP"
982 BUILD_AR="$AR"
992 AC_SUBST(BUILD_NM)
993 AC_SUBST(BUILD_AS)
994 AC_SUBST(BUILD_AR)
995 ])
996
997 # Do some additional checks on the detected tools.
998 AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
999 [
1000 # Check for extra potential brokenness.
1001 if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
1002 # On Windows, double-check that we got the right compiler.
1003 CC_VERSION_OUTPUT=`$CC 2>&1 | $GREP -v 'ERROR.*UtilTranslatePathList' | $HEAD -n 1 | $TR -d '\r'`
1004 COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
1005 if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
1006 if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
1007 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".])
1008 fi
1009 elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
1010 if test "x$COMPILER_CPU_TEST" != "xx64"; then
1011 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
1012 fi
1013 elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
1014 if test "x$COMPILER_CPU_TEST" != "xARM64"; then
1015 AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
1016 fi
1017 fi
1018 fi
1019
1020 if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
1021 # Check if linker has -z noexecstack.
1022 HAS_NOEXECSTACK=`$CC -Wl,--help 2>/dev/null | $GREP 'z noexecstack'`
1023 # This is later checked when setting flags.
1024 fi
1025
1026 # Setup hotspot lecagy names for toolchains
1027 HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
1028 if test "x$TOOLCHAIN_TYPE" = xclang; then
1029 HOTSPOT_TOOLCHAIN_TYPE=gcc
1030 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
1031 HOTSPOT_TOOLCHAIN_TYPE=visCPP
1032 fi
1033 AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
1034 ])
1035
|