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 } 35 configs = [ "${appspawn_path}:appspawn_config" ] 36} 37 38ohos_executable("appspawn") { 39 sources = [ 40 "${appspawn_path}/common/appspawn_server.c", 41 "${appspawn_path}/common/appspawn_trace.cpp", 42 "${appspawn_path}/modules/common/appspawn_dfx_dump.cpp", 43 "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c", 44 "${appspawn_path}/standard/appspawn_appmgr.c", 45 "${appspawn_path}/standard/appspawn_kickdog.c", 46 "${appspawn_path}/standard/appspawn_main.c", 47 "${appspawn_path}/standard/appspawn_msgmgr.c", 48 "${appspawn_path}/standard/appspawn_service.c", 49 "${appspawn_path}/standard/nwebspawn_launcher.c", 50 ] 51 52 defines = [] 53 configs = [ 54 ":appspawn_server_config", 55 "${appspawn_path}:appspawn_config", 56 ] 57 deps = [ 58 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 59 "${appspawn_path}/util:libappspawn_util", 60 ] 61 if (asan_detector || is_asan) { 62 defines += [ "ASAN_DETECTOR" ] 63 } 64 if (is_debug || build_variant == "root") { 65 defines += [ "DEBUG_BEGETCTL_BOOT" ] 66 } 67 68 external_deps = [ 69 "cJSON:cjson", 70 "c_utils:utils", 71 "config_policy:configpolicy_util", 72 "hilog:libhilog", 73 "hitrace:hitrace_meter", 74 "init:libbegetutil", 75 ] 76 if (enable_appspawn_dump_catcher) { 77 external_deps += [ "faultloggerd:libdfx_dumpcatcher" ] 78 } 79 if (appspawn_use_encaps) { 80 defines += [ "USE_ENCAPS" ] 81 } 82 if (appspawn_report_event) { 83 defines += [ "APPSPAWN_HISYSEVENT" ] 84 external_deps += [ "hisysevent:libhisysevent" ] 85 sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ] 86 } 87 88 if (appspawn_use_encaps) { 89 defines += [ "USE_ENCAPS" ] 90 } 91 92 if (build_selinux) { 93 defines += [ "WITH_SELINUX" ] 94 external_deps += [ 95 "selinux:libselinux", 96 "selinux_adapter:libhap_restorecon", 97 ] 98 } 99 cflags = [] 100 101 #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ] 102 if (!defined(global_parts_info) || 103 defined(global_parts_info.security_code_signature)) { 104 defines += [ "CODE_SIGNATURE_ENABLE" ] 105 external_deps += [ "code_signature:libcode_sign_attr_utils" ] 106 } 107 108 version_script = get_label_info( 109 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 110 "target_gen_dir") + "/" + get_label_info( 111 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 112 "name") + stub_version_script_suffix 113 114 install_enable = true 115 subsystem_name = "${subsystem_name}" 116 part_name = "${part_name}" 117} 118 119ohos_shared_library("appspawn_helper") { 120 sources = [ "${appspawn_path}/common/appspawn_server.c" ] 121 defines = [ "APPSPAWN_HELPER" ] 122 configs = [ 123 ":appspawn_server_config", 124 "${appspawn_path}:appspawn_config", 125 ] 126 cflags = [ 127 "-fvisibility=hidden", 128 "-fstack-protector-all", 129 ] 130 external_deps = [ 131 "hilog:libhilog", 132 "init:libbegetutil", 133 ] 134 135 install_enable = true 136 subsystem_name = "${subsystem_name}" 137 part_name = "${part_name}" 138} 139 140ohos_prebuilt_etc("appspawn.rc") { 141 source = "appspawn.cfg" 142 relative_install_dir = "init" 143 subsystem_name = "${subsystem_name}" 144 part_name = "${part_name}" 145} 146 147ohos_executable("pid_ns_init") { 148 sources = [ "${appspawn_path}/standard/pid_ns_init.c" ] 149 install_enable = true 150 subsystem_name = "${subsystem_name}" 151 part_name = "${part_name}" 152} 153 154# to support cjappspawn 155ohos_executable("cjappspawn") { 156 sources = [ 157 "${appspawn_path}/common/appspawn_server.c", 158 "${appspawn_path}/common/appspawn_trace.cpp", 159 "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c", 160 "${appspawn_path}/standard/appspawn_appmgr.c", 161 "${appspawn_path}/standard/appspawn_kickdog.c", 162 "${appspawn_path}/standard/appspawn_main.c", 163 "${appspawn_path}/standard/appspawn_msgmgr.c", 164 "${appspawn_path}/standard/appspawn_service.c", 165 "${appspawn_path}/standard/nwebspawn_launcher.c", 166 ] 167 168 defines = [ "CJAPP_SPAWN" ] 169 configs = [ 170 ":appspawn_server_config", 171 "${appspawn_path}:appspawn_config", 172 ] 173 deps = [ 174 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 175 "${appspawn_path}/util:libappspawn_util", 176 ] 177 if (asan_detector || is_asan) { 178 defines += [ "ASAN_DETECTOR" ] 179 } 180 181 external_deps = [ 182 "cJSON:cjson", 183 "c_utils:utils", 184 "config_policy:configpolicy_util", 185 "hilog:libhilog", 186 "hitrace:hitrace_meter", 187 "init:libbegetutil", 188 ] 189 if (appspawn_report_event) { 190 defines += [ "APPSPAWN_HISYSEVENT" ] 191 external_deps += [ "hisysevent:libhisysevent" ] 192 sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ] 193 } 194 if (build_selinux) { 195 defines += [ "WITH_SELINUX" ] 196 external_deps += [ 197 "selinux:libselinux", 198 "selinux_adapter:libhap_restorecon", 199 ] 200 } 201 cflags = [] 202 203 #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ] 204 if (!defined(global_parts_info) || 205 defined(global_parts_info.security_code_signature)) { 206 defines += [ "CODE_SIGNATURE_ENABLE" ] 207 external_deps += [ "code_signature:libcode_sign_attr_utils" ] 208 } 209 210 version_script = get_label_info( 211 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 212 "target_gen_dir") + "/" + get_label_info( 213 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 214 "name") + stub_version_script_suffix 215 216 install_enable = true 217 subsystem_name = "${subsystem_name}" 218 part_name = "${part_name}" 219} 220 221# to support nativespawn 222ohos_executable("nativespawn") { 223 sources = [ 224 "${appspawn_path}/common/appspawn_server.c", 225 "${appspawn_path}/common/appspawn_trace.cpp", 226 "${appspawn_path}/modules/modulemgr/appspawn_modulemgr.c", 227 "${appspawn_path}/standard/appspawn_appmgr.c", 228 "${appspawn_path}/standard/appspawn_kickdog.c", 229 "${appspawn_path}/standard/appspawn_main.c", 230 "${appspawn_path}/standard/appspawn_msgmgr.c", 231 "${appspawn_path}/standard/appspawn_service.c", 232 "${appspawn_path}/standard/nwebspawn_launcher.c", 233 ] 234 235 defines = [ "NATIVE_SPAWN" ] 236 configs = [ 237 ":appspawn_server_config", 238 "${appspawn_path}:appspawn_config", 239 ] 240 deps = [ 241 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 242 "${appspawn_path}/util:libappspawn_util", 243 ] 244 if (asan_detector || is_asan) { 245 defines += [ "ASAN_DETECTOR" ] 246 } 247 248 external_deps = [ 249 "cJSON:cjson", 250 "c_utils:utils", 251 "config_policy:configpolicy_util", 252 "hilog:libhilog", 253 "hitrace:hitrace_meter", 254 "init:libbegetutil", 255 ] 256 if (appspawn_report_event) { 257 defines += [ "APPSPAWN_HISYSEVENT" ] 258 external_deps += [ "hisysevent:libhisysevent" ] 259 sources += [ "${appspawn_path}/modules/sysevent/appspawn_hisysevent.cpp" ] 260 } 261 if (build_selinux) { 262 defines += [ "WITH_SELINUX" ] 263 external_deps += [ 264 "selinux:libselinux", 265 "selinux_adapter:libhap_restorecon", 266 ] 267 } 268 cflags = [] 269 270 #ldflags = [ "-Wl,--dynamic-linker,/system/bin/linker64z" ] 271 if (!defined(global_parts_info) || 272 defined(global_parts_info.security_code_signature)) { 273 defines += [ "CODE_SIGNATURE_ENABLE" ] 274 external_deps += [ "code_signature:libcode_sign_attr_utils" ] 275 } 276 277 version_script = get_label_info( 278 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 279 "target_gen_dir") + "/" + get_label_info( 280 "${appspawn_path}/modules/module_engine:libappspawn_stub_versionscript", 281 "name") + stub_version_script_suffix 282 283 install_enable = true 284 subsystem_name = "${subsystem_name}" 285 part_name = "${part_name}" 286} 287 288ohos_prebuilt_etc("cjappspawn.rc") { 289 source = "cjappspawn.cfg" 290 relative_install_dir = "init" 291 subsystem_name = "${subsystem_name}" 292 part_name = "${part_name}" 293} 294 295ohos_prebuilt_etc("nativespawn.rc") { 296 source = "nativespawn.cfg" 297 relative_install_dir = "init" 298 subsystem_name = "${subsystem_name}" 299 part_name = "${part_name}" 300} 301