[llvm] a514ce4 - [gn] Add clang_static_plugin_sources to link out-of-tree plugins into clang (#226381)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 25 08:06:24 PDT 2026
Author: Nico Weber
Date: 2026-09-25T08:06:19-07:00
New Revision: a514ce406f06bfbebeb5d8d9bc76e9cc5ec6a92b
URL: https://github.com/llvm/llvm-project/commit/a514ce406f06bfbebeb5d8d9bc76e9cc5ec6a92b
DIFF: https://github.com/llvm/llvm-project/commit/a514ce406f06bfbebeb5d8d9bc76e9cc5ec6a92b.diff
LOG: [gn] Add clang_static_plugin_sources to link out-of-tree plugins into clang (#226381)
This is useful for testing and profiling e.g. Chromium's clang plugins
without having to export symbols from the clang binary.
# args.gn
clang_static_plugin_sources = [
"/path/to/chromium/src/tools/clang/plugins/FindBadConstructsAction.cpp",
...
]
clang_static_plugin_include_dirs = [ "/path/to/chromium/src" ]
...or put the above in a gni file and put just `import("plugins.gni")`
in args.gn
No behavior change if the list is empty (the default).
Added:
Modified:
llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
Removed:
################################################################################
diff --git a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
index cd3c64256a3e6..76c6cf4f05624 100644
--- a/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
+++ b/llvm/utils/gn/secondary/clang/tools/driver/BUILD.gn
@@ -3,6 +3,16 @@ import("//llvm/utils/gn/build/symlink_or_copy.gni")
import("//llvm/utils/gn/build/write_cmake_config.gni")
import("//llvm/version.gni")
+declare_args() {
+ # Additional source files to compile into the clang binary.
+ # This is for adding statically linked out-of-tree clang plugins.
+ # Use absolute paths ("/path/to/Plugin.cpp").
+ clang_static_plugin_sources = []
+
+ # Include directories for clang_static_plugin_sources.
+ clang_static_plugin_include_dirs = []
+}
+
symlinks = [
# target_name, symlink_target pairs: GN doesn't support '+' in rule names.
[
@@ -99,5 +109,9 @@ driver_executable("clang") {
"cc1gen_reproducer_main.cpp",
"driver.cpp",
]
+ if (clang_static_plugin_sources != []) {
+ sources += clang_static_plugin_sources
+ include_dirs = clang_static_plugin_include_dirs
+ }
needs_posix_utility_signal_handling = true
}
More information about the llvm-commits
mailing list