Skip to content

Commit 7ae8001

Browse files
committed
Backport 9604ee8
1 parent 0a71d8e commit 7ae8001

File tree

60 files changed

+3580
-1434
lines changed

Some content is hidden

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

60 files changed

+3580
-1434
lines changed

make/autoconf/basics.m4

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,16 @@ AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
672672
fi
673673
])
674674

675+
###############################################################################
676+
# Evaluates platform specific overrides for build devkit variables.
677+
# $1: Name of variable
678+
AC_DEFUN([BASIC_EVAL_BUILD_DEVKIT_VARIABLE],
679+
[
680+
if test "x[$]$1" = x; then
681+
eval $1="\${$1_${OPENJDK_BUILD_CPU}}"
682+
fi
683+
])
684+
675685
###############################################################################
676686
AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
677687
[

make/autoconf/basics_windows.m4

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -381,10 +381,44 @@ AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
381381
# called fixpath.
382382
FIXPATH=
383383
if test "x$OPENJDK_BUILD_OS" = xwindows; then
384-
AC_MSG_CHECKING([if fixpath can be created])
385384
FIXPATH_SRC="$TOPDIR/make/src/native/fixpath.c"
386-
FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
387385
FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
386+
387+
if test "x$OPENJDK_TARGET_CPU" != "xaarch64"; then
388+
AC_MSG_CHECKING([if fixpath can be created])
389+
390+
FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
391+
FIXPATH_SRC_W="$FIXPATH_SRC"
392+
FIXPATH_BIN_W="$FIXPATH_BIN"
393+
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
394+
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
395+
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
396+
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
397+
cd $FIXPATH_DIR
398+
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
399+
cd $CURDIR
400+
401+
if test ! -x $FIXPATH_BIN; then
402+
AC_MSG_RESULT([no])
403+
cat $FIXPATH_DIR/fixpath1.log
404+
AC_MSG_ERROR([Could not create $FIXPATH_BIN])
405+
fi
406+
AC_MSG_RESULT([yes])
407+
408+
else # OPENJDK_TARGET_CPU is aarch64
409+
AC_MSG_CHECKING([if fixpath is in place])
410+
411+
FIXPATH_BIN="$TOPDIR/fixpath.exe"
412+
$RM -rf $FIXPATH_DIR
413+
$MKDIR -p $FIXPATH_DIR
414+
415+
if test ! -x $FIXPATH_BIN; then
416+
AC_MSG_RESULT([no])
417+
AC_MSG_ERROR([Could not find fixpath.exe under $TOPDIR])
418+
fi
419+
AC_MSG_RESULT([yes])
420+
fi
421+
388422
if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
389423
# Important to keep the .exe suffix on Cygwin for Hotspot makefiles
390424
FIXPATH="$FIXPATH_BIN -c"
@@ -396,22 +430,7 @@ AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
396430
fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
397431
FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
398432
fi
399-
FIXPATH_SRC_W="$FIXPATH_SRC"
400-
FIXPATH_BIN_W="$FIXPATH_BIN"
401-
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
402-
BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
403-
$RM -rf $FIXPATH_BIN $FIXPATH_DIR
404-
$MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
405-
cd $FIXPATH_DIR
406-
$CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
407-
cd $CURDIR
408433
409-
if test ! -x $FIXPATH_BIN; then
410-
AC_MSG_RESULT([no])
411-
cat $FIXPATH_DIR/fixpath1.log
412-
AC_MSG_ERROR([Could not create $FIXPATH_BIN])
413-
fi
414-
AC_MSG_RESULT([yes])
415434
AC_MSG_CHECKING([if fixpath.exe works])
416435
cd $FIXPATH_DIR
417436
$FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \

make/autoconf/flags-cflags.m4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
695695
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -DcpuIntel -Di586 -D$FLAGS_CPU_LEGACY_LIB"
696696
fi
697697
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
698-
if test "x$FLAGS_CPU" = xx86_64; then
698+
if test "x$FLAGS_CPU" = xaarch64; then
699+
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_ARM64_ -Darm64"
700+
elif test "x$FLAGS_CPU" = xx86_64; then
699701
$1_DEFINES_CPU_JDK="${$1_DEFINES_CPU_JDK} -D_AMD64_ -Damd64"
700702
else
701703
$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
@@ -186,15 +186,14 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_CPU_DEP],
186186
fi
187187
188188
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
189-
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
190-
$1_CPU_LDFLAGS="-safeseh"
191-
# NOTE: Old build added -machine. Probably not needed.
192-
$1_CPU_LDFLAGS_JVM_ONLY="-machine:I386"
189+
if test "x${OPENJDK_$1_CPU_BITS}" = "x32"; then
193190
$1_CPU_EXECUTABLE_LDFLAGS="-stack:327680"
194-
else
195-
$1_CPU_LDFLAGS_JVM_ONLY="-machine:AMD64"
191+
elif test "x${OPENJDK_$1_CPU_BITS}" = "x64"; then
196192
$1_CPU_EXECUTABLE_LDFLAGS="-stack:1048576"
197193
fi
194+
if test "x${OPENJDK_$1_CPU}" = "xx86"; then
195+
$1_CPU_LDFLAGS="-safeseh"
196+
fi
198197
fi
199198
200199
# JVM_VARIANT_PATH depends on if this is build or target...

