Задать вопрос

Почему llvm-build не видит новый бэкенд?

Пишу бэкенд для 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 "увидел" мой бэкенд?
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
KolesnichenkoDS
@KolesnichenkoDS Автор вопроса
Нужно было ещё добавить Abc в llvm/lib/Targets/LLVMBuild.txt
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Попробуйте добавить ваш таргет Abc в список LLVM_ALL_TARGETS, находится в корневом CMakeLists. С этим списком потом всякие вещи делаются, мне кажется там должны быть вообще все таргеты, которые есть в проекте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы