1d9f0492fSopenharmony_ci# Copyright (c) 2021-2023 Huawei Device Co., Ltd.
2d9f0492fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3d9f0492fSopenharmony_ci# you may not use this file except in compliance with the License.
4d9f0492fSopenharmony_ci# You may obtain a copy of the License at
5d9f0492fSopenharmony_ci#
6d9f0492fSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7d9f0492fSopenharmony_ci#
8d9f0492fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9d9f0492fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10d9f0492fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11d9f0492fSopenharmony_ci# See the License for the specific language governing permissions and
12d9f0492fSopenharmony_ci# limitations under the License.
13d9f0492fSopenharmony_ciimport("//base/startup/init/begetd.gni")
14d9f0492fSopenharmony_ciimport("//build/test.gni")
15d9f0492fSopenharmony_ci
16d9f0492fSopenharmony_ciconfig("utest_config") {
17d9f0492fSopenharmony_ci  visibility = [ ":*" ]
18d9f0492fSopenharmony_ci
19d9f0492fSopenharmony_ci  cflags = [
20d9f0492fSopenharmony_ci    "-Wno-implicit-fallthrough",
21d9f0492fSopenharmony_ci    "-Wno-unused-function",
22d9f0492fSopenharmony_ci    "-Dprivate=public",
23d9f0492fSopenharmony_ci    "-Dprotected=public",
24d9f0492fSopenharmony_ci    "-Dsprintf_s=SprintfStub",
25d9f0492fSopenharmony_ci    "-Dmount=MountStub",
26d9f0492fSopenharmony_ci    "-Dumount=UmountStub",
27d9f0492fSopenharmony_ci    "-Dumount2=Umount2Stub",
28d9f0492fSopenharmony_ci    "-Dprctl=PrctlStub",
29d9f0492fSopenharmony_ci    "-Dexecv=ExecvStub",
30d9f0492fSopenharmony_ci    "-Dlchown=LchownStub",
31d9f0492fSopenharmony_ci    "-Dkill=KillStub",
32d9f0492fSopenharmony_ci    "-Dexecve=ExecveStub",
33d9f0492fSopenharmony_ci  ]
34d9f0492fSopenharmony_ci  cflags_cc = [
35d9f0492fSopenharmony_ci    "-Wno-implicit-fallthrough",
36d9f0492fSopenharmony_ci    "-fexceptions",
37d9f0492fSopenharmony_ci  ]
38d9f0492fSopenharmony_ci}
39d9f0492fSopenharmony_ci
40d9f0492fSopenharmony_ciFSCRYPT_PATH =
41d9f0492fSopenharmony_ci    "//foundation/filemanagement/storage_service/services/storage_daemon"
42d9f0492fSopenharmony_ci
43d9f0492fSopenharmony_ciohos_unittest("init_unittest") {
44d9f0492fSopenharmony_ci  module_out_path = "startup/init"
45d9f0492fSopenharmony_ci  sources = [
46d9f0492fSopenharmony_ci    "//base/startup/init/device_info/device_info.cpp",
47d9f0492fSopenharmony_ci    "//base/startup/init/device_info/device_info_stub.cpp",
48d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/control_fd/control_fd_client.c",
49d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/control_fd/control_fd_service.c",
50d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fd_holder/fd_holder.c",
51d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fd_holder/fd_holder_internal.c",
52d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/file/init_file.c",
53d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_mount_overlay.c",
54d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_overlay_common.c",
55d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/erofs_remount_overlay.c",
56d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/fstab.c",
57d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/fstab_mount.c",
58d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/switch_root.c",
59d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/reboot/init_reboot_innerkits.c",
60d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/socket/init_socket.c",
61d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syspara/param_comm.c",
62d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syspara/parameter.c",
63d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syspara/sysversion.c",
64d9f0492fSopenharmony_ci    "//base/startup/init/remount/remount_overlay.c",
65d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/begetctl_cmd.c",
66d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/bootchart_cmd.c",
67d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/dump_service.c",
68d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/init_cmd_reboot.c",
69d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/misc_daemon.cpp",
70d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/modulectl.c",
71d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/param_cmd.c",
72d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/sandbox.cpp",
73d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/service_control.c",
74d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/setloglevel.c",
75d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/shell/shell_bas.c",
76d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/shell/shell_main.c",
77d9f0492fSopenharmony_ci    "//base/startup/init/services/init/adapter/init_adapter.c",
78d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_capability.c",
79d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_common_cmds.c",
80d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_common_service.c",
81d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_config.c",
82d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_group_manager.c",
83d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_service_file.c",
84d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_service_manager.c",
85d9f0492fSopenharmony_ci    "//base/startup/init/services/init/init_service_socket.c",
86d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/bootstagehooker.c",
87d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/device.c",
88d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/fd_holder_service.c",
89d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init.c",
90d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_cmdexecutor.c",
91d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_cmds.c",
92d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_control_fd_service.c",
93d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_jobs.c",
94d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_mount.c",
95d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_reboot.c",
96d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_service.c",
97d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard/init_signal_handler.c",
98d9f0492fSopenharmony_ci    "//base/startup/init/services/log/init_commlog.c",
99d9f0492fSopenharmony_ci    "//base/startup/init/services/log/init_log.c",
100d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/idle/le_idle.c",
101d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/loop/le_epoll.c",
102d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/loop/le_loop.c",
103d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/signal/le_signal.c",
104d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/socket/le_socket.c",
105d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/task/le_asynctask.c",
106d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/task/le_streamtask.c",
107d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/task/le_task.c",
108d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/task/le_watchtask.c",
109d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/timer/le_timer.c",
110d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/utils/le_utils.c",
111d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/bootchart/bootchart.c",
112d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/bootchart/bootchart_static.c",
113d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/bootevent/bootevent.c",
114d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/crashhandler/crash_handler.c",
115d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_eng/init_eng.c",
116d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_eng/init_eng_static.c",
117d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_hook/init_hook.c",
118d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_hook/param_hook.c",
119d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/reboot/reboot.c",
120d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/reboot/reboot_misc.c",
121d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/reboot/reboot_static.c",
122d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/udid/udid_adp.c",
123d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/udid/udid_comm.c",
124d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/udid/udid_static.c",
125d9f0492fSopenharmony_ci    "//base/startup/init/services/param/adapter/param_dac.c",
126d9f0492fSopenharmony_ci    "//base/startup/init/services/param/adapter/param_persistadp.c",
127d9f0492fSopenharmony_ci    "//base/startup/init/services/param/base/param_base.c",
128d9f0492fSopenharmony_ci    "//base/startup/init/services/param/base/param_comm.c",
129d9f0492fSopenharmony_ci    "//base/startup/init/services/param/base/param_trie.c",
130d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux/param_message.c",
131d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux/param_msgadp.c",
132d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux/param_osadp.c",
133d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux/param_request.c",
134d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux/param_service.c",
135d9f0492fSopenharmony_ci    "//base/startup/init/services/param/manager/param_manager.c",
136d9f0492fSopenharmony_ci    "//base/startup/init/services/param/manager/param_persist.c",
137d9f0492fSopenharmony_ci    "//base/startup/init/services/param/manager/param_server.c",
138d9f0492fSopenharmony_ci    "//base/startup/init/services/param/trigger/trigger_checker.c",
139d9f0492fSopenharmony_ci    "//base/startup/init/services/param/trigger/trigger_manager.c",
140d9f0492fSopenharmony_ci    "//base/startup/init/services/param/trigger/trigger_processor.c",
141d9f0492fSopenharmony_ci    "//base/startup/init/services/sandbox/sandbox.c",
142d9f0492fSopenharmony_ci    "//base/startup/init/services/sandbox/sandbox_namespace.c",
143d9f0492fSopenharmony_ci    "//base/startup/init/services/utils/init_hashmap.c",
144d9f0492fSopenharmony_ci    "//base/startup/init/services/utils/init_utils.c",
145d9f0492fSopenharmony_ci    "//base/startup/init/services/utils/list.c",
146d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/standard/ueventd_parameter.c",
147d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/ueventd.c",
148d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/ueventd_device_handler.c",
149d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/ueventd_firmware_handler.c",
150d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/ueventd_read_cfg.c",
151d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/ueventd_socket.c",
152d9f0492fSopenharmony_ci  ]
153d9f0492fSopenharmony_ci
154d9f0492fSopenharmony_ci  sources += [
155d9f0492fSopenharmony_ci    "${FSCRYPT_PATH}/libfscrypt/src/fscrypt_control.c",
156d9f0492fSopenharmony_ci    "${FSCRYPT_PATH}/libfscrypt/src/fscrypt_utils.c",
157d9f0492fSopenharmony_ci    "${FSCRYPT_PATH}/libfscrypt/src/key_control.c",
158d9f0492fSopenharmony_ci    "${FSCRYPT_PATH}/libfscrypt/src/sysparam_static.c",
159d9f0492fSopenharmony_ci  ]
160d9f0492fSopenharmony_ci
161d9f0492fSopenharmony_ci  if (defined(build_selinux) && build_selinux) {
162d9f0492fSopenharmony_ci    sources += [ "//base/startup/init/services/param/adapter/param_selinux.c" ]
163d9f0492fSopenharmony_ci  }
164d9f0492fSopenharmony_ci
165d9f0492fSopenharmony_ci  if (enable_ohos_startup_init_feature_watcher) {
166d9f0492fSopenharmony_ci    sources += [
167d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/agent/watcher.cpp",
168d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/agent/watcher_manager_kits.cpp",
169d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/agent/watcher_manager_proxy.cpp",
170d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/agent/watcher_stub.cpp",
171d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/proxy/watcher_manager.cpp",
172d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/proxy/watcher_manager_stub.cpp",
173d9f0492fSopenharmony_ci      "//base/startup/init/services/param/watcher/proxy/watcher_proxy.cpp",
174d9f0492fSopenharmony_ci    ]
175d9f0492fSopenharmony_ci  }
176d9f0492fSopenharmony_ci
177d9f0492fSopenharmony_ci  include_dirs = [
178d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/switch_root/include",
179d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/erofs_overlay/include",
180d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
181d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/fs_manager",
182d9f0492fSopenharmony_ci    "//base/startup/init/remount/include",
183d9f0492fSopenharmony_ci  ]
184d9f0492fSopenharmony_ci  defines = []
185d9f0492fSopenharmony_ci
186d9f0492fSopenharmony_ci  if (defined(build_seccomp) && build_seccomp) {
187d9f0492fSopenharmony_ci    sources += [
188d9f0492fSopenharmony_ci      "../../services/modules/seccomp/seccomp_policy.c",
189d9f0492fSopenharmony_ci      "seccomp/seccomp_unittest.cpp",
190d9f0492fSopenharmony_ci    ]
191d9f0492fSopenharmony_ci    include_dirs +=
192d9f0492fSopenharmony_ci        [ "//base/startup/init/interfaces/innerkits/seccomp/include" ]
193d9f0492fSopenharmony_ci
194d9f0492fSopenharmony_ci    if (build_variant == "root") {
195d9f0492fSopenharmony_ci      defines += [ "WITH_SECCOMP_DEBUG" ]
196d9f0492fSopenharmony_ci    }
197d9f0492fSopenharmony_ci
198d9f0492fSopenharmony_ci    if (use_clang_coverage) {
199d9f0492fSopenharmony_ci      defines += [ "COVERAGE_TEST" ]
200d9f0492fSopenharmony_ci    }
201d9f0492fSopenharmony_ci
202d9f0492fSopenharmony_ci    if (init_feature_seccomp_privilege) {
203d9f0492fSopenharmony_ci      defines += [ "SECCOMP_PRIVILEGE" ]
204d9f0492fSopenharmony_ci    }
205d9f0492fSopenharmony_ci  }
206d9f0492fSopenharmony_ci
207d9f0492fSopenharmony_ci  sources += [
208d9f0492fSopenharmony_ci    "begetctl/begetctl_unittest.cpp",
209d9f0492fSopenharmony_ci    "deviceinfo/DeviceInfoUnittest.cpp",
210d9f0492fSopenharmony_ci    "fs_manager/erofs/erofs_common_unittest.cpp",
211d9f0492fSopenharmony_ci    "fs_manager/erofs/erofs_mount_unittest.cpp",
212d9f0492fSopenharmony_ci    "fs_manager/erofs/erofs_remount_unittest.cpp",
213d9f0492fSopenharmony_ci    "init/cmds_unittest.cpp",
214d9f0492fSopenharmony_ci    "init/group_unittest.cpp",
215d9f0492fSopenharmony_ci    "init/init_reboot_unittest.cpp",
216d9f0492fSopenharmony_ci    "init/init_unittest.cpp",
217d9f0492fSopenharmony_ci    "init/mount_unittest.cpp",
218d9f0492fSopenharmony_ci    "init/sandbox_unittest.cpp",
219d9f0492fSopenharmony_ci    "init/service_file_unittest.cpp",
220d9f0492fSopenharmony_ci    "init/service_socket_unittest.cpp",
221d9f0492fSopenharmony_ci    "init/service_unittest.cpp",
222d9f0492fSopenharmony_ci    "init/utils_unittest.cpp",
223d9f0492fSopenharmony_ci    "innerkits/innerkits_unittest.cpp",
224d9f0492fSopenharmony_ci    "loopevent/loopevent_unittest.cpp",
225d9f0492fSopenharmony_ci    "loopevent/loopserver_unittest.cpp",
226d9f0492fSopenharmony_ci    "loopevent/loopsignal_unittest.cpp",
227d9f0492fSopenharmony_ci    "loopevent/looptimer_unittest.cpp",
228d9f0492fSopenharmony_ci    "modules/eng_unittest.cpp",
229d9f0492fSopenharmony_ci    "modules/modules_unittest.cpp",
230d9f0492fSopenharmony_ci    "modules/udid_unittest.cpp",
231d9f0492fSopenharmony_ci    "param/client_unittest.cpp",
232d9f0492fSopenharmony_ci    "param/dac_unittest.cpp",
233d9f0492fSopenharmony_ci    "param/param_shell_unittest.cpp",
234d9f0492fSopenharmony_ci    "param/param_stub.cpp",
235d9f0492fSopenharmony_ci    "param/param_unittest.cpp",
236d9f0492fSopenharmony_ci    "param/paramservice_unittest.cpp",
237d9f0492fSopenharmony_ci    "param/trigger_unittest.cpp",
238d9f0492fSopenharmony_ci    "remount/remount_overlay_unittest.cpp",
239d9f0492fSopenharmony_ci    "syspara/syspara_unittest.cpp",
240d9f0492fSopenharmony_ci    "ueventd/ueventd_config_unittest.cpp",
241d9f0492fSopenharmony_ci    "ueventd/ueventd_event_unittest.cpp",
242d9f0492fSopenharmony_ci  ]
243d9f0492fSopenharmony_ci
244d9f0492fSopenharmony_ci  sources += [
245d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/hookmgr/hookmgr.c",
246d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/init_module_engine/init_modulemgr.c",
247d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/modulemgr/modulemgr.c",
248d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/service_control/service_control.c",
249d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/service_watcher/service_watcher.c",
250d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syscap/init_syscap.c",
251d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syspara/param_wrapper.cpp",
252d9f0492fSopenharmony_ci    "innerkits/hookmgr_unittest.cpp",
253d9f0492fSopenharmony_ci    "innerkits/modulemgr_unittest.cpp",
254d9f0492fSopenharmony_ci    "innerkits/strutil_unittest.cpp",
255d9f0492fSopenharmony_ci  ]
256d9f0492fSopenharmony_ci
257d9f0492fSopenharmony_ci  configs = [ "//base/startup/init/test/unittest:utest_config" ]
258d9f0492fSopenharmony_ci
259d9f0492fSopenharmony_ci  include_dirs += [
260d9f0492fSopenharmony_ci    "//base/startup/init/device_info",
261d9f0492fSopenharmony_ci    "//base/startup/init/services/init/standard",
262d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include",
263d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/syspara",
264d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fd_holder",
265d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/syspara",
266d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/control_fd",
267d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl",
268d9f0492fSopenharmony_ci    "//base/startup/init/services/begetctl/shell",
269d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include",
270d9f0492fSopenharmony_ci    "//base/startup/init/services/init/include",
271d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/param",
272d9f0492fSopenharmony_ci    "//base/startup/init/services/log",
273d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/include",
274d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/loop",
275d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/socket",
276d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/signal",
277d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/task",
278d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/timer",
279d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/utils",
280d9f0492fSopenharmony_ci    "//base/startup/init/services/loopevent/idle",
281d9f0492fSopenharmony_ci    "//base/startup/init/services/modules",
282d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/bootchart",
283d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_hook",
284d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/selinux",
285d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/reboot",
286d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/udid",
287d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/crashhandler",
288d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_eng",
289d9f0492fSopenharmony_ci    "//base/startup/init/services/param/adapter",
290d9f0492fSopenharmony_ci    "//base/startup/init/services/param/base",
291d9f0492fSopenharmony_ci    "//base/startup/init/services/param/linux",
292d9f0492fSopenharmony_ci    "//base/startup/init/services/param/include",
293d9f0492fSopenharmony_ci    "//base/startup/init/services/param/watcher/agent",
294d9f0492fSopenharmony_ci    "//base/startup/init/services/param/watcher/include",
295d9f0492fSopenharmony_ci    "//base/startup/init/services/param/watcher/proxy",
296d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest",
297d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/param",
298d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/include",
299d9f0492fSopenharmony_ci    "//base/startup/init/services/sandbox/include",
300d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/hals",
301d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/param",
302d9f0492fSopenharmony_ci    "${FSCRYPT_PATH}/include/libfscrypt",
303d9f0492fSopenharmony_ci  ]
304d9f0492fSopenharmony_ci
305d9f0492fSopenharmony_ci  defines += [
306d9f0492fSopenharmony_ci    "READ_CHECK",
307d9f0492fSopenharmony_ci    "INIT_AGENT",
308d9f0492fSopenharmony_ci    "INIT_DMESG",
309d9f0492fSopenharmony_ci    "INIT_FILE",
310d9f0492fSopenharmony_ci    "STARTUP_INIT_TEST",
311d9f0492fSopenharmony_ci    "PARAM_SUPPORT_DAC",
312d9f0492fSopenharmony_ci    "_GNU_SOURCE",
313d9f0492fSopenharmony_ci    "PARAM_SUPPORT_TRIGGER",
314d9f0492fSopenharmony_ci    "USE_MBEDTLS",
315d9f0492fSopenharmony_ci    "PARAM_DECODE_GROUPID_FROM_FILE",
316d9f0492fSopenharmony_ci    "WORKSPACE_AREA_NEED_MUTEX",
317d9f0492fSopenharmony_ci    "PARAMWORKSPACE_NEED_MUTEX",
318d9f0492fSopenharmony_ci    "PARAM_SUPPORT_REAL_CHECK",
319d9f0492fSopenharmony_ci    "DISABLE_INIT_TWO_STAGES",
320d9f0492fSopenharmony_ci    "INIT_SUPPORT_CHIPSET_INIT",
321d9f0492fSopenharmony_ci  ]
322d9f0492fSopenharmony_ci  defines += [ "_GNU_SOURCE" ]
323d9f0492fSopenharmony_ci
324d9f0492fSopenharmony_ci  if (target_cpu == "arm64" || target_cpu == "x86_64" ||
325d9f0492fSopenharmony_ci      target_cpu == "riscv64") {
326d9f0492fSopenharmony_ci    defines += [ "SUPPORT_64BIT" ]
327d9f0492fSopenharmony_ci  }
328d9f0492fSopenharmony_ci  if (use_musl) {
329d9f0492fSopenharmony_ci    defines += [ "__MUSL__" ]
330d9f0492fSopenharmony_ci  }
331d9f0492fSopenharmony_ci
332d9f0492fSopenharmony_ci  external_deps = [
333d9f0492fSopenharmony_ci    "access_token:libnativetoken",
334d9f0492fSopenharmony_ci    "access_token:libtoken_setproc",
335d9f0492fSopenharmony_ci    "bounds_checking_function:libsec_static",
336d9f0492fSopenharmony_ci    "cJSON:cjson",
337d9f0492fSopenharmony_ci    "c_utils:utils",
338d9f0492fSopenharmony_ci    "config_policy:configpolicy_util_for_init_static",
339d9f0492fSopenharmony_ci    "googletest:gmock",
340d9f0492fSopenharmony_ci    "googletest:gtest",
341d9f0492fSopenharmony_ci    "hilog:libhilog",
342d9f0492fSopenharmony_ci    "hisysevent:libhisysevent",
343d9f0492fSopenharmony_ci    "init:libinit_module_engine",
344d9f0492fSopenharmony_ci    "libunwind:libunwind",
345d9f0492fSopenharmony_ci    "mbedtls:mbedtls_shared",
346d9f0492fSopenharmony_ci    "selinux:libselinux",
347d9f0492fSopenharmony_ci    "zlib:libz",
348d9f0492fSopenharmony_ci  ]
349d9f0492fSopenharmony_ci  if (init_appspawn_client_module && defined(global_parts_info) &&
350d9f0492fSopenharmony_ci      defined(global_parts_info.startup_appspawn)) {
351d9f0492fSopenharmony_ci    defines += [ "ENABLE_ENTER_APPSPAWN_SANDBOX" ]
352d9f0492fSopenharmony_ci    external_deps += [ "appspawn:appspawn_client" ]
353d9f0492fSopenharmony_ci  }
354d9f0492fSopenharmony_ci
355d9f0492fSopenharmony_ci  if (init_feature_ab_partition) {
356d9f0492fSopenharmony_ci    sources += [ "//base/startup/init/services/begetctl/partitionslot.cpp" ]
357d9f0492fSopenharmony_ci    external_deps += [
358d9f0492fSopenharmony_ci      "drivers_interface_partitionslot:libpartitionslot_proxy_1.0",
359d9f0492fSopenharmony_ci      "hdf_core:libhdi",
360d9f0492fSopenharmony_ci      "hdf_core:libpub_utils",
361d9f0492fSopenharmony_ci    ]
362d9f0492fSopenharmony_ci  }
363d9f0492fSopenharmony_ci
364d9f0492fSopenharmony_ci  if (!defined(ohos_lite) && enable_ohos_startup_init_feature_watcher) {
365d9f0492fSopenharmony_ci    sources += [
366d9f0492fSopenharmony_ci      "param/watcher_agent_unittest.cpp",
367d9f0492fSopenharmony_ci      "param/watcher_proxy_unittest.cpp",
368d9f0492fSopenharmony_ci    ]
369d9f0492fSopenharmony_ci    external_deps += [
370d9f0492fSopenharmony_ci      "ipc:ipc_single",
371d9f0492fSopenharmony_ci      "safwk:system_ability_fwk",
372d9f0492fSopenharmony_ci      "samgr:samgr_proxy",
373d9f0492fSopenharmony_ci    ]
374d9f0492fSopenharmony_ci  }
375d9f0492fSopenharmony_ci
376d9f0492fSopenharmony_ci  if (defined(build_selinux) && build_selinux) {
377d9f0492fSopenharmony_ci    sources += [ "param/selinux_unittest.cpp" ]
378d9f0492fSopenharmony_ci    sources += [
379d9f0492fSopenharmony_ci      "//base/startup/init/services/modules/selinux/selinux_adp.c",
380d9f0492fSopenharmony_ci      "//base/startup/init/services/modules/selinux/selinux_static.c",
381d9f0492fSopenharmony_ci    ]
382d9f0492fSopenharmony_ci    external_deps += [
383d9f0492fSopenharmony_ci      "selinux:libselinux",
384d9f0492fSopenharmony_ci      "selinux_adapter:libselinux_parameter_static",
385d9f0492fSopenharmony_ci    ]
386d9f0492fSopenharmony_ci
387d9f0492fSopenharmony_ci    defines += [
388d9f0492fSopenharmony_ci      "WITH_SELINUX",
389d9f0492fSopenharmony_ci      "PARAM_SUPPORT_SELINUX",
390d9f0492fSopenharmony_ci    ]
391d9f0492fSopenharmony_ci  }
392d9f0492fSopenharmony_ci  if (enable_ohos_startup_init_feature_deviceinfo) {
393d9f0492fSopenharmony_ci    sources += [
394d9f0492fSopenharmony_ci      "//base/startup/init/device_info/device_info_kits.cpp",
395d9f0492fSopenharmony_ci      "//base/startup/init/device_info/device_info_load.cpp",
396d9f0492fSopenharmony_ci      "//base/startup/init/device_info/device_info_proxy.cpp",
397d9f0492fSopenharmony_ci    ]
398d9f0492fSopenharmony_ci    external_deps += [
399d9f0492fSopenharmony_ci      "access_token:libaccesstoken_sdk",
400d9f0492fSopenharmony_ci      "selinux:libselinux",
401d9f0492fSopenharmony_ci    ]
402d9f0492fSopenharmony_ci
403d9f0492fSopenharmony_ci    defines += [ "PARAM_FEATURE_DEVICEINFO" ]
404d9f0492fSopenharmony_ci  }
405d9f0492fSopenharmony_ci
406d9f0492fSopenharmony_ci  sources += [
407d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/trace/init_trace.c",
408d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/modules/trace_unittest.cpp",
409d9f0492fSopenharmony_ci  ]
410d9f0492fSopenharmony_ci
411d9f0492fSopenharmony_ci  # for sysevent
412d9f0492fSopenharmony_ci  sources += [
413d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/sysevent/startup_time_event.c",
414d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/sysevent/sys_event.c",
415d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/modules/sysevent_unittest.cpp",
416d9f0492fSopenharmony_ci  ]
417d9f0492fSopenharmony_ci
418d9f0492fSopenharmony_ci  include_dirs += [
419d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/bootevent",
420d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_context",
421d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/sysevent",
422d9f0492fSopenharmony_ci  ]
423d9f0492fSopenharmony_ci
424d9f0492fSopenharmony_ci  # test for init sub init_context
425d9f0492fSopenharmony_ci  sources += [
426d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_context/init_context.c",
427d9f0492fSopenharmony_ci    "//base/startup/init/services/modules/init_context/init_context_static.c",
428d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/modules/context_unittest.cpp",
429d9f0492fSopenharmony_ci  ]
430d9f0492fSopenharmony_ci
431d9f0492fSopenharmony_ci  # test atomic operation
432d9f0492fSopenharmony_ci  sources += [ "//base/startup/init/test/unittest/param/atomic_unittest.cpp" ]
433d9f0492fSopenharmony_ci
434d9f0492fSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
435d9f0492fSopenharmony_ci}
436d9f0492fSopenharmony_ci
437d9f0492fSopenharmony_ciohos_unittest("init_dmverify_unittest") {
438d9f0492fSopenharmony_ci  module_out_path = "startup/init"
439d9f0492fSopenharmony_ci  sources = [
440d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/dm_verity.c",
441d9f0492fSopenharmony_ci    "//base/startup/init/services/log/init_commlog.c",
442d9f0492fSopenharmony_ci    "//base/startup/init/services/log/init_log.c",
443d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/init/interfaces/innerkits/fs_manager/libfs_hvb/fs_hvb.c",
444d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/fs_manager/dm_verify/dm_verify_unittest.cpp",
445d9f0492fSopenharmony_ci  ]
446d9f0492fSopenharmony_ci
447d9f0492fSopenharmony_ci  include_dirs = [
448d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/dm_verity/include",
449d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include",
450d9f0492fSopenharmony_ci    "//base/startup/hvb/libhvb/include",
451d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/fs_manager",
452d9f0492fSopenharmony_ci    "//third_party/bounds_checking_function/include",
453d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include",
454d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
455d9f0492fSopenharmony_ci    "//base/startup/init/services/log",
456d9f0492fSopenharmony_ci  ]
457d9f0492fSopenharmony_ci
458d9f0492fSopenharmony_ci  configs = [ "//base/startup/init/test/unittest:utest_config" ]
459d9f0492fSopenharmony_ci
460d9f0492fSopenharmony_ci  external_deps = [
461d9f0492fSopenharmony_ci    "c_utils:utils",
462d9f0492fSopenharmony_ci    "googletest:gtest",
463d9f0492fSopenharmony_ci    "hilog:libhilog",
464d9f0492fSopenharmony_ci  ]
465d9f0492fSopenharmony_ci
466d9f0492fSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
467d9f0492fSopenharmony_ci}
468d9f0492fSopenharmony_ci
469d9f0492fSopenharmony_ciohos_unittest("init_fshvb_unittest") {
470d9f0492fSopenharmony_ci  module_out_path = "startup/init"
471d9f0492fSopenharmony_ci  sources = [
472d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/fs_dm.c",
473d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/fs_hvb.c",
474d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/hvb_ops.c",
475d9f0492fSopenharmony_ci    "//base/startup/init/services/log/init_commlog.c",
476d9f0492fSopenharmony_ci    "//base/startup/init/services/utils/init_utils.c",
477d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/hvb/libhvb/auth/hvb.c",
478d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/hvb/libhvb/cert/hvb_cert.c",
479d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/hvb/libhvb/crypto/hvb_hash_sha256.c",
480d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/init/ueventd/ueventd.c",
481d9f0492fSopenharmony_ci    "//base/startup/init/test/mock/init/ueventd/ueventd_socket.c",
482d9f0492fSopenharmony_ci    "//base/startup/init/test/unittest/fs_manager/libfs_hvb_unittest.cpp",
483d9f0492fSopenharmony_ci  ]
484d9f0492fSopenharmony_ci
485d9f0492fSopenharmony_ci  include_dirs = [
486d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_hvb/include",
487d9f0492fSopenharmony_ci    "//base/startup/hvb/libhvb/include",
488d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/fs_manager/libfs_dm/include",
489d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/fs_manager",
490d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include",
491d9f0492fSopenharmony_ci    "//base/startup/init/services/log",
492d9f0492fSopenharmony_ci    "//base/startup/init/ueventd/include",
493d9f0492fSopenharmony_ci    "//base/startup/hvb/libhvb/src/crypto",
494d9f0492fSopenharmony_ci    "//base/startup/init/interfaces/innerkits/include/param",
495d9f0492fSopenharmony_ci  ]
496d9f0492fSopenharmony_ci
497d9f0492fSopenharmony_ci  defines = [ "STARTUP_INIT_UT_PATH =\"/data/init_ut\"" ]
498d9f0492fSopenharmony_ci
499d9f0492fSopenharmony_ci  configs = []
500d9f0492fSopenharmony_ci
501d9f0492fSopenharmony_ci  external_deps = [
502d9f0492fSopenharmony_ci    "c_utils:utils",
503d9f0492fSopenharmony_ci    "googletest:gtest",
504d9f0492fSopenharmony_ci    "hilog:libhilog",
505d9f0492fSopenharmony_ci  ]
506d9f0492fSopenharmony_ci
507d9f0492fSopenharmony_ci  cflags_cc = [ "-fexceptions" ]
508d9f0492fSopenharmony_ci}
509