buildrootschalter/package/binutils/binutils.mk
Peter Korsgaard a1c1077809 binutils: build host version statically
Otherwise we end up with libbfd/libopcodes in host/usr/$BUILD/$TARGET/lib,
used by the binaries. Unfortunately it also adds rpaths, which first look
in the build directory before here, causing trouble if the toolchain is
used outside BR (E.G. for a SDK) and the build directory location reused
for another incompatible build (E.G. another ARCH), as the binutils
binaries then end up using the wrong libs.

Fix it by linking statically instead.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-10-02 23:19:10 +02:00

57 lines
1.7 KiB
Makefile

#############################################################
#
# binutils
#
#############################################################
BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION))
BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.bz2
BINUTILS_SITE = $(BR2_GNU_MIRROR)/binutils
ifeq ($(ARCH),avr32)
BINUTILS_SITE = ftp://www.at91.com/pub/buildroot
endif
BINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS))
BINUTILS_INSTALL_STAGING = YES
BINUTILS_DEPENDENCIES = $(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext libintl)
# We need to specify host & target to avoid breaking ARM EABI
BINUTILS_CONF_OPT = --disable-multilib --disable-werror \
--host=$(REAL_GNU_TARGET_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
--enable-shared \
$(BINUTILS_EXTRA_CONFIG_OPTIONS)
# Install binutils after busybox to prefer full-blown utilities
ifeq ($(BR2_PACKAGE_BUSYBOX),y)
BINUTILS_DEPENDENCIES += busybox
endif
# "host" binutils should actually be "cross"
# We just keep the convention of "host utility" for now
HOST_BINUTILS_CONF_OPT = --disable-multilib --disable-werror \
--target=$(REAL_GNU_TARGET_NAME) \
--disable-shared --enable-static \
$(BR2_CONFIGURE_STAGING_SYSROOT) \
$(BINUTILS_EXTRA_CONFIG_OPTIONS)
# We just want libbfd, not the full-blown binutils in staging
define BINUTILS_INSTALL_STAGING_CMDS
$(MAKE) -C $(@D)/bfd DESTDIR=$(STAGING_DIR) install
endef
# only libbfd in the target...
BINUTILS_INSTALL_FROM = $(@D)/bfd
# unless we want full...
ifeq ($(BR2_PACKAGE_BINUTILS_TARGET),y)
BINUTILS_INSTALL_FROM = $(@D)
endif
define BINUTILS_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) -C $(BINUTILS_INSTALL_FROM) \
DESTDIR=$(TARGET_DIR) install
endef
$(eval $(call AUTOTARGETS))
$(eval $(call AUTOTARGETS,host))