Jiri Olsa <jolsa@xxxxxxxxxx> writes: > On Thu, Nov 28, 2019 at 05:07:12PM +0100, Toke Høiland-Jørgensen wrote: > > SNIP > >> ifeq ($(srctree),) >> srctree := $(patsubst %/,%,$(dir $(CURDIR))) >> @@ -63,6 +72,19 @@ RM ?= rm -f >> FEATURE_USER = .bpftool >> FEATURE_TESTS = libbfd disassembler-four-args reallocarray zlib >> FEATURE_DISPLAY = libbfd disassembler-four-args zlib >> +ifdef LIBBPF_DYNAMIC >> + FEATURE_TESTS += libbpf >> + FEATURE_DISPLAY += libbpf >> + >> + # for linking with debug library run: >> + # make LIBBPF_DYNAMIC=1 LIBBPF_DIR=/opt/libbpf >> + ifdef LIBBPF_DIR >> + LIBBPF_CFLAGS := -I$(LIBBPF_DIR)/include >> + LIBBPF_LDFLAGS := -L$(LIBBPF_DIR)/$(libdir_relative) >> + FEATURE_CHECK_CFLAGS-libbpf := $(LIBBPF_CFLAGS) >> + FEATURE_CHECK_LDFLAGS-libbpf := $(LIBBPF_LDFLAGS) >> + endif >> +endif >> >> check_feat := 1 >> NON_CHECK_FEAT_TARGETS := clean uninstall doc doc-clean doc-install doc-uninstall >> @@ -88,6 +110,18 @@ ifeq ($(feature-reallocarray), 0) >> CFLAGS += -DCOMPAT_NEED_REALLOCARRAY >> endif >> >> +ifdef LIBBPF_DYNAMIC >> + ifeq ($(feature-libbpf), 1) >> + # bpftool uses non-exported functions from libbpf, so just add the dynamic >> + # version of libbpf and let the linker figure it out >> + LIBS := -lbpf $(LIBS) > > nice, so linker will pick up the missing symbols and we > don't need to check on particular libbpf version then Yup, exactly. I verified with objdump that the end result is a dynamically linked bpftool with LIBBPF_DYNAMIC is set, and a statically linked one if it isn't; so the linker seems to be smart enough to just figure out how to do the right thing :) -Toke