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