summaryrefslogtreecommitdiffstats
path: root/toolchain/binutils/Makefile
blob: 74d7c3c4d6d201bb4a3ba52b458642c98a28c8b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#
# 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:=$(call qstrip,$(CONFIG_BINUTILS_VERSION))
BASE_VERSION:=$(subst $(space),.,$(wordlist 1,2,$(subst .,$(space),$(PKG_VERSION))))

PKG_SOURCE_URL:=@GNU/binutils/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_CPE_ID:=cpe:/a:gnu:binutils

TAR_OPTIONS += --exclude='*.rej'

ifeq ($(PKG_VERSION),2.44)
  PKG_HASH:=ce2017e059d63e67ddb9240e9d4ec49c2893605035cd60e92ad53177f4377237
endif

ifeq ($(PKG_VERSION),2.45.1)
  PKG_HASH:=5fe101e6fe9d18fdec95962d81ed670fdee5f37e3f48f0bef87bddf862513aa5
endif

ifeq ($(PKG_VERSION),2.46.0)
  PKG_HASH:=d75a94f4d73e7a4086f7513e67e439e8fcdcbb726ffe63f4661744e6256b2cf2
endif

HOST_BUILD_PARALLEL:=1

PATCH_DIR:=./patches/$(BASE_VERSION)

include $(INCLUDE_DIR)/toolchain-build.mk

export ZSTD_CFLAGS=-I$(STAGING_DIR_HOST)/include -pthread
export ZSTD_LIBS=-L$(STAGING_DIR_HOST)/lib -lzstd -lpthread

ifdef CONFIG_GCC_USE_GRAPHITE
  GRAPHITE_CONFIGURE:= --with-isl=$(STAGING_DIR_HOST)
else
  GRAPHITE_CONFIGURE:= --without-isl --without-cloog
endif

HOST_CONFIGURE_ARGS = \
	--prefix=$(TOOLCHAIN_DIR) \
	--build=$(GNU_HOST_NAME) \
	--host=$(GNU_HOST_NAME) \
	--target=$(REAL_GNU_TARGET_NAME) \
	--with-sysroot=$(TOOLCHAIN_DIR) \
	--enable-dependency-tracking \
	--enable-serial-configure \
	--enable-obsolete \
	--enable-deterministic-archives \
	--enable-plugins \
	--enable-lto \
	--disable-werror \
	--disable-gprofng \
	--disable-multilib \
	--disable-nls \
	--disable-sim \
	--disable-gdb \
	--with-system-zlib \
	--with-zstd \
	--without-debuginfod \
	$(GRAPHITE_CONFIGURE) \
	$(SOFT_FLOAT_CONFIG_OPTION) \
	$(call qstrip,$(CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS))

ifneq ($(CONFIG_SSP_SUPPORT),)
  HOST_CONFIGURE_ARGS+= \
		--enable-libssp
else
  HOST_CONFIGURE_ARGS+= \
		--disable-libssp
endif

ifneq ($(CONFIG_EXTRA_TARGET_ARCH),)
  HOST_CONFIGURE_ARGS+= \
		--enable-targets=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-linux-$(TARGET_SUFFIX)
endif

BINUTILS_VARS = \
	ac_cv_path_EXPECT= \
	ac_cv_path_GMSGFMT=: \
	ac_cv_path_MSGFMT=: \
	ac_cv_path_MSGMERGE=: \
	ac_cv_path_XGETTEXT=: \
	ac_cv_prog_ACLOCAL=$(STAGING_DIR_HOST)/bin/aclocal \
	ac_cv_prog_AUTOCONF=$(STAGING_DIR_HOST)/bin/autoconf \
	ac_cv_prog_AUTOHEADER=$(STAGING_DIR_HOST)/bin/autoheader \
	ac_cv_prog_AUTOMAKE=$(STAGING_DIR_HOST)/bin/automake \
	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 \


HOST_CONFIGURE_VARS += $(BINUTILS_VARS)

HOST_MAKE_VARS += $(BINUTILS_VARS)

define Host/Prepare
	$(call Host/Prepare/Default)
	ln -snf $(notdir $(HOST_BUILD_DIR)) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
	$(CP) $(SCRIPT_DIR)/config.{guess,sub} $(HOST_BUILD_DIR)/
endef

define Host/Compile
	+$(HOST_MAKE_VARS) \
	$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) all
endef

define Host/Install
	$(MAKE) -C $(HOST_BUILD_DIR) \
		install
	$(call FixupLibdir,$(TOOLCHAIN_DIR))
	$(CP) $(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-readelf $(HOST_BUILD_PREFIX)/bin/readelf
endef

define Host/Clean
	rm -rf \
		$(HOST_BUILD_DIR) \
		$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
endef

$(eval $(call HostBuild))