mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-05-04 09:31:26 +02:00
ld.bfd is the default/only implementation for now but things may change in future. Signed-off-by: Konstantin Demin <rockdrilla@gmail.com> Link: https://github.com/openwrt/openwrt/pull/21997 Signed-off-by: Nick Hainke <vincent@systemli.org>
197 lines
4.6 KiB
Makefile
197 lines
4.6 KiB
Makefile
#
|
|
# Copyright (C) 2006-2013 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=binutils
|
|
PKG_VERSION:=2.46.0
|
|
PKG_RELEASE:=1
|
|
|
|
PKG_SOURCE_URL:=@GNU/binutils
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
|
PKG_HASH:=d75a94f4d73e7a4086f7513e67e439e8fcdcbb726ffe63f4661744e6256b2cf2
|
|
|
|
PKG_FIXUP:=patch-libtool
|
|
PKG_LIBTOOL_PATHS:=. gas bfd opcodes gprof gprofng binutils ld libiberty gold intl libctf libsframe
|
|
PKG_REMOVE_FILES:=libtool.m4
|
|
PKG_INSTALL:=1
|
|
|
|
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
|
PKG_LICENSE:=GPL-3.0+
|
|
PKG_CPE_ID:=cpe:/a:gnu:binutils
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_BUILD_FLAGS:=no-mips16
|
|
|
|
include $(INCLUDE_DIR)/nls.mk
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define Package/libbfd
|
|
SECTION:=libs
|
|
CATEGORY:=Libraries
|
|
TITLE:=libbfd
|
|
DEPENDS:=+zlib $(INTL_DEPENDS)
|
|
endef
|
|
|
|
define Package/libctf
|
|
SECTION:=libs
|
|
CATEGORY:=Libraries
|
|
TITLE:=libctf
|
|
DEPENDS:=+libbfd
|
|
endef
|
|
|
|
define Package/libopcodes
|
|
SECTION:=libs
|
|
CATEGORY:=Libraries
|
|
TITLE:=libopcodes
|
|
DEPENDS:=+libbfd
|
|
endef
|
|
|
|
define Package/binutils
|
|
SECTION:=devel
|
|
CATEGORY:=Development
|
|
TITLE:=binutils
|
|
DEPENDS:=+objdump +ar
|
|
ALTERNATIVES:=200:/usr/bin/strings:/usr/bin/binutils-strings
|
|
endef
|
|
|
|
define Package/objdump
|
|
SECTION:=devel
|
|
CATEGORY:=Development
|
|
TITLE:=objdump
|
|
DEPENDS:=+libopcodes +libctf
|
|
endef
|
|
|
|
define Package/ar
|
|
SECTION:=devel
|
|
CATEGORY:=Development
|
|
TITLE:=ar
|
|
DEPENDS:=+zlib +libbfd
|
|
endef
|
|
|
|
define Package/binutils/description
|
|
The Binutils package contains a linker, an assembler, and other tools for handling object files
|
|
endef
|
|
|
|
TARGET_CFLAGS += $(FPIC) -Wno-unused-value
|
|
|
|
TARGET_LDFLAGS += $(if $(INTL_FULL),-lintl)
|
|
|
|
CONFIGURE_ARGS += \
|
|
--host=$(REAL_GNU_TARGET_NAME) \
|
|
--target=$(REAL_GNU_TARGET_NAME) \
|
|
--enable-shared \
|
|
--enable-dependency-tracking \
|
|
--enable-serial-configure \
|
|
--enable-obsolete \
|
|
--enable-deterministic-archives \
|
|
--enable-install-libiberty \
|
|
--enable-install-libbfd \
|
|
--enable-install-libctf \
|
|
--disable-werror \
|
|
--disable-gprofng \
|
|
--disable-nls \
|
|
--disable-sim \
|
|
--disable-gdb \
|
|
--with-system-zlib \
|
|
--without-debuginfod \
|
|
--without-msgpack \
|
|
--without-zstd \
|
|
|
|
|
|
BINUTILS_VARS = \
|
|
ac_cv_path_EXPECT= \
|
|
ac_cv_prog_CARGO= \
|
|
ac_cv_prog_EXPECT= \
|
|
ac_cv_prog_GDC= \
|
|
ac_cv_prog_GNATBIND= \
|
|
ac_cv_prog_GNATMAKE= \
|
|
ac_cv_prog_MAKEINFO= \
|
|
ac_cv_prog_ac_ct_GDC= \
|
|
ac_cv_prog_ac_ct_GNATBIND= \
|
|
ac_cv_prog_ac_ct_GNATMAKE= \
|
|
ac_cv_dejagnu_compat=no \
|
|
ac_cv_libctf_tcl_try=no \
|
|
acx_cv_cc_gcc_supports_ada=no \
|
|
acx_cv_d_compiler_works=no \
|
|
|
|
|
|
CONFIGURE_VARS += $(BINUTILS_VARS)
|
|
|
|
MAKE_VARS += $(BINUTILS_VARS) \
|
|
CPPFLAGS="$(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS)"
|
|
|
|
define Build/Install
|
|
$(call Build/Install/Default)
|
|
$(MAKE) -C $(PKG_BUILD_DIR)/libiberty \
|
|
target_header_dir=libiberty \
|
|
DESTDIR="$(PKG_INSTALL_DIR)" \
|
|
MULTIOSDIR="" \
|
|
install
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
|
|
endef
|
|
|
|
define Package/libbfd/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libbfd*.so* $(1)/usr/lib/
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libsframe*.so* $(1)/usr/lib/
|
|
endef
|
|
|
|
define Package/libctf/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libctf*.so* $(1)/usr/lib/
|
|
endef
|
|
|
|
define Package/libopcodes/install
|
|
$(INSTALL_DIR) $(1)/usr/lib
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libopcodes*.so $(1)/usr/lib/
|
|
endef
|
|
|
|
define Package/objdump/install
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/objdump $(1)/usr/bin/
|
|
endef
|
|
|
|
define Package/ar/install
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ar $(1)/usr/bin/
|
|
endef
|
|
|
|
define Package/binutils/install
|
|
$(INSTALL_DIR) $(1)/usr $(1)/bin
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ $(1)/usr/
|
|
mv $(1)/usr/bin/strings $(1)/usr/bin/binutils-strings
|
|
rm -f $(1)/usr/bin/objdump
|
|
rm -f $(1)/usr/bin/ar
|
|
|
|
: # deduplicate "/usr/bin/ld.*":
|
|
: # "ld.bfd" is the implementation, "ld" is the variant selector,
|
|
: # so the link should be "ld" -> "ld.bfd"
|
|
_ld='$(1)/usr/bin/ld'; \
|
|
[ -f "$$$${_ld}" ] || exit 0; \
|
|
find "$$$${_ld%/*}/" -follow -name "$$$${_ld##*/}*" -type f \
|
|
| grep -Fxv -e "$$$${_ld}" | sort -V \
|
|
| while read -r _ld_variant; do \
|
|
cmp -s "$$$${_ld}" "$$$${_ld_variant}" || continue; \
|
|
cp -L "$$$${_ld_variant}" "$$$${_ld_variant}.new"; \
|
|
rm -f "$$$${_ld_variant}"; \
|
|
mv "$$$${_ld_variant}.new" "$$$${_ld_variant}"; \
|
|
rm -f "$$$${_ld}"; \
|
|
ln -s "$$$${_ld_variant##*/}" "$$$${_ld}"; \
|
|
break; \
|
|
done
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,libbfd))
|
|
$(eval $(call BuildPackage,libctf))
|
|
$(eval $(call BuildPackage,libopcodes))
|
|
$(eval $(call BuildPackage,binutils))
|
|
$(eval $(call BuildPackage,objdump))
|
|
$(eval $(call BuildPackage,ar))
|