Написание сборки с использованием bazel, ориентированной на архитектуру процессора LM32 в CentOS 7. Итак, мне нужно создать кросс-компилятор (следуя этому руководству: https://docs.bazel.build/versions/0.23.0/tutorial/crosstool.html). Кроме того, я автоматически загружаю цепочку инструментов, используя http_archive. Iу меня есть файл CROSSTOOL в моем пакете инструментов, который должен ссылаться на этот загруженный пакет, и я, кажется, не понимаю, как этого добиться.
У меня есть следующая схема рабочего пространства:
.
|-- external
| `-- lm32-toolchain.BUILD
|-- main
| |-- BUILD
| `-- helloworld.c
|-- README.md
|-- toolchain
| |-- BUILD
| `-- CROSSTOOL
`-- WORKSPACE
РАБОЧЕЕ МЕСТО:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
http_archive(
name = 'lm32_toolchain',
url = 'https://www.ohwr.org/project/wr-cores/uploads /2776ce0ba43503d1486ae205b48fb450/lm32_host_64bit.tar.xz',
build_file = 'lm32-toolchain.BUILD',
strip_prefix = 'lm32-gcc-4.5.3'
)
Я вижу, что загружен набор инструментов:
$ ls $(bazel info output_base)/external/lm32_toolchain
bin BUILD.bazel include lib libexec lm32-elf share WORKSPACE
Однако он не может скомпилироваться, так как не может найти компилятор.
toolchain / CROSSTOOL:
major_version: "1"
minor_version: "0"
default_target_cpu: "lm32"
toolchain {
toolchain_identifier: "lm32-toolchain"
host_system_name: "i686-unknown-linux"
target_system_name: "lm32-elf"
target_cpu: "lm32"
target_libc: "unknown"
compiler: "lm32-elf-gcc"
abi_version: "unknown"
abi_libc_version: "unknown"
tool_path { name: "gcc" path: "???/lm32-elf-gcc" }
tool_path { name: "ld" path: "???/lm32-elf-ld" }
tool_path { name: "ar" path: "???/lm32-elf-ar" }
tool_path { name: "cpp" path: "???/lm32-elf-cpp" }
tool_path { name: "gcov" path: "???/lm32-elf-gcov" }
tool_path { name: "nm" path: "???/lm32-elf-nm" }
tool_path { name: "objdump" path: "???/lm32-elf-objdump" }
tool_path { name: "strip" path: "???/lm32-elf-strip" }
}
Мой вопрос заключается в том, что должно быть размещено в ??? /? Я пробовал несколько вещей, но ничего не работает. Любые ссылки на пакеты копируются дословно вк команде execvp, например:
src/main/tools/process-wrapper-legacy.cc:58: "execvp(toolchain/@lm32_toolchain/bin/lm32-elf-gcc, ...)": No such file or directory
И относительные пути недопустимы.
Или есть лучший способ сделать это? Я довольно плохо знаком с bazel, поэтому любые указателиблагодарныТед.
Спасибо, Винсент