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