[clang] [offload-arch] Fix clangOffloadArch link with BUILD_SHARED_LIBS=ON (PR #229075)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 5 06:47:27 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Nikita Kornev (KornevNikita)
<details>
<summary>Changes</summary>
add_llvm_library ignores STATIC, so with BUILD_SHARED_LIBS=ON the library was built as a shared object and failed to link because Verbose is defined in the tool. Build it with llvm_add_library STATIC and move Verbose and OffloadArchCategory into the library.
Fixes build failures after #<!-- -->226552 (e.g. https://lab.llvm.org/buildbot/#/builders/226/builds/23094).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
Full diff: https://github.com/llvm/llvm-project/pull/229075.diff
4 Files Affected:
- (modified) clang/tools/offload-arch/OffloadArch.cpp (+2-5)
- (modified) clang/tools/offload-arch/lib/CMakeLists.txt (+5-4)
- (added) clang/tools/offload-arch/lib/OffloadArchOptions.cpp (+22)
- (modified) clang/unittests/tools/offload-arch/OffloadArchTest.cpp (-3)
``````````diff
diff --git a/clang/tools/offload-arch/OffloadArch.cpp b/clang/tools/offload-arch/OffloadArch.cpp
index 934d20fd95f72..68404c0da1aba 100644
--- a/clang/tools/offload-arch/OffloadArch.cpp
+++ b/clang/tools/offload-arch/OffloadArch.cpp
@@ -12,8 +12,8 @@
using namespace llvm;
-// Mark all our options with this category.
-static cl::OptionCategory OffloadArchCategory("offload-arch options");
+// Defined in lib/OffloadArchOptions.cpp.
+extern cl::OptionCategory OffloadArchCategory;
extern cl::OptionCategory AMDGPUArchByHIPCategory;
@@ -32,9 +32,6 @@ static cl::opt<VendorName>
clEnumVal(nvptx, "Only print NVIDIA GPUs"),
clEnumVal(intel, "Only print Intel GPUs")));
-cl::opt<bool> Verbose("verbose", cl::desc("Enable verbose output"),
- cl::init(false), cl::cat(OffloadArchCategory));
-
static void PrintVersion(raw_ostream &OS) {
OS << clang::getClangToolFullVersion("offload-arch") << '\n';
}
diff --git a/clang/tools/offload-arch/lib/CMakeLists.txt b/clang/tools/offload-arch/lib/CMakeLists.txt
index 2692229dc675b..26c88ad701001 100644
--- a/clang/tools/offload-arch/lib/CMakeLists.txt
+++ b/clang/tools/offload-arch/lib/CMakeLists.txt
@@ -1,12 +1,13 @@
# Not add_clang_library: this is not part of clang's public library interface,
-# the sources are shared between offload-arch and its unit tests.
-add_llvm_library(clangOffloadArch STATIC
+# the sources are shared between offload-arch and its unit tests. Use
+# llvm_add_library directly, because add_llvm_library ignores STATIC and builds
+# a shared library with BUILD_SHARED_LIBS=ON, which is never installed.
+llvm_add_library(clangOffloadArch STATIC
AMDGPUArchByHIP.cpp
AMDGPUArchByKFD.cpp
LevelZeroArch.cpp
NVPTXArch.cpp
-
- BUILDTREE_ONLY
+ OffloadArchOptions.cpp
LINK_COMPONENTS
Support
diff --git a/clang/tools/offload-arch/lib/OffloadArchOptions.cpp b/clang/tools/offload-arch/lib/OffloadArchOptions.cpp
new file mode 100644
index 0000000000000..5f6d334d7ddfe
--- /dev/null
+++ b/clang/tools/offload-arch/lib/OffloadArchOptions.cpp
@@ -0,0 +1,22 @@
+//===- OffloadArchOptions.cpp - options shared by offload-arch -*- C++ -*-===//
+//
+// 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 file defines the command line options used by both the offload-arch
+// tool and the vendor-specific GPU detection code.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/CommandLine.h"
+
+using namespace llvm;
+
+// Mark all our options with this category.
+cl::OptionCategory OffloadArchCategory("offload-arch options");
+
+cl::opt<bool> Verbose("verbose", cl::desc("Enable verbose output"),
+ cl::init(false), cl::cat(OffloadArchCategory));
diff --git a/clang/unittests/tools/offload-arch/OffloadArchTest.cpp b/clang/unittests/tools/offload-arch/OffloadArchTest.cpp
index 7de00610bd189..1c14209a537e5 100644
--- a/clang/unittests/tools/offload-arch/OffloadArchTest.cpp
+++ b/clang/unittests/tools/offload-arch/OffloadArchTest.cpp
@@ -8,7 +8,6 @@
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
@@ -35,8 +34,6 @@ std::string getIntelGPUArchName(uint32_t IPVersion);
using namespace llvm;
-cl::opt<bool> Verbose("offload-arch-test-verbose", cl::Hidden, cl::init(false));
-
#ifdef _WIN32
// --- compareVersions ---
``````````
</details>
https://github.com/llvm/llvm-project/pull/229075
More information about the cfe-commits
mailing list