xref: /aosp_15_r20/system/core/rootdir/Android.bp (revision 00c7fec1bb09f3284aad6a6f96d2f63dfc3650ad)
1// Copyright 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19prebuilt_etc {
20    name: "init.boringssl.zygote64_32.rc",
21    src: "init.boringssl.zygote64_32.rc",
22    sub_dir: "init/hw",
23    symlinks: [
24        "init.boringssl.zygote32.rc",
25        "init.boringssl.no_zygote.rc",
26    ],
27}
28
29prebuilt_etc {
30    name: "init.boringssl.zygote64.rc",
31    src: "init.boringssl.zygote64.rc",
32    sub_dir: "init/hw",
33}
34
35prebuilt_etc {
36    name: "init.rc",
37    src: "init.rc",
38    sub_dir: "init/hw",
39    required: [
40        "fsverity_init",
41        "platform-bootclasspath",
42        "init.boringssl.zygote64.rc",
43        "init.boringssl.zygote64_32.rc",
44    ],
45}
46
47prebuilt_etc {
48    name: "ueventd.rc",
49    src: "ueventd.rc",
50    recovery_available: true,
51}
52
53filegroup {
54    name: "system_linker_config_json_file",
55    srcs: ["etc/linker.config.json"],
56}
57
58// TODO(b/147210213) Generate list of libraries during build and fill in at build time
59linker_config {
60    name: "system_linker_config",
61    src: ":system_linker_config_json_file",
62    installable: false,
63}
64
65// TODO(b/185211376) Scope the native APIs that microdroid will provide to the app payload
66prebuilt_etc {
67    name: "public.libraries.android.txt",
68    src: "etc/public.libraries.android.txt",
69    filename: "public.libraries.txt",
70    no_full_install: true,
71}
72
73// adb_debug.prop in debug ramdisk
74prebuilt_root {
75    name: "adb_debug.prop",
76    src: "adb_debug.prop",
77    debug_ramdisk: true,
78}
79
80prebuilt_etc {
81    name: "init.zygote64.rc",
82    src: "init.zygote64.rc",
83    sub_dir: "init/hw",
84}
85
86prebuilt_etc {
87    name: "init.zygote32.rc",
88    src: "init.zygote32.rc",
89    sub_dir: "init/hw",
90}
91
92prebuilt_etc {
93    name: "init.zygote64_32.rc",
94    src: "init.zygote64_32.rc",
95    sub_dir: "init/hw",
96}
97
98prebuilt_etc {
99    name: "init.usb.rc",
100    src: "init.usb.rc",
101    sub_dir: "init/hw",
102}
103
104prebuilt_etc {
105    name: "init.usb.configfs.rc",
106    src: "init.usb.configfs.rc",
107    sub_dir: "init/hw",
108}
109
110prebuilt_etc {
111    name: "etc_hosts",
112    src: "etc/hosts",
113    filename: "hosts",
114}
115
116prebuilt_etc {
117    name: "init-debug.rc",
118    src: "init-debug.rc",
119    sub_dir: "init",
120}
121
122prebuilt_etc {
123    name: "asan.options",
124    src: "asan.options",
125}
126
127sh_binary {
128    name: "asan_extract",
129    src: "asan_extract.sh",
130    init_rc: ["asan_extract.rc"],
131    // We need bzip2 on device for extraction.
132    required: ["bzip2"],
133}
134
135llndk_libraries_txt {
136    name: "llndk.libraries.txt",
137}
138
139sanitizer_libraries_txt {
140    name: "sanitizer.libraries.txt",
141}
142
143EXPORT_GLOBAL_ASAN_OPTIONS = select(soong_config_variable("ANDROID", "ASAN_ENABLED"), {
144    true: "export ASAN_OPTIONS include=/system/asan.options",
145    default: "",
146})
147
148EXPORT_GLOBAL_HWASAN_OPTIONS = select(soong_config_variable("ANDROID", "HWASAN_ENABLED"), {
149    true: "export HWASAN_OPTIONS heap_history_size=1023,stack_history_size=512,export_memory_stats=0,max_malloc_fill_size=131072,malloc_fill_byte=0",
150    default: "",
151})
152
153EXPORT_GLOBAL_GCOV_OPTIONS = select(soong_config_variable("ANDROID", "GCOV_COVERAGE"), {
154    true: "export GCOV_PREFIX /data/misc/trace",
155    default: "",
156})
157
158EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS = select((soong_config_variable("ANDROID", "CLANG_COVERAGE"), soong_config_variable("ANDROID", "CLANG_COVERAGE_CONTINUOUS_MODE")), {
159    (true, true): "export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw",
160    (true, default): "export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw",
161    (default, default): "",
162})
163
164EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE = select(soong_config_variable("ANDROID", "SCUDO_ALLOCATION_RING_BUFFER_SIZE"), {
165    "": "",
166    any @ size: "export SCUDO_ALLOCATION_RING_BUFFER_SIZE " + size,
167    default: "",
168})
169
170genrule {
171    name: "init.environ.rc.gen",
172    srcs: ["init.environ.rc.in"],
173    out: ["init.environ.rc"],
174    cmd: "cp -f $(in) $(out) && " +
175        "echo '    " + EXPORT_GLOBAL_ASAN_OPTIONS + "' >> $(out) && " +
176        "echo '    " + EXPORT_GLOBAL_GCOV_OPTIONS + "' >> $(out) && " +
177        "echo '    " + EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS + "' >> $(out) && " +
178        "echo '    " + EXPORT_GLOBAL_HWASAN_OPTIONS + "' >> $(out) && " +
179        "echo '    " + EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE + "' >> $(out)",
180}
181
182prebuilt_root {
183    name: "init.environ.rc-soong",
184    src: ":init.environ.rc.gen",
185    filename: "init.environ.rc",
186    install_in_root: true,
187    no_full_install: true,
188    required: select((soong_config_variable("ANDROID", "ASAN_ENABLED"), soong_config_variable("ANDROID", "SANITIZE_TARGET_SYSTEM_ENABLED")), {
189        (true, true): [
190            "asan.options",
191            "asan_extract",
192        ],
193        (true, default): ["asan.options"],
194        (default, default): [],
195    }),
196}
197
198filegroup {
199    name: "ramdisk_node_list",
200    srcs: ["ramdisk_node_list"],
201    export_to_make_var: "RAMDISK_NODE_LIST",
202}
203