• 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_event.cpp",
46      "src/dhcp_options.cpp",
47      "src/dhcp_result.cpp",
48      "src/dhcp_socket.cpp",
49    ]
50
51    include_dirs = local_base_include_dirs
52    include_dirs += [
53      "//base/hiviewdfx/hilog_lite/interfaces/native/innerkits",
54      "//third_party/bounds_checking_function/include",
55      "//foundation/systemabilitymgr/samgr_lite/interfaces/innerkits/registry",
56      "//foundation/systemabilitymgr/samgr_lite/interfaces/innerkits/samgr",
57    ]
58
59    deps = [
60      "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
61      "//foundation/systemabilitymgr/samgr_lite/samgr:samgr",
62    ]
63    external_deps = [ "bounds_checking_function:libsec_shared" ]
64    defines = [
65      "_GNU_SOURCE",
66      "OHOS_ARCH_LITE",
67      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
68      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
69      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
70    ]
71
72    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
73      external_deps += [ "init:libbegetutil" ]
74      defines += [ "INIT_LIB_ENABLE" ]
75    }
76
77    configs -= [ "//build/lite/config:language_cpp" ]
78    cflags = [
79      "-std=c++17",
80      "-fno-rtti",
81    ]
82    cflags_cc = [
83      "-std=c++17",
84      "-fno-rtti",
85    ]
86  }
87} else {
88  local_base_sources = [
89    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_callback_proxy.cpp",
90    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_death_recipient.cpp",
91    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_service_impl.cpp",
92    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_state_machine.cpp",
93    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_stub.cpp",
94    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_function.cpp",
95    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_client.cpp",
96    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_event.cpp",
97    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_options.cpp",
98    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result.cpp",
99    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result_store_manager.cpp",
100    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_socket.cpp",
101    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_thread.cpp",
102  ]
103  config("dhcp_manager_service_header") {
104    visibility = [ ":*" ]
105    include_dirs = local_base_include_dirs
106  }
107  ohos_shared_library("dhcp_client") {
108    branch_protector_ret = "pac_ret"
109    sanitize = {
110      cfi = true  # Enable/disable control flow integrity detection
111      boundary_sanitize = true  # Enable boundary san detection
112      cfi_cross_dso = true  # Cross-SO CFI Checks
113      integer_overflow = true  # Enable integer overflow detection
114      ubsan = true  # Enable some Ubsan options
115      debug = false
116    }
117    install_enable = true
118    sources = local_base_sources
119    include_dirs = local_base_include_dirs
120    defines = [
121      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
122      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
123      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
124    ]
125    if (is_asan) {
126      defines += [ "DTFUZZ_TEST" ]
127    }
128
129    deps = [ "$DHCP_ROOT_DIR/services/utils:dhcp_utils" ]
130
131    external_deps = [
132      "ability_runtime:wantagent_innerkits",
133      "c_utils:utils",
134      "hilog:libhilog",
135      "ipc:ipc_single",
136      "netmanager_base:net_native_manager_if",
137      "netmanager_base:netsys_controller",
138      "safwk:system_ability_fwk",
139      "time_service:time_client",
140    ]
141
142    if (defined(global_parts_info) &&
143        defined(global_parts_info.resourceschedule_ffrt)) {
144      external_deps += [ "ffrt:libffrt" ]
145      defines += [ "DHCP_FFRT_ENABLE" ]
146    }
147
148    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
149      external_deps += [ "init:libbegetutil" ]
150      defines += [ "INIT_LIB_ENABLE" ]
151    }
152    cflags_cc = memory_optimization_cflags_cc
153    cflags_cc += [
154      "-std=c++17",
155      "-fno-rtti",
156    ]
157    ldflags = memory_optimization_ldflags
158    ldflags += [
159      "-fPIC",
160      "-Wl,-E",
161    ]
162    shlib_type = "sa"
163    part_name = "dhcp"
164    subsystem_name = "communication"
165  }
166
167  ohos_shared_library("dhcp_updater_client") {
168    branch_protector_ret = "pac_ret"
169    sanitize = {
170      cfi = true  # Enable/disable control flow integrity detection
171      boundary_sanitize = true  # Enable boundary san detection
172      cfi_cross_dso = true  # Cross-SO CFI Checks
173      integer_overflow = true  # Enable integer overflow detection
174      ubsan = true  # Enable some Ubsan options
175      debug = false
176    }
177    install_enable = true
178    sources = [
179      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_service_impl.cpp",
180      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_state_machine.cpp",
181      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_stub_lite.cpp",
182      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_function.cpp",
183      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_client.cpp",
184      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_event.cpp",
185      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_options.cpp",
186      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result.cpp",
187      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result_store_manager.cpp",
188      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_socket.cpp",
189      "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_thread.cpp",
190      "$DHCP_ROOT_DIR/services/utils/src/dhcp_arp_checker.cpp",
191      "$DHCP_ROOT_DIR/services/utils/src/dhcp_common_utils.cpp",
192      "$DHCP_ROOT_DIR/services/utils/src/dhcp_permission_utils.cpp",
193    ]
194    include_dirs = local_base_include_dirs
195
196    public_configs = [ ":dhcp_manager_service_header" ]
197
198    cflags_cc = [
199      "-std=c++17",
200      "-Wall",
201    ]
202
203    defines = [
204      "OHOS_ARCH_LITE",
205      "OHOS_EUPDATER",
206      "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
207      "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
208      "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
209    ]
210
211    deps = []
212
213    external_deps = [
214      "bounds_checking_function:libsec_shared",
215      "c_utils:utils",
216      "hilog:libhilog",
217      "netmanager_base:net_native_manager_if",
218      "netmanager_base:netsys_controller",
219    ]
220
221    if (defined(global_parts_info) &&
222        defined(global_parts_info.resourceschedule_ffrt)) {
223      external_deps += [ "ffrt:libffrt" ]
224      defines += [ "DHCP_FFRT_ENABLE" ]
225    }
226
227    if (defined(global_parts_info) && defined(global_parts_info.startup_init)) {
228      external_deps += [ "init:libbegetutil" ]
229      defines += [ "INIT_LIB_ENABLE" ]
230    }
231    ldflags = [
232      "-fPIC",
233      "-Wl,-E",
234    ]
235    install_images = [ "updater" ]
236    part_name = "dhcp"
237    subsystem_name = "communication"
238  }
239}
240