cmake/modules/libbpf.cmake (26 lines of code) (raw):

# SPDX-License-Identifier: Elastic-2.0 # Copyright 2021 Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License 2.0; # you may not use this file except in compliance with the Elastic License 2.0. set(LIBBPF_CONTRIB "${PROJECT_SOURCE_DIR}/contrib/libbpf") set(LIBBPF_SRC "${LIBBPF_CONTRIB}/src") set(LIBBPF_BUILD_DIR "${PROJECT_BINARY_DIR}/contrib/libbpf") set(LIBBPF_LIB "${EBPF_INSTALL_DIR}/lib/libbpf.a") set(LIBBPF_UAPI_INCLUDE_DIR "${EBPF_INSTALL_DIR}/include/bpf/uapi") ExternalProject_Add( libbpf-external DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" BINARY_DIR ${LIBBPF_BUILD_DIR} BUILD_COMMAND CC=${CMAKE_C_COMPILER} ${EBPF_EXTERNAL_ENV_FLAGS} make -j${NPROC} -C ${LIBBPF_SRC} BUILD_STATIC_ONLY=1 LIBDIR=/lib INCLUDEDIR=/include UAPIDIR=/include/bpf/uapi OBJDIR=${LIBBPF_BUILD_DIR} CFLAGS=${CMAKE_C_FLAGS} DESTDIR=${EBPF_INSTALL_DIR} BUILD_IN_SOURCE 0 INSTALL_COMMAND ${EBPF_EXTERNAL_ENV_FLAGS} make -j${NPROC} -C ${LIBBPF_SRC} BUILD_STATIC_ONLY=1 INCLUDEDIR=/include LIBDIR=/lib UAPIDIR=/include/bpf/uapi OBJDIR=${LIBBPF_BUILD_DIR} DESTDIR=${EBPF_INSTALL_DIR} install install_uapi_headers DEPENDS libelf libz BUILD_BYPRODUCTS ${LIBBPF_LIB} ) file(MAKE_DIRECTORY "${LIBBPF_UAPI_INCLUDE_DIR}") add_library(libbpf STATIC IMPORTED GLOBAL) set_property(TARGET libbpf PROPERTY IMPORTED_LOCATION ${LIBBPF_LIB}) set_property(TARGET libbpf PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${EBPF_INSTALL_DIR}/include ${LIBBPF_UAPI_INCLUDE_DIR}) set_property(TARGET libbpf PROPERTY INTERFACE_LINK_LIBRARIES libelf libz) add_dependencies(libbpf libbpf-external)