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