1*4882a593SmuzhiyunSUMMARY = "BPF Compiler Collection (BCC)"
2*4882a593SmuzhiyunHOMEPAGE = "https://github.com/iovisor/bcc"
3*4882a593SmuzhiyunLICENSE = "Apache-2.0"
4*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
5*4882a593Smuzhiyun
6*4882a593Smuzhiyuninherit cmake python3native manpages ptest
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunDEPENDS += "bison-native \
9*4882a593Smuzhiyun            flex-native \
10*4882a593Smuzhiyun            flex \
11*4882a593Smuzhiyun            elfutils \
12*4882a593Smuzhiyun            ${LUAJIT} \
13*4882a593Smuzhiyun            clang \
14*4882a593Smuzhiyun            libbpf \
15*4882a593Smuzhiyun            "
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunLUAJIT ?= "luajit"
18*4882a593SmuzhiyunLUAJIT:powerpc64le = ""
19*4882a593SmuzhiyunLUAJIT:powerpc64 = ""
20*4882a593SmuzhiyunLUAJIT:riscv64 = ""
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunRDEPENDS:${PN} += "bash python3 python3-core python3-setuptools xz"
23*4882a593SmuzhiyunRDEPENDS:${PN}-ptest = "cmake python3 python3-distutils python3-netaddr python3-pyroute2"
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunSRC_URI = "gitsm://github.com/iovisor/bcc;branch=master;protocol=https \
26*4882a593Smuzhiyun           file://0001-python-CMakeLists.txt-Remove-check-for-host-etc-debi.patch \
27*4882a593Smuzhiyun           file://0001-tools-trace.py-Fix-failing-to-exit.patch \
28*4882a593Smuzhiyun           file://0001-CMakeLists.txt-override-the-PY_CMD_ESCAPED.patch \
29*4882a593Smuzhiyun           file://0001-Vendor-just-enough-extra-headers-to-allow-libbpf-to-.patch \
30*4882a593Smuzhiyun           file://run-ptest \
31*4882a593Smuzhiyun           file://ptest_wrapper.sh \
32*4882a593Smuzhiyun           "
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunSRCREV = "8f40d6f57a8d94e7aee74ce358572d34d31b4ed4"
35*4882a593Smuzhiyun
36*4882a593SmuzhiyunPV .= "+git${SRCPV}"
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunS = "${WORKDIR}/git"
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunPACKAGECONFIG ??= "examples"
41*4882a593SmuzhiyunPACKAGECONFIG:remove:libc-musl = "examples"
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunPACKAGECONFIG[manpages] = "-DENABLE_MAN=ON,-DENABLE_MAN=OFF,"
44*4882a593SmuzhiyunPACKAGECONFIG[examples] = "-DENABLE_EXAMPLES=ON,-DENABLE_EXAMPLES=OFF,"
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunEXTRA_OECMAKE = " \
47*4882a593Smuzhiyun    -DCMAKE_USE_LIBBPF_PACKAGE=ON \
48*4882a593Smuzhiyun    -DENABLE_LLVM_SHARED=ON \
49*4882a593Smuzhiyun    -DENABLE_CLANG_JIT=ON \
50*4882a593Smuzhiyun    -DLLVM_PACKAGE_VERSION=${LLVMVERSION} \
51*4882a593Smuzhiyun    -DPYTHON_CMD=${PYTHON} \
52*4882a593Smuzhiyun    -DPYTHON_FLAGS=--install-lib=${PYTHON_SITEPACKAGES_DIR} \
53*4882a593Smuzhiyun"
54*4882a593Smuzhiyun
55*4882a593Smuzhiyundo_install:append() {
56*4882a593Smuzhiyun        sed -e 's@#!/usr/bin/python@#!/usr/bin/env python3@g' \
57*4882a593Smuzhiyun            -i $(find ${D}${datadir}/${PN} -type f)
58*4882a593Smuzhiyun}
59*4882a593Smuzhiyun
60*4882a593Smuzhiyundo_install_ptest() {
61*4882a593Smuzhiyun    install -d ${D}${PTEST_PATH}/tests/cc
62*4882a593Smuzhiyun    install ${B}/tests/cc/test_libbcc_no_libbpf ${B}/tests/cc/libusdt_test_lib.so ${D}${PTEST_PATH}/tests/cc
63*4882a593Smuzhiyun    cp -rf ${S}/tests/python ${D}${PTEST_PATH}/tests/python
64*4882a593Smuzhiyun    install ${WORKDIR}/ptest_wrapper.sh ${D}${PTEST_PATH}/tests
65*4882a593Smuzhiyun    install ${S}/examples/networking/simulation.py ${D}${PTEST_PATH}/tests/python
66*4882a593Smuzhiyun}
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunFILES:${PN} += "${PYTHON_SITEPACKAGES_DIR}"
69*4882a593SmuzhiyunFILES:${PN}-doc += "${datadir}/${PN}/man"
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunCOMPATIBLE_HOST = "(x86_64.*|aarch64.*|powerpc64.*|riscv64.*)-linux"
72