Skip to content

Commit 9604ee8

Browse files
Monica Beckwithluhenrylewurm
authored andcommitted
8248238: Implementation: JEP 388: Windows AArch64 Support
Co-authored-by: Monica Beckwith <mbeckwit@openjdk.org> Co-authored-by: Ludovic Henry <luhenry@openjdk.org> Co-authored-by: Bernhard Urban-Forster <burban@openjdk.org> Reviewed-by: dholmes, cjplummer, aph, ihse
1 parent 1c2754b commit 9604ee8

File tree

62 files changed

+2440
-358
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2440
-358
lines changed

make/autoconf/basic.m4

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
117117
fi
118118
])
119119

120+
###############################################################################
121+
# Evaluates platform specific overrides for build devkit variables.
122+
# $1: Name of variable
123+
AC_DEFUN([BASIC_EVAL_BUILD_DEVKIT_VARIABLE],
124+
[
125+
if test "x[$]$1" = x; then
126+
eval $1="\${$1_${OPENJDK_BUILD_CPU}}"
127+
fi
128+
])
129+
120130
###############################################################################
121131
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
122132
[

make/autoconf/flags-cflags.m4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
666666
667667
# toolchain dependend, per-cpu
668668
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
669-
if test "x$FLAGS_CPU" = xx86_64; then
669+
if test "x$FLAGS_CPU" = xaarch64; then
670+
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_ARM64_ -Darm64"
671+
elif test "x$FLAGS_CPU" = xx86_64; then
670672
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
671673
else
672674
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_X86_ -Dx86"

make/autoconf/flags-ldflags.m4

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
165165
fi
166166
167167
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
168-
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
169-
$1_CPU_LDFLAGS="-safeseh"
170-
# NOTE: Old build added -machine. Probably not needed.
171-
$1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
168+
if test "x${OPENJDK_$1_CPU_BITS}" = "x32"; then
172169
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
173-
else
174-
$1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
170+
elif test "x${OPENJDK_$1_CPU_BITS}" = "x64"; then
175171
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
176172
fi
173+
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
174+
$1_CPU_LDFLAGS="-safeseh"
175+
fi
177176
fi
178177
179178
# JVM_VARIANT_PATH depends on if this is build or target...

make/autoconf/jvm-features.m4

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_AOT],
237237
JVM_FEATURES_CHECK_AVAILABILITY(aot, [
238238
AC_MSG_CHECKING([if platform is supported by AOT])
239239
# AOT is only available where JVMCI is available since it requires JVMCI.
240-
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
241-
test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
240+
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
241+
AC_MSG_RESULT([yes])
242+
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
242243
AC_MSG_RESULT([yes])
243244
else
244245
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
@@ -303,8 +304,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_GRAAL],
303304
JVM_FEATURES_CHECK_AVAILABILITY(graal, [
304305
AC_MSG_CHECKING([if platform is supported by Graal])
305306
# Graal is only available where JVMCI is available since it requires JVMCI.
306-
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
307-
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
307+
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
308+
AC_MSG_RESULT([yes])
309+
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
308310
AC_MSG_RESULT([yes])
309311
else
310312
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])
@@ -336,8 +338,9 @@ AC_DEFUN_ONCE([JVM_FEATURES_CHECK_JVMCI],
336338
[
337339
JVM_FEATURES_CHECK_AVAILABILITY(jvmci, [
338340
AC_MSG_CHECKING([if platform is supported by JVMCI])
339-
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
340-
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
341+
if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
342+
AC_MSG_RESULT([yes])
343+
elif test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64"; then
341344
AC_MSG_RESULT([yes])
342345
else
343346
AC_MSG_RESULT([no, $OPENJDK_TARGET_CPU])

make/autoconf/toolchain.m4

Lines changed: 54 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -872,14 +872,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
872872
. $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
873873
# This potentially sets the following:
874874
# A descriptive name of the devkit
875-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
875+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
876876
# Corresponds to --with-extra-path
877-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
877+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
878878
# Corresponds to --with-toolchain-path
879-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
879+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
880880
# Corresponds to --with-sysroot
881-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
882-
# Skip the Window specific parts
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
883887
fi
884888
885889
AC_MSG_CHECKING([for build platform devkit])
@@ -889,13 +893,20 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
889893
AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
890894
fi
891895
892-
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
893-
894-
# Fallback default of just /bin if DEVKIT_PATH is not defined
896+
# Fallback default of just /bin if DEVKIT_PATH is not defined
895897
if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
896898
BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
897899
fi
898900
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
901+
902+
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
903+
904+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
905+
BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
906+
BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
907+
908+
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
909+
fi
899910
fi
900911
fi
901912
@@ -921,9 +932,37 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
921932
UTIL_FIXUP_EXECUTABLE(BUILD_STRIP)
922933
# Assume the C compiler is the assembler
923934
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"
935+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
936+
# In the Microsoft toolchain we have a separate LD command "link".
937+
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
938+
# a cygwin program for something completely different.
939+
AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
940+
UTIL_FIXUP_EXECUTABLE(BUILD_LD)
941+
# Verify that we indeed succeeded with this trick.
942+
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
943+
944+
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
945+
# which, in combination with WSLENV, will make the WSL layer complain
946+
old_path="$PATH"
947+
PATH=
948+
949+
"$BUILD_LD" --version > /dev/null
950+
951+
if test $? -eq 0 ; then
952+
AC_MSG_RESULT([no])
953+
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
954+
else
955+
AC_MSG_RESULT([yes])
956+
fi
957+
958+
PATH="$old_path"
959+
960+
BUILD_LDCXX="$BUILD_LD"
961+
else
962+
# Just like for the target compiler, use the compiler as linker
963+
BUILD_LD="$BUILD_CC"
964+
BUILD_LDCXX="$BUILD_CXX"
965+
fi
927966
928967
PATH="$OLDPATH"
929968
@@ -974,6 +1013,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
9741013
if test "x$COMPILER_CPU_TEST" != "xx64"; then
9751014
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
9761015
fi
1016+
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
1017+
if test "x$COMPILER_CPU_TEST" != "xARM64"; then
1018+
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
1019+
fi
9771020
fi
9781021
fi
9791022

0 commit comments

Comments
 (0)