• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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