kumquat-buildroot/package/iproute2/iproute2.mk
Thomas Petazzoni 9202490282 iproute2: fix no-thread build
iproute2 believes that it needs to link with libpthread for its arpd
binary, because "some db implementations require thread". Therefore, our
iproute2.mk explicitly disables the build of arpd when thread support is
not available.

However, the sed expression it uses no longer works. The Makefile used
to look like:

TARGETS = foo baz baz arpd foobar

so replacing " arpd " with a space was working fine. However, the
Makefile got changed in iproute2 to:

ifeq (... berkeleydb available ...)
     TARGETS += arpd
endif

i.e, with no space at the end of the line. This made our sed expression
ineffective, causing build issues with no-thread configurations since
arpd was no longer disabled.

To address this, instead of sed-ing the Makefile, we overwrite the
berkeleydb detection of iproute2, by writing to the "Config" file, like
we're doing for other aspects of the package.

Fixes:

  http://autobuild.buildroot.net/results/03a37a2372a4c2e438a073e015c49d9e554b86b7/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-08-07 23:05:21 +02:00

80 lines
2.3 KiB
Makefile

################################################################################
#
# iproute2
#
################################################################################
IPROUTE2_VERSION = 4.5.0
IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz
IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2
IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \
$(if $(BR2_PACKAGE_LIBMNL),libmnl)
IPROUTE2_LICENSE = GPLv2
IPROUTE2_LICENSE_FILES = COPYING
# If both iproute2 and busybox are selected, make certain we win
# the fight over who gets to have their utils actually installed.
ifeq ($(BR2_PACKAGE_BUSYBOX),y)
IPROUTE2_DEPENDENCIES += busybox
endif
ifeq ($(BR2_PACKAGE_ELFUTILS),y)
IPROUTE2_DEPENDENCIES += elfutils
endif
# If we've got iptables enable xtables support for tc
ifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx)
IPROUTE2_DEPENDENCIES += iptables
define IPROUTE2_WITH_IPTABLES
# Makefile is busted so it never passes IPT_LIB_DIR properly
$(SED) "s/-DIPT/-DXT/" $(IPROUTE2_DIR)/tc/Makefile
endef
else
define IPROUTE2_WITH_IPTABLES
# em_ipset needs xtables, but configure misdetects it
echo "TC_CONFIG_IPSET:=n" >>$(IPROUTE2_DIR)/Config
echo "TC_CONFIG_XT:=n" >>$(IPROUTE2_DIR)/Config
endef
endif
# arpd needs BerkeleyDB and links against pthread
ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
IPROUTE2_DEPENDENCIES += berkeleydb
else
define IPROUTE2_DISABLE_ARPD
echo "HAVE_BERKELEY_DB:=n" >> $(IPROUTE2_DIR)/Config
endef
endif
# ifcfg needs bash
ifeq ($(BR2_PACKAGE_BASH),)
define IPROUTE2_REMOVE_IFCFG
rm -f $(TARGET_DIR)/sbin/ifcfg
endef
endif
define IPROUTE2_CONFIGURE_CMDS
$(SED) 's/gcc/$$CC $$CFLAGS/g' $(@D)/configure
cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure
$(IPROUTE2_DISABLE_ARPD)
$(IPROUTE2_WITH_IPTABLES)
endef
define IPROUTE2_BUILD_CMDS
$(SED) 's/$$(CCOPTS)//' $(@D)/netem/Makefile
$(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) \
DBM_INCLUDE="$(STAGING_DIR)/usr/include" \
CCOPTS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \
SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D)
endef
define IPROUTE2_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" \
SBINDIR=/sbin \
DOCDIR=/usr/share/doc/iproute2-$(IPROUTE2_VERSION) \
MANDIR=/usr/share/man install
$(IPROUTE2_REMOVE_IFCFG)
endef
$(eval $(generic-package))