cmake/modules/libelf.cmake (21 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(LIBELF_SRC "${PROJECT_SOURCE_DIR}/contrib/elftoolchain")
set(LIBELF_BUILD_DIR "${PROJECT_BINARY_DIR}/contrib/libelf")
set(LIBELF_LIB "${EBPF_INSTALL_DIR}/lib/libelf.a")
ExternalProject_Add(
libelf-external
DOWNLOAD_COMMAND ""
CONFIGURE_COMMAND ""
BINARY_DIR ${LIBELF_BUILD_DIR}
BUILD_COMMAND CC=${CMAKE_C_COMPILER} ${EBPF_EXT_ENV_FLAGS} BINOWN=${CURRENT_USER} BINGRP=${CURRENT_GROUP} MFLAGS= MAKEFLAGS= WITH_TESTS=no WITH_BUILD_TOOLS=no BUILD_STATIC_ONLY=1 WITH_ADDITIONAL_DOCUMENTATION=no WITH_PE=no WITH_ISA=no MAKEOBJDIR=${LIBELF_BUILD_DIR} INCSDIR=/include /bin/sh -c "bmake -j${NPROC} -C ${LIBELF_SRC} -e"
BUILD_IN_SOURCE 0
INSTALL_COMMAND CC=${CMAKE_C_COMPILER} ${EBPF_EXT_ENV_FLAGS} BINOWN=${CURRENT_USER} BINGRP=${CURRENT_GROUP} MFLAGS= MAKEFLAGS= WITH_TESTS=no WITH_BUILD_TOOLS=no BUILD_STATIC_ONLY=1 WITH_ADDITIONAL_DOCUMENTATION=no WITH_PE=no WITH_ISA=no MAKEOBJDIR=${LIBELF_BUILD_DIR} /bin/sh -c "bmake -j${NPROC} -C ${LIBELF_SRC} -e install DESTDIR=${EBPF_INSTALL_DIR} prefix='' INCSDIR=/include"
BUILD_BYPRODUCTS ${LIBELF_LIB}
)
add_library(libelf STATIC IMPORTED GLOBAL)
set_property(TARGET libelf PROPERTY IMPORTED_LOCATION "${LIBELF_LIB}")
set_property(TARGET libelf PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${EBPF_INSTALL_DIR}/include")
add_dependencies(libelf libelf-external)