1# Copyright (c) 2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13import("//base/startup/init/begetd.gni")
14import("//build/ohos.gni")
15
16# For init only
17config("libfsmanager_exported_configs") {
18  visibility = [ ":*" ]
19  include_dirs = [
20    "./libfs_dm/include",
21    "./libfs_hvb/include",
22    "//base/startup/init/interfaces/innerkits/include/fs_manager",
23    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
24    "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/include",
25    "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/include",
26  ]
27}
28
29ohos_static_library("libfsmanager_static") {
30  if (!defined(ohos_lite)) {
31    sources = [
32      "fstab.c",
33      "fstab_mount.c",
34      "switch_root/switch_root.c",
35    ]
36    include_dirs = [
37      "//base/startup/init/interfaces/innerkits/include",
38      "//base/startup/init/interfaces/innerkits/include/param",
39      "//base/startup/init/interfaces/innerkits/init_module_engine/include",
40      "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/include",
41      "//base/startup/init/services/log",
42      "//base/startup/init/services/param/include",
43    ]
44    defines = []
45    external_deps = [ "bounds_checking_function:libsec_static" ]
46    deps = [ "//base/startup/init/services/utils:libinit_utils" ]
47
48    if ((defined(global_parts_info) &&
49         defined(global_parts_info.startup_hvb)) ||
50        init_startup_feature_erofs_overlay) {
51      sources += [ "libfs_dm/fs_dm.c" ]
52      include_dirs += [
53        "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
54        "//base/startup/init/ueventd/include",
55      ]
56      deps += [ "//base/startup/init/ueventd:libueventd_ramdisk_static" ]
57    }
58
59    if (defined(global_parts_info) && defined(global_parts_info.startup_hvb)) {
60      sources += [
61        "dm_verity/dm_verity.c",
62        "libfs_hvb/fs_hvb.c",
63        "libfs_hvb/hvb_ops.c",
64      ]
65
66      include_dirs += [
67        "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include",
68        "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/include",
69        "//base/startup/hvb/libhvb/include",
70      ]
71
72      defines += [ "SUPPORT_HVB" ]
73      external_deps += [ "hvb:libhvb_static" ]
74    }
75    if (init_startup_feature_erofs_overlay) {
76      sources += [
77        "erofs_overlay/erofs_mount_overlay.c",
78        "erofs_overlay/erofs_overlay_common.c",
79        "erofs_overlay/erofs_remount_overlay.c",
80      ]
81      include_dirs += [ "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/include" ]
82
83      defines += [ "EROFS_OVERLAY" ]
84      if (build_selinux) {
85        external_deps += [ "selinux:libselinux" ]
86        cflags = [ "-DWITH_SELINUX" ]
87      }
88    }
89  }
90
91  public_configs = [ ":libfsmanager_exported_configs" ]
92  part_name = "init"
93  subsystem_name = "startup"
94}
95
96ohos_static_library("libfsmanager_static_real") {
97  if (!defined(ohos_lite)) {
98    sources = [
99      "fstab.c",
100      "fstab_mount.c",
101      "switch_root/switch_root.c",
102    ]
103    include_dirs = [
104      "//base/startup/init/interfaces/innerkits/include",
105      "//base/startup/init/interfaces/innerkits/include/param",
106      "//base/startup/init/interfaces/innerkits/init_module_engine/include",
107      "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/include",
108      "//base/startup/init/services/log",
109      "//base/startup/init/services/param/include",
110    ]
111    external_deps = [ "bounds_checking_function:libsec_static" ]
112    deps = [ "//base/startup/init/services/utils:libinit_utils" ]
113
114    if ((defined(global_parts_info) &&
115         defined(global_parts_info.startup_hvb)) ||
116        init_startup_feature_erofs_overlay) {
117      sources += [ "libfs_dm/fs_dm.c" ]
118      include_dirs += [
119        "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
120        "//base/startup/init/ueventd/include",
121      ]
122      defines = []
123      deps += [ "//base/startup/init/ueventd:libueventd_ramdisk_static_real" ]
124    }
125
126    if (defined(global_parts_info) && defined(global_parts_info.startup_hvb)) {
127      sources += [
128        "dm_verity/dm_verity.c",
129        "libfs_hvb/fs_hvb.c",
130        "libfs_hvb/hvb_ops.c",
131      ]
132
133      include_dirs += [
134        "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include",
135        "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/include",
136        "//base/startup/hvb/libhvb/include",
137      ]
138
139      defines += [ "SUPPORT_HVB" ]
140      external_deps += [ "hvb:libhvb_static" ]
141    }
142
143    if (init_startup_feature_erofs_overlay) {
144      sources += [
145        "erofs_overlay/erofs_mount_overlay.c",
146        "erofs_overlay/erofs_overlay_common.c",
147        "erofs_overlay/erofs_remount_overlay.c",
148      ]
149      include_dirs += [ "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/include" ]
150
151      defines += [ "EROFS_OVERLAY" ]
152    }
153  }
154
155  public_configs = [ ":libfsmanager_exported_configs" ]
156  part_name = "init"
157  subsystem_name = "startup"
158}
159