我正在为 LLVM 编写一个后端,假设它叫做 Abc。我将目录复制llvm/lib/Target/AVR到llvm/lib/Target/Abc,bash- 并将sed文件名和文件本身中的脚本替换为AVR,Abc替换avr为abc。CMakeLists.txt看起来像这样:
set(LLVM_TARGET_DEFINITIONS Abc.td)
tablegen(LLVM AbcGenRegisterInfo.inc -gen-register-info)
tablegen(LLVM AbcGenInstrInfo.inc -gen-instr-info)
tablegen(LLVM AbcGenCallingConv.inc -gen-callingconv)
tablegen(LLVM AbcGenSubtargetInfo.inc -gen-subtarget)
add_public_tablegen_target(AbcCommonTableGen)
add_llvm_target(AbcCodeGen
AbcInstrInfo.cpp
AbcRegisterInfo.cpp
AbcTargetMachine.cpp
AbcTargetObjectFile.cpp
)
add_dependencies(LLVMAbcCodeGen intrinsincs_gen)
add_subdirectory(MCTargetDesc)
add_subdirectory(TargetInfo)
如果我llvm/CMakeLists.txt添加Abc到LLVM_ALL_TARGETS,它会写以下内容:
llvm-build: error: invalid target to enable: 'Abc' not in project
如果您将其拆下并Abc用LLVM_ALL_TARGETS钥匙组装-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Abc- 同样的错误。还需要编辑什么才能llvm-build“查看”我的后端?
不仅需要添加
Abc到llvm/CMakeLists.txt,还需要添加到llvm/lib/Target/LLVMBuild.txt