466c32c70f
* Build under bazel sandbox instead of /tmp, and remove redundant printf Build artifacts under /tmp are not cleaned up after a failed build, for the ease of debugging. However, this can quickly fill up the /tmp partition if the build is large. Build under the sandbox directory instead, and rely on standard bazel cleanup scheme. Also remove a print from the cleanup function, which somehow causes empty newlines to be printed in bazel build output. * Avoid infinite recursion in symlink_to_dir. This is a somewhat hackish approach to exclude *.ext_build_deps from symlinks when creating the symlink forest. This is necessary in cases where an entire directory is added to the includes, e.g. when setting includes = ["."] where the directory itself contains a cmake_external() rule that depends on the very rule containing the includes = ["."]. * Also avoid using a temp directory when bootstrapping make or cmake itself. * Remove the ##tmpdir## shell toolchain command. It is no longer necessary now that all its uses are gone. Co-authored-by: Lauri Peltonen <lape@iki.fi> |
||
---|---|---|
.. | ||
.bazelrc | ||
BUILD | ||
README.md | ||
WORKSPACE | ||
additional_toolchains.bzl | ||
fancy_platform_commands.bzl | ||
test_platform_name_rule.bzl |
README.md
###How to add a shell toolchain implementation for a custom platform: (to modify the fragments of generated shell script)
- define your own shell toolchain file(s) by copying @rules_foreign_cc//tools/build_defs/shell_toolchain/toolchains/impl:linux_commands.bzl, and modifying the methods.
- create a mapping: a list of ToolchainMapping with the mappings between created file(s) and execution or/and target platform constraints.
- in the BUILD file of some package, call "register_mappings" macro from "@rules_foreign_cc//tools/build_defs/shell_toolchain/toolchains:defs.bzl", passing the mappings and toolchain_type_ = "@rules_foreign_cc//tools/build_defs/shell_toolchain/toolchains:shell_commands"
- in the WORKSPACE file of your main repository, when you initialize rules_foreign_cc, pass the mappings and the package, in which BUILD file you called "register_mappings" macro
Please look how it is done in this example.