Skip to content

Commit aa18cc0

Browse files
orenc17anakryiko
authored andcommitted
Fix vmlinux.h creation when not specified by user
In case where BPFOBJECT_VMLINUX_H is not set and BPFOBJECT_BPFTOOL_EXE is set but not compiled yet, we need to make sure cmake compiles bpftool before attempting to generate vmlinux.h using it Signed-off-by: Oren Cohen <orcohen@akamai.com>
1 parent c4ad518 commit aa18cc0

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

tools/cmake/FindBpfObject.cmake

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,12 @@ elseif(BPFOBJECT_BPFTOOL_EXE)
105105
# Generate vmlinux.h
106106
set(GENERATED_VMLINUX_DIR ${CMAKE_CURRENT_BINARY_DIR})
107107
set(BPFOBJECT_VMLINUX_H ${GENERATED_VMLINUX_DIR}/vmlinux.h)
108-
execute_process(COMMAND ${BPFOBJECT_BPFTOOL_EXE} btf dump file /sys/kernel/btf/vmlinux format c
109-
OUTPUT_FILE ${BPFOBJECT_VMLINUX_H}
110-
ERROR_VARIABLE VMLINUX_error
111-
RESULT_VARIABLE VMLINUX_result)
112-
if(${VMLINUX_result} EQUAL 0)
113-
set(VMLINUX ${BPFOBJECT_VMLINUX_H})
114-
else()
115-
message(FATAL_ERROR "Failed to dump vmlinux.h from BTF: ${VMLINUX_error}")
116-
endif()
108+
add_custom_command(OUTPUT ${BPFOBJECT_VMLINUX_H}
109+
COMMAND ${BPFOBJECT_BPFTOOL_EXE} btf dump file /sys/kernel/btf/vmlinux format c > ${BPFOBJECT_VMLINUX_H}
110+
DEPENDS ${BPFOBJECT_BPFTOOL_EXE}
111+
VERBATIM
112+
COMMENT "[vmlinux] Generating header: ${BPFOBJECT_VMLINUX_H}"
113+
)
117114
endif()
118115

119116
include(FindPackageHandleStandardArgs)
@@ -123,6 +120,7 @@ find_package_handle_standard_args(BpfObject
123120
BPFOBJECT_CLANG_EXE
124121
LIBBPF_INCLUDE_DIRS
125122
LIBBPF_LIBRARIES
123+
BPFOBJECT_VMLINUX_H
126124
GENERATED_VMLINUX_DIR)
127125

128126
# Get clang bpf system includes
@@ -171,7 +169,7 @@ macro(bpf_object name input)
171169
-isystem ${LIBBPF_INCLUDE_DIRS} -c ${BPF_C_FILE} -o ${BPF_O_FILE}
172170
COMMAND_EXPAND_LISTS
173171
VERBATIM
174-
DEPENDS ${BPF_C_FILE} ${BPF_H_FILES}
172+
DEPENDS ${BPF_C_FILE} ${BPF_H_FILES} ${BPFOBJECT_VMLINUX_H}
175173
COMMENT "[clang] Building BPF object: ${name}")
176174

177175
# Build BPF skeleton header

0 commit comments

Comments
 (0)