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.
13 import("//base/startup/init/begetd.gni")
14 
15 common_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 
31 if (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 
267 group("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