Skip to content

Commit

Permalink
[gn build] Add build files for bugpoint-passes and LLVMHello plugins
Browse files Browse the repository at this point in the history
These two plugins are loaded into a host process that contains all LLVM
symbols, so they don't link against anything. This required minor readjustments
to the tablegen() setup of IR.

Needed for check-llvm.

Differential Revision: https://reviews.llvm.org/D56204


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350234 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
nico committed Jan 2, 2019
1 parent daf05fe commit d0bc1fe
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 8 deletions.
9 changes: 9 additions & 0 deletions utils/gn/secondary/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@ group("default") {
"//clang/tools/clang-func-mapping",
]
}
if (host_os != "win") {
# loadable_modules don't work on Windows.
# FIXME: In the CMake build, ENABLE_SHARED makes them work somehow
# (but they're off by default there too).
deps += [
"//llvm/lib/Transforms/Hello",
"//llvm/tools/bugpoint-passes",
]
}
testonly = true
}

Expand Down
18 changes: 16 additions & 2 deletions utils/gn/secondary/llvm/include/llvm/IR/BUILD.gn
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import("//llvm/utils/TableGen/tablegen.gni")

tablegen("IntrinsicEnums") {
visibility = [ "//llvm/lib/IR" ]
visibility = [ ":public_tablegen" ]
args = [ "-gen-intrinsic-enums" ]
td_file = "Intrinsics.td"
}
Expand All @@ -13,6 +13,20 @@ tablegen("IntrinsicImpl") {
}

tablegen("Attributes") {
visibility = [ "//llvm/lib/IR" ]
visibility = [ ":public_tablegen" ]
args = [ "-gen-attrs" ]
}

# Groups all tablegen() calls that create .inc files that are included in
# IR's public headers. //llvm/lib/Target has this as a public_dep, so targets
# dependign on //llvm/lib/IR don't need to depend on this. This exists
# solely for targets that use IR's public headers but don't link against IR.
group("public_tablegen") {
public_deps = [
# IR's public headers include Attributes.inc.
":Attributes",

# IR's public headers include IntrinsicEnums.inc.
":IntrinsicEnums",
]
}
7 changes: 1 addition & 6 deletions utils/gn/secondary/llvm/lib/IR/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,7 @@ static_library("IR") {
public_deps = [
# Must be public_dep because IR's public headers include llvm-config.h.
"//llvm/include/llvm/Config:llvm-config",

# Must be public_dep because IR's public headers include Attributes.inc.
"//llvm/include/llvm/IR:Attributes",

# Must be public_dep because IR's public headers include IntrinsicEnums.inc.
"//llvm/include/llvm/IR:IntrinsicEnums",
"//llvm/include/llvm/IR:public_tablegen",
]
deps = [
":AttributesCompatFunc",
Expand Down
22 changes: 22 additions & 0 deletions utils/gn/secondary/llvm/lib/Transforms/Hello/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
assert(host_os != "win", "loadable modules not supported on win")

loadable_module("Hello") {
output_name = "LLVMHello"
deps = [
# LLVMHello doesn't want to link in any LLVM code, it just
# needs its headers.
"//llvm/include/llvm/IR:public_tablegen",
]
sources = [
"Hello.cpp",
]

if (host_os == "linux") {
# The GN build currently doesn't globally pass -fPIC, but that's
# needed for building .so files on Linux. Just pass it manually
# for loadable_modules for now.
cflags = [ "-fPIC" ]
}

# FIXME: Use Hello.exports to remove all exports.
}
22 changes: 22 additions & 0 deletions utils/gn/secondary/llvm/tools/bugpoint-passes/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
assert(host_os != "win", "loadable modules not supported on win")

loadable_module("bugpoint-passes") {
output_name = "BugpointPasses"
deps = [
# BugpointPasses doesn't want to link in any LLVM code, it just
# needs its headers.
"//llvm/include/llvm/IR:public_tablegen",
]
sources = [
"TestPasses.cpp",
]

if (host_os == "linux") {
# The GN build currently doesn't globally pass -fPIC, but that's
# needed for building .so files on Linux. Just pass it manually
# for loadable_modules for now.
cflags = [ "-fPIC" ]
}

# FIXME: Use bugpoint.exports to remove all exports.
}

0 comments on commit d0bc1fe

Please sign in to comment.