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/ohos.gni")
167  modulemgr_sources = [
168    "hookmgr/hookmgr.c",
169    "modulemgr/modulemgr.c",
170  ]
171
172  ohos_shared_library("libbegetutil") {
173    sources = [
174      "fd_holder/fd_holder.c",
175      "reboot/init_reboot_innerkits.c",
176      "service_control/service_control.c",
177    ]
178    sources += syspara_sources
179    sources += [ "syspara/param_wrapper.cpp" ]
180    sources += modulemgr_sources
181
182    innerapi_tags = [
183      "chipsetsdk",
184      "platformsdk",
185      "sasdk",
186    ]
187
188    version_script = "libbegetutil.versionscript"
189
190    defines = [
191      "INIT_AGENT",
192      "_GNU_SOURCE",
193    ]
194    if (target_cpu == "arm64" || target_cpu == "x86_64" ||
195        target_cpu == "riscv64") {
196      defines += [ "SUPPORT_64BIT" ]
197    }
198
199    include_dirs = include_common
200    deps = [
201      "//base/startup/init/interfaces/innerkits/control_fd:libcontrolfd",
202      "//base/startup/init/interfaces/innerkits/fd_holder:fdholder",
203      "//base/startup/init/interfaces/innerkits/file:libfile",
204      "//base/startup/init/interfaces/innerkits/socket:libsocket",
205      "//base/startup/init/services/log:agent_log",
206      "//base/startup/init/services/loopevent:loopevent",
207      "//base/startup/init/services/modules/udid:libudidcomm",
208      "//base/startup/init/services/param/linux:param_client",
209      "//base/startup/init/services/utils:libinit_utils",
210    ]
211    deps += [ "//base/startup/init/services/param/base:param_base" ]
212    if (init_begetutil_extra_modules != "") {
213      deps += [ init_begetutil_extra_modules ]
214    }
215
216    external_deps = [
217      "bounds_checking_function:libsec_shared",
218      "c_utils:utils",
219      "config_policy:configpolicy_util_for_init_static",
220      "hilog:libhilog_base",
221    ]
222    public_configs = [ ":exported_header_files" ]
223    part_name = "init"
224    subsystem_name = "startup"
225    install_images = [
226      "system",
227      "updater",
228    ]
229  }
230
231  # watcher lib must separate compilation avoid interdependence.
232  ohos_shared_library("libbeget_proxy") {
233    defines = [
234      "INIT_AGENT",
235      "_GNU_SOURCE",
236    ]
237    sources = [
238      "//base/startup/init/device_info/device_info.cpp",
239      "service_watcher/service_watcher.c",
240    ]
241
242    version_script = "libbeget_proxy.versionscript"
243
244    include_dirs = include_common
245    deps = [
246      ":libbegetutil",
247      "//base/startup/init/services/utils:libinit_utils",
248    ]
249
250    if (enable_ohos_startup_init_feature_watcher) {
251      sources += [
252        "//base/startup/init/services/param/watcher/agent/watcher.cpp",
253        "//base/startup/init/services/param/watcher/agent/watcher_manager_kits.cpp",
254        "//base/startup/init/services/param/watcher/agent/watcher_manager_proxy.cpp",
255        "//base/startup/init/services/param/watcher/agent/watcher_stub.cpp",
256      ]
257      deps += [ "//base/startup/init/services/param/linux:param_client" ]
258      include_dirs += [
259        "//base/startup/init/services/param/watcher/include",
260        "//base/startup/init/services/log",
261        "//base/startup/init/interfaces/innerkits/include/param",
262      ]
263    } else {
264      defines += [ "NO_PARAM_WATCHER" ]
265    }
266
267    if (enable_ohos_startup_init_feature_deviceinfo) {
268      sources += [
269        "//base/startup/init/device_info/device_info_kits.cpp",
270        "//base/startup/init/device_info/device_info_load.cpp",
271        "//base/startup/init/device_info/device_info_proxy.cpp",
272      ]
273      defines += [ "PARAM_FEATURE_DEVICEINFO" ]
274    } else {
275      sources +=
276          [ "//base/startup/init/interfaces/innerkits/syspara/param_comm.c" ]
277    }
278
279    external_deps = [
280      "bounds_checking_function:libsec_shared",
281      "c_utils:utils",
282      "hilog:libhilog_base",
283      "ipc:ipc_single",
284      "samgr:samgr_proxy",
285    ]
286    public_configs = [ ":exported_header_files" ]
287    innerapi_tags = [
288      "chipsetsdk",
289      "platformsdk",
290    ]
291    part_name = "init"
292    subsystem_name = "startup"
293    install_images = [ "system" ]
294  }
295
296  ohos_static_library("libbegetutil_static") {
297    sources = syspara_sources
298    sources += [
299      "reboot/init_reboot_innerkits.c",
300      "syspara/param_wrapper.cpp",
301    ]
302
303    defines = [
304      "INIT_AGENT",
305      "_GNU_SOURCE",
306    ]
307    if (target_cpu == "arm64" || target_cpu == "x86_64" ||
308        target_cpu == "riscv64") {
309      defines += [ "SUPPORT_64BIT" ]
310    }
311
312    include_dirs = include_common
313    deps = [
314      "//base/startup/init/services/log:agent_log",
315      "//base/startup/init/services/loopevent:loopevent",
316      "//base/startup/init/services/modules/udid:libudidcomm_static",
317      "//base/startup/init/services/param/linux:param_client",
318      "//base/startup/init/services/utils:libinit_utils",
319    ]
320    deps += [ "//base/startup/init/services/param/base:param_base" ]
321    external_deps = [
322      "bounds_checking_function:libsec_static",
323      "c_utils:utilsbase",
324      "hilog:libhilog_base",
325    ]
326    public_configs = [ ":exported_header_files" ]
327    part_name = "init"
328    subsystem_name = "startup"
329  }
330}
331
332group("innergroup") {
333  deps = [ ":libbegetutil" ]
334  if (build_seccomp) {
335    deps += [ "seccomp:seccomp" ]
336  }
337  if (!defined(ohos_lite)) {
338    deps += [
339      ":libbeget_proxy",
340      "file:libfile",
341      "init_module_engine:modulegroup",
342      "socket:libsocket",
343    ]
344  } else {
345  }
346}
347