Как мне испустить LLVM IR при сборке с Bazel? - PullRequest
0 голосов
/ 23 февраля 2020

Я работаю над проектом, система сборки которого написана с использованием Bazel. Большая часть файлов BUILD в проекте создает библиотеку .so, и я пытаюсь передать LLVM IR исходных файлов, составляющих общую библиотеку, и выполнить некоторые проходы LLVM на LLVM IR, а затем создать окончательную общую библиотеку. Но я понятия не имею, как изменить систему сборки и испускать LLVM IR. (Я не знаком с Базелем)

Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 24 февраля 2020

Базель не поддерживает это из коробки. Вам нужно будет определить свои собственные правила и наборы инструментов. Вы можете следовать руководству здесь , чтобы создать цепочку инструментов, которая преобразует исходные файлы в LLVM IR. Здесь есть аналогичное руководство . Решение может выглядеть примерно так:

  1. Правило: преобразовывать исходные файлы в LLVM IR (многие-ко-многим)
  2. Правило: преобразовывать LLVM IR в LLVM IR (много-к-многим) -мани)
  3. Правило: преобразовать LLVM IR в общий объект (много-к-одному)

Вам понадобится написать много кода для инструмента, который, прямо скажем, , плохо документированный. Возможно, будет проще кодировать эти правила в обычном makefile и вызывать make из сценария bazel.

...