2 # - manifest url https://commondatastorage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/naclsdk_manifest.json
3 # rev 6757 matches pepper_15, r1239
4 # rev 6941 matches pepper_16, r1344
5 # - libdir mixed up for 32/64 bit. do we care? upstream confused about it too
6 # https://code.google.com/p/nativeclient/issues/detail?id=1975
7 # - /bin/sh in some wrappers:
10 # - messed up install dirs (two gcc dirs)
11 %define nacl_revision 8034
12 %define binutils_ver 2.20.1
14 %define newlib_ver 1.18.0
15 Summary: Native Client newlib-based toolchain (only for compiling IRT)
16 Name: nacl-toolchain-newlib
17 Version: 0.%{nacl_revision}
19 License: BSD (NaCL), GPL v3/LGPL v3 (binutils), GPL v3+ (gcc), GPL v2(newlib)
20 Group: Development/Languages
21 Source0: http://gsdview.appspot.com/nativeclient-archive2/x86_toolchain/r%{nacl_revision}/nacltoolchain-buildscripts-r%{nacl_revision}.tar.gz
22 # Source0-md5: 985872dcaebb3dbb1d406910267efb06
23 Source1: ftp://sources.redhat.com/pub/newlib/newlib-%{newlib_ver}.tar.gz
24 # Source1-md5: 3dae127d4aa659d72f8ea8c0ff2a7a20
25 Source2: http://ftp.gnu.org/gnu/binutils/binutils-%{binutils_ver}.tar.bz2
26 # Source2-md5: 2b9dc8f2b7dbd5ec5992c6e29de0b764
27 Source3: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{gcc_ver}/gcc-%{gcc_ver}.tar.bz2
28 # Source3-md5: fe1ca818fc6d2caeffc9051fe67ff103
29 Patch0: http://gsdview.appspot.com/nativeclient-archive2/x86_toolchain/r%{nacl_revision}/naclbinutils-%{binutils_ver}-r%{nacl_revision}.patch.bz2
30 # Patch0-md5: 8473a33e00cea1d1de041b42753e3e02
31 Patch1: http://gsdview.appspot.com/nativeclient-archive2/x86_toolchain/r%{nacl_revision}/naclnewlib-%{newlib_ver}-r%{nacl_revision}.patch.bz2
32 # Patch1-md5: faae6e8990cec9dde0fa8b371eb97c4e
33 Patch2: http://gsdview.appspot.com/nativeclient-archive2/x86_toolchain/r%{nacl_revision}/naclgcc-%{gcc_ver}-r%{nacl_revision}.patch.bz2
34 # Patch2-md5: 64509546a3d2133c5f26903da46a251a
35 URL: https://developers.google.com/native-client/
36 BuildRequires: binutils >= 2.15.94
37 BuildRequires: bison >= 1.875
38 BuildRequires: cloog-ppl-devel
39 BuildRequires: flex >= 2.5.4
40 BuildRequires: gettext-devel
42 BuildRequires: libart_lgpl-devel >= 2.1
43 BuildRequires: libmpc-devel
45 BuildRequires: ncurses-devel >= 5.2
46 BuildRequires: ppl-devel
47 BuildRequires: sed >= 4
48 BuildRequires: texinfo >= 4.8
52 Requires: glibc >= 6:2.8/v8
53 Requires: gmp >= 5.0.2
54 Requires: mpfr >= 3.0.1
55 Requires: zlib >= 1.1.4
56 ExclusiveArch: %{x8664} %{ix86}
57 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
59 %define target x86_64-nacl
60 %define target32 i686-nacl
61 %define arch %{_prefix}/%{target}-newlib
62 %define _datadir %{arch}/share
63 %define _mandir %{arch}/man
64 %define _infodir %{_datadir}/info
65 %define _includedir %{arch}/%{target}/include
66 %define _libdir %{arch}/%{target}/lib
67 %define _libexecdir %{arch}/libexec
69 %define gccarch %{_libexecdir}/gcc/%{target}
70 %define gcclib %{gccarch}/%{gcc_ver}
71 %define gcclib2 %{arch}/lib/gcc/%{target}/%{gcc_ver}
73 %define _noautostrip .*%{arch}/.*\.a
74 %define _noautochrpath .*%{arch}/.*\.a
77 #/usr/bin/ld: libbackend.a(graphite.o): undefined reference to symbol 'ppl_finalize'
78 #/usr/bin/ld: note: 'ppl_finalize' is defined in DSO /usr/lib/libppl_c.so.4 so try adding it to the linker command line
79 #define filterout_ld -Wl,--no-copy-dt-needed-entries -Wl,--as-needed
80 #define specldflags -lppl_c
83 Native Client newlib-based toolchain (only for compiling IRT).
86 %setup -qc -a1 -a2 -a3
88 mv binutils-%{binutils_ver} SRC/binutils
89 mv newlib-%{newlib_ver} SRC/newlib
90 mv gcc-%{gcc_ver} SRC/gcc
98 %{__make} build-with-newlib \
99 LDFLAGS="%{rpmldflags}" \
100 PREFIX="$(pwd)/out" \
101 CANNED_REVISION="yes"
104 rm -rf $RPM_BUILD_ROOT
105 install -d $RPM_BUILD_ROOT%{arch}
106 cp -a out/* $RPM_BUILD_ROOT%{arch}
109 # move fixed includes to proper place
110 cp -p $RPM_BUILD_ROOT%{gcclib2}/include-fixed/*.h $RPM_BUILD_ROOT%{gcclib2}/include
113 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libiberty.a
114 %{__rm} $RPM_BUILD_ROOT%{_libdir}32/libiberty.a
115 %{__rm} -r $RPM_BUILD_ROOT%{_infodir}
116 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man7/fsf-funding.7
117 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man7/gfdl.7
118 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man7/gpl.7
119 %{__rm} $RPM_BUILD_ROOT%{_datadir}/locale/*/LC_MESSAGES/{gcc,cpplib}.mo
120 %{__rm} -r $RPM_BUILD_ROOT%{gcclib2}/include-fixed
121 %{__rm} -r $RPM_BUILD_ROOT%{gcclib2}/install-tools
123 %if 0%{!?debug:1} && 0
124 # strip target libraries
125 export PATH=$PATH:$(pwd)/out/bin
127 # strip target libraries
128 %{target}-strip --strip-debug --remove-section=.note --remove-section=.comment \
129 $RPM_BUILD_ROOT%dir %{arch}/%{target}/lib/*.a \
130 $RPM_BUILD_ROOT%{arch}/%{target}/lib/*.a
132 %{target32}-strip --strip-debug --remove-section=.note --remove-section=.comment \
133 $RPM_BUILD_ROOT%dir %{arch}/%{target}/lib/32/*.a \
134 $RPM_BUILD_ROOT%{arch}/%{target}/lib32/*.a
138 %{__rm} $RPM_BUILD_ROOT%{arch}/COPYING*
139 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
141 %{__rm} $RPM_BUILD_ROOT%{arch}/%{target}/lib/*.la
142 %{__rm} $RPM_BUILD_ROOT%{arch}/%{target}/lib32/*.la
144 rm -rf $RPM_BUILD_ROOT%{_datadir}/locale
145 rm -rf $RPM_BUILD_ROOT%{_mandir}
146 rm -rf $RPM_BUILD_ROOT%{_infodir}
147 rm -rf $RPM_BUILD_ROOT%{arch}/info
148 rm -rf $RPM_BUILD_ROOT%{arch}/man
149 rm -rf $RPM_BUILD_ROOT%{arch}/share/man
152 rm -rf $RPM_BUILD_ROOT
155 %defattr(644,root,root,755)
160 %attr(755,root,root) %{arch}/bin/%{target}-*
161 %attr(755,root,root) %{arch}/bin/%{target32}-*
165 %{_datadir}/iconv_data
170 %dir %{arch}/lib/gcc/%{target}
171 %{arch}/lib/gcc/%{target}/%{gcc_ver}
174 %dir %{_libexecdir}/gcc
177 %attr(755,root,root) %{gcclib}/cc1
178 %attr(755,root,root) %{gcclib}/collect2
179 %attr(755,root,root) %{gcclib}/cc1obj
180 %attr(755,root,root) %{gcclib}/cc1plus
182 %dir %{gcclib}/install-tools
183 %attr(755,root,root) %{gcclib}/install-tools/*
185 %dir %{arch}/%{target}
188 %dir %{arch}/%{target}/bin
189 %{arch}/%{target}/bin/ar
190 %{arch}/%{target}/bin/as
191 %{arch}/%{target}/bin/c++
192 %{arch}/%{target}/bin/g++
193 %{arch}/%{target}/bin/gcc
194 %{arch}/%{target}/bin/ld
195 %{arch}/%{target}/bin/nm
196 %{arch}/%{target}/bin/objcopy
197 %{arch}/%{target}/bin/objdump
198 %{arch}/%{target}/bin/ranlib
199 %{arch}/%{target}/bin/strip
204 %{_includedir}/machine
209 %dir %{_includedir}/c++
210 %{_includedir}/c++/%{gcc_ver}
213 %dir %{arch}/%{target}/lib
214 %dir %{arch}/%{target}/lib/32
215 %{arch}/%{target}/lib/crt0.o
216 %{arch}/%{target}/lib/ldscripts
219 %{arch}/%{target}/lib/libc.a
220 %{arch}/%{target}/lib/libcrt_common.a
221 %{arch}/%{target}/lib/libg.a
222 #%{arch}/%{target}/lib/libiberty.a
223 %{arch}/%{target}/lib/libm.a
224 %{arch}/%{target}/lib/libobjc.a
225 %{arch}/%{target}/lib/libstdc++.a
226 %{arch}/%{target}/lib/libsupc++.a
228 %dir %{arch}/%{target}/lib32
229 %{arch}/%{target}/lib32/crt0.o
230 %{arch}/%{target}/lib32/libc.a
231 %{arch}/%{target}/lib32/libcrt_common.a
232 %{arch}/%{target}/lib32/libg.a
233 #%{arch}/%{target}/lib32/libiberty.a
234 %{arch}/%{target}/lib32/libm.a
235 %{arch}/%{target}/lib32/libobjc.a
236 %{arch}/%{target}/lib32/libstdc++.a
237 %{arch}/%{target}/lib32/libsupc++.a
238 %{arch}/%{target}/lib64