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/init/begetd.gni") 14if (!defined(ohos_lite) || init_feature_begetctl_liteos) { 15 syspara_sources = [ 16 "syscap/init_syscap.c", 17 "syspara/param_comm.c", 18 "syspara/parameter.c", 19 "syspara/sysversion.c", 20 ] 21} 22 23config("exported_header_files") { 24 visibility = [ ":*" ] 25 include_dirs = [ 26 "//base/startup/init/interfaces/innerkits/include", 27 "//base/startup/init/interfaces/innerkits/include/syspara", 28 "//base/startup/init/interfaces/innerkits/include/token", 29 "//base/startup/init/interfaces/innerkits/include/param", 30 ] 31} 32 33include_common = [ 34 "./include", 35 "//base/startup/init/interfaces/innerkits/include", 36 "//base/startup/init/interfaces/innerkits/include/param", 37 "//base/startup/init/interfaces/innerkits/fd_holder", 38 "//base/startup/init/interfaces/innerkits/include/syspara", 39 "//base/startup/init/interfaces/hals", 40 "//base/startup/init/interfaces/innerkits/syspara", 41 "//base/startup/init/services/param/include", 42] 43 44if (defined(ohos_lite)) { 45 import("//build/lite/config/component/lite_component.gni") 46 import("//build/lite/ndk/ndk.gni") 47 48 if (ohos_kernel_type == "liteos_a" || ohos_kernel_type == "linux") { 49 shared_library("libbegetutil") { 50 cflags = [ "-fPIC" ] 51 defines = [ 52 "_GNU_SOURCE", 53 "OHOS_LITE", 54 ] 55 sources = [] 56 include_dirs = include_common 57 include_dirs += [ "//base/hiviewdfx/hilog_lite/interfaces/native/kits" ] 58 public_configs = [ ":exported_header_files" ] 59 deps = [ 60 "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared", 61 "//base/startup/init/services/modules/init_hook:inithook", 62 ] 63 deps += [ 64 "//base/startup/init/services/log:init_log", 65 "//base/startup/init/services/modules/udid:libudidcomm", 66 "//base/startup/init/services/utils:libinit_utils", 67 ] 68 external_deps = [ "bounds_checking_function:libsec_shared" ] 69 if (init_feature_begetctl_liteos) { 70 sources += syspara_sources 71 defines += [ "LITEOS_SUPPORT" ] 72 deps += [ "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam" ] 73 } else { 74 sources += [ "syscap/init_syscap.c" ] 75 } 76 if (ohos_kernel_type == "liteos_a") { 77 defines += [ "__LITEOS_A__" ] 78 deps += 79 [ "//base/startup/init/services/param/liteos:param_client_lite" ] 80 } else if (ohos_kernel_type == "linux") { 81 sources += [ "socket/init_socket.c" ] 82 defines += [ "__LINUX__" ] 83 deps += [ 84 "//base/startup/init/services/loopevent:loopevent", 85 "//base/startup/init/services/param/base:param_base", 86 "//base/startup/init/services/param/linux:param_client", 87 ] 88 } 89 } 90 91 static_library("libbegetutil_static") { 92 } 93 } 94 if (ohos_kernel_type == "liteos_m") { 95 static_library("libbegetutil") { 96 public_configs = [ ":exported_header_files" ] 97 defines = [ 98 "_GNU_SOURCE", 99 "OHOS_LITE", 100 "__LITEOS_M__", 101 ] 102 103 include_dirs = include_common 104 include_dirs += [ "//base/hiviewdfx/hilog_lite/interfaces/native/kits" ] 105 deps = [ 106 "//base/startup/init/services/modules/init_hook:inithook", 107 "//base/startup/init/services/modules/udid:libudidcomm", 108 ] 109 external_deps = [ "bounds_checking_function:libsec_static" ] 110 if (init_lite_no_log) { 111 defines += [ "INIT_NO_LOG" ] 112 } else { 113 deps += 114 [ "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_static" ] 115 } 116 117 sources = [] 118 if (init_feature_begetctl_liteos) { 119 PRODUCT_HAL_SYSPARAM_PATH = 120 rebase_path("${ohos_product_adapter_dir}/utils/sys_param") 121 cmd = "if [ -f ${PRODUCT_HAL_SYSPARAM_PATH}/BUILD.gn ]; then echo true; else echo false; fi" 122 PRODUCT_HAL_SYSPARAM_EXISTS = 123 exec_script("//build/lite/run_shell_cmd.py", [ cmd ], "value") 124 if (PRODUCT_HAL_SYSPARAM_EXISTS) { 125 deps += [ "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam" ] 126 } 127 deps += [ 128 "//base/startup/init/interfaces/hals/utils/sys_param:hal_sys_param", 129 ] 130 defines += [ "LITEOS_SUPPORT" ] 131 sources += syspara_sources 132 } else { 133 sources += [ "syscap/init_syscap.c" ] 134 } 135 136 if (init_feature_begetctl_liteos) { 137 deps += [ 138 "//base/startup/init/services/param/liteos:param_client_lite", 139 "//base/startup/init/services/utils:libinit_utils", 140 ] 141 if (!init_lite_no_log) { 142 deps += [ "//base/startup/init/services/log:init_log" ] 143 } 144 } 145 } 146 147 static_library("libbegetutil_static") { 148 } 149 } 150 151 lite_component("parameter") { 152 features = [ ":libbegetutil" ] 153 } 154 155 ndk_lib("parameter_notes") { 156 if (ohos_kernel_type != "liteos_m") { 157 lib_extension = ".so" 158 } 159 deps = [ ":libbegetutil" ] 160 head_files = [ "//base/startup/init/interfaces/innerkits/include/syspara" ] 161 } 162 163 group("libbeget_proxy") { 164 } 165} else { 166 import("//build/config/components/idl_tool/idl.gni") 167 import("//build/ohos.gni") 168 169 config("init_idl_config") { 170 include_dirs = [ "${target_gen_dir}" ] 171 } 172 173 idl_gen_interface("deviceinfo_interface") { 174 sources = [ "IDeviceInfo.idl" ] 175 log_domainid = "0xD002C08" 176 log_tag = "DeviceInfoKits" 177 part_name = "init" 178 subsystem_name = "startup" 179 } 180 181 ohos_source_set("deviceinfo_proxy") { 182 sanitize = { 183 cfi = true 184 cfi_cross_dso = true 185 debug = false 186 } 187 output_values = get_target_outputs(":deviceinfo_interface") 188 sources = filter_include(output_values, [ "*_info_proxy.cpp" ]) 189 public_configs = [ ":init_idl_config" ] 190 deps = [ ":deviceinfo_interface" ] 191 external_deps = [ 192 "c_utils:utils", 193 "hilog:libhilog", 194 "ipc:ipc_single", 195 "samgr:samgr_proxy", 196 ] 197 part_name = "init" 198 subsystem_name = "startup" 199 } 200 201 ohos_source_set("deviceinfo_stub") { 202 sanitize = { 203 cfi = true 204 cfi_cross_dso = true 205 debug = false 206 } 207 output_values = get_target_outputs(":deviceinfo_interface") 208 sources = filter_include(output_values, [ "*_info_stub.cpp" ]) 209 public_configs = [ ":init_idl_config" ] 210 deps = [ ":deviceinfo_interface" ] 211 external_deps = [ 212 "c_utils:utils", 213 "hilog:libhilog", 214 "ipc:ipc_single", 215 ] 216 part_name = "init" 217 subsystem_name = "startup" 218 } 219 220 idl_gen_interface("param_watcher_interface") { 221 sources = [ "../../services/param/watcher/IWatcherManager.idl" ] 222 sources_callback = [ "IWatcher.idl" ] 223 log_domainid = "0xD002C03" 224 log_tag = "PARAM_WATCHER" 225 part_name = "init" 226 subsystem_name = "startup" 227 } 228 229 ohos_source_set("param_watcher_proxy") { 230 sanitize = { 231 cfi = true 232 cfi_cross_dso = true 233 debug = false 234 } 235 output_values = get_target_outputs(":param_watcher_interface") 236 sources = filter_include(output_values, 237 [ 238 "*_manager_proxy.cpp", 239 "*watcher_stub.cpp", 240 ]) 241 public_configs = [ ":init_idl_config" ] 242 deps = [ ":param_watcher_interface" ] 243 external_deps = [ 244 "c_utils:utils", 245 "hilog:libhilog", 246 "ipc:ipc_single", 247 "samgr:samgr_proxy", 248 ] 249 part_name = "init" 250 subsystem_name = "startup" 251 } 252 253 ohos_source_set("param_watcher_stub") { 254 sanitize = { 255 cfi = true 256 cfi_cross_dso = true 257 debug = false 258 } 259 output_values = get_target_outputs(":param_watcher_interface") 260 sources = filter_include(output_values, 261 [ 262 "*_manager_stub.cpp", 263 "*watcher_proxy.cpp", 264 ]) 265 public_configs = [ ":init_idl_config" ] 266 deps = [ ":param_watcher_interface" ] 267 external_deps = [ 268 "c_utils:utils", 269 "hilog:libhilog", 270 "ipc:ipc_single", 271 "samgr:samgr_proxy", 272 ] 273 part_name = "init" 274 subsystem_name = "startup" 275 } 276 277 modulemgr_sources = [ 278 "hookmgr/hookmgr.c", 279 "modulemgr/modulemgr.c", 280 ] 281 282 ohos_shared_library("libbegetutil") { 283 sources = [ 284 "fd_holder/fd_holder.c", 285 "reboot/init_reboot_innerkits.c", 286 "service_control/service_control.c", 287 ] 288 sources += syspara_sources 289 sources += [ "syspara/param_wrapper.cpp" ] 290 sources += modulemgr_sources 291 292 innerapi_tags = [ 293 "chipsetsdk_sp", 294 "platformsdk", 295 "sasdk", 296 ] 297 298 version_script = "libbegetutil.versionscript" 299 300 defines = [ 301 "INIT_AGENT", 302 "_GNU_SOURCE", 303 ] 304 if (target_cpu == "arm64" || target_cpu == "x86_64" || 305 target_cpu == "riscv64") { 306 defines += [ "SUPPORT_64BIT" ] 307 } 308 309 include_dirs = include_common 310 deps = [ 311 "//base/startup/init/interfaces/innerkits/control_fd:libcontrolfd", 312 "//base/startup/init/interfaces/innerkits/fd_holder:fdholder", 313 "//base/startup/init/interfaces/innerkits/file:libfile", 314 "//base/startup/init/interfaces/innerkits/socket:libsocket", 315 "//base/startup/init/services/log:agent_log", 316 "//base/startup/init/services/loopevent:loopevent", 317 "//base/startup/init/services/modules/udid:libudidcomm", 318 "//base/startup/init/services/param/linux:param_client", 319 "//base/startup/init/services/utils:libinit_utils", 320 ] 321 deps += [ "//base/startup/init/services/param/base:param_base" ] 322 if (init_begetutil_extra_modules != "") { 323 deps += [ init_begetutil_extra_modules ] 324 } 325 326 external_deps = [ 327 "bounds_checking_function:libsec_shared", 328 "c_utils:utils", 329 "config_policy:configpolicy_util_for_init_static", 330 "hilog:libhilog_base", 331 ] 332 public_configs = [ ":exported_header_files" ] 333 part_name = "init" 334 subsystem_name = "startup" 335 install_images = [ 336 "system", 337 "updater", 338 ] 339 } 340 341 # watcher lib must separate compilation avoid interdependence. 342 ohos_shared_library("libbeget_proxy") { 343 defines = [ 344 "INIT_AGENT", 345 "_GNU_SOURCE", 346 ] 347 sources = [ 348 "//base/startup/init/device_info/device_info.cpp", 349 "service_watcher/service_watcher.c", 350 ] 351 352 version_script = "libbeget_proxy.versionscript" 353 354 include_dirs = include_common 355 deps = [ 356 ":libbegetutil", 357 "//base/startup/init/services/utils:libinit_utils", 358 ] 359 360 if (enable_ohos_startup_init_feature_watcher) { 361 sources += [ 362 "//base/startup/init/services/param/watcher/agent/watcher.cpp", 363 "//base/startup/init/services/param/watcher/agent/watcher_manager_kits.cpp", 364 ] 365 deps += [ 366 ":param_watcher_proxy", 367 "//base/startup/init/services/param/linux:param_client", 368 ] 369 include_dirs += [ 370 "//base/startup/init/services/param/watcher/include", 371 "//base/startup/init/services/log", 372 "//base/startup/init/interfaces/innerkits/include/param", 373 ] 374 } else { 375 defines += [ "NO_PARAM_WATCHER" ] 376 } 377 378 if (enable_ohos_startup_init_feature_deviceinfo) { 379 sources += [ 380 "//base/startup/init/device_info/device_info_kits.cpp", 381 "//base/startup/init/device_info/device_info_load.cpp", 382 ] 383 deps += [ ":deviceinfo_proxy" ] 384 defines += [ "PARAM_FEATURE_DEVICEINFO" ] 385 if (init_get_disk_sn) { 386 defines += [ "PARAM_FEATURE_GET_DEVICE_SN" ] 387 } 388 } else { 389 sources += 390 [ "//base/startup/init/interfaces/innerkits/syspara/param_comm.c" ] 391 } 392 393 external_deps = [ 394 "bounds_checking_function:libsec_shared", 395 "c_utils:utils", 396 "hilog:libhilog", 397 "hilog:libhilog_base", 398 "ipc:ipc_single", 399 "samgr:samgr_proxy", 400 ] 401 public_configs = [ ":exported_header_files" ] 402 innerapi_tags = [ 403 "chipsetsdk_sp", 404 "platformsdk", 405 ] 406 part_name = "init" 407 subsystem_name = "startup" 408 install_images = [ "system" ] 409 } 410 411 if (default_toolchain == current_toolchain) { 412 ohos_prebuilt_shared_library("libbegetutil-pub-sdk") { 413 source = "${root_out_dir}/startup/init/libbegetutil.z.so" 414 if (target_cpu == "arm64" || target_cpu == "x86_64") { 415 symlink_ext = [ "lib64/chipset-pub-sdk/libbegetutil.z.so" ] 416 } else { 417 symlink_ext = [ "lib/chipset-pub-sdk/libbegetutil.z.so" ] 418 } 419 deps = [ "//base/startup/init/interfaces/innerkits:libbegetutil" ] 420 install_enable = true 421 install_images = [ 422 system_base_dir, 423 ] 424 relative_install_dir = "chipset-sdk-sp" 425 part_name = "init" 426 subsystem_name = "startup" 427 } 428 } 429 430 ohos_static_library("libbegetutil_static") { 431 sources = syspara_sources 432 sources += [ 433 "reboot/init_reboot_innerkits.c", 434 "syspara/param_wrapper.cpp", 435 ] 436 437 defines = [ 438 "INIT_AGENT", 439 "_GNU_SOURCE", 440 ] 441 if (target_cpu == "arm64" || target_cpu == "x86_64" || 442 target_cpu == "riscv64") { 443 defines += [ "SUPPORT_64BIT" ] 444 } 445 446 include_dirs = include_common 447 deps = [ 448 "//base/startup/init/services/log:agent_log", 449 "//base/startup/init/services/loopevent:loopevent", 450 "//base/startup/init/services/modules/udid:libudidcomm_static", 451 "//base/startup/init/services/param/linux:param_client", 452 "//base/startup/init/services/utils:libinit_utils", 453 ] 454 deps += [ "//base/startup/init/services/param/base:param_base" ] 455 external_deps = [ 456 "bounds_checking_function:libsec_static", 457 "c_utils:utilsbase", 458 "hilog:libhilog_base", 459 ] 460 public_configs = [ ":exported_header_files" ] 461 part_name = "init" 462 subsystem_name = "startup" 463 } 464} 465 466group("innergroup") { 467 deps = [ ":libbegetutil" ] 468 if (build_seccomp) { 469 deps += [ "seccomp:seccomp" ] 470 } 471 if (!defined(ohos_lite)) { 472 deps += [ 473 ":libbeget_proxy", 474 "file:libfile", 475 "init_module_engine:modulegroup", 476 "socket:libsocket", 477 ] 478 if (default_toolchain == current_toolchain) { 479 deps += [ ":libbegetutil-pub-sdk" ] 480 } 481 } else { 482 } 483} 484