• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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