History

resolve_btfids: Fix linker flags detection

The "|| echo -lzstd" default makes zstd an unconditional link dependency of resolve_btfids. On systems where libzstd-dev is not installed and pkg-config fails, the linker fails: ld: cannot find -lzstd: No such file or directory libzstd is a transitive dependency of libelf, so the -lzstd flag is strictly necessary only for static builds [1]. Remove ZSTD_LIBS variable, and instead set LIBELF_LIBS depending on whether the build is static or not. Use $(HOSTPKG_CONFIG) as primary source of the flags list. Also add a default value for HOSTPKG_CONFIG in case it's not built via the toplevel Makefile. Pass it from selftests/bpf too. [1] https://lore.kernel.org/bpf/4ff82800-2daa-4b9f-95a9-6f512859ee70@linux.dev/

Ihor Solodrai committed 8 months ago

Commit b0dcdcb1 parent 325d1ba2 files · +8 −2Browse files

Showing the changes to tools/testing (1 of 2 files). Show all

Unified · Split

tools/testing/selftests/bpf/Makefile+1−0
@@ -409,6 +409,7 @@ $(RESOLVE_BTFIDS): $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/resolve_btfids \ · 408 unmodified lines
409 CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" \409 CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)" \
410 LIBBPF_INCLUDE=$(HOST_INCLUDE_DIR) \410 LIBBPF_INCLUDE=$(HOST_INCLUDE_DIR) \
411 EXTRA_LDFLAGS='$(SAN_LDFLAGS) $(EXTRA_LDFLAGS)' \411 EXTRA_LDFLAGS='$(SAN_LDFLAGS) $(EXTRA_LDFLAGS)' \
412 HOSTPKG_CONFIG=$(PKG_CONFIG) \
412 OUTPUT=$(HOST_BUILD_DIR)/resolve_btfids/ BPFOBJ=$(HOST_BPFOBJ)413 OUTPUT=$(HOST_BUILD_DIR)/resolve_btfids/ BPFOBJ=$(HOST_BPFOBJ)
413 414
414# Get Clang's default includes on this system, as opposed to those seen by415# Get Clang's default includes on this system, as opposed to those seen by