]> granicus.if.org Git - llvm/commitdiff
[gn build] Add some llvm/tools: llvm-exegesis, llvm-extract, llvm-link
authorNico Weber <nicolasweber@gmx.de>
Mon, 31 Dec 2018 23:48:22 +0000 (23:48 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 31 Dec 2018 23:48:22 +0000 (23:48 +0000)
Also add build file for dependency llvm/lib/ExecutionEngine/MCJIT.

The exegesis stuff is pretty hairy and knows a lot about Target internals (in
general, not specifically in the GN build). I put the llvm-tblgen -gen-exegesis
call in llvm/tools/llvm-exegesis/lib/X86, instead of in llvm/lib/Target/X86
where it is in CMake land, and asked on D52932 why it's in that place in the
CMake build.

Needed for check-llvm.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350184 91177308-0d34-0410-b5e6-96231b3b80d8

utils/gn/secondary/BUILD.gn
utils/gn/secondary/llvm/lib/ExecutionEngine/MCJIT/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/tools/llvm-exegesis/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/tools/llvm-exegesis/lib/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/tools/llvm-exegesis/lib/X86/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/tools/llvm-extract/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/tools/llvm-link/BUILD.gn [new file with mode: 0644]

index b000e53fd548278be42096731c0a643587a8297b..f4bc6b12e6e280ff9abc5a9dc512d025982b0ef6 100644 (file)
@@ -5,6 +5,9 @@ group("default") {
   deps = [
     "//clang/test",
     "//lld/test",
+    "//llvm/tools/llvm-exegesis",
+    "//llvm/tools/llvm-extract",
+    "//llvm/tools/llvm-link",
     "//llvm/tools/llvm-rc",
     "//llvm/tools/llvm-rtdyld",
     "//llvm/tools/llvm-undname",
diff --git a/utils/gn/secondary/llvm/lib/ExecutionEngine/MCJIT/BUILD.gn b/utils/gn/secondary/llvm/lib/ExecutionEngine/MCJIT/BUILD.gn
new file mode 100644 (file)
index 0000000..9d686ce
--- /dev/null
@@ -0,0 +1,14 @@
+static_library("MCJIT") {
+  output_name = "LLVMMCJIT"
+  deps = [
+    "//llvm/lib/ExecutionEngine",
+    "//llvm/lib/ExecutionEngine/RuntimeDyld",
+    "//llvm/lib/IR",
+    "//llvm/lib/Object",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target",
+  ]
+  sources = [
+    "MCJIT.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/tools/llvm-exegesis/BUILD.gn b/utils/gn/secondary/llvm/tools/llvm-exegesis/BUILD.gn
new file mode 100644 (file)
index 0000000..7b81b7e
--- /dev/null
@@ -0,0 +1,15 @@
+executable("llvm-exegesis") {
+  deps = [
+    "lib",
+    "//llvm/lib/CodeGen",
+    "//llvm/lib/ExecutionEngine",
+    "//llvm/lib/ExecutionEngine/MCJIT",
+    "//llvm/lib/MC",
+    "//llvm/lib/Object",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target:NativeTarget",
+  ]
+  sources = [
+    "llvm-exegesis.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/tools/llvm-exegesis/lib/BUILD.gn b/utils/gn/secondary/llvm/tools/llvm-exegesis/lib/BUILD.gn
new file mode 100644 (file)
index 0000000..418e8bc
--- /dev/null
@@ -0,0 +1,41 @@
+import("//llvm/lib/Target/targets.gni")
+
+static_library("lib") {
+  output_name = "LLVMExegesis"
+  deps = [
+    "//llvm/lib/Analysis",
+    "//llvm/lib/CodeGen",
+    "//llvm/lib/ExecutionEngine",
+    "//llvm/lib/ExecutionEngine/MCJIT",
+    "//llvm/lib/IR",
+    "//llvm/lib/MC",
+    "//llvm/lib/Object",
+    "//llvm/lib/ObjectYAML",
+    "//llvm/lib/Support",
+  ]
+  sources = [
+    "Analysis.cpp",
+    "Assembler.cpp",
+    "BenchmarkResult.cpp",
+    "BenchmarkRunner.cpp",
+    "Clustering.cpp",
+    "CodeTemplate.cpp",
+    "Latency.cpp",
+    "LlvmState.cpp",
+    "MCInstrDescView.cpp",
+    "PerfHelper.cpp",
+    "RegisterAliasing.cpp",
+    "RegisterValue.cpp",
+    "SnippetGenerator.cpp",
+    "Target.cpp",
+    "Uops.cpp",
+  ]
+
+  # FIXME: Add this once llvm/lib/Target/AArch64 exists.
+  #if (llvm_build_AArch64) {
+  #  deps += [ "AArch64" ]
+  #}
+  if (llvm_build_X86) {
+    deps += [ "X86" ]
+  }
+}
diff --git a/utils/gn/secondary/llvm/tools/llvm-exegesis/lib/X86/BUILD.gn b/utils/gn/secondary/llvm/tools/llvm-exegesis/lib/X86/BUILD.gn
new file mode 100644 (file)
index 0000000..a1cb577
--- /dev/null
@@ -0,0 +1,21 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("X86GenExegesis") {
+  args = [ "-gen-exegesis" ]
+  td_file = "//llvm/lib/Target/X86/X86.td"
+}
+
+static_library("X86") {
+  output_name = "LLVMExegesisX86"
+  deps = [
+    ":X86GenExegesis",
+
+    # Exegesis reaches inside the Target/X86 tablegen internals and must
+    # depend on this Target/X86-internal build target.
+    "//llvm/lib/Target/X86/MCTargetDesc",
+  ]
+  sources = [
+    "Target.cpp",
+  ]
+  include_dirs = [ "//llvm/lib/Target/X86" ]
+}
diff --git a/utils/gn/secondary/llvm/tools/llvm-extract/BUILD.gn b/utils/gn/secondary/llvm/tools/llvm-extract/BUILD.gn
new file mode 100644 (file)
index 0000000..c8699a7
--- /dev/null
@@ -0,0 +1,12 @@
+executable("llvm-extract") {
+  deps = [
+    "//llvm/lib/Bitcode/Writer",
+    "//llvm/lib/IR",
+    "//llvm/lib/IRReader",
+    "//llvm/lib/Support",
+    "//llvm/lib/Transforms/IPO",
+  ]
+  sources = [
+    "llvm-extract.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/tools/llvm-link/BUILD.gn b/utils/gn/secondary/llvm/tools/llvm-link/BUILD.gn
new file mode 100644 (file)
index 0000000..10d6783
--- /dev/null
@@ -0,0 +1,16 @@
+executable("llvm-link") {
+  deps = [
+    "//llvm/lib/Bitcode/Reader",
+    "//llvm/lib/Bitcode/Writer",
+    "//llvm/lib/IR",
+    "//llvm/lib/IRReader",
+    "//llvm/lib/Linker",
+    "//llvm/lib/Object",
+    "//llvm/lib/Support",
+    "//llvm/lib/Transforms/IPO",
+    "//llvm/lib/Transforms/Utils",
+  ]
+  sources = [
+    "llvm-link.cpp",
+  ]
+}