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