diff --git a/ports/libbpf/0001-enable-static-or-shared.patch b/ports/libbpf/0001-enable-static-or-shared.patch new file mode 100644 index 0000000000..eb90a39498 --- /dev/null +++ b/ports/libbpf/0001-enable-static-or-shared.patch @@ -0,0 +1,19 @@ +diff --git a/src/Makefile b/src/Makefile +index 91cc02a..fe30a96 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -62,12 +62,13 @@ OBJS := bpf.o btf.o libbpf.o libbpf_utils.o netlink.o \ + SHARED_OBJS := $(addprefix $(SHARED_OBJDIR)/,$(OBJS)) + STATIC_OBJS := $(addprefix $(STATIC_OBJDIR)/,$(OBJS)) + +-STATIC_LIBS := $(OBJDIR)/libbpf.a + ifndef BUILD_STATIC_ONLY + SHARED_LIBS := $(OBJDIR)/libbpf.so \ + $(OBJDIR)/libbpf.so.$(LIBBPF_MAJOR_VERSION) \ + $(OBJDIR)/libbpf.so.$(LIBBPF_VERSION) + VERSION_SCRIPT := libbpf.map ++else ++ STATIC_LIBS := $(OBJDIR)/libbpf.a + endif + + HEADERS := bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h \ diff --git a/ports/libbpf/0002-fix-dependency-lookup.patch b/ports/libbpf/0002-fix-dependency-lookup.patch new file mode 100644 index 0000000000..4eaa13f017 --- /dev/null +++ b/ports/libbpf/0002-fix-dependency-lookup.patch @@ -0,0 +1,31 @@ +diff --git a/src/Makefile b/src/Makefile +index fe30a96..174931f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -43,15 +43,20 @@ ALL_CFLAGS += $(CFLAGS) \ + ALL_LDFLAGS += $(LDFLAGS) $(EXTRA_LDFLAGS) + + ifeq ($(shell command -v $(PKG_CONFIG) 2> /dev/null),) +-NO_PKG_CONFIG := 1 ++$(error pkg-config not found) + endif +-ifdef NO_PKG_CONFIG +- ALL_LDFLAGS += -lelf -lz +-else +- ALL_CFLAGS += $(shell $(PKG_CONFIG) --cflags libelf zlib) +- ALL_LDFLAGS += $(shell $(PKG_CONFIG) --libs libelf zlib) ++ ++ifneq ($(shell $(PKG_CONFIG) --env-only --exists libelf && echo true),true) ++$(error libelf not found) + endif + ++ifneq ($(shell $(PKG_CONFIG) --env-only --exists zlib && echo true),true) ++$(error zlib not found) ++endif ++ ++ALL_CFLAGS += $(shell $(PKG_CONFIG) --env-only --cflags libelf zlib) ++ALL_LDFLAGS += $(shell $(PKG_CONFIG) --env-only --libs libelf zlib) ++ + OBJDIR ?= . + SHARED_OBJDIR := $(OBJDIR)/sharedobjs + STATIC_OBJDIR := $(OBJDIR)/staticobjs diff --git a/ports/libbpf/portfile.cmake b/ports/libbpf/portfile.cmake new file mode 100644 index 0000000000..18819b282d --- /dev/null +++ b/ports/libbpf/portfile.cmake @@ -0,0 +1,66 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libbpf/libbpf + REF "v${VERSION}" + SHA512 29996f76d45222070b7554c1a098d67cf0933876a0fb3965800a304239a7e8dcc4d2ecc3ffe049dfbebe62e29e12cca793c6b22d5845955dd17faff5786691dd + HEAD_REF master + PATCHES + 0001-enable-static-or-shared.patch + 0002-fix-dependency-lookup.patch +) + +find_program(MAKE make REQUIRED) + +set(OPTIONS "") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + list(APPEND OPTIONS "BUILD_STATIC_ONLY=y") +endif() + +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(COPY "${SOURCE_PATH}/" DESTINATION "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/") + z_vcpkg_setup_pkgconfig_path(CONFIG RELEASE) + + vcpkg_execute_build_process( + COMMAND + "${MAKE}" + "install" + "-j${VCPKG_CONCURRENCY}" + "PREFIX=${CURRENT_PACKAGES_DIR}" + "LIBDIR=${CURRENT_PACKAGES_DIR}/lib" + ${OPTIONS} + WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/src" + LOGNAME "make-install-${TARGET_TRIPLET}-rel" + ) + + z_vcpkg_restore_pkgconfig_path() +endif() + +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(COPY "${SOURCE_PATH}/" DESTINATION "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/") + z_vcpkg_setup_pkgconfig_path(CONFIG DEBUG) + + vcpkg_execute_build_process( + COMMAND + "${MAKE}" + "install" + "-j${VCPKG_CONCURRENCY}" + "PREFIX=${CURRENT_PACKAGES_DIR}/debug" + "LIBDIR=${CURRENT_PACKAGES_DIR}/debug/lib" + ${OPTIONS} + WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/src" + LOGNAME "make-install-${TARGET_TRIPLET}-dbg" + ) + + z_vcpkg_restore_pkgconfig_path() +endif() + +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/LICENSE" + "${SOURCE_PATH}/LICENSE.LGPL-2.1" + "${SOURCE_PATH}/LICENSE.BSD-2-Clause" +) + diff --git a/ports/libbpf/vcpkg.json b/ports/libbpf/vcpkg.json new file mode 100644 index 0000000000..8feed37aac --- /dev/null +++ b/ports/libbpf/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "libbpf", + "version": "1.7.0", + "description": "Supports loading compiled BPF object files into the Linux Kernel", + "license": "LGPL-2.1-only OR BSD-2-Clause", + "supports": "linux", + "dependencies": [ + "elfutils", + { + "name": "pkgconf", + "host": true + }, + { + "name": "vcpkg-make", + "host": true + }, + "zlib" + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 9b9c0fa9fb..6a6bb90177 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -4764,6 +4764,10 @@ "baseline": "1.4.1", "port-version": 0 }, + "libbpf": { + "baseline": "1.7.0", + "port-version": 0 + }, "libbson": { "baseline": "2.3.0", "port-version": 0 diff --git a/versions/l-/libbpf.json b/versions/l-/libbpf.json new file mode 100644 index 0000000000..a5f1c5d9c1 --- /dev/null +++ b/versions/l-/libbpf.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "aea6aac91b32835628f587b7ec0ea00f0152f35a", + "version": "1.7.0", + "port-version": 0 + } + ] +}