1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_bindgen {
6    name: "liblibfdt_bindgen",
7    crate_name: "libfdt_bindgen",
8    defaults: ["avf_build_flags_rust"],
9    wrapper_src: "bindgen/fdt.h",
10    source_stem: "bindings",
11    bindgen_flags: [
12        "--allowlist-type=fdt_.*",
13        "--allowlist-function=fdt_.*",
14        "--allowlist-var=FDT_.*",
15        "--use-core",
16        "--raw-line=#![no_std]",
17        "--ctypes-prefix=core::ffi",
18    ],
19    dylib: {
20        enabled: false,
21    },
22    header_libs: [
23        "libfdt",
24    ],
25    apex_available: ["com.android.virt"],
26}
27
28rust_defaults {
29    name: "liblibfdt_defaults",
30    crate_name: "libfdt",
31    defaults: ["avf_build_flags_rust"],
32    srcs: [
33        "src/lib.rs",
34        ":liblibfdt_bindgen",
35    ],
36    edition: "2021",
37    rustlibs: [
38        "libcstr",
39        "liblibfdt_bindgen",
40        "libstatic_assertions",
41        "libzerocopy_nostd",
42    ],
43}
44
45rust_library_rlib {
46    name: "liblibfdt",
47    defaults: ["liblibfdt_defaults"],
48    whole_static_libs: [
49        "libfdt",
50    ],
51    apex_available: ["com.android.virt"],
52}
53
54rust_library_rlib {
55    name: "liblibfdt_nostd",
56    defaults: ["liblibfdt_defaults"],
57    no_stdlibs: true,
58    prefer_rlib: true,
59    stdlibs: [
60        "libcore.rust_sysroot",
61    ],
62    whole_static_libs: [
63        "libfdt_baremetal",
64    ],
65}
66
67rust_test {
68    name: "liblibfdt.integration_test",
69    crate_name: "libfdt_test",
70    defaults: ["avf_build_flags_rust"],
71    srcs: ["tests/api_test.rs"],
72    test_suites: ["general-tests"],
73    data: [
74        ":fdt_test_tree_one_memory_range_dtb",
75        ":fdt_test_tree_multiple_memory_ranges_dtb",
76        ":fdt_test_tree_empty_memory_range_dtb",
77        ":fdt_test_tree_no_memory_node_dtb",
78        ":fdt_test_tree_phandle_dtb",
79    ],
80    prefer_rlib: true,
81    rustlibs: [
82        "libcstr",
83        "liblibfdt",
84    ],
85}
86
87genrule {
88    name: "fdt_test_tree_one_memory_range_dtb",
89    tools: ["dtc"],
90    srcs: [
91        "tests/data/test_tree_one_memory_range.dts",
92        "tests/data/test_tree_no_memory_node.dts",
93    ],
94    cmd: "$(location dtc) -I dts -O dtb $(location tests/data/test_tree_one_memory_range.dts) -o $(out)",
95    out: ["data/test_tree_one_memory_range.dtb"],
96}
97
98genrule {
99    name: "fdt_test_tree_multiple_memory_ranges_dtb",
100    tools: ["dtc"],
101    srcs: [
102        "tests/data/test_tree_multiple_memory_ranges.dts",
103        "tests/data/test_tree_no_memory_node.dts",
104    ],
105    cmd: "$(location dtc) -I dts -O dtb $(location tests/data/test_tree_multiple_memory_ranges.dts) -o $(out)",
106    out: ["data/test_tree_multiple_memory_ranges.dtb"],
107}
108
109genrule {
110    name: "fdt_test_tree_empty_memory_range_dtb",
111    tools: ["dtc"],
112    srcs: [
113        "tests/data/test_tree_empty_memory_range.dts",
114        "tests/data/test_tree_no_memory_node.dts",
115    ],
116    cmd: "$(location dtc) -I dts -O dtb $(location tests/data/test_tree_empty_memory_range.dts) -o $(out)",
117    out: ["data/test_tree_empty_memory_range.dtb"],
118}
119
120genrule {
121    name: "fdt_test_tree_no_memory_node_dtb",
122    defaults: ["dts_to_dtb"],
123    srcs: ["tests/data/test_tree_no_memory_node.dts"],
124    out: ["data/test_tree_no_memory_node.dtb"],
125}
126
127genrule {
128    name: "fdt_test_tree_phandle_dtb",
129    defaults: ["dts_to_dtb"],
130    srcs: ["tests/data/test_tree_phandle.dts"],
131    out: ["data/test_tree_phandle.dtb"],
132}
133