| 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", |
| ], |
| ) |