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