• 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.
13
14import("//base/startup/appspawn/appspawn.gni")
15import("//build/ohos.gni")
16
17config("appspawn_config") {
18  visibility = [ ":*" ]
19  include_dirs = [
20    "common",
21    "standard",
22    "adapter",
23    "interfaces/innerkits/include",
24    "//commonlibrary/c_utils/base/include",
25    "util/include",
26    "${ability_runtime_path}/interfaces/kits/native/appkit/app",
27    "//base/global/resource_management/interfaces/inner_api/include",
28    "//base/security/access_token/interfaces/innerkits/token_setproc/include",
29    "//base/startup/init/services/log",
30    "//base/startup/init/services/include",
31    "//base/startup/init/services/include/param",
32    "//base/startup/init/services/loopevent/include",
33    "//base/startup/init/interfaces/innerkits/include",
34    "//third_party/json/include",
35    "//base/notification/eventhandler/interfaces/inner_api",
36    "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
37    "//foundation/arkui/napi",
38    "//third_party/libuv/include",
39  ]
40
41  if (build_selinux) {
42    cflags = [ "-DWITH_SELINUX" ]
43  }
44}
45
46ohos_executable("appspawn") {
47  sources = [
48    "${appspawn_path}/adapter/appspawn_ace.cpp",
49    "${appspawn_path}/standard/main.c",
50  ]
51  if (asan_detector || is_asan) {
52    defines = [ "ASAN_DETECTOR" ]
53  }
54  configs = [ ":appspawn_config" ]
55  deps = [
56    "${ability_runtime_path}/frameworks/native/appkit:appkit_native",
57    "${appspawn_path}:appspawn_server",
58  ]
59  external_deps = [
60    "ability_base:want",
61    "ability_runtime:app_manager",
62    "ability_runtime:runtime",
63    "c_utils:utils",
64    "hitrace_native:hitrace_meter",
65    "init:libbegetutil",
66  ]
67
68  install_enable = true
69  subsystem_name = "${subsystem_name}"
70  part_name = "${part_name}"
71}
72
73ohos_prebuilt_etc("asan.options") {
74  source = "asan.options"
75  subsystem_name = "${subsystem_name}"
76  part_name = "${part_name}"
77}
78
79ohos_static_library("appspawn_server") {
80  sources = [
81    "${appspawn_path}/adapter/appspawn_adapter.cpp",
82    "${appspawn_path}/adapter/appspawn_sandbox.cpp",
83    "${appspawn_path}/common/appspawn_server.c",
84    "${appspawn_path}/standard/appspawn_process.c",
85    "${appspawn_path}/standard/appspawn_service.c",
86    "${appspawn_path}/util/src/json_utils.cpp",
87    "${appspawn_path}/util/src/sandbox_utils.cpp",
88  ]
89  defines = [
90    "GRAPHIC_PERMISSION_CHECK",
91    "INIT_AGENT",
92    "APPSPAWN_CHECK_GID_UID",
93  ]
94
95  if (asan_detector || is_asan) {
96    defines += [ "ASAN_DETECTOR" ]
97  }
98  configs = [ ":appspawn_config" ]
99  ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ]
100  deps = [
101    ":asan.options",
102    "//base/security/access_token/interfaces/innerkits/token_setproc:libtoken_setproc",
103    "//base/startup/init/interfaces/innerkits:libbegetutil",
104    "//foundation/communication/netmanager_base/services/netmanagernative/netsys_client:netsys_client",
105  ]
106  external_deps = [
107    "c_utils:utils",
108    "init:libbegetutil",
109  ]
110  if (build_selinux) {
111    external_deps += [ "selinux:libhap_restorecon" ]
112  }
113
114  cflags = []
115  if (build_seccomp) {
116    cflags += [ "-DWITH_SECCOMP" ]
117    external_deps += [ "init:seccomp" ]
118  }
119
120  if (appspawn_report_event) {
121    cflags += [ "-DREPORT_EVENT" ]
122    deps += [ "adapter/sysevent:event_reporter" ]
123  }
124
125  subsystem_name = "${subsystem_name}"
126  part_name = "${part_name}"
127}
128
129ohos_prebuilt_etc("appspawn.rc") {
130  source = "appspawn.cfg"
131  relative_install_dir = "init"
132  subsystem_name = "${subsystem_name}"
133  part_name = "${part_name}"
134}
135
136ohos_static_library("nwebspawn_server") {
137  sources = [
138    "${appspawn_path}/adapter/appspawn_adapter.cpp",
139    "${appspawn_path}/adapter/appspawn_sandbox.cpp",
140    "${appspawn_path}/common/appspawn_server.c",
141    "${appspawn_path}/standard/appspawn_process.c",
142    "${appspawn_path}/standard/appspawn_service.c",
143    "${appspawn_path}/util/src/json_utils.cpp",
144    "${appspawn_path}/util/src/sandbox_utils.cpp",
145  ]
146  defines = [
147    "GRAPHIC_PERMISSION_CHECK",
148    "INIT_AGENT",
149    "NWEB_SPAWN",
150    "APPSPAWN_CHECK_GID_UID",
151  ]
152  configs = [ ":appspawn_config" ]
153  ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ]
154  deps = [
155    "//base/security/access_token/interfaces/innerkits/token_setproc:libtoken_setproc",
156    "//foundation/communication/netmanager_base/services/netmanagernative/netsys_client:netsys_client",
157  ]
158  external_deps = [
159    "c_utils:utils",
160    "init:libbegetutil",
161  ]
162  if (build_selinux) {
163    external_deps += [ "selinux:libhap_restorecon" ]
164  }
165
166  cflags = []
167  if (build_seccomp) {
168    cflags += [ "-DWITH_SECCOMP" ]
169    external_deps += [ "init:seccomp" ]
170  }
171
172  subsystem_name = "${subsystem_name}"
173  part_name = "${part_name}"
174}
175
176ohos_executable("nwebspawn") {
177  defines = [ "NWEB_SPAWN" ]
178  if (target_cpu == "arm64") {
179    defines += [ "webview_arm64" ]
180  }
181  if (target_cpu == "x86_64") {
182    defines += [ "webview_x86_64" ]
183  }
184  sources = [
185    "${appspawn_path}/adapter/appspawn_nweb.cpp",
186    "${appspawn_path}/standard/main.c",
187    "${appspawn_path}/util/src/json_utils.cpp",
188    "${appspawn_path}/util/src/sandbox_utils.cpp",
189  ]
190  configs = [ ":appspawn_config" ]
191  deps = [ "${appspawn_path}:nwebspawn_server" ]
192
193  install_enable = true
194  subsystem_name = "${subsystem_name}"
195  part_name = "${part_name}"
196}
197
198ohos_prebuilt_etc("nwebspawn.rc") {
199  source = "nwebspawn.cfg"
200  relative_install_dir = "init"
201  subsystem_name = "${subsystem_name}"
202  part_name = "${part_name}"
203}
204
205group("nweb") {
206  deps = []
207  if (appspawn_support_nweb) {
208    deps += [
209      ":nwebspawn",
210      ":nwebspawn.rc",
211    ]
212  }
213}
214