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) || enable_ohos_startup_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/sandbox/include", 30 "//base/startup/init/services/include", 31 ] 32} 33 34include_common = [ 35 "./include", 36 "//base/hiviewdfx/hilog_lite/interfaces/native/kits", 37 "//third_party/bounds_checking_function/include", 38 "//base/startup/init/services/include", 39 "//base/startup/init/services/include/param", 40 "//base/startup/init/interfaces/innerkits/fd_holder", 41 "//base/startup/init/services/param/include", 42 "//base/startup/init/interfaces/innerkits/include", 43 "//base/startup/init/interfaces/innerkits/include/syspara", 44 "//base/startup/init/interfaces/hals", 45 "//base/startup/init/interfaces/innerkits/syspara", 46] 47 48if (defined(ohos_lite)) { 49 import("//build/lite/config/component/lite_component.gni") 50 import("//build/lite/ndk/ndk.gni") 51 52 if (ohos_kernel_type == "liteos_a" || ohos_kernel_type == "linux") { 53 shared_library("libbegetutil") { 54 cflags = [ "-fPIC" ] 55 defines = [ 56 "_GNU_SOURCE", 57 "OHOS_LITE", 58 "USE_MBEDTLS", 59 ] 60 sources = [] 61 include_dirs = include_common 62 public_configs = [ ":exported_header_files" ] 63 deps = [ 64 "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared", 65 "//base/startup/init/services/modules/init_hook:inithook", 66 "//third_party/bounds_checking_function:libsec_shared", 67 "//third_party/mbedtls:mbedtls_shared", 68 ] 69 deps += [ 70 "//base/startup/init/services/log:init_log", 71 "//base/startup/init/services/utils:libinit_utils", 72 ] 73 if (enable_ohos_startup_init_feature_begetctl_liteos) { 74 sources += syspara_sources 75 defines += [ "LITEOS_SUPPORT" ] 76 deps += [ "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam" ] 77 } else { 78 sources += [ "syscap/init_syscap.c" ] 79 } 80 if (ohos_kernel_type == "liteos_a") { 81 defines += [ "__LITEOS_A__" ] 82 deps += 83 [ "//base/startup/init/services/param/liteos:param_client_lite" ] 84 } else if (ohos_kernel_type == "linux") { 85 sources += [ "socket/init_socket.c" ] 86 defines += [ "__LINUX__" ] 87 deps += [ 88 "//base/startup/init/services/loopevent:loopevent", 89 "//base/startup/init/services/param/base:param_base", 90 "//base/startup/init/services/param/linux:param_client", 91 ] 92 } 93 } 94 } 95 if (ohos_kernel_type == "liteos_m") { 96 static_library("libbegetutil") { 97 public_configs = [ ":exported_header_files" ] 98 defines = [ 99 "_GNU_SOURCE", 100 "OHOS_LITE", 101 "__LITEOS_M__", 102 ] 103 104 include_dirs = include_common 105 deps = [ 106 "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_static", 107 "//base/startup/init/services/modules/init_hook:inithook", 108 "//third_party/bounds_checking_function:libsec_static", 109 ] 110 111 sources = [] 112 if (enable_ohos_startup_init_feature_begetctl_liteos) { 113 PRODUCT_HAL_SYSPARAM_PATH = 114 rebase_path("//${ohos_product_adapter_dir}/utils/sys_param") 115 cmd = "if [ -f ${PRODUCT_HAL_SYSPARAM_PATH}/BUILD.gn ]; then echo true; else echo false; fi" 116 PRODUCT_HAL_SYSPARAM_EXISTS = 117 exec_script("//build/lite/run_shell_cmd.py", [ cmd ], "value") 118 if (PRODUCT_HAL_SYSPARAM_EXISTS) { 119 deps += [ "$ohos_product_adapter_dir/utils/sys_param:hal_sysparam" ] 120 } 121 deps += [ 122 "//base/startup/init/interfaces/hals/utils/sys_param:hal_sys_param", 123 ] 124 defines += [ "LITEOS_SUPPORT" ] 125 sources += syspara_sources 126 } else { 127 sources += [ "syscap/init_syscap.c" ] 128 } 129 130 if (enable_ohos_startup_init_lite_use_thirdparty_mbedtls) { 131 deps += [ "//third_party/mbedtls:mbedtls" ] 132 defines += [ "USE_MBEDTLS" ] 133 } 134 if (enable_ohos_startup_init_feature_begetctl_liteos) { 135 deps += [ 136 "//base/startup/init/services/log:init_log", 137 "//base/startup/init/services/param/liteos:param_client_lite", 138 "//base/startup/init/services/utils:libinit_utils", 139 ] 140 } 141 } 142 } 143 144 lite_component("parameter") { 145 features = [ ":libbegetutil" ] 146 } 147 148 ndk_lib("parameter_notes") { 149 if (ohos_kernel_type != "liteos_m") { 150 lib_extension = ".so" 151 } 152 deps = [ ":libbegetutil" ] 153 head_files = [ "//base/startup/init/interfaces/innerkits/include/syspara" ] 154 } 155 156 group("libbeget_proxy") { 157 } 158} else { 159 import("//build/ohos.gni") 160 modulemgr_sources = [ 161 "hookmgr/hookmgr.c", 162 "modulemgr/modulemgr.c", 163 ] 164 165 ohos_shared_library("libbegetutil") { 166 sources = [ 167 "fd_holder/fd_holder.c", 168 "reboot/init_reboot_innerkits.c", 169 "service_control/service_control.c", 170 ] 171 sources += syspara_sources 172 sources += [ "syspara/param_wrapper.cpp" ] 173 sources += modulemgr_sources 174 175 defines = [ 176 "INIT_AGENT", 177 "_GNU_SOURCE", 178 "USE_MBEDTLS", 179 ] 180 if (target_cpu == "arm64") { 181 defines += [ "SUPPORT_64BIT" ] 182 } 183 184 include_dirs = include_common 185 deps = [ 186 "//base/customization/config_policy/frameworks/config_policy:configpolicy_util_for_init_static", 187 "//base/startup/init/interfaces/innerkits/control_fd:libcontrolfd", 188 "//base/startup/init/interfaces/innerkits/fd_holder:fdholder", 189 "//base/startup/init/interfaces/innerkits/file:libfile", 190 "//base/startup/init/interfaces/innerkits/sandbox:sandbox", 191 "//base/startup/init/interfaces/innerkits/socket:libsocket", 192 "//base/startup/init/services/log:agent_log", 193 "//base/startup/init/services/loopevent:loopevent", 194 "//base/startup/init/services/param/linux:param_client", 195 "//base/startup/init/services/utils:libinit_utils", 196 "//third_party/bounds_checking_function:libsec_shared", 197 "//third_party/cJSON:cjson", 198 "//third_party/mbedtls:mbedtls_shared", 199 ] 200 deps += [ "//base/startup/init/services/param/base:param_base" ] 201 external_deps = [ 202 "c_utils:utils", 203 "hilog_native:libhilog_base", 204 ] 205 public_configs = [ ":exported_header_files" ] 206 part_name = "init" 207 subsystem_name = "startup" 208 install_images = [ 209 "system", 210 "updater", 211 ] 212 } 213 214 # watcher lib must separate compilation avoid interdependence. 215 ohos_shared_library("libbeget_proxy") { 216 defines = [ 217 "INIT_AGENT", 218 "_GNU_SOURCE", 219 "USE_MBEDTLS", 220 ] 221 sources = [ 222 "//base/startup/init/device_info/device_info.cpp", 223 "service_watcher/service_watcher.c", 224 ] 225 226 include_dirs = include_common 227 deps = [ 228 ":libbegetutil", 229 "//third_party/bounds_checking_function:libsec_shared", 230 ] 231 232 if (enable_ohos_startup_init_feature_watcher) { 233 sources += [ 234 "//base/startup/init/services/param/watcher/agent/watcher.cpp", 235 "//base/startup/init/services/param/watcher/agent/watcher_manager_kits.cpp", 236 "//base/startup/init/services/param/watcher/agent/watcher_manager_proxy.cpp", 237 "//base/startup/init/services/param/watcher/agent/watcher_stub.cpp", 238 ] 239 include_dirs += [ 240 "//base/startup/init/services/param/watcher/include", 241 "//base/startup/init/services/log", 242 ] 243 } else { 244 defines += [ "NO_PARAM_WATCHER" ] 245 } 246 247 if (enable_ohos_startup_init_feature_deviceinfo) { 248 sources += [ 249 "//base/startup/init/device_info/device_info_kits.cpp", 250 "//base/startup/init/device_info/device_info_load.cpp", 251 "//base/startup/init/device_info/device_info_proxy.cpp", 252 ] 253 defines += [ "PARAM_FEATURE_DEVICEINFO" ] 254 } else { 255 sources += 256 [ "//base/startup/init/interfaces/innerkits/syspara/param_comm.c" ] 257 } 258 259 external_deps = [ 260 "c_utils:utils", 261 "hilog_native:libhilog_base", 262 "ipc:ipc_single", 263 "samgr:samgr_proxy", 264 ] 265 public_configs = [ ":exported_header_files" ] 266 part_name = "init" 267 subsystem_name = "startup" 268 install_images = [ "system" ] 269 } 270 271 ohos_static_library("libbegetutil_static") { 272 sources = syspara_sources 273 sources += [ "syspara/param_wrapper.cpp" ] 274 275 defines = [ 276 "INIT_AGENT", 277 "_GNU_SOURCE", 278 "USE_MBEDTLS", 279 ] 280 if (target_cpu == "arm64") { 281 defines += [ "SUPPORT_64BIT" ] 282 } 283 284 include_dirs = include_common 285 deps = [ 286 "//base/startup/init/services/log:agent_log", 287 "//base/startup/init/services/loopevent:loopevent", 288 "//base/startup/init/services/param/linux:param_client", 289 "//base/startup/init/services/utils:libinit_utils", 290 "//third_party/bounds_checking_function:libsec_shared", 291 "//third_party/mbedtls:mbedtls_shared", 292 ] 293 deps += [ "//base/startup/init/services/param/base:param_base" ] 294 external_deps = [ 295 "c_utils:utils", 296 "hilog_native:libhilog_base", 297 ] 298 part_name = "init" 299 subsystem_name = "startup" 300 } 301} 302 303group("innergroup") { 304 deps = [ ":libbegetutil" ] 305 if (build_seccomp) { 306 deps += [ "seccomp:seccomp" ] 307 } 308 if (!defined(ohos_lite)) { 309 deps += [ 310 ":libbeget_proxy", 311 "file:libfile", 312 "init_module_engine:modulegroup", 313 "socket:libsocket", 314 ] 315 } 316} 317