• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1//
2// Copyright (C) 2017 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17package {
18    default_applicable_licenses: ["system_core_fs_mgr_license"],
19}
20
21// Added automatically by a large-scale-change that took the approach of
22// 'apply every license found to every target'. While this makes sure we respect
23// every license restriction, it may not be entirely correct.
24//
25// e.g. GPL in an MIT project might only apply to the contrib/ directory.
26//
27// Please consider splitting the single license below into multiple licenses,
28// taking care not to lose any license_kind information, and overriding the
29// default license using the 'licenses: [...]' property on targets as needed.
30//
31// For unused files, consider creating a 'fileGroup' with "//visibility:private"
32// to attach the license to, and including a comment whether the files may be
33// used in the current project.
34// See: http://go/android-license-faq
35license {
36    name: "system_core_fs_mgr_license",
37    visibility: [":__subpackages__"],
38    license_kinds: [
39        "SPDX-license-identifier-Apache-2.0",
40        "SPDX-license-identifier-MIT",
41    ],
42    // large-scale-change unable to identify any license_text files
43}
44
45cc_defaults {
46    name: "fs_mgr_defaults",
47    sanitize: {
48        misc_undefined: ["integer"],
49    },
50    local_include_dirs: ["include/"],
51    cflags: [
52        "-Wall",
53        "-Werror",
54    ],
55}
56
57cc_defaults {
58    name: "libfs_mgr_defaults",
59    defaults: ["fs_mgr_defaults"],
60    export_include_dirs: ["include"],
61    include_dirs: ["system/vold"],
62    cflags: [
63        "-D_FILE_OFFSET_BITS=64",
64    ],
65    srcs: [
66        "file_wait.cpp",
67        "fs_mgr.cpp",
68        "fs_mgr_format.cpp",
69        "fs_mgr_verity.cpp",
70        "fs_mgr_dm_linear.cpp",
71        "fs_mgr_overlayfs.cpp",
72        "fs_mgr_roots.cpp",
73        "fs_mgr_vendor_overlay.cpp",
74        ":libfiemap_srcs",
75    ],
76    shared_libs: [
77        "libbase",
78        "libcrypto",
79        "libcrypto_utils",
80        "libcutils",
81        "libext4_utils",
82        "libfec",
83        "liblog",
84        "liblp",
85        "libselinux",
86    ],
87    static_libs: [
88        "libavb",
89        "libfs_avb",
90        "libfstab",
91        "libdm",
92        "libgsi",
93    ],
94    export_static_lib_headers: [
95        "libfs_avb",
96        "libfstab",
97        "libdm",
98    ],
99    export_shared_lib_headers: [
100        "liblp",
101    ],
102    whole_static_libs: [
103        "liblogwrap",
104        "libdm",
105        "libext2_uuid",
106        "libfscrypt",
107        "libfstab",
108    ],
109    cppflags: [
110        "-DALLOW_ADBD_DISABLE_VERITY=0",
111    ],
112    product_variables: {
113        debuggable: {
114            cppflags: [
115                "-UALLOW_ADBD_DISABLE_VERITY",
116                "-DALLOW_ADBD_DISABLE_VERITY=1",
117            ],
118        },
119    },
120    header_libs: [
121        "libfiemap_headers",
122        "libstorage_literals_headers",
123    ],
124    export_header_lib_headers: [
125        "libfiemap_headers",
126    ],
127    required: [
128        "e2freefrag",
129        "e2fsdroid",
130    ],
131}
132
133// Two variants of libfs_mgr are provided: libfs_mgr and libfs_mgr_binder.
134// Use libfs_mgr in recovery, first-stage-init, or when libfiemap or overlayfs
135// is not used.
136//
137// Use libfs_mgr_binder when not in recovery/first-stage init, or when overlayfs
138// or libfiemap is needed. In this case, libfiemap will proxy over binder to
139// gsid.
140cc_library {
141    // Do not ever allow this library to be vendor_available as a shared library.
142    // It does not have a stable interface.
143    name: "libfs_mgr",
144    recovery_available: true,
145    defaults: [
146        "libfs_mgr_defaults",
147    ],
148    srcs: [
149        ":libfiemap_passthrough_srcs",
150    ],
151}
152
153cc_library {
154    // Do not ever allow this library to be vendor_available as a shared library.
155    // It does not have a stable interface.
156    name: "libfs_mgr_binder",
157    defaults: [
158        "libfs_mgr_defaults",
159        "libfiemap_binder_defaults",
160    ],
161}
162
163cc_library_static {
164    // Do not ever make this a shared library as long as it is vendor_available.
165    // It does not have a stable interface.
166    name: "libfstab",
167    vendor_available: true,
168    recovery_available: true,
169    host_supported: true,
170    defaults: ["fs_mgr_defaults"],
171    srcs: [
172        "fs_mgr_fstab.cpp",
173        "fs_mgr_boot_config.cpp",
174        "fs_mgr_slotselect.cpp",
175    ],
176    target: {
177        darwin: {
178            enabled: false,
179        },
180        vendor: {
181            cflags: [
182                // Skipping entries in fstab should only be done in a system
183                // process as the config file is in /system_ext.
184                // Remove the op from the vendor variant.
185                "-DNO_SKIP_MOUNT",
186            ],
187        },
188    },
189    export_include_dirs: ["include_fstab"],
190    header_libs: [
191        "libbase_headers",
192        "libgsi_headers",
193    ],
194}
195
196cc_binary {
197    name: "remount",
198    defaults: ["fs_mgr_defaults"],
199    static_libs: [
200        "libavb_user",
201        "libgsid",
202        "libutils",
203        "libvold_binder",
204    ],
205    shared_libs: [
206        "libbootloader_message",
207        "libbase",
208        "libbinder",
209        "libcutils",
210        "libcrypto",
211        "libext4_utils",
212        "libfec",
213        "libfs_mgr_binder",
214        "liblog",
215        "liblp",
216        "libselinux",
217    ],
218    header_libs: [
219        "libcutils_headers",
220    ],
221    srcs: [
222        "fs_mgr_remount.cpp",
223    ],
224    cppflags: [
225        "-DALLOW_ADBD_DISABLE_VERITY=0",
226    ],
227    product_variables: {
228        debuggable: {
229            cppflags: [
230                "-UALLOW_ADBD_DISABLE_VERITY",
231                "-DALLOW_ADBD_DISABLE_VERITY=1",
232            ],
233        },
234    },
235    required: [
236        "clean_scratch_files",
237    ],
238}
239
240cc_binary {
241    name: "clean_scratch_files",
242    defaults: ["fs_mgr_defaults"],
243    shared_libs: [
244        "libbase",
245        "libfs_mgr_binder",
246    ],
247    srcs: [
248        "clean_scratch_files.cpp",
249    ],
250    product_variables: {
251        debuggable: {
252            init_rc: [
253                "clean_scratch_files.rc",
254            ],
255        },
256    },
257}
258