[llvm] b580288 - [gn build] Add LoongArch target
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 6 13:11:59 PST 2022
Author: Nico Weber
Date: 2022-12-06T16:11:52-05:00
New Revision: b58028831e9d6137238930bc6dd36cfbc06200a6
URL: https://github.com/llvm/llvm-project/commit/b58028831e9d6137238930bc6dd36cfbc06200a6
DIFF: https://github.com/llvm/llvm-project/commit/b58028831e9d6137238930bc6dd36cfbc06200a6.diff
LOG: [gn build] Add LoongArch target
Differential Revision: https://reviews.llvm.org/D139256
Added:
llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/AsmParser/BUILD.gn
llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/BUILD.gn
llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/Disassembler/BUILD.gn
llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/MCTargetDesc/BUILD.gn
llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/TargetInfo/BUILD.gn
Modified:
llvm/utils/gn/secondary/llvm/lib/Target/targets.gni
Removed:
################################################################################
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/AsmParser/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/AsmParser/BUILD.gn
new file mode 100644
index 0000000000000..2d31092645916
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/AsmParser/BUILD.gn
@@ -0,0 +1,24 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LoongArchGenAsmMatcher") {
+ visibility = [
+ ":AsmParser",
+ "//llvm/lib/Target/LoongArch:LLVMLoongArchCodeGen",
+ ]
+ args = [ "-gen-asm-matcher" ]
+ td_file = "../LoongArch.td"
+}
+
+static_library("AsmParser") {
+ output_name = "LLVMLoongArchAsmParser"
+ deps = [
+ ":LoongArchGenAsmMatcher",
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCParser",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/LoongArch/MCTargetDesc",
+ "//llvm/lib/Target/LoongArch/TargetInfo",
+ ]
+ include_dirs = [ ".." ]
+ sources = [ "LoongArchAsmParser.cpp" ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/BUILD.gn
new file mode 100644
index 0000000000000..cf7fe990e4615
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/BUILD.gn
@@ -0,0 +1,65 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LoongArchGenDAGISel") {
+ visibility = [ ":LLVMLoongArchCodeGen" ]
+ args = [ "-gen-dag-isel" ]
+ td_file = "LoongArch.td"
+}
+
+tablegen("LoongArchGenMCPseudoLowering") {
+ visibility = [ ":LLVMLoongArchCodeGen" ]
+ args = [ "-gen-pseudo-lowering" ]
+ td_file = "LoongArch.td"
+}
+
+
+static_library("LLVMLoongArchCodeGen") {
+ deps = [
+ ":LoongArchGenDAGISel",
+ ":LoongArchGenMCPseudoLowering",
+
+ # See https://reviews.llvm.org/D137532
+ "AsmParser:LoongArchGenAsmMatcher",
+ "MCTargetDesc",
+ "TargetInfo",
+ "//llvm/include/llvm/Config:llvm-config",
+ "//llvm/lib/Analysis",
+ "//llvm/lib/CodeGen",
+ "//llvm/lib/CodeGen/AsmPrinter",
+ "//llvm/lib/CodeGen/SelectionDAG",
+ "//llvm/lib/IR",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target",
+ ]
+ include_dirs = [ "." ]
+ sources = [
+ "LoongArchAsmPrinter.cpp",
+ "LoongArchExpandAtomicPseudoInsts.cpp",
+ "LoongArchExpandPseudoInsts.cpp",
+ "LoongArchFrameLowering.cpp",
+ "LoongArchInstrInfo.cpp",
+ "LoongArchISelDAGToDAG.cpp",
+ "LoongArchISelLowering.cpp",
+ "LoongArchMCInstLower.cpp",
+ "LoongArchRegisterInfo.cpp",
+ "LoongArchSubtarget.cpp",
+ "LoongArchTargetMachine.cpp",
+ ]
+}
+
+# This is a bit
diff erent from most build files: Due to this group
+# having the directory's name, "//llvm/lib/Target/LoongArch" will refer to this
+# target, which pulls in the code in this directory *and all subdirectories*.
+# For most other directories, "//llvm/lib/Foo" only pulls in the code directly
+# in "llvm/lib/Foo". The forwarding targets in //llvm/lib/Target expect this
+#
diff erent behavior.
+group("LoongArch") {
+ deps = [
+ ":LLVMLoongArchCodeGen",
+ "AsmParser",
+ "Disassembler",
+ "MCTargetDesc",
+ "TargetInfo",
+ ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/Disassembler/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/Disassembler/BUILD.gn
new file mode 100644
index 0000000000000..0eac793d40279
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/Disassembler/BUILD.gn
@@ -0,0 +1,20 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LoongArchGenDisassemblerTables") {
+ visibility = [ ":Disassembler" ]
+ args = [ "-gen-disassembler" ]
+ td_file = "../LoongArch.td"
+}
+
+static_library("Disassembler") {
+ output_name = "LLVMLoongArchDisassembler"
+ deps = [
+ ":LoongArchGenDisassemblerTables",
+ "//llvm/lib/MC/MCDisassembler",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/LoongArch/MCTargetDesc",
+ "//llvm/lib/Target/LoongArch/TargetInfo",
+ ]
+ include_dirs = [ ".." ]
+ sources = [ "LoongArchDisassembler.cpp" ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/MCTargetDesc/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/MCTargetDesc/BUILD.gn
new file mode 100644
index 0000000000000..424502bccd9df
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/MCTargetDesc/BUILD.gn
@@ -0,0 +1,65 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LoongArchGenAsmWriter") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-asm-writer" ]
+ td_file = "../LoongArch.td"
+}
+
+tablegen("LoongArchGenInstrInfo") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-instr-info" ]
+ td_file = "../LoongArch.td"
+}
+
+tablegen("LoongArchGenMCCodeEmitter") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-emitter" ]
+ td_file = "../LoongArch.td"
+}
+
+tablegen("LoongArchGenRegisterInfo") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-register-info" ]
+ td_file = "../LoongArch.td"
+}
+
+tablegen("LoongArchGenSubtargetInfo") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-subtarget" ]
+ td_file = "../LoongArch.td"
+}
+
+static_library("MCTargetDesc") {
+ output_name = "LLVMLoongArchDesc"
+
+ # This should contain tablegen targets generating .inc files included
+ # by other targets. .inc files only used by .cpp files in this directory
+ # should be in deps instead.
+ public_deps = [
+ ":LoongArchGenInstrInfo",
+ ":LoongArchGenRegisterInfo",
+ ":LoongArchGenSubtargetInfo",
+ ]
+ deps = [
+ ":LoongArchGenAsmWriter",
+ ":LoongArchGenMCCodeEmitter",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/LoongArch/TargetInfo",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "LoongArchAsmBackend.cpp",
+ "LoongArchBaseInfo.cpp",
+ "LoongArchELFObjectWriter.cpp",
+ "LoongArchELFStreamer.cpp",
+ "LoongArchInstPrinter.cpp",
+ "LoongArchMCAsmInfo.cpp",
+ "LoongArchMCCodeEmitter.cpp",
+ "LoongArchMCExpr.cpp",
+ "LoongArchMCTargetDesc.cpp",
+ "LoongArchMatInt.cpp",
+ "LoongArchTargetStreamer.cpp",
+ ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/TargetInfo/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/TargetInfo/BUILD.gn
new file mode 100644
index 0000000000000..9512d414d8963
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/LoongArch/TargetInfo/BUILD.gn
@@ -0,0 +1,6 @@
+static_library("TargetInfo") {
+ output_name = "LLVMLoongArchInfo"
+ deps = [ "//llvm/lib/Support" ]
+ include_dirs = [ ".." ]
+ sources = [ "LoongArchTargetInfo.cpp" ]
+}
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni b/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni
index f5048f2824a91..42e48e650af01 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/targets.gni
@@ -16,6 +16,7 @@ llvm_all_targets = [
"BPF",
"Hexagon",
"Lanai",
+ "LoongArch",
"Mips",
"NVPTX",
"PowerPC",
@@ -81,8 +82,8 @@ foreach(target, llvm_targets_to_build) {
} else if (target == "X86") {
llvm_build_X86 = true
} else if (target == "AVR" || target == "Hexagon" || target == "Lanai" ||
- target == "NVPTX" || target == "RISCV" || target == "Sparc" ||
- target == "SystemZ") {
+ target == "LoongArch" || target == "NVPTX" || target == "RISCV" ||
+ target == "Sparc" || target == "SystemZ") {
# Nothing to do.
} else {
all_targets_string = ""
More information about the llvm-commits
mailing list