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