forked from OSchip/llvm-project
[gn build] Add build files for bugpoint-passes and LLVMHello plugins
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 llvm-svn: 350234
This commit is contained in:
parent
3d25e8d9f8
commit
a57ffac7c8
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
@ -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",
|
||||
]
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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.
|
||||
}
|
|
@ -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.
|
||||
}
|
Loading…
Reference in New Issue