1# Copyright (c) 2021-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/appspawn/appspawn.gni")
14import("//build/ohos.gni")
15import("//build/ohos/native_stub/native_stub.gni")
16
17config("appspawn_server_config") {
18  visibility = [ ":*" ]
19  include_dirs = [
20    "${appspawn_path}/common",
21    "${appspawn_path}/standard",
22    "${appspawn_path}/modules/common",
23    "${appspawn_path}/modules/modulemgr",
24    "${appspawn_path}/modules/sysevent",
25  ]
26
27  cflags = []
28  if (build_selinux) {
29    cflags += [ "-DWITH_SELINUX" ]
30  }
31
32  if (build_seccomp) {
33    cflags += [ "-DWITH_SECCOMP" ]
34  }
35  configs = [ "${appspawn_path}:appspawn_config" ]
36}
37
38ohos_executable("appspawn") {
39  sources = [
40    "${appspawn_path}/common/appspawn_server.c",
41    "${appspawn_path}/common/appspawn_trace.cpp",
42    "${appspawn_path}/modules/common/appspawn_dfx_dump.cpp",
43    "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c",
44    "${appspawn_path}/standard/appspawn_appmgr.c",
45    "${appspawn_path}/standard/appspawn_kickdog.c",
46    "${appspawn_path}/standard/appspawn_main.c",
47    "${appspawn_path}/standard/appspawn_msgmgr.c",
48    "${appspawn_path}/standard/appspawn_service.c",
49    "${appspawn_path}/standard/nwebspawn_launcher.c",
50  ]
51
52  defines = []
53  configs = [
54    ":appspawn_server_config",
55    "${appspawn_path}:appspawn_config",
56  ]
57  deps = [
58    "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
59    "${appspawn_path}/util:libappspawn_util",
60  ]
61  if (asan_detector || is_asan) {
62    defines += [ "ASAN_DETECTOR" ]
63  }
64  if (is_debug || build_variant == "root") {
65    defines += [ "DEBUG_BEGETCTL_BOOT" ]
66  }
67
68  external_deps = [
69    "cJSON:cjson",
70    "c_utils:utils",
71    "config_policy:configpolicy_util",
72    "hilog:libhilog",
73    "hitrace:hitrace_meter",
74    "init:libbegetutil",
75  ]
76  if (enable_appspawn_dump_catcher) {
77    external_deps += [ "faultloggerd:libdfx_dumpcatcher" ]
78  }
79  if (appspawn_use_encaps) {
80    defines += [ "USE_ENCAPS" ]
81  }
82  if (appspawn_report_event) {
83    defines += [ "APPSPAWN_HISYSEVENT" ]
84    external_deps += [ "hisysevent:libhisysevent" ]
85    sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ]
86  }
87
88  if (appspawn_use_encaps) {
89    defines += [ "USE_ENCAPS" ]
90  }
91
92  if (build_selinux) {
93    defines += [ "WITH_SELINUX" ]
94    external_deps += [
95      "selinux:libselinux",
96      "selinux_adapter:libhap_restorecon",
97    ]
98  }
99  cflags = []
100
101  #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ]
102  if (!defined(global_parts_info) ||
103      defined(global_parts_info.security_code_signature)) {
104    defines += [ "CODE_SIGNATURE_ENABLE" ]
105    external_deps += [ "code_signature:libcode_sign_attr_utils" ]
106  }
107
108  version_script = get_label_info(
109                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
110                       "target_gen_dir") + "/" + get_label_info(
111                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
112                       "name") + stub_version_script_suffix
113
114  install_enable = true
115  subsystem_name = "${subsystem_name}"
116  part_name = "${part_name}"
117}
118
119ohos_shared_library("appspawn_helper") {
120  sources = [ "${appspawn_path}/common/appspawn_server.c" ]
121  defines = [ "APPSPAWN_HELPER" ]
122  configs = [
123    ":appspawn_server_config",
124    "${appspawn_path}:appspawn_config",
125  ]
126  cflags = [
127    "-fvisibility=hidden",
128    "-fstack-protector-all",
129  ]
130  external_deps = [
131    "hilog:libhilog",
132    "init:libbegetutil",
133  ]
134
135  install_enable = true
136  subsystem_name = "${subsystem_name}"
137  part_name = "${part_name}"
138}
139
140ohos_prebuilt_etc("appspawn.rc") {
141  source = "appspawn.cfg"
142  relative_install_dir = "init"
143  subsystem_name = "${subsystem_name}"
144  part_name = "${part_name}"
145}
146
147ohos_executable("pid_ns_init") {
148  sources = [ "${appspawn_path}/standard/pid_ns_init.c" ]
149  install_enable = true
150  subsystem_name = "${subsystem_name}"
151  part_name = "${part_name}"
152}
153
154# to support cjappspawn
155ohos_executable("cjappspawn") {
156  sources = [
157    "${appspawn_path}/common/appspawn_server.c",
158    "${appspawn_path}/common/appspawn_trace.cpp",
159    "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c",
160    "${appspawn_path}/standard/appspawn_appmgr.c",
161    "${appspawn_path}/standard/appspawn_kickdog.c",
162    "${appspawn_path}/standard/appspawn_main.c",
163    "${appspawn_path}/standard/appspawn_msgmgr.c",
164    "${appspawn_path}/standard/appspawn_service.c",
165    "${appspawn_path}/standard/nwebspawn_launcher.c",
166  ]
167
168  defines = [ "CJAPP_SPAWN" ]
169  configs = [
170    ":appspawn_server_config",
171    "${appspawn_path}:appspawn_config",
172  ]
173  deps = [
174    "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
175    "${appspawn_path}/util:libappspawn_util",
176  ]
177  if (asan_detector || is_asan) {
178    defines += [ "ASAN_DETECTOR" ]
179  }
180
181  external_deps = [
182    "cJSON:cjson",
183    "c_utils:utils",
184    "config_policy:configpolicy_util",
185    "hilog:libhilog",
186    "hitrace:hitrace_meter",
187    "init:libbegetutil",
188  ]
189  if (appspawn_report_event) {
190    defines += [ "APPSPAWN_HISYSEVENT" ]
191    external_deps += [ "hisysevent:libhisysevent" ]
192    sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ]
193  }
194  if (build_selinux) {
195    defines += [ "WITH_SELINUX" ]
196    external_deps += [
197      "selinux:libselinux",
198      "selinux_adapter:libhap_restorecon",
199    ]
200  }
201  cflags = []
202
203  #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ]
204  if (!defined(global_parts_info) ||
205      defined(global_parts_info.security_code_signature)) {
206    defines += [ "CODE_SIGNATURE_ENABLE" ]
207    external_deps += [ "code_signature:libcode_sign_attr_utils" ]
208  }
209
210  version_script = get_label_info(
211                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
212                       "target_gen_dir") + "/" + get_label_info(
213                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
214                       "name") + stub_version_script_suffix
215
216  install_enable = true
217  subsystem_name = "${subsystem_name}"
218  part_name = "${part_name}"
219}
220
221# to support nativespawn
222ohos_executable("nativespawn") {
223  sources = [
224    "${appspawn_path}/common/appspawn_server.c",
225    "${appspawn_path}/common/appspawn_trace.cpp",
226    "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c",
227    "${appspawn_path}/standard/appspawn_appmgr.c",
228    "${appspawn_path}/standard/appspawn_kickdog.c",
229    "${appspawn_path}/standard/appspawn_main.c",
230    "${appspawn_path}/standard/appspawn_msgmgr.c",
231    "${appspawn_path}/standard/appspawn_service.c",
232    "${appspawn_path}/standard/nwebspawn_launcher.c",
233  ]
234
235  defines = [ "NATIVE_SPAWN" ]
236  configs = [
237    ":appspawn_server_config",
238    "${appspawn_path}:appspawn_config",
239  ]
240  deps = [
241    "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
242    "${appspawn_path}/util:libappspawn_util",
243  ]
244  if (asan_detector || is_asan) {
245    defines += [ "ASAN_DETECTOR" ]
246  }
247
248  external_deps = [
249    "cJSON:cjson",
250    "c_utils:utils",
251    "config_policy:configpolicy_util",
252    "hilog:libhilog",
253    "hitrace:hitrace_meter",
254    "init:libbegetutil",
255  ]
256  if (appspawn_report_event) {
257    defines += [ "APPSPAWN_HISYSEVENT" ]
258    external_deps += [ "hisysevent:libhisysevent" ]
259    sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ]
260  }
261  if (build_selinux) {
262    defines += [ "WITH_SELINUX" ]
263    external_deps += [
264      "selinux:libselinux",
265      "selinux_adapter:libhap_restorecon",
266    ]
267  }
268  cflags = []
269
270  #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ]
271  if (!defined(global_parts_info) ||
272      defined(global_parts_info.security_code_signature)) {
273    defines += [ "CODE_SIGNATURE_ENABLE" ]
274    external_deps += [ "code_signature:libcode_sign_attr_utils" ]
275  }
276
277  version_script = get_label_info(
278                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
279                       "target_gen_dir") + "/" + get_label_info(
280                       "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript",
281                       "name") + stub_version_script_suffix
282
283  install_enable = true
284  subsystem_name = "${subsystem_name}"
285  part_name = "${part_name}"
286}
287
288ohos_prebuilt_etc("cjappspawn.rc") {
289  source = "cjappspawn.cfg"
290  relative_install_dir = "init"
291  subsystem_name = "${subsystem_name}"
292  part_name = "${part_name}"
293}
294
295ohos_prebuilt_etc("nativespawn.rc") {
296  source = "nativespawn.cfg"
297  relative_install_dir = "init"
298  subsystem_name = "${subsystem_name}"
299  part_name = "${part_name}"
300}
301