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