[flang-commits] [flang] [flang][Driver] Enable FLANG_DEFAULT_LINKER (PR #149786)
via flang-commits
flang-commits at lists.llvm.org
Thu Jul 24 14:58:10 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-driver
Author: None (parabola94)
<details>
<summary>Changes</summary>
The default linker can be changed by a CMake variable CLANG_DEFAULT_LINKER at this moment. However, it also changes the default linker invoked by clang. In fact, there already exists FLANG_DEFAULT_LINKER, but it does not work. This patch fixes it.
Note that FLANG_DEFAULT_LINKER will have the same value as CLANG_DEFAULT_LINKER unless it is defined explicitly. That means this patch does not affect the current behavior.
Fixes #<!-- -->73153
---
Full diff: https://github.com/llvm/llvm-project/pull/149786.diff
4 Files Affected:
- (modified) flang/CMakeLists.txt (+1-1)
- (modified) flang/include/flang/Config/config.h.cmake (+9-7)
- (modified) flang/test/Driver/linker-flags.f90 (+1-1)
- (modified) flang/tools/flang-driver/driver.cpp (+2)
``````````diff
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
``````````
</details>
https://github.com/llvm/llvm-project/pull/149786
More information about the flang-commits
mailing list