mirror of
https://github.com/h3xduck/TripleCross.git
synced 2025-12-21 01:03:08 +08:00
48 lines
1.5 KiB
CMake
48 lines
1.5 KiB
CMake
|
|
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||
|
|
|
||
|
|
cmake_minimum_required(VERSION 3.16)
|
||
|
|
project(examples)
|
||
|
|
|
||
|
|
# Tell cmake where to find BpfObject module
|
||
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../tools/cmake)
|
||
|
|
|
||
|
|
# Build vendored libbpf
|
||
|
|
include(ExternalProject)
|
||
|
|
ExternalProject_Add(libbpf
|
||
|
|
PREFIX libbpf
|
||
|
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../libbpf/src
|
||
|
|
CONFIGURE_COMMAND ""
|
||
|
|
BUILD_COMMAND make
|
||
|
|
BUILD_STATIC_ONLY=1
|
||
|
|
OBJDIR=${CMAKE_CURRENT_BINARY_DIR}/libbpf/libbpf
|
||
|
|
DESTDIR=${CMAKE_CURRENT_BINARY_DIR}/libbpf
|
||
|
|
INCLUDEDIR=
|
||
|
|
LIBDIR=
|
||
|
|
UAPIDIR=
|
||
|
|
install
|
||
|
|
BUILD_IN_SOURCE TRUE
|
||
|
|
INSTALL_COMMAND ""
|
||
|
|
STEP_TARGETS build
|
||
|
|
)
|
||
|
|
|
||
|
|
# Set BpfObject input parameters -- note this is usually not necessary unless
|
||
|
|
# you're in a highly vendored environment (like libbpf-bootstrap)
|
||
|
|
set(BPFOBJECT_BPFTOOL_EXE ${CMAKE_CURRENT_SOURCE_DIR}/../../tools/bpftool)
|
||
|
|
set(BPFOBJECT_VMLINUX_H ${CMAKE_CURRENT_SOURCE_DIR}/../../vmlinux/vmlinux.h)
|
||
|
|
set(LIBBPF_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/libbpf)
|
||
|
|
set(LIBBPF_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/libbpf/libbpf.a)
|
||
|
|
find_package(BpfObject REQUIRED)
|
||
|
|
|
||
|
|
# Create an executable for each application
|
||
|
|
file(GLOB apps *.bpf.c)
|
||
|
|
foreach(app ${apps})
|
||
|
|
get_filename_component(app_stem ${app} NAME_WE)
|
||
|
|
|
||
|
|
# Build object skeleton and depend skeleton on libbpf build
|
||
|
|
bpf_object(${app_stem} ${app_stem}.bpf.c)
|
||
|
|
add_dependencies(${app_stem}_skel libbpf-build)
|
||
|
|
|
||
|
|
add_executable(${app_stem} ${app_stem}.c)
|
||
|
|
target_link_libraries(${app_stem} ${app_stem}_skel)
|
||
|
|
endforeach()
|