• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#This library is free software; you can redistribute it and/or
2#modify it under the terms of the GNU Lesser General Public
3#License as published by the Free Software Foundation version 2.1
4#of the License.
5#
6#Copyright(c) 2021-2023 Huawei Device Co., Ltd.
7
8if (!defined(ohos_lite)) {
9  import("//build/ohos.gni")
10}
11
12libnl_path = rebase_path("//third_party/libnl")
13exec_script("install.sh", [ "$libnl_path" ])
14
15action("build_grammar") {
16  script = "/usr/bin/env"
17  outputs = [ "$target_out_dir/gen/lib/route/pktloc_grammar.c" ]
18  grammer_hh = rebase_path("$target_out_dir/gen/lib/route/pktloc_grammar.h")
19  args = [
20    "flex",
21    "--header-file=$grammer_hh",
22    "-o",
23    rebase_path("$target_out_dir/gen/lib/route/pktloc_grammar.c"),
24    rebase_path("libnl-3.5.0/lib/route/pktloc_grammar.l"),
25  ]
26}
27
28action("pktloc_syntax") {
29  script = "/usr/bin/env"
30  outputs = [ "$target_out_dir/gen/lib/route/pktloc_syntax.c" ]
31  args = [
32    "bison",
33    "-y",
34    "-d",
35    "-o",
36    rebase_path("$target_out_dir/gen/lib/route/pktloc_syntax.c"),
37    rebase_path("libnl-3.5.0/lib/route/pktloc_syntax.y"),
38  ]
39}
40
41action("ematch_grammar") {
42  script = "/usr/bin/env"
43  outputs = [ "$target_out_dir/gen/lib/route/cls/ematch_grammar.c" ]
44  grammer_hh = rebase_path("$target_out_dir/gen/lib/route/cls/ematch_grammar.h")
45  args = [
46    "flex",
47    "--header-file=$grammer_hh",
48    "-o",
49    rebase_path("$target_out_dir/gen/lib/route/cls/ematch_grammar.c"),
50    rebase_path("libnl-3.5.0/lib/route/cls/ematch_grammar.l"),
51  ]
52}
53
54action("ematch_syntax") {
55  script = "/usr/bin/env"
56  outputs = [ "$target_out_dir/gen/lib/route/cls/ematch_syntax.c" ]
57  args = [
58    "bison",
59    "-y",
60    "-d",
61    "-o",
62    rebase_path("$target_out_dir/gen/lib/route/cls/ematch_syntax.c"),
63    rebase_path("libnl-3.5.0/lib/route/cls/ematch_syntax.y"),
64  ]
65}
66if (!defined(ohos_lite)) {
67  ohos_shared_library("libnl_share") {
68    grammer_outputs = get_target_outputs(":build_grammar")
69    grammer_path = get_path_info(grammer_outputs[0], "dir")
70    pktloc_outputs = get_target_outputs(":pktloc_syntax")
71    pktloc_path = get_path_info(pktloc_outputs[0], "dir")
72    ematch_outputs = get_target_outputs(":ematch_grammar")
73    ematch_path = get_path_info(ematch_outputs[0], "dir")
74    syntax_outputs = get_target_outputs(":ematch_syntax")
75    syntax_path = get_path_info(syntax_outputs[0], "dir")
76
77    include_dirs = [
78      "libnl-3.5.0",
79      "libnl-3.5.0/include",
80      "libnl-3.5.0/lib",
81      "libnl-3.5.0/lib/route/cls",
82      "libnl-3.5.0/lib/route",
83    ]
84
85    include_dirs += [
86      rebase_path("$grammer_path"),
87      rebase_path("$pktloc_path"),
88      rebase_path("$ematch_path"),
89      rebase_path("$syntax_path"),
90    ]
91
92    sources = [
93      "libnl-3.5.0/lib/addr.c",
94      "libnl-3.5.0/lib/attr.c",
95      "libnl-3.5.0/lib/cache.c",
96      "libnl-3.5.0/lib/cache_mngr.c",
97      "libnl-3.5.0/lib/cache_mngt.c",
98      "libnl-3.5.0/lib/data.c",
99      "libnl-3.5.0/lib/error.c",
100      "libnl-3.5.0/lib/handlers.c",
101      "libnl-3.5.0/lib/hash.c",
102      "libnl-3.5.0/lib/hashtable.c",
103      "libnl-3.5.0/lib/mpls.c",
104      "libnl-3.5.0/lib/msg.c",
105      "libnl-3.5.0/lib/nl.c",
106      "libnl-3.5.0/lib/object.c",
107      "libnl-3.5.0/lib/socket.c",
108      "libnl-3.5.0/lib/utils.c",
109      "libnl-3.5.0/lib/version.c",
110      "libnl-3.5.0/lib/fib_lookup/lookup.c",
111      "libnl-3.5.0/lib/fib_lookup/request.c",
112      "libnl-3.5.0/lib/genl/ctrl.c",
113      "libnl-3.5.0/lib/genl/family.c",
114      "libnl-3.5.0/lib/genl/genl.c",
115      "libnl-3.5.0/lib/genl/mngt.c",
116      "libnl-3.5.0/lib/idiag/idiag.c",
117      "libnl-3.5.0/lib/idiag/idiag_meminfo_obj.c",
118      "libnl-3.5.0/lib/idiag/idiag_msg_obj.c",
119      "libnl-3.5.0/lib/idiag/idiag_req_obj.c",
120      "libnl-3.5.0/lib/idiag/idiag_vegasinfo_obj.c",
121      "libnl-3.5.0/lib/netfilter/ct.c",
122      "libnl-3.5.0/lib/netfilter/ct_obj.c",
123      "libnl-3.5.0/lib/netfilter/exp.c",
124      "libnl-3.5.0/lib/netfilter/exp_obj.c",
125      "libnl-3.5.0/lib/netfilter/log.c",
126      "libnl-3.5.0/lib/netfilter/log_msg.c",
127      "libnl-3.5.0/lib/netfilter/log_msg_obj.c",
128      "libnl-3.5.0/lib/netfilter/log_obj.c",
129      "libnl-3.5.0/lib/netfilter/netfilter.c",
130      "libnl-3.5.0/lib/netfilter/nfnl.c",
131      "libnl-3.5.0/lib/netfilter/queue.c",
132      "libnl-3.5.0/lib/netfilter/queue_msg.c",
133      "libnl-3.5.0/lib/netfilter/queue_msg_obj.c",
134      "libnl-3.5.0/lib/netfilter/queue_obj.c",
135      "libnl-3.5.0/lib/route/act.c",
136      "libnl-3.5.0/lib/route/addr.c",
137      "libnl-3.5.0/lib/route/class.c",
138      "libnl-3.5.0/lib/route/classid.c",
139      "libnl-3.5.0/lib/route/cls.c",
140      "libnl-3.5.0/lib/route/link.c",
141      "libnl-3.5.0/lib/route/neigh.c",
142      "libnl-3.5.0/lib/route/neightbl.c",
143      "libnl-3.5.0/lib/route/netconf.c",
144      "libnl-3.5.0/lib/route/nexthop.c",
145      "libnl-3.5.0/lib/route/nexthop_encap.c",
146      "libnl-3.5.0/lib/route/nh_encap_mpls.c",
147      "libnl-3.5.0/lib/route/pktloc.c",
148      rebase_path("$grammer_path/pktloc_grammar.c"),
149      rebase_path("$pktloc_path/pktloc_syntax.c"),
150      "libnl-3.5.0/lib/route/qdisc.c",
151      "libnl-3.5.0/lib/route/route.c",
152      "libnl-3.5.0/lib/route/route_obj.c",
153      "libnl-3.5.0/lib/route/route_utils.c",
154      "libnl-3.5.0/lib/route/rtnl.c",
155      "libnl-3.5.0/lib/route/rule.c",
156      "libnl-3.5.0/lib/route/tc.c",
157      "libnl-3.5.0/lib/route/act/gact.c",
158      "libnl-3.5.0/lib/route/act/mirred.c",
159      "libnl-3.5.0/lib/route/act/skbedit.c",
160      "libnl-3.5.0/lib/route/act/vlan.c",
161      "libnl-3.5.0/lib/route/cls/basic.c",
162      "libnl-3.5.0/lib/route/cls/cgroup.c",
163      "libnl-3.5.0/lib/route/cls/ematch.c",
164      rebase_path("$ematch_path/ematch_grammar.c"),
165      rebase_path("$syntax_path/ematch_syntax.c"),
166      "libnl-3.5.0/lib/route/cls/fw.c",
167      "libnl-3.5.0/lib/route/cls/mall.c",
168      "libnl-3.5.0/lib/route/cls/police.c",
169      "libnl-3.5.0/lib/route/cls/u32.c",
170      "libnl-3.5.0/lib/route/cls/ematch/cmp.c",
171      "libnl-3.5.0/lib/route/cls/ematch/container.c",
172      "libnl-3.5.0/lib/route/cls/ematch/meta.c",
173      "libnl-3.5.0/lib/route/cls/ematch/nbyte.c",
174      "libnl-3.5.0/lib/route/cls/ematch/text.c",
175      "libnl-3.5.0/lib/route/link/api.c",
176      "libnl-3.5.0/lib/route/link/bonding.c",
177      "libnl-3.5.0/lib/route/link/bridge.c",
178      "libnl-3.5.0/lib/route/link/can.c",
179      "libnl-3.5.0/lib/route/link/dummy.c",
180      "libnl-3.5.0/lib/route/link/geneve.c",
181      "libnl-3.5.0/lib/route/link/ifb.c",
182      "libnl-3.5.0/lib/route/link/inet6.c",
183      "libnl-3.5.0/lib/route/link/inet.c",
184      "libnl-3.5.0/lib/route/link/ip6tnl.c",
185      "libnl-3.5.0/lib/route/link/ipgre.c",
186      "libnl-3.5.0/lib/route/link/ipip.c",
187      "libnl-3.5.0/lib/route/link/ipvlan.c",
188      "libnl-3.5.0/lib/route/link/ipvti.c",
189      "libnl-3.5.0/lib/route/link/macsec.c",
190      "libnl-3.5.0/lib/route/link/macvlan.c",
191      "libnl-3.5.0/lib/route/link/ppp.c",
192      "libnl-3.5.0/lib/route/link/sit.c",
193      "libnl-3.5.0/lib/route/link/sriov.c",
194      "libnl-3.5.0/lib/route/link/veth.c",
195      "libnl-3.5.0/lib/route/link/vlan.c",
196      "libnl-3.5.0/lib/route/link/vrf.c",
197      "libnl-3.5.0/lib/route/link/vxlan.c",
198      "libnl-3.5.0/lib/route/link/xfrmi.c",
199      "libnl-3.5.0/lib/route/qdisc/blackhole.c",
200      "libnl-3.5.0/lib/route/qdisc/cbq.c",
201      "libnl-3.5.0/lib/route/qdisc/dsmark.c",
202      "libnl-3.5.0/lib/route/qdisc/fifo.c",
203      "libnl-3.5.0/lib/route/qdisc/fq_codel.c",
204      "libnl-3.5.0/lib/route/qdisc/hfsc.c",
205      "libnl-3.5.0/lib/route/qdisc/htb.c",
206      "libnl-3.5.0/lib/route/qdisc/ingress.c",
207      "libnl-3.5.0/lib/route/qdisc/mqprio.c",
208      "libnl-3.5.0/lib/route/qdisc/netem.c",
209      "libnl-3.5.0/lib/route/qdisc/plug.c",
210      "libnl-3.5.0/lib/route/qdisc/prio.c",
211      "libnl-3.5.0/lib/route/qdisc/red.c",
212      "libnl-3.5.0/lib/route/qdisc/sfq.c",
213      "libnl-3.5.0/lib/route/qdisc/tbf.c",
214      "libnl-3.5.0/lib/xfrm/ae.c",
215      "libnl-3.5.0/lib/xfrm/lifetime.c",
216      "libnl-3.5.0/lib/xfrm/sa.c",
217      "libnl-3.5.0/lib/xfrm/selector.c",
218      "libnl-3.5.0/lib/xfrm/sp.c",
219      "libnl-3.5.0/lib/xfrm/template.c",
220      "libnl-3.5.0/lib/cli/cls/basic.c",
221      "libnl-3.5.0/lib/cli/cls/cgroup.c",
222      "libnl-3.5.0/lib/cli/qdisc/bfifo.c",
223      "libnl-3.5.0/lib/cli/qdisc/blackhole.c",
224      "libnl-3.5.0/lib/cli/qdisc/fq_codel.c",
225      "libnl-3.5.0/lib/cli/qdisc/hfsc.c",
226      "libnl-3.5.0/lib/cli/qdisc/htb.c",
227      "libnl-3.5.0/lib/cli/qdisc/ingress.c",
228      "libnl-3.5.0/lib/cli/qdisc/pfifo.c",
229      "libnl-3.5.0/lib/cli/qdisc/plug.c",
230      "libnl-3.5.0/src/lib/addr.c",
231      "libnl-3.5.0/src/lib/class.c",
232      "libnl-3.5.0/src/lib/cls.c",
233      "libnl-3.5.0/src/lib/ct.c",
234      "libnl-3.5.0/src/lib/exp.c",
235      "libnl-3.5.0/src/lib/link.c",
236      "libnl-3.5.0/src/lib/neigh.c",
237      "libnl-3.5.0/src/lib/qdisc.c",
238      "libnl-3.5.0/src/lib/route.c",
239      "libnl-3.5.0/src/lib/rule.c",
240      "libnl-3.5.0/src/lib/tc.c",
241      "libnl-3.5.0/src/lib/utils.c",
242    ]
243
244    deps = [
245      ":build_grammar",
246      ":ematch_grammar",
247      ":ematch_syntax",
248      ":pktloc_syntax",
249    ]
250    defines = [ "NL_DEBUG" ]
251    cflags = [
252      "-Wno-error",
253      "-D_BSD_SOURCE",
254      "-D_GNU_SOURCE",
255      "-DNL_DEBUG",
256
257      #"-UNDEBUG",
258      "-DSYSCONFDIR=\"\\\"/etc/libnl\\\"\"",
259    ]
260
261    install_images = [
262      "system",
263      "updater",
264    ]
265    part_name = "libnl"
266    subsystem_name = "thirdparty"
267  }
268}
269