• 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.
13
14if (defined(ohos_lite)) {
15  import("//build/lite/config/component/lite_component.gni")
16  import("//foundation/communication/dhcp/dhcp_lite.gni")
17} else {
18  import("//build/ohos.gni")
19  import("//foundation/communication/dhcp/dhcp.gni")
20}
21
22################################################################################
23local_base_include_dirs = [
24  "$DHCP_ROOT_DIR/interfaces",
25  "$DHCP_ROOT_DIR/interfaces/kits/c",
26  "$DHCP_ROOT_DIR/interfaces/inner_api",
27  "$DHCP_ROOT_DIR/interfaces/inner_api/include",
28  "$DHCP_ROOT_DIR/frameworks/native/include",
29  "$DHCP_ROOT_DIR/frameworks/native/interfaces",
30  "$DHCP_ROOT_DIR/frameworks/native/src",
31  "$DHCP_ROOT_DIR/services",
32  "$DHCP_ROOT_DIR/services/dhcp_client/include",
33  "$DHCP_ROOT_DIR/services/utils/include",
34  "$DHCP_ROOT_DIR/frameworks/native/c_adapter/inc",
35]
36if (defined(ohos_lite)) {
37  shared_library("dhcp_client") {
38    sources = [
39      "src/dhcp_client_callback_proxy_lite.cpp",
40      "src/dhcp_client_service_impl.cpp",
41      "src/dhcp_client_state_machine.cpp",
42      "src/dhcp_client_stub_lite.cpp",
43      "src/dhcp_function.cpp",
44      "src/dhcp_ipv6_client.cpp",
45      "src/dhcp_ipv6_dns_repository.cpp",
46      "src/dhcp_ipv6_event.cpp",
47      "src/dhcp_ipv6_info.cpp",
48      "src/dhcp_options.cpp",
49      "src/dhcp_result.cpp",
50      "src/dhcp_socket.cpp",
51    ]
52
53    include_dirs = local_base_include_dirs
54    include_dirs += [
55      "//base/hiviewdfx/hilog_lite/interfaces/native/innerkits",
56      "//third_party/bounds_checking_function/include",
57      "//foundation/systemabilitymgr/samgr_lite/interfaces/innerkits/registry",
58      "//foundation/systemabilitymgr/samgr_lite/interfaces/innerkits/samgr",
59    ]
60
61    deps = [
62      "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
63      "//foundation/systemabilitymgr/samgr_lite/samgr:samgr",
64    ]
65    external_deps = [ "bounds_checking_function:libsec_shared" ]
66    defines = [
67      "_GNU_SOURCE",
68      "OHOS_ARCH_LITE",
69      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
70      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
71      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
72    ]
73
74    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
75      external_deps += [ "init:libbegetutil" ]
76      defines += [ "INIT_LIB_ENABLE" ]
77    }
78
79    configs -= [ "//build/lite/config:language_cpp" ]
80    cflags = [
81      "-std=c++17",
82      "-fno-rtti",
83    ]
84    cflags_cc = [
85      "-std=c++17",
86      "-fno-rtti",
87    ]
88  }
89} else {
90  local_base_sources = [
91    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_callback_proxy.cpp",
92    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_death_recipient.cpp",
93    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_service_impl.cpp",
94    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_state_machine.cpp",
95    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_stub.cpp",
96    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_function.cpp",
97    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_client.cpp",
98    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_dns_repository.cpp",
99    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_event.cpp",
100    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_info.cpp",
101    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_options.cpp",
102    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result.cpp",
103    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result_store_manager.cpp",
104    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_socket.cpp",
105  ]
106  config("dhcp_manager_service_header") {
107    visibility = [ ":*" ]
108    include_dirs = local_base_include_dirs
109  }
110  ohos_shared_library("dhcp_client") {
111    branch_protector_ret = "pac_ret"
112    sanitize = {
113      cfi = true  # Enable/disable control flow integrity detection
114      boundary_sanitize = true  # Enable boundary san detection
115      cfi_cross_dso = true  # Cross-SO CFI Checks
116      integer_overflow = true  # Enable integer overflow detection
117      ubsan = true  # Enable some Ubsan options
118      debug = false
119    }
120    install_enable = true
121    sources = local_base_sources
122    include_dirs = local_base_include_dirs
123    defines = [
124      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
125      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
126      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
127    ]
128    if (is_asan) {
129      defines += [ "DTFUZZ_TEST" ]
130    }
131
132    deps = [ "$DHCP_ROOT_DIR/services/utils:dhcp_utils" ]
133
134    external_deps = [
135      "ability_runtime:wantagent_innerkits",
136      "c_utils:utils",
137      "hilog:libhilog",
138      "ipc:ipc_single",
139      "netmanager_base:net_native_manager_if",
140      "netmanager_base:netsys_controller",
141      "safwk:system_ability_fwk",
142      "time_service:time_client",
143    ]
144
145    if (defined(global_parts_info) &&
146        defined(global_parts_info.resourceschedule_ffrt)) {
147      external_deps += [ "ffrt:libffrt" ]
148      defines += [ "DHCP_FFRT_ENABLE" ]
149    }
150
151    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
152      external_deps += [ "init:libbegetutil" ]
153      defines += [ "INIT_LIB_ENABLE" ]
154    }
155    cflags_cc = memory_optimization_cflags_cc
156    cflags_cc += [
157      "-std=c++17",
158      "-fno-rtti",
159    ]
160    ldflags = memory_optimization_ldflags
161    ldflags += [
162      "-fPIC",
163      "-Wl,-E",
164    ]
165    shlib_type = "sa"
166    part_name = "dhcp"
167    subsystem_name = "communication"
168  }
169
170  ohos_static_library("dhcp_client_static") {
171    branch_protector_ret = "pac_ret"
172    sanitize = {
173      cfi = true  # Enable/disable control flow integrity detection
174      boundary_sanitize = true  # Enable boundary san detection
175      cfi_cross_dso = true  # Cross-SO CFI Checks
176      integer_overflow = true  # Enable integer overflow detection
177      ubsan = true  # Enable some Ubsan options
178      debug = false
179    }
180    sources = local_base_sources
181    include_dirs = local_base_include_dirs
182    defines = [
183      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
184      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
185      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
186    ]
187    if (is_asan) {
188      defines += [ "DTFUZZ_TEST" ]
189    }
190
191    deps = [ "$DHCP_ROOT_DIR/services/utils:dhcp_utils" ]
192
193    external_deps = [
194      "ability_runtime:wantagent_innerkits",
195      "c_utils:utils",
196      "hilog:libhilog",
197      "ipc:ipc_single",
198      "netmanager_base:net_native_manager_if",
199      "netmanager_base:netsys_controller",
200      "safwk:system_ability_fwk",
201      "time_service:time_client",
202    ]
203
204    if (defined(global_parts_info) &&
205        defined(global_parts_info.resourceschedule_ffrt)) {
206      external_deps += [ "ffrt:libffrt" ]
207      defines += [ "DHCP_FFRT_ENABLE" ]
208    }
209
210    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
211      external_deps += [ "init:libbegetutil" ]
212      defines += [ "INIT_LIB_ENABLE" ]
213    }
214    cflags_cc = memory_optimization_cflags_cc
215    cflags_cc += [
216      "-std=c++17",
217      "-fno-rtti",
218    ]
219    ldflags = memory_optimization_ldflags
220    ldflags += [
221      "-fPIC",
222      "-Wl,-E",
223    ]
224    part_name = "dhcp"
225    subsystem_name = "communication"
226  }
227
228  ohos_shared_library("dhcp_updater_client") {
229    branch_protector_ret = "pac_ret"
230    sanitize = {
231      cfi = true  # Enable/disable control flow integrity detection
232      boundary_sanitize = true  # Enable boundary san detection
233      cfi_cross_dso = true  # Cross-SO CFI Checks
234      integer_overflow = true  # Enable integer overflow detection
235      ubsan = true  # Enable some Ubsan options
236      debug = false
237    }
238    install_enable = true
239    sources = [
240      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_service_impl.cpp",
241      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_state_machine.cpp",
242      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_stub_lite.cpp",
243      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_function.cpp",
244      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_client.cpp",
245      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_dns_repository.cpp",
246      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_event.cpp",
247      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_info.cpp",
248      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_options.cpp",
249      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result.cpp",
250      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result_store_manager.cpp",
251      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_socket.cpp",
252      "$DHCP_ROOT_DIR/services/utils/src/dhcp_thread.cpp",
253      "$DHCP_ROOT_DIR/services/utils/src/dhcp_arp_checker.cpp",
254      "$DHCP_ROOT_DIR/services/utils/src/dhcp_common_utils.cpp",
255      "$DHCP_ROOT_DIR/services/utils/src/dhcp_permission_utils.cpp",
256    ]
257    include_dirs = local_base_include_dirs
258
259    public_configs = [ ":dhcp_manager_service_header" ]
260
261    cflags_cc = [
262      "-std=c++17",
263      "-Wall",
264    ]
265
266    defines = [
267      "OHOS_ARCH_LITE",
268      "OHOS_EUPDATER",
269      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
270      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
271      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
272    ]
273
274    deps = []
275
276    external_deps = [
277      "bounds_checking_function:libsec_shared",
278      "c_utils:utils",
279      "hilog:libhilog",
280      "netmanager_base:net_native_manager_if",
281      "netmanager_base:netsys_controller",
282    ]
283
284    if (defined(global_parts_info) &&
285        defined(global_parts_info.resourceschedule_ffrt)) {
286      external_deps += [ "ffrt:libffrt" ]
287      defines += [ "DHCP_FFRT_ENABLE" ]
288    }
289
290    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
291      external_deps += [ "init:libbegetutil" ]
292      defines += [ "INIT_LIB_ENABLE" ]
293    }
294    ldflags = [
295      "-fPIC",
296      "-Wl,-E",
297    ]
298    install_images = [ "updater" ]
299    part_name = "dhcp"
300    subsystem_name = "communication"
301  }
302}
303