blob: 9b1ff4530a7ab0307edd0392cdb8ebfa91a4d440 [file] [log] [blame]
cargo_build_script(
# See comment associated with alias. Do not change this name
name = "{{ crate.name }}_build_script",
aliases = {% set selectable = build_aliases %}{% include "partials/crate/aliases.j2" -%},
build_script_env = {% set selectable = crate.build_script_attrs | get(key="build_script_env", default=Null) %}{% include "partials/starlark/selectable_dict.j2" -%},
compile_data = {% if crate.build_script_attrs | get(key="compile_data_glob") %}glob({{ crate.build_script_attrs.compile_data_glob | json_encode | safe }}) + {% endif %}{% set selectable = crate.build_script_attrs | get(key="compile_data", default=Null) %}{% include "partials/starlark/selectable_list.j2" %},
crate_name = "{{ sanitize_module_name(crate_name=target.crate_name) }}",
crate_root = "{{ target.crate_root }}",
crate_features = [
{%- if crate.common_attrs | get(key="crate_features", default=Null) %}
{%- for feature in crate.common_attrs.crate_features %}
"{{ feature }}",
{%- endfor %}
{%- endif %}
],
data = {% if crate.build_script_attrs | get(key="data_glob") %}glob({{ crate.build_script_attrs.data_glob | json_encode | safe }}) + {% endif %}{% set selectable = crate.build_script_attrs | get(key="data", default=Null) %}{% include "partials/starlark/selectable_list.j2" %},
deps = [
{%- for dep in crate.build_script_attrs | get(key="extra_deps", default=[]) %}
"{{ dep }}",
{%- endfor %}
] + {% set deps = crate.build_script_attrs | get(key="deps", default=Null) %}{% include "partials/crate/deps.j2" %},
edition = "{{ crate.common_attrs.edition }}",
{%- if crate.common_attrs.linker_script %}
linker_script = "{{ crate.common_attrs.linker_script }}",
{%- endif %}
{%- if crate.build_script_attrs | get(key="links", default=Null) %}
links = "{{ crate.build_script_attrs.links }}",
{%- endif %}
proc_macro_deps = [
{%- for dep in crate.build_script_attrs | get(key="extra_proc_macro_deps", default=[]) %}
"{{ dep }}",
{%- endfor %}
] + {% set deps = crate.build_script_attrs | get(key="proc_macro_deps", default=Null) %}{% include "partials/crate/deps.j2" %},
rustc_env = {% set selectable = crate.build_script_attrs | get(key="rustc_env", default=Null) %}{% include "partials/starlark/selectable_dict.j2" -%},
rustc_env_files = {% set selectable = crate.build_script_attrs | get(key="rustc_env_files", default=Null) %}{% include "partials/starlark/selectable_list.j2" %},
rustc_flags = [
# In most cases, warnings in 3rd party crates are not interesting as
# they're out of the control of consumers. The flag here silences
# warnings. For more details see:
# https://doc.rust-lang.org/rustc/lints/levels.html
"--cap-lints=allow",
{%- if crate.common_attrs | get(key="rustc_flags", default=Null) %}
# User provided rustc_flags
{%- for rustc_flag in crate.common_attrs.rustc_flags %}
"{{ rustc_flag }}",
{%- endfor %}
{%- endif %}
],
srcs = {% set glob = target.srcs %}{% include "partials/starlark/glob.j2" -%},
tools = {% set selectable = crate.build_script_attrs | get(key="tools", default=Null) %}{% include "partials/starlark/selectable_list.j2" %},
version = "{{ crate.common_attrs.version }}",
tags = [
{%- if crate.common_attrs | get(key="tags", default=Null) %}
{%- for tag in crate.common_attrs.tags %}
"{{ tag }}",
{%- endfor %}
{%- endif %}
"cargo-bazel",
"manual",
"noclippy",
"norustfmt",
],
{%- if crate.build_script_attrs | get(key="toolchains", default=Null) %}
toolchains = [
{%- for toolchain in crate.build_script_attrs.toolchains %}
"{{ toolchain }}",
{%- endfor %}
],
{%- endif %}
visibility = ["//visibility:private"],
)
alias(
# Because `cargo_build_script` does some invisible target name mutating to
# determine the package and crate name for a build script, the Bazel
# target namename of any build script cannot be the Cargo canonical name
# of `build_script_build` without losing out on having certain Cargo
# environment variables set.
name = "{{ target.crate_name }}",
actual = "{{ crate.name }}_build_script",
tags = [
"manual",
],
)