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_ci
15d9f0492fSopenharmony_cicommon_include_dirs = [
16d9f0492fSopenharmony_ci  "//base/startup/init/services/begetctl",
17d9f0492fSopenharmony_ci  "//base/startup/init/services/begetctl/shell",
18d9f0492fSopenharmony_ci  "//base/startup/init/services/param/include",
19d9f0492fSopenharmony_ci  "//base/startup/init/services/param/adapter",
20d9f0492fSopenharmony_ci  "//base/startup/init/services/param/linux",
21d9f0492fSopenharmony_ci  "//base/startup/init/services/param/base",
22d9f0492fSopenharmony_ci  "//base/startup/init/interfaces/innerkits/include/param",
23d9f0492fSopenharmony_ci  "//base/startup/init/interfaces/innerkits/include",
24d9f0492fSopenharmony_ci  "//base/startup/init/services/loopevent/include",
25d9f0492fSopenharmony_ci  "//base/startup/init/services/init/include",
26d9f0492fSopenharmony_ci  "//base/startup/init/services/log",
27d9f0492fSopenharmony_ci  "//base/startup/init/interfaces/innerkits/include",
28d9f0492fSopenharmony_ci  "//base/startup/init/interfaces/innerkits/include/syspara",
29d9f0492fSopenharmony_ci]
30d9f0492fSopenharmony_ci
31d9f0492fSopenharmony_ciif (defined(ohos_lite)) {
32d9f0492fSopenharmony_ci  executable("begetctl") {
33d9f0492fSopenharmony_ci    output_name = "begetctl"
34d9f0492fSopenharmony_ci    sources = [
35d9f0492fSopenharmony_ci      "main.c",
36d9f0492fSopenharmony_ci      "param_cmd.c",
37d9f0492fSopenharmony_ci      "shell/shell_bas.c",
38d9f0492fSopenharmony_ci    ]
39d9f0492fSopenharmony_ci    defines = [
40d9f0492fSopenharmony_ci      "_GNU_SOURCE",  #syscall function need this macro definition
41d9f0492fSopenharmony_ci      "__MUSL__",
42d9f0492fSopenharmony_ci      "OHOS_LITE",
43d9f0492fSopenharmony_ci    ]
44d9f0492fSopenharmony_ci    if (param_test) {
45d9f0492fSopenharmony_ci      sources += [ "//base/startup/init/test/moduletest/syspara.cpp" ]
46d9f0492fSopenharmony_ci    }
47d9f0492fSopenharmony_ci
48d9f0492fSopenharmony_ci    include_dirs = common_include_dirs
49d9f0492fSopenharmony_ci    include_dirs +=
50d9f0492fSopenharmony_ci        [ "//base/security/selinux_adapter/interfaces/policycoreutils/include" ]
51d9f0492fSopenharmony_ci    deps = [
52d9f0492fSopenharmony_ci      "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
53d9f0492fSopenharmony_ci      "//base/startup/init/interfaces/innerkits:libbegetutil",
54d9f0492fSopenharmony_ci      "//base/startup/init/services/utils:libinit_utils",
55d9f0492fSopenharmony_ci      "//build/lite/config/component/cJSON:cjson_static",
56d9f0492fSopenharmony_ci    ]
57d9f0492fSopenharmony_ci    external_deps = [ "bounds_checking_function:libsec_static" ]
58d9f0492fSopenharmony_ci
59d9f0492fSopenharmony_ci    if (ohos_kernel_type == "linux") {
60d9f0492fSopenharmony_ci      deps += [ "//base/startup/init/services/param/linux:param_client" ]
61d9f0492fSopenharmony_ci    } else {
62d9f0492fSopenharmony_ci      deps += [ "//base/startup/init/services/param/liteos:param_client_lite" ]
63d9f0492fSopenharmony_ci    }
64d9f0492fSopenharmony_ci  }
65d9f0492fSopenharmony_ci} else {
66d9f0492fSopenharmony_ci  import("//build/ohos.gni")
67d9f0492fSopenharmony_ci
68d9f0492fSopenharmony_ci  ohos_executable("begetctl") {
69d9f0492fSopenharmony_ci    sources = [
70d9f0492fSopenharmony_ci      "appspawntime_cmd.c",
71d9f0492fSopenharmony_ci      "begetctl_cmd.c",
72d9f0492fSopenharmony_ci      "bootchart_cmd.c",
73d9f0492fSopenharmony_ci      "dump_service.c",
74d9f0492fSopenharmony_ci      "init_cmd_reboot.c",
75d9f0492fSopenharmony_ci      "main.c",
76d9f0492fSopenharmony_ci      "misc_daemon.cpp",
77d9f0492fSopenharmony_ci      "modulectl.c",
78d9f0492fSopenharmony_ci      "param_cmd.c",
79d9f0492fSopenharmony_ci      "sandbox.cpp",
80d9f0492fSopenharmony_ci      "service_control.c",
81d9f0492fSopenharmony_ci      "setloglevel.c",
82d9f0492fSopenharmony_ci      "shell/shell_bas.c",
83d9f0492fSopenharmony_ci    ]
84d9f0492fSopenharmony_ci
85d9f0492fSopenharmony_ci    defines = [ "_GNU_SOURCE" ]
86d9f0492fSopenharmony_ci
87d9f0492fSopenharmony_ci    include_dirs = common_include_dirs
88d9f0492fSopenharmony_ci    deps = [
89d9f0492fSopenharmony_ci      "//base/startup/init/interfaces/innerkits:libbegetutil",
90d9f0492fSopenharmony_ci      "//base/startup/init/interfaces/innerkits/control_fd:libcontrolfd",
91d9f0492fSopenharmony_ci      "//base/startup/init/services/log:agent_log",
92d9f0492fSopenharmony_ci      "//base/startup/init/services/param/linux:param_client",
93d9f0492fSopenharmony_ci      "//base/startup/init/services/sandbox:sandbox",
94d9f0492fSopenharmony_ci      "//base/startup/init/services/utils:libinit_utils",
95d9f0492fSopenharmony_ci    ]
96d9f0492fSopenharmony_ci
97d9f0492fSopenharmony_ci    deps += [ "//base/startup/init/services/param/base:param_base" ]
98d9f0492fSopenharmony_ci    external_deps = [
99d9f0492fSopenharmony_ci      "bounds_checking_function:libsec_shared",
100d9f0492fSopenharmony_ci      "cJSON:cjson",
101d9f0492fSopenharmony_ci      "c_utils:utils",
102d9f0492fSopenharmony_ci    ]
103d9f0492fSopenharmony_ci    if (init_appspawn_client_module && defined(global_parts_info) &&
104d9f0492fSopenharmony_ci        defined(global_parts_info.startup_appspawn)) {
105d9f0492fSopenharmony_ci      defines += [ "ENABLE_ENTER_APPSPAWN_SANDBOX" ]
106d9f0492fSopenharmony_ci      external_deps += [ "appspawn:appspawn_client" ]
107d9f0492fSopenharmony_ci    }
108d9f0492fSopenharmony_ci    if (param_test) {
109d9f0492fSopenharmony_ci      sources += [
110d9f0492fSopenharmony_ci        "//base/startup/init/test/moduletest/param_test_cmds.c",
111d9f0492fSopenharmony_ci        "//base/startup/init/test/moduletest/syspara.cpp",
112d9f0492fSopenharmony_ci      ]
113d9f0492fSopenharmony_ci      deps += [ "//base/startup/init/interfaces/innerkits:libbeget_proxy" ]
114d9f0492fSopenharmony_ci      defines += [
115d9f0492fSopenharmony_ci        "OHOS_SERVICE_DUMP",
116d9f0492fSopenharmony_ci        "INIT_TEST",
117d9f0492fSopenharmony_ci      ]
118d9f0492fSopenharmony_ci    }
119d9f0492fSopenharmony_ci
120d9f0492fSopenharmony_ci    if (build_selinux) {
121d9f0492fSopenharmony_ci      external_deps += [
122d9f0492fSopenharmony_ci        "selinux:libselinux",
123d9f0492fSopenharmony_ci        "selinux_adapter:libselinux_parameter_static",
124d9f0492fSopenharmony_ci      ]
125d9f0492fSopenharmony_ci      defines += [ "PARAM_SUPPORT_SELINUX" ]
126d9f0492fSopenharmony_ci    }
127d9f0492fSopenharmony_ci
128d9f0492fSopenharmony_ci    symlink_target_name = [
129d9f0492fSopenharmony_ci      "reboot",
130d9f0492fSopenharmony_ci      "service_control",
131d9f0492fSopenharmony_ci    ]
132d9f0492fSopenharmony_ci
133d9f0492fSopenharmony_ci    if (init_feature_ab_partition) {
134d9f0492fSopenharmony_ci      sources += [ "partitionslot.cpp" ]
135d9f0492fSopenharmony_ci      external_deps += [
136d9f0492fSopenharmony_ci        "drivers_interface_partitionslot:libpartitionslot_proxy_1.0",
137d9f0492fSopenharmony_ci        "hdf_core:libhdi",
138d9f0492fSopenharmony_ci        "hdf_core:libpub_utils",
139d9f0492fSopenharmony_ci      ]
140d9f0492fSopenharmony_ci    }
141d9f0492fSopenharmony_ci
142d9f0492fSopenharmony_ci    install_images = [ "system" ]
143d9f0492fSopenharmony_ci    install_enable = true
144d9f0492fSopenharmony_ci    part_name = "init"
145d9f0492fSopenharmony_ci    subsystem_name = "startup"
146d9f0492fSopenharmony_ci  }
147d9f0492fSopenharmony_ci
148d9f0492fSopenharmony_ci  ohos_executable("reboot") {
149d9f0492fSopenharmony_ci    sources = [
150d9f0492fSopenharmony_ci      "init_cmd_reboot.c",
151d9f0492fSopenharmony_ci      "main.c",
152d9f0492fSopenharmony_ci      "param_cmd.c",
153d9f0492fSopenharmony_ci      "shell/shell_bas.c",
154d9f0492fSopenharmony_ci    ]
155d9f0492fSopenharmony_ci
156d9f0492fSopenharmony_ci    defines = [ "_GNU_SOURCE" ]
157d9f0492fSopenharmony_ci
158d9f0492fSopenharmony_ci    include_dirs = common_include_dirs
159d9f0492fSopenharmony_ci    deps = [
160d9f0492fSopenharmony_ci      "//base/startup/init/interfaces/innerkits:libbegetutil",
161d9f0492fSopenharmony_ci      "//base/startup/init/services/log:agent_log",
162d9f0492fSopenharmony_ci      "//base/startup/init/services/param/linux:param_client",
163d9f0492fSopenharmony_ci      "//base/startup/init/services/utils:libinit_utils",
164d9f0492fSopenharmony_ci    ]
165d9f0492fSopenharmony_ci
166d9f0492fSopenharmony_ci    deps += [ "//base/startup/init/services/param/base:param_base" ]
167d9f0492fSopenharmony_ci    external_deps = [
168d9f0492fSopenharmony_ci      "bounds_checking_function:libsec_shared",
169d9f0492fSopenharmony_ci      "cJSON:cjson",
170d9f0492fSopenharmony_ci      "c_utils:utils",
171d9f0492fSopenharmony_ci      "selinux:libselinux",
172d9f0492fSopenharmony_ci      "selinux_adapter:libselinux_parameter_static",
173d9f0492fSopenharmony_ci    ]
174d9f0492fSopenharmony_ci
175d9f0492fSopenharmony_ci    install_images = [ "updater" ]
176d9f0492fSopenharmony_ci    install_enable = true
177d9f0492fSopenharmony_ci    part_name = "init"
178d9f0492fSopenharmony_ci    subsystem_name = "startup"
179d9f0492fSopenharmony_ci  }
180d9f0492fSopenharmony_ci
181d9f0492fSopenharmony_ci  ohos_executable("paramshell") {
182d9f0492fSopenharmony_ci    sources = [
183d9f0492fSopenharmony_ci      "param_cmd.c",
184d9f0492fSopenharmony_ci      "shell/shell_bas.c",
185d9f0492fSopenharmony_ci      "shell/shell_main.c",
186d9f0492fSopenharmony_ci    ]
187d9f0492fSopenharmony_ci
188d9f0492fSopenharmony_ci    defines = [ "_GNU_SOURCE" ]
189d9f0492fSopenharmony_ci    include_dirs = common_include_dirs
190d9f0492fSopenharmony_ci    deps = [
191d9f0492fSopenharmony_ci      "//base/startup/init/interfaces/innerkits:libbegetutil",
192d9f0492fSopenharmony_ci      "//base/startup/init/services/log:agent_log",
193d9f0492fSopenharmony_ci      "//base/startup/init/services/param/linux:param_client",
194d9f0492fSopenharmony_ci      "//base/startup/init/services/utils:libinit_utils",
195d9f0492fSopenharmony_ci    ]
196d9f0492fSopenharmony_ci    external_deps = [ "bounds_checking_function:libsec_shared" ]
197d9f0492fSopenharmony_ci
198d9f0492fSopenharmony_ci    if (build_selinux) {
199d9f0492fSopenharmony_ci      external_deps += [
200d9f0492fSopenharmony_ci        "selinux:libselinux",
201d9f0492fSopenharmony_ci        "selinux_adapter:libselinux_parameter_static",
202d9f0492fSopenharmony_ci      ]
203d9f0492fSopenharmony_ci      defines += [ "PARAM_SUPPORT_SELINUX" ]
204d9f0492fSopenharmony_ci    }
205d9f0492fSopenharmony_ci
206d9f0492fSopenharmony_ci    if (param_test) {
207d9f0492fSopenharmony_ci      sources += [
208d9f0492fSopenharmony_ci        "//base/startup/init/test/moduletest/param_test_cmds.c",
209d9f0492fSopenharmony_ci        "//base/startup/init/test/moduletest/syspara.cpp",
210d9f0492fSopenharmony_ci      ]
211d9f0492fSopenharmony_ci      deps += [ "//base/startup/init/interfaces/innerkits:libbeget_proxy" ]
212d9f0492fSopenharmony_ci      defines += [
213d9f0492fSopenharmony_ci        "OHOS_SERVICE_DUMP",
214d9f0492fSopenharmony_ci        "INIT_TEST",
215d9f0492fSopenharmony_ci      ]
216d9f0492fSopenharmony_ci    }
217d9f0492fSopenharmony_ci
218d9f0492fSopenharmony_ci    install_images = [ "system" ]
219d9f0492fSopenharmony_ci    install_enable = true
220d9f0492fSopenharmony_ci
221d9f0492fSopenharmony_ci    part_name = "init"
222d9f0492fSopenharmony_ci    subsystem_name = "startup"
223d9f0492fSopenharmony_ci  }
224d9f0492fSopenharmony_ci
225d9f0492fSopenharmony_ci  ohos_executable("param") {
226d9f0492fSopenharmony_ci    sources = [
227d9f0492fSopenharmony_ci      "main.c",
228d9f0492fSopenharmony_ci      "param_cmd.c",
229d9f0492fSopenharmony_ci      "shell/shell_bas.c",
230d9f0492fSopenharmony_ci    ]
231d9f0492fSopenharmony_ci
232d9f0492fSopenharmony_ci    defines = [
233d9f0492fSopenharmony_ci      "INIT_AGENT",
234d9f0492fSopenharmony_ci      "_GNU_SOURCE",
235d9f0492fSopenharmony_ci    ]
236d9f0492fSopenharmony_ci
237d9f0492fSopenharmony_ci    include_dirs = common_include_dirs
238d9f0492fSopenharmony_ci    deps = [
239d9f0492fSopenharmony_ci      "//base/startup/init/services/log:agent_log",
240d9f0492fSopenharmony_ci      "//base/startup/init/services/loopevent:loopevent",
241d9f0492fSopenharmony_ci      "//base/startup/init/services/param/linux:param_client",
242d9f0492fSopenharmony_ci      "//base/startup/init/services/utils:libinit_utils",
243d9f0492fSopenharmony_ci    ]
244d9f0492fSopenharmony_ci    deps += [ "//base/startup/init/services/param/base:param_base" ]
245d9f0492fSopenharmony_ci    external_deps = [
246d9f0492fSopenharmony_ci      "bounds_checking_function:libsec_shared",
247d9f0492fSopenharmony_ci      "c_utils:utils",
248d9f0492fSopenharmony_ci      "hilog:libhilog_base",
249d9f0492fSopenharmony_ci    ]
250d9f0492fSopenharmony_ci    if (build_selinux) {
251d9f0492fSopenharmony_ci      defines += [ "PARAM_SUPPORT_SELINUX" ]
252d9f0492fSopenharmony_ci      external_deps += [
253d9f0492fSopenharmony_ci        "selinux:libselinux",
254d9f0492fSopenharmony_ci        "selinux_adapter:libselinux_parameter_static",
255d9f0492fSopenharmony_ci      ]
256d9f0492fSopenharmony_ci    }
257d9f0492fSopenharmony_ci    install_images = [
258d9f0492fSopenharmony_ci      "system",
259d9f0492fSopenharmony_ci      "updater",
260d9f0492fSopenharmony_ci    ]
261d9f0492fSopenharmony_ci    install_enable = true
262d9f0492fSopenharmony_ci    part_name = "init"
263d9f0492fSopenharmony_ci    subsystem_name = "startup"
264d9f0492fSopenharmony_ci  }
265d9f0492fSopenharmony_ci}
266d9f0492fSopenharmony_ci
267d9f0492fSopenharmony_cigroup("begetctl_cmd") {
268d9f0492fSopenharmony_ci  if (defined(ohos_lite)) {
269d9f0492fSopenharmony_ci    if (init_feature_begetctl_liteos && ohos_kernel_type != "liteos_m") {
270d9f0492fSopenharmony_ci      deps = [ ":begetctl" ]
271d9f0492fSopenharmony_ci    }
272d9f0492fSopenharmony_ci  } else {
273d9f0492fSopenharmony_ci    deps = [
274d9f0492fSopenharmony_ci      ":begetctl",
275d9f0492fSopenharmony_ci      ":param",
276d9f0492fSopenharmony_ci      ":paramshell",
277d9f0492fSopenharmony_ci      ":reboot",
278d9f0492fSopenharmony_ci    ]
279d9f0492fSopenharmony_ci  }
280d9f0492fSopenharmony_ci}
281