From: Tony Ambardar Date: Sat, 24 Nov 2018 00:33:45 +0000 (-0800) Subject: iproute2: simplify linking libelf for eBFP/XDP object file support X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=26681fa6a6fcbec0024906eb8367e9a3160521fb;p=openwrt%2Fstaging%2Fblogic.git iproute2: simplify linking libelf for eBFP/XDP object file support Simplify build and runtime dependencies on libelf, which allows tc and ip to load BPF and XDP object files respectively. Preserve optionality of libelf by having configuration script follow the HAVE_ELF environment variable, used similarly to the HAVE_MNL variable. Signed-off-by: Tony Ambardar --- diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index 56a16d095c7c..a9bcfd40a033 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -49,7 +49,7 @@ $(call Package/iproute2/Default) VARIANT:=full PROVIDES:=ip ALTERNATIVES:=300:/sbin/ip:/usr/libexec/ip-full - DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl + DEPENDS:=+libnl-tiny +libelf +(PACKAGE_devlink||PACKAGE_rdma):libmnl endef define Package/tc @@ -100,6 +100,14 @@ ifeq ($(BUILD_VARIANT),tiny) IP_CONFIG_TINY:=y endif +ifeq ($(BUILD_VARIANT),full) + HAVE_ELF:=y +endif + +ifeq ($(BUILD_VARIANT),tc) + HAVE_ELF:=y +endif + ifdef CONFIG_PACKAGE_devlink HAVE_MNL:=y endif @@ -121,6 +129,7 @@ MAKE_FLAGS += \ KERNEL_INCLUDE="$(LINUX_DIR)/user_headers/include" \ SHARED_LIBS="" \ IP_CONFIG_TINY=$(IP_CONFIG_TINY) \ + HAVE_ELF=$(HAVE_ELF) \ HAVE_MNL=$(HAVE_MNL) \ IPT_LIB_DIR=/usr/lib/iptables \ XT_LIB_DIR=/usr/lib/iptables \ diff --git a/package/network/utils/iproute2/patches/145-keep_libelf_optional.patch b/package/network/utils/iproute2/patches/145-keep_libelf_optional.patch new file mode 100644 index 000000000000..2e3ad18809c4 --- /dev/null +++ b/package/network/utils/iproute2/patches/145-keep_libelf_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -228,7 +228,7 @@ EOF + + check_elf() + { +- if ${PKG_CONFIG} libelf --exists; then ++ if [ "${HAVE_ELF}" = "y" ] && ${PKG_CONFIG} libelf --exists; then + echo "HAVE_ELF:=y" >>$CONFIG + echo "yes" + diff --git a/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch b/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch deleted file mode 100644 index 31aacffba822..000000000000 --- a/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- a/configure -+++ b/configure -@@ -231,8 +231,9 @@ check_elf() - echo "HAVE_ELF:=y" >>$CONFIG - echo "yes" - -- echo 'CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG -- echo 'LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG -+ echo 'CFLAGS += -DHAVE_ELF' >> $CONFIG -+ echo 'ELF_CFLAGS += ' `${PKG_CONFIG} libelf --cflags` >> $CONFIG -+ echo 'ELF_LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG - else - echo "no" - fi ---- a/lib/Makefile -+++ b/lib/Makefile -@@ -11,9 +11,17 @@ UTILOBJ = utils.o rt_names.o ll_map.o ll - inet_proto.o namespace.o json_writer.o json_print.o \ - names.o color.o bpf.o exec.o fs.o - -+ELFOBJ=$(patsubst %.o,%.elf.o,$(UTILOBJ)) -+ - NLOBJ=libgenl.o libnetlink.o - --all: libnetlink.a libutil.a -+all: libnetlink.a libutil.a libutil-elf.a -+ -+%.o: %.c -+ $(QUIET_CC)$(CC) $(CFLAGS) -UHAVE_ELF $(EXTRA_CFLAGS) -c -o $@ $< -+ -+%.elf.o: %.c -+ $(QUIET_CC)$(CC) $(CFLAGS) $(ELF_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $< - - libnetlink.a: $(NLOBJ) - $(QUIET_AR)$(AR) rcs $@ $^ -@@ -21,7 +29,10 @@ libnetlink.a: $(NLOBJ) - libutil.a: $(UTILOBJ) $(ADDLIB) - $(QUIET_AR)$(AR) rcs $@ $^ - -+libutil-elf.a: $(ELFOBJ) $(ADDLIB) -+ $(QUIET_AR)$(AR) rcs $@ $^ -+ - install: - - clean: -- rm -f $(NLOBJ) $(UTILOBJ) $(ADDLIB) libnetlink.a libutil.a -+ rm -f $(NLOBJ) $(UTILOBJ) $(ELFOBJ) $(ADDLIB) libnetlink.a libutil.a libutil-elf.a ---- a/tc/Makefile -+++ b/tc/Makefile -@@ -133,8 +133,8 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc - - all: tc $(TCSO) - --tc: $(TCOBJ) $(LIBNETLINK) libtc.a -- $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@ -+tc: $(TCOBJ) $(subst libutil.a,libutil-elf.a,$(LIBNETLINK)) libtc.a -+ $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) $(ELF_LDLIBS) -o $@ - - libtc.a: $(TCLIB) - $(QUIET_AR)$(AR) rcs $@ $^