Пишу бэкенд для 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 "увидел" мой бэкенд?