Skip to content

Commit 3e3e059

Browse files
committed
Support bazel builds
1 parent 87f7895 commit 3e3e059

File tree

11 files changed

+472
-158
lines changed

11 files changed

+472
-158
lines changed

BUILD.bazel

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
load("@dpdk_pip//:requirements.bzl", "requirement")
2+
load("@rules_foreign_cc//foreign_cc:meson.bzl", "meson_with_requirements")
3+
4+
filegroup(
5+
name = "srcs",
6+
srcs = glob(["**"]),
7+
visibility = ["//visibility:private"],
8+
)
9+
10+
meson_with_requirements(
11+
name = "dpdk",
12+
lib_source = ":srcs",
13+
out_headers_only = True,
14+
out_static_libs = [
15+
"librte_acl.a",
16+
"librte_dispatcher.a",
17+
"librte_metrics.a",
18+
"librte_net_tap.a",
19+
"librte_argparse.a",
20+
"librte_distributor.a",
21+
"librte_ml_cnxk.a",
22+
"librte_net_thunderx.a",
23+
"librte_baseband_acc.a",
24+
"librte_dma_cnxk.a",
25+
"librte_mldev.a",
26+
"librte_net_txgbe.a",
27+
"librte_baseband_fpga_5gnr_fec.a",
28+
"librte_dmadev.a",
29+
"librte_net.a",
30+
"librte_net_vdev_netvsc.a",
31+
"librte_baseband_fpga_lte_fec.a",
32+
"librte_dma_dpaa2.a",
33+
"librte_net_af_packet.a",
34+
"librte_net_vhost.a",
35+
"librte_baseband_la12xx.a",
36+
"librte_dma_dpaa.a",
37+
"librte_net_ark.a",
38+
"librte_net_virtio.a",
39+
"librte_baseband_null.a",
40+
"librte_dma_hisilicon.a",
41+
"librte_net_atlantic.a",
42+
"librte_net_vmxnet3.a",
43+
"librte_baseband_turbo_sw.a",
44+
"librte_dma_idxd.a",
45+
"librte_net_avp.a",
46+
"librte_net_xsc.a",
47+
"librte_bbdev.a",
48+
"librte_dma_ioat.a",
49+
"librte_net_axgbe.a",
50+
"librte_net_zxdh.a",
51+
"librte_bitratestats.a",
52+
"librte_dma_odm.a",
53+
"librte_net_bnxt.a",
54+
"librte_node.a",
55+
"librte_bpf.a",
56+
"librte_dma_skeleton.a",
57+
"librte_net_bond.a",
58+
"librte_pcapng.a",
59+
"librte_bus_auxiliary.a",
60+
"librte_eal.a",
61+
"librte_net_cnxk.a",
62+
"librte_pci.a",
63+
"librte_bus_cdx.a",
64+
"librte_efd.a",
65+
"librte_net_cpfl.a",
66+
"librte_pdcp.a",
67+
"librte_bus_dpaa.a",
68+
"librte_ethdev.a",
69+
"librte_net_cxgbe.a",
70+
"librte_pdump.a",
71+
"librte_bus_fslmc.a",
72+
"librte_event_cnxk.a",
73+
"librte_net_dpaa2.a",
74+
"librte_pipeline.a",
75+
"librte_bus_ifpga.a",
76+
"librte_eventdev.a",
77+
"librte_net_dpaa.a",
78+
"librte_pmu.a",
79+
"librte_bus_pci.a",
80+
"librte_event_dlb2.a",
81+
"librte_net_e1000.a",
82+
"librte_port.a",
83+
"librte_bus_platform.a",
84+
"librte_event_dpaa2.a",
85+
"librte_net_ena.a",
86+
"librte_power.a",
87+
"librte_bus_uacce.a",
88+
"librte_event_dpaa.a",
89+
"librte_net_enetc.a",
90+
"librte_power_acpi.a",
91+
"librte_bus_vdev.a",
92+
"librte_event_dsw.a",
93+
"librte_net_enetfec.a",
94+
"librte_power_amd_pstate.a",
95+
"librte_bus_vmbus.a",
96+
"librte_event_octeontx.a",
97+
"librte_net_enic.a",
98+
"librte_power_cppc.a",
99+
"librte_cfgfile.a",
100+
"librte_event_opdl.a",
101+
"librte_net_failsafe.a",
102+
"librte_power_intel_pstate.a",
103+
"librte_cmdline.a",
104+
"librte_event_skeleton.a",
105+
"librte_net_fm10k.a",
106+
"librte_power_intel_uncore.a",
107+
"librte_common_cnxk.a",
108+
"librte_event_sw.a",
109+
"librte_net_gve.a",
110+
"librte_power_kvm_vm.a",
111+
"librte_common_cpt.a",
112+
"librte_fib.a",
113+
"librte_net_hinic3.a",
114+
"librte_raw_cnxk_bphy.a",
115+
"librte_common_dpaax.a",
116+
"librte_gpudev.a",
117+
"librte_net_hinic.a",
118+
"librte_raw_cnxk_gpio.a",
119+
"librte_common_ionic.a",
120+
"librte_graph.a",
121+
"librte_net_hns3.a",
122+
"librte_raw_cnxk_rvu_lf.a",
123+
"librte_common_nfp.a",
124+
"librte_gro.a",
125+
"librte_net_i40e.a",
126+
"librte_rawdev.a",
127+
"librte_common_nitrox.a",
128+
"librte_gso.a",
129+
"librte_net_iavf.a",
130+
"librte_raw_dpaa2_cmdif.a",
131+
"librte_common_octeontx.a",
132+
"librte_hash.a",
133+
"librte_net_ice.a",
134+
"librte_raw_gdtc.a",
135+
"librte_common_qat.a",
136+
"librte_ip_frag.a",
137+
"librte_net_idpf.a",
138+
"librte_raw_ntb.a",
139+
"librte_common_sfc_efx.a",
140+
"librte_ipsec.a",
141+
"librte_net_ionic.a",
142+
"librte_raw_skeleton.a",
143+
"librte_common_zsda.a",
144+
"librte_jobstats.a",
145+
"librte_net_ixgbe.a",
146+
"librte_rcu.a",
147+
"librte_compressdev.a",
148+
"librte_kvargs.a",
149+
"librte_net_memif.a",
150+
"librte_regex_cn9k.a",
151+
"librte_compress_nitrox.a",
152+
"librte_latencystats.a",
153+
"librte_net_netvsc.a",
154+
"librte_regexdev.a",
155+
"librte_compress_octeontx.a",
156+
"librte_log.a",
157+
"librte_net_nfp.a",
158+
"librte_reorder.a",
159+
"librte_crypto_bcmfs.a",
160+
"librte_lpm.a",
161+
"librte_net_ngbe.a",
162+
"librte_rib.a",
163+
"librte_crypto_caam_jr.a",
164+
"librte_mbuf.a",
165+
"librte_net_ntnic.a",
166+
"librte_ring.a",
167+
"librte_crypto_cnxk.a",
168+
"librte_member.a",
169+
"librte_net_null.a",
170+
"librte_sched.a",
171+
"librte_cryptodev.a",
172+
"librte_mempool.a",
173+
"librte_net_octeon_ep.a",
174+
"librte_security.a",
175+
"librte_crypto_dpaa2_sec.a",
176+
"librte_mempool_bucket.a",
177+
"librte_net_octeontx.a",
178+
"librte_stack.a",
179+
"librte_crypto_dpaa_sec.a",
180+
"librte_mempool_cnxk.a",
181+
"librte_net_pfe.a",
182+
"librte_table.a",
183+
"librte_crypto_ionic.a",
184+
"librte_mempool_dpaa2.a",
185+
"librte_net_qede.a",
186+
"librte_telemetry.a",
187+
"librte_crypto_nitrox.a",
188+
"librte_mempool_dpaa.a",
189+
"librte_net_r8169.a",
190+
"librte_timer.a",
191+
"librte_crypto_null.a",
192+
"librte_mempool_octeontx.a",
193+
"librte_net_ring.a",
194+
"librte_vdpa_ifc.a",
195+
"librte_crypto_octeontx.a",
196+
"librte_mempool_ring.a",
197+
"librte_net_rnp.a",
198+
"librte_vdpa_nfp.a",
199+
"librte_crypto_scheduler.a",
200+
"librte_mempool_stack.a",
201+
"librte_net_sfc.a",
202+
"librte_vdpa_sfc.a",
203+
"librte_crypto_virtio.a",
204+
"librte_meter.a",
205+
"librte_net_softnic.a",
206+
"librte_vhost.a",
207+
],
208+
postfix_script = "ninja",
209+
requirements = [
210+
requirement("pyelftools"),
211+
],
212+
visibility = ["//visibility:public"],
213+
deps = [
214+
"@libnuma",
215+
"@openssl//:crypto",
216+
],
217+
)

