libbpf: allow to use packaged version
Add a new CMake option, LIBBPF_EMBEDDED, to switch between the embedded version and the system version (searched via pkg-config) of libbpf. Set the embedded version as the default. Signed-off-by: Luca Boccassi <bluca@debian.org> Cc: dwarves@vger.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
452dbcf35f
commit
82749180b2
@ -2,9 +2,24 @@ project(pahole C)
|
||||
cmake_minimum_required(VERSION 2.8.8)
|
||||
cmake_policy(SET CMP0005 NEW)
|
||||
|
||||
option(LIBBPF_EMBEDDED "Use the embedded version of libbpf instead of searching it via pkg-config" ON)
|
||||
if (NOT LIBBPF_EMBEDDED)
|
||||
find_package(PkgConfig)
|
||||
if(PKGCONFIG_FOUND)
|
||||
pkg_check_modules(LIBBPF libbpf>=0.3.0)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
${CMAKE_CURRENT_SOURCE_DIR})
|
||||
if(NOT LIBBPF_FOUND)
|
||||
# Allows to use 'system' style #include with both embedded and system libbpf
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib/include)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
else()
|
||||
INCLUDE_DIRECTORIES(${LIBBPF_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${LIBBPF_LIBRARY_DIRS})
|
||||
endif()
|
||||
|
||||
# Try to parse this later, Helio just showed me a KDE4 example to support
|
||||
# x86-64 builds.
|
||||
@ -56,7 +71,7 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/bpf/src/btf.h")
|
||||
if(NOT LIBBPF_FOUND AND NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/bpf/src/btf.h")
|
||||
message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
|
||||
endif()
|
||||
|
||||
@ -81,22 +96,24 @@ endif()
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
|
||||
|
||||
file(GLOB libbpf_sources "lib/bpf/src/*.c")
|
||||
add_library(bpf OBJECT ${libbpf_sources})
|
||||
set_property(TARGET bpf PROPERTY POSITION_INDEPENDENT_CODE 1)
|
||||
target_include_directories(bpf PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
if (NOT LIBBPF_FOUND)
|
||||
file(GLOB libbpf_sources "lib/bpf/src/*.c")
|
||||
add_library(bpf OBJECT ${libbpf_sources})
|
||||
set_property(TARGET bpf PROPERTY POSITION_INDEPENDENT_CODE 1)
|
||||
target_include_directories(bpf PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include)
|
||||
endif()
|
||||
|
||||
set(dwarves_LIB_SRCS dwarves.c dwarves_fprintf.c gobuffer strings
|
||||
ctf_encoder.c ctf_loader.c libctf.c btf_encoder.c btf_loader.c libbtf.c
|
||||
dwarf_loader.c dutil.c elf_symtab.c rbtree.c)
|
||||
add_library(dwarves SHARED ${dwarves_LIB_SRCS} $<TARGET_OBJECTS:bpf>)
|
||||
if (NOT LIBBPF_FOUND)
|
||||
list(APPEND dwarves_LIB_SRCS $<TARGET_OBJECTS:bpf>)
|
||||
endif()
|
||||
add_library(dwarves SHARED ${dwarves_LIB_SRCS})
|
||||
set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
set_target_properties(dwarves PROPERTIES INTERFACE_LINK_LIBRARIES "")
|
||||
target_include_directories(dwarves PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES})
|
||||
|
||||
set(dwarves_emit_LIB_SRCS dwarves_emit.c)
|
||||
add_library(dwarves_emit SHARED ${dwarves_emit_LIB_SRCS})
|
||||
|
@ -11,12 +11,12 @@
|
||||
|
||||
#include "dwarves.h"
|
||||
#include "libbtf.h"
|
||||
#include "lib/bpf/include/uapi/linux/btf.h"
|
||||
#include "lib/bpf/src/libbpf.h"
|
||||
#include "hash.h"
|
||||
#include "elf_symtab.h"
|
||||
#include "btf_encoder.h"
|
||||
|
||||
#include <linux/btf.h>
|
||||
#include <bpf/libbpf.h>
|
||||
#include <ctype.h> /* for isalpha() and isalnum() */
|
||||
#include <stdlib.h> /* for qsort() and bsearch() */
|
||||
#include <inttypes.h>
|
||||
|
@ -20,12 +20,12 @@
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <libgen.h>
|
||||
#include <linux/btf.h>
|
||||
#include <zlib.h>
|
||||
|
||||
#include <gelf.h>
|
||||
|
||||
#include "libbtf.h"
|
||||
#include "lib/bpf/include/uapi/linux/btf.h"
|
||||
#include "dutil.h"
|
||||
#include "dwarves.h"
|
||||
|
||||
|
1
lib/include/bpf
Symbolic link
1
lib/include/bpf
Symbolic link
@ -0,0 +1 @@
|
||||
../bpf/src
|
7
libbtf.c
7
libbtf.c
@ -16,12 +16,11 @@
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <stdarg.h>
|
||||
#include <linux/btf.h>
|
||||
#include <bpf/btf.h>
|
||||
#include <bpf/libbpf.h>
|
||||
|
||||
#include "libbtf.h"
|
||||
#include "lib/bpf/include/uapi/linux/btf.h"
|
||||
#include "lib/bpf/include/linux/err.h"
|
||||
#include "lib/bpf/src/btf.h"
|
||||
#include "lib/bpf/src/libbpf.h"
|
||||
#include "dutil.h"
|
||||
#include "gobuffer.h"
|
||||
#include "dwarves.h"
|
||||
|
2
libbtf.h
2
libbtf.h
@ -11,7 +11,7 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include "lib/bpf/src/btf.h"
|
||||
#include <bpf/btf.h>
|
||||
|
||||
struct btf_elf {
|
||||
void *priv;
|
||||
|
2
pahole.c
2
pahole.c
@ -16,6 +16,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <bpf/libbpf.h>
|
||||
|
||||
#include "dwarves_reorganize.h"
|
||||
#include "dwarves.h"
|
||||
@ -23,7 +24,6 @@
|
||||
#include "ctf_encoder.h"
|
||||
#include "btf_encoder.h"
|
||||
#include "libbtf.h"
|
||||
#include "lib/bpf/src/libbpf.h"
|
||||
|
||||
static bool btf_encode;
|
||||
static bool ctf_encode;
|
||||
|
@ -6,7 +6,7 @@
|
||||
Copyright (C) 2008 Arnaldo Carvalho de Melo <acme@redhat.com>
|
||||
*/
|
||||
|
||||
#include "lib/bpf/src/btf.h"
|
||||
#include <bpf/btf.h>
|
||||
|
||||
typedef unsigned int strings_t;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user