1# Copyright (C) 2021-2023 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 14import("//build/ohos.gni") 15 16cares_srcs = [ 17 "ares_addrinfo2hostent.c", 18 "ares_addrinfo_localhost.c", 19 "ares_android.c", 20 "ares_cancel.c", 21 "ares_close_sockets.c", 22 "ares_conn.c", 23 "ares_cookie.c", 24 "ares_data.c", 25 "ares_destroy.c", 26 "ares_free_hostent.c", 27 "ares_free_string.c", 28 "ares_freeaddrinfo.c", 29 "ares_getaddrinfo.c", 30 "ares_getenv.c", 31 "ares_gethostbyaddr.c", 32 "ares_gethostbyname.c", 33 "ares_getnameinfo.c", 34 "ares_hosts_file.c", 35 "ares_init.c", 36 "ares_library_init.c", 37 "ares_metrics.c", 38 "ares_options.c", 39 "ares_parse_into_addrinfo.c", 40 "ares_process.c", 41 "ares_qcache.c", 42 "ares_query.c", 43 "ares_search.c", 44 "ares_send.c", 45 "ares_set_socket_functions.c", 46 "ares_socket.c", 47 "ares_sortaddrinfo.c", 48 "ares_strerror.c", 49 "ares_sysconfig.c", 50 "ares_sysconfig_files.c", 51 "ares_sysconfig_mac.c", 52 "ares_sysconfig_win.c", 53 "ares_timeout.c", 54 "ares_update_servers.c", 55 "ares_version.c", 56 "inet_net_pton.c", 57 "inet_ntop.c", 58 "windows_port.c", 59 "dsa/ares_array.c", 60 "dsa/ares_htable.c", 61 "dsa/ares_htable_asvp.c", 62 "dsa/ares_htable_dict.c", 63 "dsa/ares_htable_strvp.c", 64 "dsa/ares_htable_szvp.c", 65 "dsa/ares_htable_vpstr.c", 66 "dsa/ares_htable_vpvp.c", 67 "dsa/ares_llist.c", 68 "dsa/ares_slist.c", 69 "event/ares_event_configchg.c", 70 "event/ares_event_epoll.c", 71 "event/ares_event_kqueue.c", 72 "event/ares_event_poll.c", 73 "event/ares_event_select.c", 74 "event/ares_event_thread.c", 75 "event/ares_event_wake_pipe.c", 76 "event/ares_event_win32.c", 77 "legacy/ares_create_query.c", 78 "legacy/ares_expand_name.c", 79 "legacy/ares_expand_string.c", 80 "legacy/ares_fds.c", 81 "legacy/ares_getsock.c", 82 "legacy/ares_parse_a_reply.c", 83 "legacy/ares_parse_aaaa_reply.c", 84 "legacy/ares_parse_caa_reply.c", 85 "legacy/ares_parse_mx_reply.c", 86 "legacy/ares_parse_naptr_reply.c", 87 "legacy/ares_parse_ns_reply.c", 88 "legacy/ares_parse_ptr_reply.c", 89 "legacy/ares_parse_soa_reply.c", 90 "legacy/ares_parse_srv_reply.c", 91 "legacy/ares_parse_txt_reply.c", 92 "legacy/ares_parse_uri_reply.c", 93 "record/ares_dns_mapping.c", 94 "record/ares_dns_multistring.c", 95 "record/ares_dns_name.c", 96 "record/ares_dns_parse.c", 97 "record/ares_dns_record.c", 98 "record/ares_dns_write.c", 99 "str/ares_buf.c", 100 "str/ares_str.c", 101 "str/ares_strsplit.c", 102 "util/ares_iface_ips.c", 103 "util/ares_math.c", 104 "util/ares_rand.c", 105 "util/ares_threads.c", 106 "util/ares_timeval.c", 107 "util/ares_uri.c", 108] 109 110sources_test = [ 111 "test/ares-test-init.cc", 112 "test/ares-test-internal.cc", 113 "test/ares-test-live.cc", 114 "test/ares-test-main.cc", 115 "test/ares-test-misc.cc", 116 "test/ares-test-mock-ai.cc", 117 "test/ares-test-mock-et.cc", 118 "test/ares-test-mock.cc", 119 "test/ares-test-ns.cc", 120 "test/ares-test-parse-a.cc", 121 "test/ares-test-parse-aaaa.cc", 122 "test/ares-test-parse-caa.cc", 123 "test/ares-test-parse-mx.cc", 124 "test/ares-test-parse-naptr.cc", 125 "test/ares-test-parse-ns.cc", 126 "test/ares-test-parse-ptr.cc", 127 "test/ares-test-parse-soa-any.cc", 128 "test/ares-test-parse-soa.cc", 129 "test/ares-test-parse-srv.cc", 130 "test/ares-test-parse-txt.cc", 131 "test/ares-test-parse-uri.cc", 132 "test/ares-test-parse.cc", 133 "test/ares-test.cc", 134 "test/dns-dump.cc", 135 "test/dns-proto-test.cc", 136 "test/dns-proto.cc", 137] 138 139src_path = "//third_party/cares" 140code_dir = root_out_dir + "/third_party_cares" 141 142action("installCares") { 143 print("Cares install") 144 script = "install.sh" 145 args = [ 146 rebase_path(src_path, root_build_dir), 147 rebase_path(code_dir, root_build_dir), 148 ] 149 inputs = [ src_path ] 150 outputs = [] 151 foreach(src, cares_srcs) { 152 outputs += [ "$code_dir/src/lib/" + src ] 153 } 154 foreach(test, sources_test) { 155 outputs += [ "$code_dir/" + test ] 156 } 157} 158 159config("c_ares_config") { 160 include_dirs = [ "//third_party/cares/include" ] 161 cflags = [ 162 "-D_GNU_SOURCE", 163 "-D_HAS_EXCEPTIONS=0", 164 "-DHAVE_CONFIG_H", 165 "-Wno-macro-redefined", 166 ] 167} 168ohos_shared_library("c_ares") { 169 deps = [ ":installCares" ] 170 install_images = [ 171 "updater", 172 "system", 173 ] 174 sources = [] 175 foreach(src, cares_srcs) { 176 sources += [ "$code_dir/src/lib/" + src ] 177 } 178 179 public_configs = [ ":c_ares_config" ] 180 defines = [ "CARES_SHAREDLIB" ] 181 182 include_dirs = [ 183 "//third_party/cares/include", 184 "$code_dir", 185 "$code_dir/include", 186 "$code_dir/src/lib", 187 "$code_dir/src/lib/include", 188 ] 189 190 install_enable = true 191 subsystem_name = "thirdparty" 192 part_name = "cares" 193} 194 195ohos_static_library("c_ares_static") { 196 deps = [ ":installCares" ] 197 sources = [] 198 foreach(src, cares_srcs) { 199 sources += [ "$code_dir/src/lib/" + src ] 200 } 201 202 public_configs = [ ":c_ares_config" ] 203 204 include_dirs = [ 205 "//third_party/cares/include", 206 "$code_dir", 207 "$code_dir/include", 208 "$code_dir/src/lib", 209 "$code_dir/src/lib/include", 210 ] 211 subsystem_name = "thirdparty" 212 part_name = "cares" 213} 214 215ohos_executable("cares_test") { 216 sources = [] 217 foreach(src, sources_test) { 218 sources += [ "$code_dir/" + src ] 219 } 220 deps = [ 221 ":c_ares", 222 ":installCares", 223 ] 224 include_dirs = [ 225 "//third_party/cares/include", 226 "$code_dir", 227 "$code_dir/src/lib", 228 "$code_dir/include", 229 "$code_dir/src/lib/include", 230 "$code_dir/test", 231 ] 232 subsystem_name = "thirdparty" 233 part_name = "cares" 234} 235 236group("c_ares_target") { 237 deps = [ 238 ":c_ares", 239 ":c_ares_static", 240 ":cares_test", 241 ] 242} 243