MODULE.bazel

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module(
2+
name = "dpdk",
3+
repo_name = "dpdk",
4+
)
5+
6+
bazel_dep(name = "rules_foreign_cc", version = "0.15.1")
7+
bazel_dep(name = "rules_python", version = "1.6.3")
8+
bazel_dep(name = "openssl", version = "3.3.1.bcr.7")
9+
10+
tools = use_extension("@rules_foreign_cc//foreign_cc:extensions.bzl", "tools")
11+
use_repo(tools, "meson_src")
12+
13+
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
14+
python.toolchain(
15+
python_version = "3.12",
16+
)
17+
use_repo(python, "python_versions")
18+
19+
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
20+
pip.parse(
21+
hub_name = "dpdk_pip",
22+
python_version = "3.12",
23+
requirements_lock = "//bazel:requirements.txt",
24+
)
25+
use_repo(pip, "dpdk_pip")
26+
27+
cpp_deps = use_extension("//bazel:deps.bzl", "cpp_deps_extension")
28+
use_repo(cpp_deps, "libnuma")

bazel/BUILD.bazel

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
load("@python_versions//3.12:defs.bzl", "compile_pip_requirements")
2+
3+
exports_files(["pytest.ini"])
4+
5+
# This stanza calls a rule that generates targets for managing pip dependencies
6+
# with pip-compile.
7+
compile_pip_requirements(
8+
name = "requirements",
9+
timeout = "moderate", # prevent flaky requirements_test
10+
src = "requirements.in",
11+
extra_args = ["--allow-unsafe"],
12+
requirements_txt = "requirements.txt",
13+
# requirements_windows = "requirements_windows.txt", # uncomment if windows support is needed
14+
)

