25 %define host_arch %{ARCH}-tizen-linux-gnu%{?ABI}
27 %define target_cpu %{?cross}%{!?cross:%{ARCH}}
28 %define target_abi %{?cross:%{?armv7l:eabi}%{?armv7hl:eabihf}}%{!?cross:%{?ABI}}
30 %define target_arch %{target_cpu}-tizen-linux-gnu%{?target_abi}
34 %define binutils_run_tests 1
38 %if 0%{?dump_configure}
39 %define binutils_dump_configure 1
42 # Enable this when testing on device to:
43 # 1. Enable macro to turn on testsuite building ('binutils_run_tests 1')
44 # 2. Keep 'build-dir/' folder in build stage as we do not want to rebuild all
45 # binutils again on device after invoking rpmbuild --short-circuit -bc ...
46 # 3. Skip configure and make commands and go directly to 'make check'
47 %if 0%{?run_tests_on_device}
48 %define binutils_run_tests 1
49 %define binutils_keep_build_dir 1
50 %define binutils_skip_configure 1
51 %define binutils_skip_make 1
54 # Exit right after 'make ..' step to keep all object files produced by binutils build
55 %if 0%{?exit_on_make_finish}
56 %define binutils_exit_on_make_finish 1
59 Name: binutils%{?cross:-%{cross}}
60 BuildRequires: binutils-libs
61 BuildRequires: makeinfo
64 BuildRequires: ncurses-devel
65 BuildRequires: zlib-devel
66 BuildRequires: gcc-c++
67 %if 0%{?binutils_run_tests}
68 BuildRequires: dejagnu
69 BuildRequires: glibc-devel-static
71 %if 0%{?binutils_dump_configure}
72 BuildRequires: configure-dumper
76 Url: http://www.gnu.org/software/binutils/
78 License: GFDL-1.3 and GPL-3.0+
79 Group: Development/Building
80 %{?cross:ExcludeArch: %{cross}}
81 Source: binutils-%{version}.tar.bz2
82 Source1001: binutils.manifest
85 C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
86 size, strings, and strip. These utilities are needed whenever you want
87 to compile a program or kernel.
90 Summary: Shared library files for binutils
94 It contains the binutils shared libraries that applications can link
99 Summary: The gold linker
101 Group: Development/Building
104 gold is an ELF linker. It is intended to have complete support for ELF
105 and to run as fast as possible on modern systems. For normal use it is
106 a drop-in replacement for the older GNU linker.
110 Summary: GNU binutils (BFD development files)
112 Group: Development/Building
116 This package includes header files and static libraries necessary to
117 build programs which use the GNU BFD library, which is part of
120 %{?binutils_run_tests:
122 Summary: Testsuite results
123 License: Public Domain
124 Group: Development/Building
125 %description testresults
126 Results from running the binutils tests.
129 %{?binutils_dump_configure:
130 %package configure-dump
131 Summary: GNU Binutils configure dump
133 Group: Development/Languages
134 %description configure-dump
135 This package contains dump of configure variables of Binutils
139 %setup -q -n binutils-%{version}
144 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error %{?cross:-DIGNORE_BROKEN_PLUGINS}"
145 export CFLAGS="${RPM_OPT_FLAGS}"
146 export CXXFLAGS="${RPM_OPT_FLAGS}"
148 %{!?binutils_keep_build_dir:
151 # Remove gdb and sim since they have separate gdb package
152 rm -rf gdb gdbserver gdbsupport sim
157 %{!?binutils_skip_configure:
158 %{?binutils_dump_configure:patch_configure.pl ..} # Add debug prints into configure
160 --prefix=%{_prefix} --libdir=%{_libdir} \
161 --infodir=%{_infodir} --mandir=%{_mandir} \
162 --with-bugurl=http://bugs.tizen.org/ \
165 --with-lib-path="=%{_libdir}" \
168 --with-separate-debug-dir=%{_prefix}/lib/debug \
170 --build=%{host_arch} --target=%{target_arch} \
171 --host=%{host_arch} \
173 --enable-targets=%{target_arch} \
174 --enable-64-bit-bfd \
177 --enable-targets=aarch64-tizen-linux,armv7l-tizen-linux,armv7hl-tizen-linux,armv8l-tizen-linux,i686-tizen-linux,x86_64-tizen-linux,riscv64-tizen-linux \
188 --disable-separate-code
193 %{!?binutils_skip_make:
195 %{?binutils_dump_configure:
196 dump_configure.pl .. . \
198 --project-version %{version} \
199 --out_db binutils-%{version}-%{release}-%_project-%_repository.db
203 %{?binutils_exit_on_make_finish:
207 %{?binutils_run_tests:
209 # asan needs a whole shadow address space
210 ulimit -v unlimited || true
211 make -k check %{?_smp_mflags} || true
213 for tool in $(find -name '*.sum' -exec basename {} \; | sort -u | sed -e 's/.sum//'); do
214 ../contrib/dg-extract-results.sh -t $tool $(find -name '*.sum') | tee -a ../testresults/test_summary.txt
220 make DESTDIR=$RPM_BUILD_ROOT install
222 export LINKERS="ld ld.bfd"
224 # There's neither native gold nor cross-gold for riscv64 yet
225 %{!?riscv64:export LINKERS="ld ld.bfd ld.gold"}
229 # Copy instead of hardlinks
230 for binary in ar as ${LINKERS} nm obj{dump,copy} ranlib strip
232 rm %{buildroot}%{_prefix}/%{target_arch}/bin/$binary
234 cp %{buildroot}%{_bindir}/$binary %{buildroot}%{_prefix}/%{target_arch}/bin/$binary
237 cp %{buildroot}%{_bindir}/%{target_arch}-$binary %{buildroot}%{_prefix}/%{target_arch}/bin/$binary
241 install -m 644 libiberty/pic/libiberty.a %{buildroot}%{_prefix}/%{_lib}
242 install -m 644 ../include/libiberty.h %{buildroot}%{_prefix}/include
244 %{?binutils_run_tests:
245 find . \( -name "*.sum" -o -name "*.log" -a \! -name "config.log" \) -exec tar -rf testresults.tar {} \;
246 mkdir -p ../testresults && tar -xf testresults.tar -C ../testresults
247 find ../testresults/ -type f -exec chmod 644 {} \;
250 # Remove unwanted files to shut up rpm
252 rm -rf %{buildroot}%{_bindir}/gcore
253 rm -rf %{buildroot}%{_libdir}/lib{bfd,ctf,ctf-nobfd,opcodes,inproctrace,sframe}.la
255 rm -rf %{buildroot}%{_prefix}/%{target_arch}/lib/ldscripts
256 rm -rf %{buildroot}%{_prefix}/%{host_arch}
257 rm -rf %{buildroot}%{_includedir}
258 rm -rf %{buildroot}%{_prefix}/lib*
259 rm -rf %{buildroot}%{_datadir}
262 %{?binutils_dump_configure:
263 install -D -m 0644 binutils-%{version}-%{release}-%_project-%_repository.db %{buildroot}%{_datadir}/binutils-%{version}-%{release}-%_project-%_repository.db
267 %manifest binutils.manifest
268 %defattr(-,root,root)
270 %{_prefix}/%{target_arch}/bin/*
272 %exclude %{_bindir}/ld.gold
273 %exclude %{_prefix}/%{target_arch}/bin/ld.gold
274 %{_prefix}/%{host_arch}/lib/ldscripts
278 %{_libdir}/bfd-plugins/*.so
281 %manifest binutils.manifest
282 %defattr(-,root,root)
288 %manifest binutils.manifest
289 %defattr(-,root,root)
291 %{_prefix}/%{target_arch}/bin/ld.gold
295 %{?binutils_run_tests:
297 %defattr(-,root,root)
298 %doc testresults/test_summary.txt
302 %{?binutils_dump_configure:
303 %files configure-dump
304 %manifest binutils.manifest
305 %{_datadir}/binutils-%{version}-%{release}-%_project-%_repository.db