• 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) || 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