bazel/deps.bzl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
2+
3+
def cpp_deps():
4+
git_repository(
5+
name = "libnuma",
6+
remote = "https://github.com/numactl/numactl",
7+
patch_cmds = [
8+
"./autogen.sh",
9+
],
10+
build_file = "//bazel:numactl.BUILD",
11+
commit = "b34da01b0017946a1a77057c247cfc6d231a0215",
12+
)
13+
14+
def _cpp_deps_extension_impl(_):
15+
cpp_deps()
16+
17+
cpp_deps_extension = module_extension(
18+
implementation = _cpp_deps_extension_impl,
19+
)

bazel/numactl.BUILD

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
load("@rules_foreign_cc//foreign_cc:configure.bzl", "configure_make")
2+
3+
filegroup(
4+
name = "srcs",
5+
srcs = glob(["**"]),
6+
visibility = ["//visibility:private"],
7+
)
8+
9+
configure_make(
10+
name = "libnuma",
11+
# bazel will throw error: use of undeclared identifier 'redacted' because bazel sets __DATE__ to "redacted".
12+
# https://github.com/bazel-contrib/rules_foreign_cc/issues/239
13+
configure_options = ["CFLAGS='-Dredacted=\"redacted\"'"],
14+
lib_source = ":srcs",
15+
out_headers_only = True,
16+
visibility = ["//visibility:public"],
17+
alwayslink = True,
18+
)

bazel/requirements.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pyelftools==0.32

bazel/requirements.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.12
3+
# by the following command:
4+
#
5+
# bazel run //bazel:requirements.update
6+
#
7+
pyelftools==0.32 \
8+
--hash=sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738 \
9+
--hash=sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5
10+
# via -r bazel/requirements.in

0 commit comments

Comments
 (0)