| 1 | #define svn_url e:/trees/binutils/trunk
|
|---|
| 2 | %define svn_url http://svn.netlabs.org/repos/ports/binutils/trunk
|
|---|
| 3 | %define svn_rev 1587
|
|---|
| 4 |
|
|---|
| 5 | # rpmbuild parameters:
|
|---|
| 6 | # --define "binutils_target arm-linux-gnu" to create arm-linux-gnu-binutils.
|
|---|
| 7 | # --with debug: Build without optimizations and without splitting the debuginfo.
|
|---|
| 8 | # --without testsuite: Do not run the testsuite. Default is to run it.
|
|---|
| 9 | # --with testsuite: Run the testsuite. Default --with debug is not to run it.
|
|---|
| 10 |
|
|---|
| 11 | # we don't run the testsuit, as there are dependencies we don't have atm
|
|---|
| 12 | %define _without_testsuite 1
|
|---|
| 13 |
|
|---|
| 14 | %if 0%{!?binutils_target:1}
|
|---|
| 15 | # we always use _build, as target_platform isn't recognised by configure
|
|---|
| 16 | # define binutils_target %{_target_platform}
|
|---|
| 17 | %define binutils_target %{_build}
|
|---|
| 18 | %define isnative 1
|
|---|
| 19 | %define enable_shared 1
|
|---|
| 20 | %else
|
|---|
| 21 | %define cross %{binutils_target}-
|
|---|
| 22 | %define isnative 0
|
|---|
| 23 | %define enable_shared 0
|
|---|
| 24 | %endif
|
|---|
| 25 | # BZ 1124342: Provide a way to enable deterministic archives.
|
|---|
| 26 | # BZ 1195883: But do not do this by default.
|
|---|
| 27 | %define enable_deterministic_archives 0
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 | Summary: A GNU collection of binary utilities
|
|---|
| 31 | Name: %{?cross}binutils%{?_with_debug:-debug}
|
|---|
| 32 | Version: 2.25
|
|---|
| 33 | Release: 1%{?dist}
|
|---|
| 34 | License: GPLv3+
|
|---|
| 35 | Group: Development/Tools
|
|---|
| 36 | URL: http://sources.redhat.com/binutils
|
|---|
| 37 |
|
|---|
| 38 | Source: %{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip
|
|---|
| 39 | Vendor: bww bitwise works GmbH
|
|---|
| 40 |
|
|---|
| 41 | Provides: bundled(libiberty)
|
|---|
| 42 |
|
|---|
| 43 | # BZ 1173780: Building GOLD for PPC is not working at the moment.
|
|---|
| 44 | # define gold_arches %ix86 x86_64 %arm aarch64 ppc* %{power64}
|
|---|
| 45 | %define gold_arches %ix86 x86_64 %arm aarch64
|
|---|
| 46 |
|
|---|
| 47 | # we don't build on elf, so no gold for us
|
|---|
| 48 | # ifarch %gold_arches
|
|---|
| 49 | # define build_gold both
|
|---|
| 50 | # else
|
|---|
| 51 | %define build_gold no
|
|---|
| 52 | # endif
|
|---|
| 53 |
|
|---|
| 54 | %if 0%{?_with_debug:1}
|
|---|
| 55 | # Define this if you want to skip the strip step and preserve debug info.
|
|---|
| 56 | # Useful for testing.
|
|---|
| 57 | %define __debug_install_post : > %{_builddir}/%{?buildsubdir}/debugfiles.list
|
|---|
| 58 | %define debug_package %{nil}
|
|---|
| 59 | %define run_testsuite 0%{?_with_testsuite:1}
|
|---|
| 60 | %else
|
|---|
| 61 | %define run_testsuite 0%{!?_without_testsuite:1}
|
|---|
| 62 | %endif
|
|---|
| 63 |
|
|---|
| 64 | BuildRequires: texinfo >= 4.0, gettext, flex, bison, zlib-devel
|
|---|
| 65 | # BZ 920545: We need pod2man in order to build the manual pages.
|
|---|
| 66 | # BuildRequires: /@unixroot/usr/bin/pod2man
|
|---|
| 67 | # Required for: ld-bootstrap/bootstrap.exp bootstrap with --static
|
|---|
| 68 | # It should not be required for: ld-elf/elf.exp static {preinit,init,fini} array
|
|---|
| 69 | %if %{run_testsuite}
|
|---|
| 70 | # relro_test.sh uses dc which is part of the bc rpm, hence its inclusion here.
|
|---|
| 71 | BuildRequires: dejagnu, zlib-static, glibc-static, sharutils, bc
|
|---|
| 72 | %if "%{build_gold}" == "both"
|
|---|
| 73 | # The GOLD testsuite needs a static libc++
|
|---|
| 74 | BuildRequires: libstdc++-static
|
|---|
| 75 | %endif
|
|---|
| 76 | %endif
|
|---|
| 77 | Conflicts: gcc-c++ < 4.0.0
|
|---|
| 78 | #Requires(post): /sbin/install-info
|
|---|
| 79 | #Requires(preun): /sbin/install-info
|
|---|
| 80 | %ifarch ia64
|
|---|
| 81 | Obsoletes: gnupro <= 1117-1
|
|---|
| 82 | %endif
|
|---|
| 83 |
|
|---|
| 84 |
|
|---|
| 85 | # The higher of these two numbers determines the default ld.
|
|---|
| 86 | %{!?ld_bfd_priority: %define ld_bfd_priority 50}
|
|---|
| 87 | %{!?ld_gold_priority:%define ld_gold_priority 30}
|
|---|
| 88 |
|
|---|
| 89 | %if "%{build_gold}" == "both"
|
|---|
| 90 | Requires(post): coreutils
|
|---|
| 91 | Requires(post): %{_sbindir}/alternatives
|
|---|
| 92 | Requires(preun): %{_sbindir}/alternatives
|
|---|
| 93 | %endif
|
|---|
| 94 |
|
|---|
| 95 | # On ARM EABI systems, we do want -gnueabi to be part of the
|
|---|
| 96 | # target triple.
|
|---|
| 97 | %ifnarch %{arm}
|
|---|
| 98 | %define _gnu %{nil}
|
|---|
| 99 | %endif
|
|---|
| 100 |
|
|---|
| 101 | %description
|
|---|
| 102 | Binutils is a collection of binary utilities, including ar (for
|
|---|
| 103 | creating, modifying and extracting from archives), as (a family of GNU
|
|---|
| 104 | assemblers), gprof (for displaying call graph profile data), ld (the
|
|---|
| 105 | GNU linker), nm (for listing symbols from object files), objcopy (for
|
|---|
| 106 | copying and translating object files), objdump (for displaying
|
|---|
| 107 | information from object files), ranlib (for generating an index for
|
|---|
| 108 | the contents of an archive), readelf (for displaying detailed
|
|---|
| 109 | information about binary files), size (for listing the section sizes
|
|---|
| 110 | of an object or archive file), strings (for listing printable strings
|
|---|
| 111 | from files), strip (for discarding symbols), and addr2line (for
|
|---|
| 112 | converting addresses to file and line).
|
|---|
| 113 |
|
|---|
| 114 | %package devel
|
|---|
| 115 | Summary: BFD and opcodes dynamic libraries and header files
|
|---|
| 116 | Group: System Environment/Libraries
|
|---|
| 117 | Conflicts: binutils < 2.17.50.0.3-4
|
|---|
| 118 | #Requires(post): /sbin/install-info
|
|---|
| 119 | #Requires(preun): /sbin/install-info
|
|---|
| 120 | Requires: zlib-devel
|
|---|
| 121 | Requires: binutils = %{version}-%{release}
|
|---|
| 122 | # BZ 1215242: We need touch...
|
|---|
| 123 | Requires: coreutils
|
|---|
| 124 |
|
|---|
| 125 | %description devel
|
|---|
| 126 | This package contains BFD and opcodes static and dynamic libraries.
|
|---|
| 127 |
|
|---|
| 128 | The dynamic libraries are in this package, rather than a seperate
|
|---|
| 129 | base package because they are actually linker scripts that force
|
|---|
| 130 | the use of the static libraries. This is because the API of the
|
|---|
| 131 | BFD library is too unstable to be used dynamically.
|
|---|
| 132 |
|
|---|
| 133 | The static libraries are here because they are now needed by the
|
|---|
| 134 | dynamic libraries.
|
|---|
| 135 |
|
|---|
| 136 | Developers starting new projects are strongly encouraged to consider
|
|---|
| 137 | using libelf instead of BFD.
|
|---|
| 138 |
|
|---|
| 139 | %debug_package
|
|---|
| 140 |
|
|---|
| 141 | %prep
|
|---|
| 142 | %if %{?svn_rev:%(sh -c 'if test -f "%{_sourcedir}/%{name}-%{version}-r%{svn_rev}.zip" ; then echo 1 ; else echo 0 ; fi')}%{!?svn_rev):0}
|
|---|
| 143 | %setup -q
|
|---|
| 144 | %else
|
|---|
| 145 | %setup -n "%{name}-%{version}" -Tc
|
|---|
| 146 | svn export %{?svn_rev:-r %{svn_rev}} %{svn_url} . --force
|
|---|
| 147 | rm -f "%{_sourcedir}/%{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip"
|
|---|
| 148 | (cd .. && zip -SrX9 "%{_sourcedir}/%{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip" "%{name}-%{version}")
|
|---|
| 149 | %endif
|
|---|
| 150 |
|
|---|
| 151 | autogen.sh
|
|---|
| 152 |
|
|---|
| 153 | %build
|
|---|
| 154 | echo target is %{binutils_target}
|
|---|
| 155 | %ifarch %{power64}
|
|---|
| 156 | export CFLAGS="$RPM_OPT_FLAGS -Wno-error"
|
|---|
| 157 | %else
|
|---|
| 158 | export CFLAGS="$RPM_OPT_FLAGS"
|
|---|
| 159 | %endif
|
|---|
| 160 | CARGS=
|
|---|
| 161 |
|
|---|
| 162 | case %{binutils_target} in i?86*|sparc*|ppc*|s390*|sh*|arm*|aarch64*)
|
|---|
| 163 | CARGS="$CARGS --enable-64-bit-bfd"
|
|---|
| 164 | ;;
|
|---|
| 165 | esac
|
|---|
| 166 |
|
|---|
| 167 | case %{binutils_target} in ia64*)
|
|---|
| 168 | CARGS="$CARGS --enable-targets=i386-linux"
|
|---|
| 169 | ;;
|
|---|
| 170 | esac
|
|---|
| 171 |
|
|---|
| 172 | case %{binutils_target} in ppc*|ppc64*)
|
|---|
| 173 | CARGS="$CARGS --enable-targets=spu"
|
|---|
| 174 | ;;
|
|---|
| 175 | esac
|
|---|
| 176 |
|
|---|
| 177 | case %{binutils_target} in ppc64-*)
|
|---|
| 178 | CARGS="$CARGS --enable-targets=powerpc64le-linux"
|
|---|
| 179 | ;;
|
|---|
| 180 | esac
|
|---|
| 181 |
|
|---|
| 182 | case %{binutils_target} in ppc64le*)
|
|---|
| 183 | CARGS="$CARGS --enable-targets=powerpc-linux"
|
|---|
| 184 | ;;
|
|---|
| 185 | esac
|
|---|
| 186 |
|
|---|
| 187 | %if 0%{?_with_debug:1}
|
|---|
| 188 | CFLAGS="$CFLAGS -O0 -ggdb2 -Wno-error -D_FORTIFY_SOURCE=0"
|
|---|
| 189 | %define enable_shared 0
|
|---|
| 190 | %endif
|
|---|
| 191 |
|
|---|
| 192 | export LDFLAGS=" -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp"
|
|---|
| 193 |
|
|---|
| 194 | # We could optimize the cross builds size by --enable-shared but the produced
|
|---|
| 195 | # binaries may be less convenient in the embedded environment.
|
|---|
| 196 | # the below configure switchs we don't use
|
|---|
| 197 | # --build=%{_target_platform} --host=%{_target_platform} \
|
|---|
| 198 | %configure \
|
|---|
| 199 | --target=%{binutils_target} \
|
|---|
| 200 | %ifarch %gold_arches
|
|---|
| 201 | %if "%{build_gold}" == "both"
|
|---|
| 202 | --enable-gold=default --enable-ld \
|
|---|
| 203 | %else
|
|---|
| 204 | --enable-ld \
|
|---|
| 205 | %endif
|
|---|
| 206 | %endif
|
|---|
| 207 | %if !%{isnative}
|
|---|
| 208 | --enable-targets=%{_host} \
|
|---|
| 209 | --with-sysroot=%{_prefix}/%{binutils_target}/sys-root \
|
|---|
| 210 | --program-prefix=%{cross} \
|
|---|
| 211 | %endif
|
|---|
| 212 | %if %{enable_shared}
|
|---|
| 213 | --enable-shared --disable-static \
|
|---|
| 214 | %else
|
|---|
| 215 | --disable-shared \
|
|---|
| 216 | %endif
|
|---|
| 217 | %if %{enable_deterministic_archives}
|
|---|
| 218 | --enable-deterministic-archives \
|
|---|
| 219 | %else
|
|---|
| 220 | --enable-deterministic-archives=no \
|
|---|
| 221 | %endif
|
|---|
| 222 | $CARGS \
|
|---|
| 223 | --enable-plugins=no \
|
|---|
| 224 | --with-bugurl=http://trac.netlabs.org/ports/
|
|---|
| 225 | make %{_smp_mflags} tooldir=%{_prefix} all
|
|---|
| 226 | make %{_smp_mflags} tooldir=%{_prefix} info
|
|---|
| 227 |
|
|---|
| 228 | # Do not use %%check as it is run after %%install where libbfd.so is rebuild
|
|---|
| 229 | # with -fvisibility=hidden no longer being usable in its shared form.
|
|---|
| 230 | %if !%{run_testsuite}
|
|---|
| 231 | echo ====================TESTSUITE DISABLED=========================
|
|---|
| 232 | %else
|
|---|
| 233 | make -k check < /dev/null || :
|
|---|
| 234 | echo ====================TESTING=========================
|
|---|
| 235 | cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
|
|---|
| 236 | echo ====================TESTING END=====================
|
|---|
| 237 | for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
|
|---|
| 238 | do
|
|---|
| 239 | ln $file binutils-%{_target_platform}-$(basename $file) || :
|
|---|
| 240 | done
|
|---|
| 241 | tar cjf binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
|
|---|
| 242 | uuencode binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}.tar.bz2
|
|---|
| 243 | rm -f binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
|
|---|
| 244 | %endif
|
|---|
| 245 |
|
|---|
| 246 | %install
|
|---|
| 247 | rm -rf %{buildroot}
|
|---|
| 248 | make install DESTDIR=%{buildroot}
|
|---|
| 249 | %if %{isnative}
|
|---|
| 250 | make prefix=%{buildroot}%{_prefix} infodir=%{buildroot}%{_infodir} install-info
|
|---|
| 251 |
|
|---|
| 252 | #install -m 644 bfd/libbfd.a %{buildroot}%{_libdir}
|
|---|
| 253 | #install -m 644 libiberty/libiberty.a %{buildroot}%{_libdir}
|
|---|
| 254 | install -m 644 include/libiberty.h %{buildroot}%{_prefix}/include
|
|---|
| 255 | #install -m 644 opcodes/libopcodes.a %{buildroot}%{_libdir}
|
|---|
| 256 | # Remove Windows/Novell only man pages
|
|---|
| 257 | rm -f %{buildroot}%{_mandir}/man1/dlltool*
|
|---|
| 258 | rm -f %{buildroot}%{_mandir}/man1/nlmconv*
|
|---|
| 259 | rm -f %{buildroot}%{_mandir}/man1/windmc*
|
|---|
| 260 |
|
|---|
| 261 | %if %{enable_shared}
|
|---|
| 262 | chmod +x %{buildroot}%{_libdir}/*.dll
|
|---|
| 263 | %endif
|
|---|
| 264 |
|
|---|
| 265 | # Remove libtool files, which reference the .dll libs
|
|---|
| 266 | rm -f %{buildroot}%{_libdir}/*.la
|
|---|
| 267 |
|
|---|
| 268 | %else # !%{isnative}
|
|---|
| 269 | # For cross-binutils we drop the documentation.
|
|---|
| 270 | rm -rf %{buildroot}%{_infodir}
|
|---|
| 271 | # We keep these as one can have native + cross binutils of different versions.
|
|---|
| 272 | #rm -rf %{buildroot}%{_prefix}/share/locale
|
|---|
| 273 | #rm -rf %{buildroot}%{_mandir}
|
|---|
| 274 | rm -rf %{buildroot}%{_libdir}/libiberty.a
|
|---|
| 275 | %endif # !%{isnative}
|
|---|
| 276 |
|
|---|
| 277 | # This one comes from gcc
|
|---|
| 278 | rm -f %{buildroot}%{_infodir}/dir
|
|---|
| 279 | #rm -rf %{buildroot}%{_prefix}/%{binutils_target}
|
|---|
| 280 |
|
|---|
| 281 | %find_lang %{?cross}binutils
|
|---|
| 282 | %find_lang %{?cross}opcodes
|
|---|
| 283 | %find_lang %{?cross}bfd
|
|---|
| 284 | %find_lang %{?cross}gas
|
|---|
| 285 | %find_lang %{?cross}gprof
|
|---|
| 286 | cat %{?cross}opcodes.lang >> %{?cross}binutils.lang
|
|---|
| 287 | cat %{?cross}bfd.lang >> %{?cross}binutils.lang
|
|---|
| 288 | cat %{?cross}gas.lang >> %{?cross}binutils.lang
|
|---|
| 289 | cat %{?cross}gprof.lang >> %{?cross}binutils.lang
|
|---|
| 290 |
|
|---|
| 291 | if [ -x ld/ld-new ]; then
|
|---|
| 292 | %find_lang %{?cross}ld
|
|---|
| 293 | cat %{?cross}ld.lang >> %{?cross}binutils.lang
|
|---|
| 294 | fi
|
|---|
| 295 | if [ -x gold/ld-new ]; then
|
|---|
| 296 | %find_lang %{?cross}gold
|
|---|
| 297 | cat %{?cross}gold.lang >> %{?cross}binutils.lang
|
|---|
| 298 | fi
|
|---|
| 299 |
|
|---|
| 300 | %clean
|
|---|
| 301 | rm -rf %{buildroot}
|
|---|
| 302 |
|
|---|
| 303 | %post
|
|---|
| 304 | %if "%{build_gold}" == "both"
|
|---|
| 305 | %__rm -f %{_bindir}/%{?cross}ld
|
|---|
| 306 | %{_sbindir}/alternatives --install %{_bindir}/%{?cross}ld %{?cross}ld \
|
|---|
| 307 | %{_bindir}/%{?cross}ld.bfd %{ld_bfd_priority}
|
|---|
| 308 | %{_sbindir}/alternatives --install %{_bindir}/%{?cross}ld %{?cross}ld \
|
|---|
| 309 | %{_bindir}/%{?cross}ld.gold %{ld_gold_priority}
|
|---|
| 310 | %{_sbindir}/alternatives --auto %{?cross}ld
|
|---|
| 311 | %endif
|
|---|
| 312 | %if %{isnative}
|
|---|
| 313 | #/sbin/ldconfig
|
|---|
| 314 | # For --excludedocs:
|
|---|
| 315 | if [ -e %{_infodir}/binutils.info.gz ]
|
|---|
| 316 | then
|
|---|
| 317 | %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/as.info.gz
|
|---|
| 318 | %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
|
|---|
| 319 | %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
|
|---|
| 320 | %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/ld.info.gz
|
|---|
| 321 | fi
|
|---|
| 322 | %endif # %{isnative}
|
|---|
| 323 | exit 0
|
|---|
| 324 |
|
|---|
| 325 | %preun
|
|---|
| 326 | %if "%{build_gold}" == "both"
|
|---|
| 327 | if [ $1 = 0 ]; then
|
|---|
| 328 | %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.bfd
|
|---|
| 329 | %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.gold
|
|---|
| 330 | fi
|
|---|
| 331 | %endif
|
|---|
| 332 | %if %{isnative}
|
|---|
| 333 | if [ $1 = 0 ]; then
|
|---|
| 334 | if [ -e %{_infodir}/binutils.info.gz ]
|
|---|
| 335 | then
|
|---|
| 336 | %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
|
|---|
| 337 | %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
|
|---|
| 338 | %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
|
|---|
| 339 | %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz
|
|---|
| 340 | fi
|
|---|
| 341 | fi
|
|---|
| 342 | %endif
|
|---|
| 343 | exit 0
|
|---|
| 344 |
|
|---|
| 345 | %if %{isnative}
|
|---|
| 346 | #%postun -p /sbin/ldconfig
|
|---|
| 347 | %endif # %{isnative}
|
|---|
| 348 |
|
|---|
| 349 | %files -f %{?cross}binutils.lang
|
|---|
| 350 | %defattr(-,root,root,-)
|
|---|
| 351 | %doc README
|
|---|
| 352 | %{_bindir}/%{?cross}[!l]*.exe
|
|---|
| 353 | %{_prefix}/%{binutils_target}/bin/%{?cross}[!l]*.exe
|
|---|
| 354 | %if "%{build_gold}" == "both"
|
|---|
| 355 | %{_bindir}/%{?cross}ld*.exe
|
|---|
| 356 | %ghost %{_bindir}/%{?cross}ld
|
|---|
| 357 | %else
|
|---|
| 358 | #%{_bindir}/%{?cross}ld*.exe
|
|---|
| 359 | %endif
|
|---|
| 360 | %{_mandir}/man1/*
|
|---|
| 361 | %if %{enable_shared}
|
|---|
| 362 | %{_libdir}/*.dll
|
|---|
| 363 | %endif
|
|---|
| 364 |
|
|---|
| 365 | %if %{isnative}
|
|---|
| 366 | %{_infodir}/[^b]*info*
|
|---|
| 367 | %{_infodir}/binutils*info*
|
|---|
| 368 |
|
|---|
| 369 | %files devel
|
|---|
| 370 | %defattr(-,root,root,-)
|
|---|
| 371 | %{_prefix}/include/*
|
|---|
| 372 | %{_libdir}/*_dll.a
|
|---|
| 373 | %{_infodir}/bfd*info*
|
|---|
| 374 |
|
|---|
| 375 | %endif # %{isnative}
|
|---|
| 376 |
|
|---|
| 377 | %changelog
|
|---|
| 378 | * Tue May 31 2016 Silvan Scherrer <silvan.scherrer@aroa.ch> 2.25-1
|
|---|
| 379 | - update to version 2.25
|
|---|
| 380 |
|
|---|
| 381 | * Wed Oct 5 2011 yd <yd@os2power.com> 2.21-1
|
|---|
| 382 | - Initial version
|
|---|