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