make/autoconf/hotspot.m4

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT],
221221
222222
if test "x$ENABLE_AOT" = "xtrue"; then
223223
# Only enable AOT on X64 platforms.
224-
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
224+
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64" ; then
225225
if test -e "${TOPDIR}/src/jdk.aot"; then
226226
if test -e "${TOPDIR}/src/jdk.internal.vm.compiler"; then
227227
ENABLE_AOT="true"
@@ -240,7 +240,7 @@ AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT],
240240
else
241241
ENABLE_AOT="false"
242242
if test "x$enable_aot" = "xyes"; then
243-
AC_MSG_ERROR([AOT is currently only supported on x86_64 and aarch64. Remove --enable-aot.])
243+
AC_MSG_ERROR([AOT is currently only supported on x86_64 and linux-aarch64. Remove --enable-aot.])
244244
fi
245245
fi
246246
fi
@@ -355,7 +355,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
355355
# Only enable Shenandoah on supported arches, and only if requested
356356
AC_MSG_CHECKING([if shenandoah can be built])
357357
if HOTSPOT_CHECK_JVM_FEATURE(shenandoahgc); then
358-
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
358+
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64" ; then
359359
AC_MSG_RESULT([yes])
360360
else
361361
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
@@ -412,7 +412,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
412412
# Only enable jvmci on x86_64, sparcv9 and aarch64
413413
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
414414
test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
415-
test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
415+
test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-aarch64" ; then
416416
AC_MSG_RESULT([yes])
417417
JVM_FEATURES_jvmci="jvmci"
418418
INCLUDE_JVMCI="true"

make/autoconf/toolchain.m4

Lines changed: 56 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -918,14 +918,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
918918
. $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
919919
# This potentially sets the following:
920920
# A descriptive name of the devkit
921-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
921+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
922922
# Corresponds to --with-extra-path
923-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
923+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
924924
# Corresponds to --with-toolchain-path
925-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
925+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
926926
# Corresponds to --with-sysroot
927-
BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
928-
# Skip the Window specific parts
927+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
928+
929+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
930+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_INCLUDE])
931+
BASIC_EVAL_BUILD_DEVKIT_VARIABLE([BUILD_DEVKIT_VS_LIB])
932+
fi
929933
fi
930934
931935
AC_MSG_CHECKING([for build platform devkit])
@@ -935,13 +939,22 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
935939
AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
936940
fi
937941
938-
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
942+
PATH="$BUILD_DEVKIT_EXTRA_PATH:$PATH"
939943
940-
# Fallback default of just /bin if DEVKIT_PATH is not defined
944+
# Fallback default of just /bin if DEVKIT_PATH is not defined
941945
if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
942946
BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
943947
fi
944-
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
948+
PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$PATH"
949+
950+
BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
951+
952+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
953+
BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
954+
BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
955+
956+
TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([BUILD_])
957+
fi
945958
fi
946959
fi
947960
@@ -967,9 +980,37 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
967980
BASIC_FIXUP_EXECUTABLE(BUILD_STRIP)
968981
# Assume the C compiler is the assembler
969982
BUILD_AS="$BUILD_CC -c"
970-
# Just like for the target compiler, use the compiler as linker
971-
BUILD_LD="$BUILD_CC"
972-
BUILD_LDCXX="$BUILD_CXX"
983+
if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
984+
# In the Microsoft toolchain we have a separate LD command "link".
985+
# Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
986+
# a cygwin program for something completely different.
987+
AC_CHECK_PROG([BUILD_LD], [link$EXE_SUFFIX],[link$EXE_SUFFIX],,, [$CYGWIN_LINK])
988+
BASIC_FIXUP_EXECUTABLE(BUILD_LD)
989+
# Verify that we indeed succeeded with this trick.
990+
AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
991+
992+
# Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
993+
# which, in combination with WSLENV, will make the WSL layer complain
994+
old_path="$PATH"
995+
PATH=
996+
997+
"$BUILD_LD" --version > /dev/null
998+
999+
if test $? -eq 0 ; then
1000+
AC_MSG_RESULT([no])
1001+
AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
1002+
else
1003+
AC_MSG_RESULT([yes])
1004+
fi
1005+
1006+
PATH="$old_path"
1007+
1008+
BUILD_LDCXX="$BUILD_LD"
1009+
else
1010+
# Just like for the target compiler, use the compiler as linker
1011+
BUILD_LD="$BUILD_CC"
1012+
BUILD_LDCXX="$BUILD_CXX"
1013+
fi
9731014
9741015
PATH="$OLDPATH"
9751016
@@ -1025,6 +1066,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
10251066
if test "x$COMPILER_CPU_TEST" != "xx64"; then
10261067
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
10271068
fi
1069+
elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
1070+
if test "x$COMPILER_CPU_TEST" != "xARM64"; then
1071+
AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".])
1072+
fi
10281073
fi
10291074
fi
10301075

0 commit comments

Comments
 (0)