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