xref: /aosp_15_r20/bootable/libbootloader/gbl/libdttable/BUILD (revision 5225e6b173e52d2efc6bcf950c27374fd72adabc)
1*5225e6b1SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project
2*5225e6b1SAndroid Build Coastguard Worker#
3*5225e6b1SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*5225e6b1SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*5225e6b1SAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*5225e6b1SAndroid Build Coastguard Worker#
7*5225e6b1SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*5225e6b1SAndroid Build Coastguard Worker#
9*5225e6b1SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*5225e6b1SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*5225e6b1SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*5225e6b1SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*5225e6b1SAndroid Build Coastguard Worker# limitations under the License.
14*5225e6b1SAndroid Build Coastguard Worker
15*5225e6b1SAndroid Build Coastguard Workerload("@gbl//toolchain:gbl_toolchain.bzl", "link_static_cc_library")
16*5225e6b1SAndroid Build Coastguard Workerload("@gbl//toolchain:gbl_workspace_util.bzl", "ANDROID_RUST_LINTS")
17*5225e6b1SAndroid Build Coastguard Workerload("@gbl_llvm_prebuilts//:info.bzl", "LLVM_PREBUILTS_C_INCLUDE")
18*5225e6b1SAndroid Build Coastguard Workerload("@rules_rust//bindgen:defs.bzl", "rust_bindgen")
19*5225e6b1SAndroid Build Coastguard Workerload("@rules_rust//rust:defs.bzl", "rust_library", "rust_test")
20*5225e6b1SAndroid Build Coastguard Worker
21*5225e6b1SAndroid Build Coastguard Workerpackage(
22*5225e6b1SAndroid Build Coastguard Worker    default_visibility = ["//visibility:public"],
23*5225e6b1SAndroid Build Coastguard Worker)
24*5225e6b1SAndroid Build Coastguard Worker
25*5225e6b1SAndroid Build Coastguard Workerlink_static_cc_library(
26*5225e6b1SAndroid Build Coastguard Worker    name = "libdttable_c_static",
27*5225e6b1SAndroid Build Coastguard Worker    cc_library = "@libdttable_c",
28*5225e6b1SAndroid Build Coastguard Worker)
29*5225e6b1SAndroid Build Coastguard Worker
30*5225e6b1SAndroid Build Coastguard Workerrust_bindgen(
31*5225e6b1SAndroid Build Coastguard Worker    name = "libdttable_c_bindgen",
32*5225e6b1SAndroid Build Coastguard Worker    bindgen_flags = [
33*5225e6b1SAndroid Build Coastguard Worker        "--use-core",
34*5225e6b1SAndroid Build Coastguard Worker        "--with-derive-custom-struct=dt_table.*=AsBytes,FromBytes,FromZeroes,PartialEq",
35*5225e6b1SAndroid Build Coastguard Worker        "--allowlist-type",
36*5225e6b1SAndroid Build Coastguard Worker        "(dt_table.*)",
37*5225e6b1SAndroid Build Coastguard Worker        "--allowlist-var",
38*5225e6b1SAndroid Build Coastguard Worker        "(DT_TABLE.*)",
39*5225e6b1SAndroid Build Coastguard Worker        "--raw-line",
40*5225e6b1SAndroid Build Coastguard Worker        """
41*5225e6b1SAndroid Build Coastguard Worker# ![cfg_attr(not(test), no_std)]
42*5225e6b1SAndroid Build Coastguard Worker
43*5225e6b1SAndroid Build Coastguard Workeruse zerocopy::{AsBytes, FromBytes, FromZeroes};
44*5225e6b1SAndroid Build Coastguard Worker""",
45*5225e6b1SAndroid Build Coastguard Worker    ],
46*5225e6b1SAndroid Build Coastguard Worker    cc_lib = "@libdttable_c",
47*5225e6b1SAndroid Build Coastguard Worker    # For x86_32, we need to explicitly specify 32bit architecture.
48*5225e6b1SAndroid Build Coastguard Worker    clang_flags = select({
49*5225e6b1SAndroid Build Coastguard Worker        "@gbl//toolchain:gbl_rust_uefi_x86_32": ["-m32"],
50*5225e6b1SAndroid Build Coastguard Worker        "//conditions:default": ["-m64"],
51*5225e6b1SAndroid Build Coastguard Worker    }) + [
52*5225e6b1SAndroid Build Coastguard Worker        "-I{}".format(LLVM_PREBUILTS_C_INCLUDE),
53*5225e6b1SAndroid Build Coastguard Worker        "-nostdinc",
54*5225e6b1SAndroid Build Coastguard Worker    ],
55*5225e6b1SAndroid Build Coastguard Worker    header = "@libdttable_c//:dt_table.h",
56*5225e6b1SAndroid Build Coastguard Worker)
57*5225e6b1SAndroid Build Coastguard Worker
58*5225e6b1SAndroid Build Coastguard Workerrust_library(
59*5225e6b1SAndroid Build Coastguard Worker    name = "libdttable_bindgen",
60*5225e6b1SAndroid Build Coastguard Worker    srcs = [":libdttable_c_bindgen"],
61*5225e6b1SAndroid Build Coastguard Worker    deps = ["@zerocopy"],
62*5225e6b1SAndroid Build Coastguard Worker)
63*5225e6b1SAndroid Build Coastguard Worker
64*5225e6b1SAndroid Build Coastguard Workerrust_library(
65*5225e6b1SAndroid Build Coastguard Worker    name = "libdttable",
66*5225e6b1SAndroid Build Coastguard Worker    srcs = ["src/lib.rs"],
67*5225e6b1SAndroid Build Coastguard Worker    crate_name = "dttable",
68*5225e6b1SAndroid Build Coastguard Worker    edition = "2021",
69*5225e6b1SAndroid Build Coastguard Worker    rustc_flags = ANDROID_RUST_LINTS,
70*5225e6b1SAndroid Build Coastguard Worker    deps = [
71*5225e6b1SAndroid Build Coastguard Worker        ":libdttable_bindgen",
72*5225e6b1SAndroid Build Coastguard Worker        ":libdttable_c_static",
73*5225e6b1SAndroid Build Coastguard Worker        "@gbl//liberror",
74*5225e6b1SAndroid Build Coastguard Worker        "@gbl//libsafemath",
75*5225e6b1SAndroid Build Coastguard Worker        "@zerocopy",
76*5225e6b1SAndroid Build Coastguard Worker    ],
77*5225e6b1SAndroid Build Coastguard Worker)
78*5225e6b1SAndroid Build Coastguard Worker
79*5225e6b1SAndroid Build Coastguard Workerrust_test(
80*5225e6b1SAndroid Build Coastguard Worker    name = "libdttable_test",
81*5225e6b1SAndroid Build Coastguard Worker    compile_data = [
82*5225e6b1SAndroid Build Coastguard Worker        "@gbl//libdttable/test/data:all",
83*5225e6b1SAndroid Build Coastguard Worker    ],
84*5225e6b1SAndroid Build Coastguard Worker    crate = ":libdttable",
85*5225e6b1SAndroid Build Coastguard Worker    rustc_flags = ANDROID_RUST_LINTS,
86*5225e6b1SAndroid Build Coastguard Worker    deps = [
87*5225e6b1SAndroid Build Coastguard Worker        "@gbl//libfdt",
88*5225e6b1SAndroid Build Coastguard Worker    ],
89*5225e6b1SAndroid Build Coastguard Worker)
90