From 2f39e8a0fb552993019f60d5e01faacb266ead7a Mon Sep 17 00:00:00 2001 From: parabola94 Date: Mon, 21 Jul 2025 18:29:59 +0900 Subject: [PATCH 1/2] [flang][Driver] Enable FLANG_DEFAULT_LINKER --- flang/CMakeLists.txt | 2 +- flang/include/flang/Config/config.h.cmake | 16 +++++++++------- flang/test/Driver/linker-flags.f90 | 2 +- flang/tools/flang-driver/driver.cpp | 2 ++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index 0bfada476348a..6cbe6d4ed6a3e 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -317,7 +317,7 @@ if (NOT ENABLE_LINKER_BUILD_ID) set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") endif() -set(FLANG_DEFAULT_LINKER "" CACHE STRING +set(FLANG_DEFAULT_LINKER ${CLANG_DEFAULT_LINKER} CACHE STRING "Default linker to use (linker name or absolute path, empty for platform default)") set(FLANG_DEFAULT_RTLIB "" CACHE STRING diff --git a/flang/include/flang/Config/config.h.cmake b/flang/include/flang/Config/config.h.cmake index fd34d3f403631..92fbd14c3d6db 100644 --- a/flang/include/flang/Config/config.h.cmake +++ b/flang/include/flang/Config/config.h.cmake @@ -1,10 +1,10 @@ -#===-- include/flang/Config/config.h.cmake ---------------------------------===# -# -# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -# See https://llvm.org/LICENSE.txt for license information. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# -#===------------------------------------------------------------------------===# +//===-- include/flang/Config/config.h.cmake -------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// /* This generated file is for internal use. Do not include it from headers. */ @@ -16,6 +16,8 @@ #define FLANG_VERSION "${FLANG_VERSION}" +#define FLANG_DEFAULT_LINKER "${FLANG_DEFAULT_LINKER}" + #endif diff --git a/flang/test/Driver/linker-flags.f90 b/flang/test/Driver/linker-flags.f90 index ad48ea1b9e9b1..2b56fdfb8da05 100644 --- a/flang/test/Driver/linker-flags.f90 +++ b/flang/test/Driver/linker-flags.f90 @@ -77,7 +77,7 @@ ! MINGW-SAME: -lflang_rt.runtime ! MINGW-STATIC-FLANGRT: "{{.*}}{{\\|/}}libflang_rt.runtime.a" -! NOTE: This also matches lld-link (when CLANG_DEFAULT_LINKER=lld) and +! NOTE: This also matches lld-link (when FLANG_DEFAULT_LINKER=lld) and ! any .exe suffix that is added when resolving to the full path of ! (lld-)link.exe on Windows platforms. The suffix may not be added ! when the executable is not found or on non-Windows platforms. diff --git a/flang/tools/flang-driver/driver.cpp b/flang/tools/flang-driver/driver.cpp index 3a2dffc66428f..b1e02383cd33d 100644 --- a/flang/tools/flang-driver/driver.cpp +++ b/flang/tools/flang-driver/driver.cpp @@ -16,6 +16,7 @@ //===----------------------------------------------------------------------===// #include "clang/Driver/Driver.h" +#include "flang/Config/config.h" #include "flang/Frontend/CompilerInvocation.h" #include "flang/Frontend/TextDiagnosticPrinter.h" #include "clang/Basic/Diagnostic.h" @@ -138,6 +139,7 @@ int main(int argc, const char **argv) { llvm::sys::getDefaultTargetTriple(), diags, "flang LLVM compiler"); theDriver.setTargetAndMode(targetandMode); + theDriver.setPreferredLinker(FLANG_DEFAULT_LINKER); #ifdef FLANG_RUNTIME_F128_MATH_LIB theDriver.setFlangF128MathLibrary(FLANG_RUNTIME_F128_MATH_LIB); #endif From 8367a46e195da2faf33a93b5ade65a0bc0a4fe44 Mon Sep 17 00:00:00 2001 From: parabola94 Date: Thu, 7 Aug 2025 22:07:09 +0900 Subject: [PATCH 2/2] Update flang/CMakeLists.txt Co-authored-by: Michael Kruse --- flang/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index 6cbe6d4ed6a3e..1d16c33f44900 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -317,7 +317,7 @@ if (NOT ENABLE_LINKER_BUILD_ID) set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") endif() -set(FLANG_DEFAULT_LINKER ${CLANG_DEFAULT_LINKER} CACHE STRING +set(FLANG_DEFAULT_LINKER "${CLANG_DEFAULT_LINKER}" CACHE STRING "Default linker to use (linker name or absolute path, empty for platform default)") set(FLANG_DEFAULT_RTLIB "" CACHE STRING