lkml.org 
[lkml]   [2020]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH bpf-next v3 09/11] selftests: Remove tools/lib/bpf from include path
    From
    Date
    From: Toke Høiland-Jørgensen <toke@redhat.com>

    To make sure no new files are introduced that doesn't include the bpf/
    prefix in its #include, remove tools/lib/bpf from the include path
    entirely.

    Instead, we introduce a new header files directory under the scratch tools/
    dir, and add a rule to run the 'install_headers' rule from libbpf to have a
    full set of consistent libbpf headers in $(OUTPUT)/tools/include/bpf, and
    then use $(OUTPUT)/tools/include as the include path for selftests.

    For consistency we also make sure we put all the scratch build files from
    other bpftool and libbpf into tools/build/, so everything stays within
    selftests/.

    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    ---
    tools/testing/selftests/bpf/.gitignore | 1 +
    tools/testing/selftests/bpf/Makefile | 50 +++++++++++++++++++-------------
    2 files changed, 31 insertions(+), 20 deletions(-)

    diff --git a/tools/testing/selftests/bpf/.gitignore b/tools/testing/selftests/bpf/.gitignore
    index 1d14e3ab70be..849be9990ad2 100644
    --- a/tools/testing/selftests/bpf/.gitignore
    +++ b/tools/testing/selftests/bpf/.gitignore
    @@ -40,3 +40,4 @@ test_cpp
    /bpf_gcc
    /tools
    bpf_helper_defs.h
    +/include/bpf
    diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
    index 1fd7da49bd56..c3fa695bb028 100644
    --- a/tools/testing/selftests/bpf/Makefile
    +++ b/tools/testing/selftests/bpf/Makefile
    @@ -20,8 +20,8 @@ CLANG ?= clang
    LLC ?= llc
    LLVM_OBJCOPY ?= llvm-objcopy
    BPF_GCC ?= $(shell command -v bpf-gcc;)
    -CFLAGS += -g -Wall -O2 $(GENFLAGS) -I$(CURDIR) -I$(APIDIR) -I$(LIBDIR) \
    - -I$(BPFDIR) -I$(GENDIR) -I$(TOOLSINCDIR) \
    +CFLAGS += -g -Wall -O2 $(GENFLAGS) -I$(CURDIR) -I$(APIDIR) \
    + -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) -I$(TOOLSINCDIR) \
    -Dbpf_prog_load=bpf_prog_test_load \
    -Dbpf_load_program=bpf_test_load_program
    LDLIBS += -lcap -lelf -lz -lrt -lpthread
    @@ -97,11 +97,15 @@ OVERRIDE_TARGETS := 1
    override define CLEAN
    $(call msg,CLEAN)
    $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
    - $(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/ clean
    endef

    include ../lib.mk

    +SCRATCH_DIR := $(OUTPUT)/tools
    +BUILD_DIR := $(SCRATCH_DIR)/build
    +INCLUDE_DIR := $(SCRATCH_DIR)/include
    +INCLUDE_BPF := $(INCLUDE_DIR)/bpf/bpf.h
    +
    # Define simple and short `make test_progs`, `make test_sysctl`, etc targets
    # to build individual tests.
    # NOTE: Semicolon at the end is critical to override lib.mk's default static
    @@ -120,7 +124,7 @@ $(OUTPUT)/urandom_read: urandom_read.c
    $(call msg,BINARY,,$@)
    $(CC) -o $@ $< -Wl,--build-id

    -$(OUTPUT)/test_stub.o: test_stub.c
    +$(OUTPUT)/test_stub.o: test_stub.c $(INCLUDE_BPF)
    $(call msg,CC,,$@)
    $(CC) -c $(CFLAGS) -o $@ $<

    @@ -129,7 +133,7 @@ $(OUTPUT)/runqslower: force
    $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \
    OUTPUT=$(CURDIR)/tools/ VMLINUX_BTF=$(abspath ../../../../vmlinux)

    -BPFOBJ := $(OUTPUT)/libbpf.a
    +BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a

    $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED): $(OUTPUT)/test_stub.o $(BPFOBJ)

    @@ -155,17 +159,23 @@ force:
    DEFAULT_BPFTOOL := $(OUTPUT)/tools/sbin/bpftool
    BPFTOOL ?= $(DEFAULT_BPFTOOL)

    -$(DEFAULT_BPFTOOL): force
    - $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \
    +$(BUILD_DIR)/libbpf $(BUILD_DIR)/bpftool $(INCLUDE_DIR):
    + $(call msg,MKDIR,,$@)
    + mkdir -p $@
    +
    +$(DEFAULT_BPFTOOL): force $(BUILD_DIR)/bpftool
    + $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \
    + OUTPUT=$(BUILD_DIR)/bpftool/ \
    prefix= DESTDIR=$(OUTPUT)/tools/ install

    -$(BPFOBJ): force
    - $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(OUTPUT)/
    +$(BPFOBJ): force $(BUILD_DIR)/libbpf
    + $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \
    + OUTPUT=$(BUILD_DIR)/libbpf/

    -BPF_HELPERS := $(OUTPUT)/bpf_helper_defs.h $(wildcard $(BPFDIR)/bpf_*.h)
    -$(OUTPUT)/bpf_helper_defs.h: $(BPFOBJ)
    - $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \
    - OUTPUT=$(OUTPUT)/ $(OUTPUT)/bpf_helper_defs.h
    +BPF_HELPERS := $(wildcard $(BPFDIR)/bpf_*.h) $(INCLUDE_BPF)
    +$(INCLUDE_BPF): force $(BPFOBJ)
    + $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) install_headers \
    + OUTPUT=$(BUILD_DIR)/libbpf/ DESTDIR=$(SCRATCH_DIR) prefix=

    # Get Clang's default includes on this system, as opposed to those seen by
    # '-target bpf'. This fixes "missing" files on some architectures/distros,
    @@ -185,8 +195,8 @@ MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian)

    CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG))
    BPF_CFLAGS = -g -D__TARGET_ARCH_$(SRCARCH) $(MENDIAN) \
    - -I$(OUTPUT) -I$(CURDIR) -I$(CURDIR)/include/uapi \
    - -I$(APIDIR) -I$(LIBDIR) -I$(BPFDIR) -I$(abspath $(OUTPUT)/../usr/include)
    + -I$(INCLUDE_DIR) -I$(CURDIR) -I$(CURDIR)/include/uapi \
    + -I$(APIDIR) -I$(abspath $(OUTPUT)/../usr/include)

    CLANG_CFLAGS = $(CLANG_SYS_INCLUDES) \
    -Wno-compare-distinct-pointer-types
    @@ -306,7 +316,7 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \
    $(TRUNNER_EXTRA_HDRS) \
    $(TRUNNER_BPF_OBJS) \
    $(TRUNNER_BPF_SKELS) \
    - $$(BPFOBJ) | $(TRUNNER_OUTPUT)
    + $$(BPFOBJ) $$(INCLUDE_BPF) | $(TRUNNER_OUTPUT)
    $$(call msg,TEST-OBJ,$(TRUNNER_BINARY),$$@)
    cd $$(@D) && $$(CC) $$(CFLAGS) -c $(CURDIR)/$$< $$(LDLIBS) -o $$(@F)

    @@ -314,7 +324,7 @@ $(TRUNNER_EXTRA_OBJS): $(TRUNNER_OUTPUT)/%.o: \
    %.c \
    $(TRUNNER_EXTRA_HDRS) \
    $(TRUNNER_TESTS_HDR) \
    - $$(BPFOBJ) | $(TRUNNER_OUTPUT)
    + $$(BPFOBJ) $$(INCLUDE_BPF) | $(TRUNNER_OUTPUT)
    $$(call msg,EXT-OBJ,$(TRUNNER_BINARY),$$@)
    $$(CC) $$(CFLAGS) -c $$< $$(LDLIBS) -o $$@

    @@ -326,7 +336,7 @@ ifneq ($2,)
    endif

    $(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \
    - $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \
    + $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) $$(INCLUDE_BPF) \
    | $(TRUNNER_BINARY)-extras
    $$(call msg,BINARY,,$$@)
    $$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@
    @@ -388,7 +398,7 @@ $(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ)
    $(call msg,CXX,,$@)
    $(CXX) $(CFLAGS) $^ $(LDLIBS) -o $@

    -EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) \
    +EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) \
    prog_tests/tests.h map_tests/tests.h verifier/tests.h \
    feature \
    - $(addprefix $(OUTPUT)/,*.o *.skel.h no_alu32 bpf_gcc tools)
    + $(addprefix $(OUTPUT)/,*.o *.skel.h no_alu32 bpf_gcc)
    \
     
     \ /
      Last update: 2020-01-16 14:28    [W:3.996 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site