@@ -4,10 +4,9 @@ project(pylibbpf)
44add_subdirectory (pybind11)
55pybind11_add_module(pylibbpf src/main.cpp)
66
7- # Build vendored libbpf
87include (ExternalProject)
98ExternalProject_Add(
10- libbpf
9+ libbpf_build
1110 PREFIX libbpf
1211 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /libbpf/src
1312 CONFIGURE_COMMAND ""
@@ -19,36 +18,22 @@ ExternalProject_Add(
1918 INSTALL_COMMAND ""
2019 STEP_TARGETS build )
2120
22- if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" )
23- set (ARCH "x86" )
24- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" )
25- set (ARCH "arm" )
26- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" )
27- set (ARCH "arm64" )
28- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le" )
29- set (ARCH "powerpc" )
30- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips" )
31- set (ARCH "mips" )
32- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "riscv64" )
33- set (ARCH "riscv" )
34- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64" )
35- set (ARCH "loongarch" )
36- endif ()
21+ # Define a static library target pointing to the built libbpf.a
22+ add_library (libbpf_static STATIC IMPORTED GLOBAL )
3723
38- set (LIBBPF_INCLUDE_DIRS
39- ${CMAKE_CURRENT_BINARY_DIR} /libbpf
40- ${CMAKE_CURRENT_SOURCE_DIR} /libbpf/include
41- ${CMAKE_CURRENT_BINARY_DIR} /libbpf/usr/include )
42- set (LIBBPF_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR} /libbpf/libbpf.a)
24+ set (LIBBPF_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} /libbpf/include )
4325
44- # EXAMPLE_VERSION_INFO is defined by setup.py and passed into the C++ code as a
45- # define (VERSION_INFO) here.
26+ set_target_properties (
27+ libbpf_static
28+ PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR} /libbpf/libbpf.a"
29+ INTERFACE_INCLUDE_DIRECTORIES "${LIBBPF_INCLUDE_DIRS} " )
30+ # Ensure build order: external project builds before linking
31+ add_dependencies (libbpf_static libbpf_build)
32+ add_dependencies (pylibbpf libbpf_static)
33+
34+ # Version info
4635target_compile_definitions (pylibbpf
4736 PRIVATE VERSION_INFO=${PYLIBBPF_VERSION_INFO} )
4837
49- # ensure build order
50- add_dependencies (pylibbpf libbpf)
51-
52- # headers + linking
53- target_include_directories (pylibbpf PRIVATE ${LIBBPF_INCLUDE_DIRS} )
54- target_link_libraries (pylibbpf PRIVATE ${LIBBPF_LIBRARIES} )
38+ # Link the actual library target
39+ target_link_libraries (pylibbpf PRIVATE libbpf_static)
0 commit comments