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