| 1 | # SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | # Handling for eBPF legacy programs |
| 3 | |
| 4 | include(ExternalProject) |
| 5 | include(NetdataUtil) |
| 6 | |
| 7 | set(ebpf-legacy_SOURCE_DIR "${CMAKE_BINARY_DIR}/ebpf-legacy") |
| 8 | set(ebpf-legacy_BUILD_DIR "${CMAKE_BINARY_DIR}/ebpf-legacy-build") |
| 9 | |
| 10 | # Fetch the legacy eBPF code. |
| 11 | function(netdata_fetch_legacy_ebpf_code) |
| 12 | netdata_identify_libc(_libc) |
| 13 | |
| 14 | if(DEFINED BUILD_SHARED_LIBS) |
| 15 | if(NOT BUILD_SHARED_LIBS) |
| 16 | set(need_static TRUE) |
| 17 | endif() |
| 18 | endif() |
| 19 | |
| 20 | if(need_static) |
| 21 | set(_hash 995dba7386d73069eedc31106c7d5408e5b8e2f7448e636d79483fc0ccba8e3a) |
| 22 | set(_libc "static") |
| 23 | elseif(_libc STREQUAL "glibc") |
| 24 | set(_hash f350006dab68bcd306ac26df19a53146adf975c0326e19dc89058656cf97e8a6) |
| 25 | elseif(_libc STREQUAL "musl") |
| 26 | set(_hash 6a572969c7afe6cac565c3bd46a37d8ec2139c1113666994c2e0af864d828bd7) |
| 27 | else() |
| 28 | message(FATAL_ERROR "Could not determine libc implementation, unable to install eBPF legacy code.") |
| 29 | endif() |
| 30 | |
| 31 | ExternalProject_Add( |
| 32 | ebpf-code-legacy |
| 33 | URL https://github.com/netdata/kernel-collector/releases/download/v1.7.0.1/netdata-kernel-collector-${_libc}-v1.7.0.1.tar.xz |
| 34 | URL_HASH SHA256=${_hash} |
| 35 | SOURCE_DIR "${ebpf-legacy_SOURCE_DIR}" |
| 36 | CONFIGURE_COMMAND "" |
| 37 | BUILD_COMMAND sh -c "mkdir -p ${ebpf-legacy_BUILD_DIR}/ebpf.d && mv ${ebpf-legacy_SOURCE_DIR}/*netdata_ebpf_*.o ${ebpf-legacy_BUILD_DIR}/ebpf.d" |
| 38 | INSTALL_COMMAND "" |
| 39 | ) |
| 40 | endfunction() |
| 41 | |
| 42 | function(netdata_install_legacy_ebpf_code) |
| 43 | install(DIRECTORY ${ebpf-legacy_BUILD_DIR}/ebpf.d |
| 44 | DESTINATION usr/libexec/netdata/plugins.d |
| 45 | COMPONENT ebpf-code-legacy) |
| 46 | endfunction() |