From 284bdf5cb8433f413bed306d5454ca4b02719b92 Mon Sep 17 00:00:00 2001 From: Bingwu Zhang Date: Tue, 21 Jan 2025 19:37:04 +0800 Subject: [PATCH] Try to resolve path of LLD when using Clang To allow users override LLD variable and specify an alternative linker, such as mold, who are also capable to link and produce a working OpenJDK. Signed-off-by: Bingwu Zhang --- make/autoconf/flags-ldflags.m4 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4 index 2e060a71d4d05..0df91219d25ae 100644 --- a/make/autoconf/flags-ldflags.m4 +++ b/make/autoconf/flags-ldflags.m4 @@ -71,10 +71,13 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER], LDFLAGS_CXX_PARTIAL_LINKING="$MACHINE_FLAG -r" if test "x$OPENJDK_TARGET_OS" = xlinux; then + BASIC_LDFLAGS="-Wl,--exclude-libs,ALL" # Clang needs the lld linker to work correctly - BASIC_LDFLAGS="-fuse-ld=lld -Wl,--exclude-libs,ALL" - if test "x$CXX_IS_USER_SUPPLIED" = xfalse && test "x$CC_IS_USER_SUPPLIED" = xfalse; then - UTIL_REQUIRE_PROGS(LLD, lld, $TOOLCHAIN_PATH:$PATH) + UTIL_LOOKUP_PROGS(LLD, lld, $TOOLCHAIN_PATH:$PATH) + if test "x$LLD" = x; then + BASIC_LDFLAGS="$BASIC_LDFLAGS -fuse-ld=lld" + else + BASIC_LDFLAGS="$BASIC_LDFLAGS --ld-path=$LLD" fi fi if test "x$OPENJDK_TARGET_OS" = xaix; then