kumquat-buildroot/toolchain/binutils/binutils.mk
Peter Korsgaard 3fdf0bffb8 buildroot: silence ./configure step when building with 'make -s'
We have been passing -q to ./configure when using 'make -s' for
packages using Makefile.autotools.in for some time. Do the same
for packages using autotools, but not using the
Makefile.autotools.in infrastructure, taking care to not do it
for packages with hand written configure scripts.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2009-10-01 21:24:42 +02:00

187 lines
6.1 KiB
Makefile

#############################################################
#
# build binutils for use on the host system
#
#############################################################
BINUTILS_VERSION:=$(call qstrip,$(BR2_BINUTILS_VERSION))
EXTRA_BINUTILS_CONFIG_OPTIONS=$(call qstrip,$(BR2_EXTRA_BINUTILS_CONFIG_OPTIONS))
BINUTILS_SITE:=$(BR2_KERNEL_MIRROR)/linux/devel/binutils
ifeq ($(BINUTILS_VERSION),2.19.1)
BINUTILS_SITE:=$(BR2_GNU_MIRROR)/binutils/
endif
ifeq ($(BINUTILS_VERSION),2.19)
BINUTILS_SITE:=$(BR2_GNU_MIRROR)/binutils/
endif
ifeq ($(BINUTILS_VERSION),2.18)
BINUTILS_SITE:=$(BR2_GNU_MIRROR)/binutils/
endif
ifeq ($(BINUTILS_VERSION),2.17)
BINUTILS_SITE:=$(BR2_GNU_MIRROR)/binutils/
endif
# We do not rely on the host's gmp/mpfr but use a known working one
BINUTILS_HOST_PREREQ:=
BINUTILS_TARGET_PREREQ:=
ifeq ($(findstring x3.,x$(GCC_VERSION)),x3.)
BINUTILS_NO_MPFR:=y
endif
ifeq ($(findstring x4.0,x$(GCC_VERSION)),x4.0)
BINUTILS_NO_MPFR:=y
endif
ifndef BINUTILS_NO_MPFR
BINUTILS_HOST_PREREQ:=$(TOOLCHAIN_DIR)/gmp/lib/libgmp$(HOST_LIBEXT) \
$(TOOLCHAIN_DIR)/mpfr/lib/libmpfr$(HOST_LIBEXT)
BINUTILS_TARGET_PREREQ:=$(TARGET_DIR)/usr/lib/libgmp$(LIBTGTEXT) \
$(TARGET_DIR)/usr/lib/libmpfr$(LIBTGTEXT)
EXTRA_BINUTILS_CONFIG_OPTIONS+=--with-gmp="$(GMP_HOST_DIR)"
EXTRA_BINUTILS_CONFIG_OPTIONS+=--with-mpfr="$(MPFR_HOST_DIR)"
BINUTILS_TARGET_CONFIG_OPTIONS=--with-gmp="$(GMP_TARGET_DIR)"
BINUTILS_TARGET_CONFIG_OPTIONS+=--with-mpfr="$(MPFR_TARGET_DIR)"
endif
BINUTILS_OFFICIAL_VERSION:=$(BINUTILS_VERSION)$(VENDOR_SUFFIX)$(VENDOR_BINUTILS_RELEASE)
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
BINUTILS_PATCH_DIR:=toolchain/binutils/$(BINUTILS_VERSION)
else # ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SOURCE),)
BINUTILS_SITE:=$(VENDOR_SITE)
BINUTILS_PATCH_DIR:=toolchain/binutils/ext_source/$(VENDOR_PATCH_DIR)/$(BINUTILS_OFFICIAL_VERSION)
endif
ifneq ($(filter xtensa%,$(ARCH)),)
include target/xtensa/patch.in
BINUTILS_PATCH_EXTRA:=$(call XTENSA_PATCH,binutils,$(BINUTILS_PATCH_DIR),. ..)
endif
BINUTILS_SOURCE:=binutils-$(BINUTILS_OFFICIAL_VERSION).tar.bz2
BINUTILS_DIR:=$(TOOLCHAIN_DIR)/binutils-$(BINUTILS_OFFICIAL_VERSION)
BINUTILS_CAT:=$(BZCAT)
BINUTILS_DIR1:=$(TOOLCHAIN_DIR)/binutils-$(BINUTILS_VERSION)-build
$(DL_DIR)/$(BINUTILS_SOURCE):
mkdir -p $(DL_DIR)
$(call DOWNLOAD,$(BINUTILS_SITE),$(BINUTILS_SOURCE))
binutils-unpacked: $(BINUTILS_DIR)/.patched
$(BINUTILS_DIR)/.unpacked: $(DL_DIR)/$(BINUTILS_SOURCE)
mkdir -p $(TOOLCHAIN_DIR)
rm -rf $(BINUTILS_DIR)
$(BINUTILS_CAT) $(DL_DIR)/$(BINUTILS_SOURCE) | tar -C $(TOOLCHAIN_DIR) $(TAR_OPTIONS) -
$(CONFIG_UPDATE) $(@D)
touch $@
binutils-patched: $(BINUTILS_DIR)/.patched
$(BINUTILS_DIR)/.patched: $(BINUTILS_DIR)/.unpacked
# Apply appropriate binutils patches.
toolchain/patch-kernel.sh $(BINUTILS_DIR) $(BINUTILS_PATCH_DIR) \*.patch $(BINUTILS_PATCH_EXTRA)
touch $@
$(BINUTILS_DIR1)/.configured: $(BINUTILS_DIR)/.patched
mkdir -p $(BINUTILS_DIR1)
(cd $(BINUTILS_DIR1); rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
$(BINUTILS_DIR)/configure $(QUIET) \
--prefix=$(BR2_SYSROOT_PREFIX)/usr \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_HOST_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
--mandir=$(BR2_SYSROOT_PREFIX)/usr/share/man \
--infodir=$(BR2_SYSROOT_PREFIX)/usr/share/info \
$(BR2_CONFIGURE_DEVEL_SYSROOT) \
$(BR2_CONFIGURE_STAGING_SYSROOT) \
$(DISABLE_NLS) \
$(MULTILIB) \
--disable-werror \
$(SOFT_FLOAT_CONFIG_OPTION) \
$(EXTRA_BINUTILS_CONFIG_OPTIONS) \
$(QUIET) \
)
touch $@
$(BINUTILS_DIR1)/binutils/objdump: $(BINUTILS_DIR1)/.configured
$(MAKE) -C $(BINUTILS_DIR1) all
# Make install will put gettext data in staging_dir/share/locale.
# Unfortunatey, it isn't configureable.
$(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ld: $(BINUTILS_DIR1)/binutils/objdump
$(MAKE) -C $(BINUTILS_DIR1) $(BR2_SYSROOT_STAGING_DESTDIR) install
# tooldir=/usr build_tooldir=/usr install
#rm -f $(STAGING_DIR)/usr/bin/{ar,as,ld,nm,objdump,ranlib,strip}
binutils: uclibc-configured $(BINUTILS_HOST_PREREQ) $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ld
binutils-source: $(DL_DIR)/$(BINUTILS_SOURCE)
binutils-clean:
-$(MAKE) -C $(BINUTILS_DIR1) DESTDIR=$(STAGING_DIR) \
tooldir=/usr build_tooldir=/usr uninstall
-$(MAKE) -C $(BINUTILS_DIR1) clean
rm -rf $(wildcard $(patsubst %,$(STAGING_DIR)/usr/bin/*%,ar as ld nm objdump ranlib strip c++filt)) \
$(wildcard $(patsubst %,$(STAGING_DIR)/usr/lib/%*,libiberty ldscripts))
binutils-dirclean:
rm -rf $(BINUTILS_DIR1)
binutils-src-dirclean:
rm -rf $(BINUTILS_DIR)
#############################################################
#
# build binutils for use on the target system
#
#############################################################
BINUTILS_DIR2:=$(BUILD_DIR)/binutils-$(BINUTILS_VERSION)-target
$(BINUTILS_DIR2)/.configured: $(BINUTILS_DIR)/.patched
mkdir -p $(BINUTILS_DIR2)
(cd $(BINUTILS_DIR2); rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(BINUTILS_DIR)/configure $(QUIET) \
--prefix=/usr \
--exec-prefix=/usr \
--build=$(GNU_HOST_NAME) \
--host=$(REAL_GNU_TARGET_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
$(DISABLE_NLS) \
$(MULTILIB) \
$(BINUTILS_TARGET_CONFIG_OPTIONS) \
--disable-werror \
$(SOFT_FLOAT_CONFIG_OPTION) \
)
touch $@
$(BINUTILS_DIR2)/binutils/objdump: $(BINUTILS_DIR2)/.configured
PATH=$(TARGET_PATH) $(MAKE) -C $(BINUTILS_DIR2) all
$(TARGET_DIR)/usr/bin/ld: $(BINUTILS_DIR2)/binutils/objdump
PATH=$(TARGET_PATH) \
$(MAKE) DESTDIR=$(TARGET_DIR) \
tooldir=/usr build_tooldir=/usr \
-C $(BINUTILS_DIR2) install
ifneq ($(BR2_HAVE_MANPAGES),y)
rm -rf $(TARGET_DIR)/usr/man
endif
ifneq ($(BR2_HAVE_INFOPAGES),y)
rm -rf $(TARGET_DIR)/usr/info
endif
rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/share/doc
-$(STRIPCMD) $(TARGET_DIR)/usr/$(REAL_GNU_TARGET_NAME)/bin/* > /dev/null 2>&1
-$(STRIPCMD) $(TARGET_DIR)/usr/bin/* > /dev/null 2>&1
binutils_target: $(BINUTILS_TARGET_PREREQ) $(TARGET_DIR)/usr/bin/ld
binutils_target-clean:
-$(MAKE) -C $(BINUTILS_DIR2) clean
rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)* \
$(addprefix $(TARGET_DIR)/usr/bin/, addr2line ar as gprof ld nm objcopy objdump ranlib readelf size strings strip c++filt)
binutils_target-dirclean:
rm -rf $(BINUTILS_DIR2)