Annotation of /trunk/include/buildroot2.sminc
Parent Directory | Revision Log
Revision 9863 -
(hide annotations)
(download)
Fri Jan 13 19:22:05 2012 UTC (12 years, 9 months ago) by niro
Original Path: branches/magellan-next/include/buildroot2.sminc
File size: 47444 byte(s)
Fri Jan 13 19:22:05 2012 UTC (12 years, 9 months ago) by niro
Original Path: branches/magellan-next/include/buildroot2.sminc
File size: 47444 byte(s)
- PCATEGORIE -> PCAT transition
1 | niro | 9 | # $Header: /magellan-cvs/smage/include/buildroot2.sminc,v 1.1 2008/10/06 17:55:09 niro Exp $ |
2 | # Buildroot generic functions | ||
3 | sminclude mtools | ||
4 | |||
5 | # needed vars: | ||
6 | |||
7 | # TARGET_ARCH="i686" # must be set outside | ||
8 | : ${CROSS_CHOST="${ARCH}-cross-linux-gnu"} | ||
9 | : ${TARGET_CHOST="${TARGET_ARCH}-pc-linux-gnu"} | ||
10 | |||
11 | # Destdirs: | ||
12 | # the buildroot of the toolchain | ||
13 | : ${BUILDROOT_DEST="/opt/buildroot-${TARGET_ARCH}"} | ||
14 | # target-tools dest: ${BUILDROOT_DEST}/${TARGET_DEST} | ||
15 | : ${TARGET_DEST="/buildroot-tools"} | ||
16 | # cross-tools dest: ${BUILDROOT_DEST}/${TARGET_DEST} | ||
17 | : ${CROSS_DEST="/cross-tools"} | ||
18 | |||
19 | |||
20 | : ${PNAME="buildroot-${TARGET_ARCH}"} | ||
21 | niro | 9863 | : ${PCAT="dev-misc"} |
22 | niro | 9 | |
23 | : ${DESCRIPTION="A crosscompile toolchain to compile programms for the ${TARGET_ARCH} arch."} | ||
24 | : ${HOMEPAGE="http://magellan-linux.de/"} | ||
25 | |||
26 | #SDEPEND="${SDEPEND} | ||
27 | # == dev-cross/cross-tools-${TARGET_ARCH}-${PVER}" | ||
28 | |||
29 | # binutils | ||
30 | #BINUTILS_PVER="2.18.50.0.3" | ||
31 | : ${BINUTILS_SRCFILE="binutils-${BINUTILS_PVER}.tar.bz2"} | ||
32 | : ${BINUTILS_SRCDIR="${BUILDDIR}/binutils-${BINUTILS_PVER}"} | ||
33 | |||
34 | # kernel-headers | ||
35 | #LINUX_HEADERS_PVER="2.6.24" | ||
36 | : ${LINUX_HEADERS_SRCFILE="linux-${LINUX_HEADERS_PVER}.tar.bz2"} | ||
37 | : ${LINUX_HEADERS_SRCDIR="${BUILDDIR}/linux-${LINUX_HEADERS_PVER}"} | ||
38 | |||
39 | # glibc-headers and libc | ||
40 | #GLIBC_PVER="2.7.0" | ||
41 | : ${GLIBC_SRCFILE="glibc-${GLIBC_PVER}.tar.bz2"} | ||
42 | : ${GLIBC_SRCDIR="${BUILDDIR}/glibc-${GLIBC_PVER}"} | ||
43 | |||
44 | # gcc | ||
45 | #GCC_PVER="4.2.3" | ||
46 | : ${GCC_SRCFILE="gcc-${GCC_PVER}.tar.bz2"} | ||
47 | : ${GCC_SRCDIR="${BUILDDIR}/gcc-${GCC_PVER}"} | ||
48 | |||
49 | # ncurses | ||
50 | # NCURSES_PVER="5.6" | ||
51 | : ${NCURSES_SRCFILE="ncurses-${NCURSES_PVER}.tar.gz"} | ||
52 | : ${NCURSES_SRCDIR="${BUILDDIR}/ncurses-${NCURSES_PVER}"} | ||
53 | |||
54 | # bash | ||
55 | # BASH_PVER="3.2" | ||
56 | : ${BASH_SRCFILE="bash-${BASH_PVER}.tar.gz"} | ||
57 | : ${BASH_SRCDIR="${BUILDDIR}/bash-${BASH_PVER}"} | ||
58 | |||
59 | # bzip2 | ||
60 | # BZIP2_PVER="1.0.4" | ||
61 | : ${BZIP2_SRCFILE="bzip2-${BZIP2_PVER}.tar.gz"} | ||
62 | : ${BZIP2_SRCDIR="${BUILDDIR}/bzip2-${BZIP2_PVER}"} | ||
63 | |||
64 | # coreutils | ||
65 | # COREUTILS_PVER="3.2" | ||
66 | : ${COREUTILS_SRCFILE="coreutils-${COREUTILS_PVER}.tar.gz"} | ||
67 | : ${COREUTILS_SRCDIR="${BUILDDIR}/coreutils-${COREUTILS_PVER}"} | ||
68 | |||
69 | # diffutils | ||
70 | # DIFFUTILS_PVER="3.2" | ||
71 | : ${DIFFUTILS_SRCFILE="diffutils-${DIFFUTILS_PVER}.tar.gz"} | ||
72 | : ${DIFFUTILS_SRCDIR="${BUILDDIR}/diffutils-${DIFFUTILS_PVER}"} | ||
73 | |||
74 | # findutils | ||
75 | # FINDUTILS_PVER="3.2" | ||
76 | : ${FINDUTILS_SRCFILE="findutils-${FINDUTILS_PVER}.tar.gz"} | ||
77 | : ${FINDUTILS_SRCDIR="${BUILDDIR}/findutils-${FINDUTILS_PVER}"} | ||
78 | |||
79 | # zlib | ||
80 | # ZLIB_PVER="3.2" | ||
81 | : ${ZLIB_SRCFILE="zlib-${ZLIB_PVER}.tar.gz"} | ||
82 | : ${ZLIB_SRCDIR="${BUILDDIR}/zlib-${ZLIB_PVER}"} | ||
83 | |||
84 | # file | ||
85 | # FILE_PVER="3.2" | ||
86 | : ${FILE_SRCFILE="file-${FILE_PVER}.tar.gz"} | ||
87 | : ${FILE_SRCDIR="${BUILDDIR}/file-${FILE_PVER}"} | ||
88 | |||
89 | # gawk | ||
90 | # GAWK_PVER="3.2" | ||
91 | : ${GAWK_SRCFILE="gawk-${GAWK_PVER}.tar.gz"} | ||
92 | : ${GAWK_SRCDIR="${BUILDDIR}/gawk-${GAWK_PVER}"} | ||
93 | |||
94 | # gettext | ||
95 | # GETTEXT_PVER="3.2" | ||
96 | : ${GETTEXT_SRCFILE="gettext-${GETTEXT_PVER}.tar.gz"} | ||
97 | : ${GETTEXT_SRCDIR="${BUILDDIR}/gettext-${GETTEXT_PVER}"} | ||
98 | |||
99 | # grep | ||
100 | # GREP_PVER="3.2" | ||
101 | : ${GREP_SRCFILE="grep-${GREP_PVER}.tar.gz"} | ||
102 | : ${GREP_SRCDIR="${BUILDDIR}/grep-${GREP_PVER}"} | ||
103 | |||
104 | # gzip | ||
105 | # GZIP_PVER="3.2" | ||
106 | : ${GZIP_SRCFILE="gzip-${GZIP_PVER}.tar.gz"} | ||
107 | : ${GZIP_SRCDIR="${BUILDDIR}/gzip-${GZIP_PVER}"} | ||
108 | |||
109 | # make | ||
110 | # MAKE_PVER="3.2" | ||
111 | : ${MAKE_SRCFILE="make-${MAKE_PVER}.tar.gz"} | ||
112 | : ${MAKE_SRCDIR="${BUILDDIR}/make-${MAKE_PVER}"} | ||
113 | |||
114 | # patch | ||
115 | # PATCH_PVER="3.2" | ||
116 | : ${PATCH_SRCFILE="patch-${PATCH_PVER}.tar.gz"} | ||
117 | : ${PATCH_SRCDIR="${BUILDDIR}/patch-${PATCH_PVER}"} | ||
118 | |||
119 | # sed | ||
120 | # SED_PVER="3.2" | ||
121 | : ${SED_SRCFILE="sed-${SED_PVER}.tar.gz"} | ||
122 | : ${SED_SRCDIR="${BUILDDIR}/sed-${SED_PVER}"} | ||
123 | |||
124 | # tar | ||
125 | # TAR_PVER="3.2" | ||
126 | : ${TAR_SRCFILE="tar-${TAR_PVER}.tar.gz"} | ||
127 | : ${TAR_SRCDIR="${BUILDDIR}/tar-${TAR_PVER}"} | ||
128 | |||
129 | # texinfo | ||
130 | # TEXINFO_PVER="3.2" | ||
131 | : ${TEXINFO_SRCFILE="texinfo-${TEXINFO_PVER}.tar.gz"} | ||
132 | : ${TEXINFO_SRCDIR="${BUILDDIR}/texinfo-${TEXINFO_PVER}"} | ||
133 | |||
134 | # e2fsprogs | ||
135 | # E2FSPROGS_PVER="3.2" | ||
136 | : ${E2FSPROGS_SRCFILE="e2fsprogs-${E2FSPROGS_PVER}.tar.gz"} | ||
137 | : ${E2FSPROGS_SRCDIR="${BUILDDIR}/e2fsprogs-${E2FSPROGS_PVER}"} | ||
138 | |||
139 | # util-linux | ||
140 | # UTIL_LINUX_PVER="3.2" | ||
141 | : ${UTIL_LINUX_SRCFILE="util-linux-ng-${UTIL_LINUX_PVER}.tar.gz"} | ||
142 | : ${UTIL_LINUX_SRCDIR="${BUILDDIR}/util-linux-ng-${UTIL_LINUX_PVER}"} | ||
143 | |||
144 | # initscripts | ||
145 | # INITSCRIPTS_PVER="3.2" | ||
146 | : ${INITSCRIPTS_SRCFILE="initscripts-${INITSCRIPTS_PVER}.tar.bz2"} | ||
147 | : ${INITSCRIPTS_SRCDIR="${BUILDDIR}/initscripts-${INITSCRIPTS_PVER}"} | ||
148 | |||
149 | # wget | ||
150 | # WGET_PVER="3.2" | ||
151 | : ${WGET_SRCFILE="wget-${WGET_PVER}.tar.gz"} | ||
152 | : ${WGET_SRCDIR="${BUILDDIR}/wget-${WGET_PVER}"} | ||
153 | |||
154 | # rsync | ||
155 | # RSYNC_PVER="3.2" | ||
156 | : ${RSYNC_SRCFILE="rsync-${RSYNC_PVER}.tar.gz"} | ||
157 | : ${RSYNC_SRCDIR="${BUILDDIR}/rsync-${RSYNC_PVER}"} | ||
158 | |||
159 | # cvs | ||
160 | # CVS_PVER="3.2" | ||
161 | : ${CVS_SRCFILE="cvs-${CVS_PVER}.tar.bz2"} | ||
162 | : ${CVS_SRCDIR="${BUILDDIR}/cvs-${CVS_PVER}"} | ||
163 | |||
164 | # perl | ||
165 | # PERL_PVER="5.10.0" | ||
166 | : ${PERL_SRCFILE="perl-${PERL_PVER}.tar.gz"} | ||
167 | : ${PERL_SRCDIR="${BUILDDIR}/perl-${PERL_PVER}"} | ||
168 | |||
169 | # m4 | ||
170 | # M4_PVER="1.4.10" | ||
171 | : ${M4_SRCFILE="m4-${M4_PVER}.tar.bz2"} | ||
172 | : ${M4_SRCDIR="${BUILDDIR}/m4-${M4_PVER}"} | ||
173 | |||
174 | # bison | ||
175 | # BISON_PVER="2.3" | ||
176 | : ${BISON_SRCFILE="bison-${BISON_PVER}.tar.bz2"} | ||
177 | : ${BISON_SRCDIR="${BUILDDIR}/bison-${BISON_PVER}"} | ||
178 | |||
179 | # flex | ||
180 | # FLEX_PVER="2.5.33" | ||
181 | : ${FLEX_SRCFILE="flex-${FLEX_PVER}.tar.bz2"} | ||
182 | : ${FLEX_SRCDIR="${BUILDDIR}/flex-${FLEX_PVER}"} | ||
183 | |||
184 | # fetch sources | ||
185 | SRC_URI=( | ||
186 | ${SRC_URI[*]} | ||
187 | http://www.kernel.org/pub/linux/devel/binutils/${BINUTILS_SRCFILE} | ||
188 | mirror://binutils/${BINUTILS_SRCFILE} | ||
189 | http://www.kernel.org/pub/linux/kernel/v${LINUX_HEADERS_PVER:0:3}/${LINUX_HEADERS_SRCFILE} | ||
190 | mirror://linux-libc-headers/${LINUX_HEADERS_SRCFILE} | ||
191 | gnu://glibc/${GLIBC_SRCFILE} | ||
192 | mirror://glibc/${GLIBC_SRCFILE} | ||
193 | gnu://gcc/gcc-${GCC_PVER}/${GCC_SRCFILE} | ||
194 | mirror://gcc/${GCC_SRCFILE} | ||
195 | gnu://ncurses/${NCURSES_SRCFILE} | ||
196 | mirror://ncurses/${NCURSES_SRCFILE} | ||
197 | gnu://bash/${BASH_SRCFILE} | ||
198 | mirror://bash/${BASH_SRCFILE} | ||
199 | http://www.bzip.org/${BZIP2_PVER}/${BZIP2_SRCFILE} | ||
200 | mirror://bzip2/${BZIP2_SRCFILE} | ||
201 | gnu://coreutils/${COREUTILS_SRCFILE} | ||
202 | mirror://coreutils/${COREUTILS_SRCFILE} | ||
203 | mirror://diffutils/${DIFFUTILS_SRCFILE} | ||
204 | gnu://findutils/${FINDUTILS_SRCFILE} | ||
205 | mirror://findutils/${FINDUTILS_SRCFILE} | ||
206 | http://www.zlib.net/${ZLIB_SRCFILE} | ||
207 | mirror://zlib/${ZLIB_SRCFILE} | ||
208 | ftp://ftp.astron.com/pub/file/${FILE_SRCFILE} | ||
209 | ftp://ftp.gw.com/mirrors/pub/unix/file/${FILE_SRCFILE} | ||
210 | mirror://file/${FILE_SRCFILE} | ||
211 | gnu://gawk/${GAWK_SRCFILE} | ||
212 | mirror://gawk/${GAWK_SRCFILE} | ||
213 | gnu://gettext/${GETTEXT_SRCFILE} | ||
214 | mirror://gettext/${GETTEXT_SRCFILE} | ||
215 | gnu://grep/${GREP_SRCFILE} | ||
216 | mirror://grep/${GREP_SRCFILE} | ||
217 | gnu://gzip/${GZIP_SRCFILE} | ||
218 | mirror://gzip/${GZIP_SRCFILE} | ||
219 | gnu://make/${MAKE_SRCFILE} | ||
220 | mirror://make/${MAKE_SRCFILE} | ||
221 | mirror://patch/${PATCH_SRCFILE} | ||
222 | gnu://sed/${SED_SRCFILE} | ||
223 | mirror://sed/${SED_SRCFILE} | ||
224 | gnu://tar/${TAR_SRCFILE} | ||
225 | mirror://tar/${TAR_SRCFILE} | ||
226 | gnu://texinfo/${TEXINFO_SRCFILE} | ||
227 | mirror://texinfo/${TEXINFO_SRCFILE} | ||
228 | sourceforge://e2fsprogs/${E2FSPROGS_SRCFILE} | ||
229 | mirror://e2fsprogs/${E2FSPROGS_SRCFILE} | ||
230 | http://www.kernel.org/pub/linux/utils/util-linux-ng/v${UTIL_LINUX_PVER/%.?/}/${UTIL_LINUX_SRCFILE} | ||
231 | mirror://util-linux-ng/${UTIL_LINUX_SRCFILE} | ||
232 | mirror://initscripts/${INITSCRIPTS_SRCFILE} | ||
233 | gnu://wget/${WGET_SRCFILE} | ||
234 | mirror://wget/${WGET_SRCFILE} | ||
235 | http://samba.anu.edu.au/ftp/rsync/${RSYNC_SRCFILE} | ||
236 | mirror://rsync/${RSYNC_SRCFILE} | ||
237 | gnu://non-gnu/cvs/source/stable/${CVS_PVER}/${CVS_SRCFILE} | ||
238 | gnu://non-gnu/cvs/source/nightly-snapshots/stable/${CVS_SRCFILE} | ||
239 | mirror://cvs/${CVS_SRCFILE} | ||
240 | http://ftp.funet.fi/pub/CPAN/src/${PERL_SRCFILE} | ||
241 | mirror://perl/${PERL_SRCFILE} | ||
242 | gnu://m4/${M4_SRCFILE} | ||
243 | mirror://m4/${M4_SRCFILE} | ||
244 | gnu://bison/${BISON_SRCFILE} | ||
245 | mirror://bison/${BISON_SRCFILE} | ||
246 | mirror://flex/${FLEX_SRCFILE} | ||
247 | mirror://glibc/glibc-2.3.5-localedef_segfault-1.patch | ||
248 | mirror://glibc/glibc-2.3.5-libgcc_eh-1.patch | ||
249 | mirror://gcc/gcc-${GCC_PVER}-no-fixincludes.patch | ||
250 | mirror://gcc/gcc-${GCC_PVER}-magellan-version.patch | ||
251 | mirror://gcc/gcc-${GCC_PVER}-cross-search-paths.patch | ||
252 | mirror://gcc/gcc-${GCC_PVER}-specs.patch | ||
253 | mirror://texinfo/texinfo-${TEXINFO_PVER}-mbstate-fix.patch | ||
254 | mirror://perl/perl-${PERL_PVER}-hardwired-libc.patch | ||
255 | ) | ||
256 | |||
257 | # do not get the idea to strip the resulting binaries! | ||
258 | # you must have build the strip program on the same arch, | ||
259 | # but this is propably not the case. so we force stripping off. | ||
260 | NOSTRIP=true | ||
261 | |||
262 | activate_ccache() | ||
263 | { | ||
264 | if [[ ${SMAGE_USE_CCACHE} ]] | ||
265 | then | ||
266 | export PATH="/opt/cross-tools/bin:/usr/$(mlibdir)/ccache/bin:${PATH}" | ||
267 | fi | ||
268 | } | ||
269 | |||
270 | deactivate_ccache() | ||
271 | { | ||
272 | # disable any ccache regardless if user-enabled or mage-enabled | ||
273 | if [[ ! -z $(echo ${PATH} | grep "/usr/$(mlibdir)/ccache/bin") ]] | ||
274 | then | ||
275 | export PATH="$(echo ${PATH} | sed s:/usr/$(mlibdir)/ccache/bin::g)" | ||
276 | fi | ||
277 | } | ||
278 | |||
279 | # export2buildroot() | ||
280 | # { | ||
281 | # local cmd="$@" | ||
282 | # | ||
283 | # typeset -f die > ${BINDIR}/${BUILDROOT_DEST}/.chrootrc || die | ||
284 | # echo "${cmd}" >> ${BINDIR}/${BUILDROOT_DEST}/.chrootrc || die | ||
285 | # } | ||
286 | |||
287 | chrooted() | ||
288 | { | ||
289 | local cmd="$@" | ||
290 | local mount="false" | ||
291 | local sources="false" | ||
292 | |||
293 | # very basic getops | ||
294 | for i in $* | ||
295 | do | ||
296 | case $1 in | ||
297 | --mount) mount="true"; cmd="${cmd/--mount/}" ;; | ||
298 | --sources) sources="true"; cmd="${cmd/--sources/}" ;; | ||
299 | --chrootrc) cmd="/bin/bash /.chrootrc"; cmd="${cmd/--chrootrc/}" ;; | ||
300 | esac | ||
301 | shift | ||
302 | done | ||
303 | |||
304 | if [[ ${mount} = true ]] | ||
305 | then | ||
306 | install -d ${BINDIR}/${BUILDROOT_DEST}/{dev,sys,proc} || die | ||
307 | mount -t sysfs sysfs ${BINDIR}/${BUILDROOT_DEST}/sys || die | ||
308 | mount -t proc proc ${BINDIR}/${BUILDROOT_DEST}/proc || die | ||
309 | mount -o bind /dev ${BINDIR}/${BUILDROOT_DEST}/dev || die | ||
310 | fi | ||
311 | |||
312 | if [[ ${sources} = true ]] | ||
313 | then | ||
314 | install -d ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die | ||
315 | mount -o bind ${SOURCEDIR} ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die | ||
316 | fi | ||
317 | |||
318 | chroot ${BINDIR}/${BUILDROOT_DEST} \ | ||
319 | ${TARGET_DEST}/bin/env -i \ | ||
320 | HOME=/root TERM="${TERM}" \ | ||
321 | PS1='\u:\w\$ ' \ | ||
322 | PATH=/bin:/usr/bin:/sbin:/usr/sbin:${TARGET_DEST}/bin \ | ||
323 | http_proxy="${http_proxy}" \ | ||
324 | ftp_proxy="${ftp_proxy}" \ | ||
325 | no_proxy="${no_proxy}" \ | ||
326 | ${cmd} #|| die "chroot exit code not null." | ||
327 | |||
328 | if [[ ${sources} = true ]] | ||
329 | then | ||
330 | umount ${BINDIR}/${BUILDROOT_DEST}/${SOURCEDIR} || die | ||
331 | fi | ||
332 | |||
333 | if [[ ${mount} = true ]] | ||
334 | then | ||
335 | umount ${BINDIR}/${BUILDROOT_DEST}/{dev,proc,sys} || die | ||
336 | fi | ||
337 | } | ||
338 | |||
339 | stage1_configure() | ||
340 | { | ||
341 | ./configure \ | ||
342 | --build=${CROSS_CHOST} \ | ||
343 | --host=${TARGET_CHOST} \ | ||
344 | --prefix=${TARGET_DEST} \ | ||
345 | "$@" \ | ||
346 | || die | ||
347 | } | ||
348 | |||
349 | linux_headers_cross_src_prepare() | ||
350 | { | ||
351 | munpack ${LINUX_HEADERS_SRCFILE} || die | ||
352 | } | ||
353 | |||
354 | linux_headers_cross_src_compile() | ||
355 | { | ||
356 | cd ${LINUX_HEADERS_SRCDIR} | ||
357 | make mrproper || die | ||
358 | make ARCH=${ARCH/i*86/x86} headers_check || die | ||
359 | } | ||
360 | |||
361 | linux_headers_cross_src_install() | ||
362 | { | ||
363 | cd ${LINUX_HEADERS_SRCDIR} | ||
364 | make ARCH=${ARCH/i*86/x86} INSTALL_HDR_PATH=${TARGET_DEST} headers_install || die | ||
365 | } | ||
366 | |||
367 | |||
368 | binutils_cross_src_prepare() | ||
369 | { | ||
370 | munpack ${BINUTILS_SRCFILE} || die | ||
371 | install -d ${BINUTILS_SRCDIR}/build || die | ||
372 | } | ||
373 | |||
374 | binutils_cross_src_compile() | ||
375 | { | ||
376 | cd ${BINUTILS_SRCDIR}/build | ||
377 | |||
378 | AR=ar AS=as \ | ||
379 | ../configure \ | ||
380 | --host=${CROSS_CHOST} \ | ||
381 | --target=${TARGET_CHOST} \ | ||
382 | --prefix=${CROSS_DEST} \ | ||
383 | --with-lib-path=${TARGET_DEST}/lib \ | ||
384 | --disable-nls \ | ||
385 | --enable-shared \ | ||
386 | --disable-multilib \ | ||
387 | || die | ||
388 | |||
389 | make configure-host || die | ||
390 | mmake || die | ||
391 | } | ||
392 | |||
393 | binutils_cross_src_install() | ||
394 | { | ||
395 | cd ${BINUTILS_SRCDIR}/build | ||
396 | |||
397 | make install || die | ||
398 | |||
399 | install -d ${TARGET_DEST}/include || die | ||
400 | cp ../include/libiberty.h ${TARGET_DEST}/include || die | ||
401 | } | ||
402 | |||
403 | |||
404 | gcc_static_cross_src_prepare() | ||
405 | { | ||
406 | munpack ${GCC_SRCFILE} || die | ||
407 | cd ${GCC_SRCDIR} | ||
408 | |||
409 | mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die | ||
410 | mpatch gcc-${GCC_PVER}-magellan-version.patch || die | ||
411 | |||
412 | # fixes location of the dynamic linker and not append include | ||
413 | # search path to /usr/include | ||
414 | # but first set the location to ${TARGET_DEST} and than patch | ||
415 | sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \ | ||
416 | ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die | ||
417 | |||
418 | # do not search the /usr directory for libgcc_s.so when cross-compiling | ||
419 | mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die | ||
420 | |||
421 | # suppress installation of libiberty, as we will be | ||
422 | # using the one from binutils | ||
423 | #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die | ||
424 | |||
425 | # fix up the startfile spec to search /opt/cross-tools/lib | ||
426 | # fixes errors like this on the final cross-gcc compilation | ||
427 | # /opt/cross-tools/i686-cross-linux-gnu/bin/ld: crti.o: No such file: No such file or directory | ||
428 | # collect2: ld returned 1 exit status | ||
429 | echo " | ||
430 | #undef STARTFILE_PREFIX_SPEC | ||
431 | #define STARTFILE_PREFIX_SPEC \"${TARGET_DEST}/lib/\"" >> ${GCC_SRCDIR}/gcc/config/linux.h || die | ||
432 | |||
433 | # change header search path to look only in $TARGET_DEST/include | ||
434 | # and not the hosts own include pathes | ||
435 | sed -i "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" \ | ||
436 | ${GCC_SRCDIR}/gcc/Makefile.in || die | ||
437 | |||
438 | install -d ${GCC_SRCDIR}/build || die | ||
439 | } | ||
440 | |||
441 | gcc_static_cross_src_compile() | ||
442 | { | ||
443 | cd ${GCC_SRCDIR}/build | ||
444 | |||
445 | ../configure \ | ||
446 | --host=${CROSS_CHOST} \ | ||
447 | --target=${TARGET_CHOST} \ | ||
448 | --prefix=${CROSS_DEST} \ | ||
449 | --with-local-prefix=${TARGET_DEST} \ | ||
450 | --disable-nls \ | ||
451 | --disable-shared \ | ||
452 | --disable-threads \ | ||
453 | --enable-languages=c \ | ||
454 | --disable-multilib \ | ||
455 | || die | ||
456 | |||
457 | mmake all-gcc || die | ||
458 | } | ||
459 | |||
460 | gcc_static_cross_src_install() | ||
461 | { | ||
462 | cd ${GCC_SRCDIR}/build | ||
463 | make install-gcc || die | ||
464 | } | ||
465 | |||
466 | |||
467 | glibc_cross_src_prepare() | ||
468 | { | ||
469 | munpack ${GLIBC_SRCFILE} || die | ||
470 | cd ${GLIBC_SRCDIR} | ||
471 | |||
472 | # disable binutils -as-needed | ||
473 | sed -i 's/^have-as-needed.*/have-as-needed = no/' \ | ||
474 | ${GLIBC_SRCDIR}/config.make.in || die | ||
475 | |||
476 | # fix segfault of localdef on arches beside x86-32 | ||
477 | mpatch glibc-2.3.5-localedef_segfault-1.patch || die | ||
478 | |||
479 | # remove dependencies on libgcc_eh | ||
480 | mpatch glibc-2.3.5-libgcc_eh-1.patch || die | ||
481 | |||
482 | # fix permissions on some of the scripts | ||
483 | chmod u+x ${GLIBC_SRCDIR}/scripts/*.sh || die | ||
484 | |||
485 | install -d ${GLIBC_SRCDIR}/build || die | ||
486 | } | ||
487 | |||
488 | glibc_cross_src_compile() | ||
489 | { | ||
490 | cd ${GLIBC_SRCDIR}/build | ||
491 | |||
492 | local my_glibc_CFLAGS | ||
493 | local my_glibc_CXXFLAGS | ||
494 | # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic | ||
495 | [[ ${TARGET_ARCH} = i*86 ]] && my_glibc_CFLAGS="${CFLAGS} -march=${TARGET_ARCH}" # only i*86 | ||
496 | my_glibc_CFLAGS="${my_glibc_CFLAGS} -mtune=generic" # all arches | ||
497 | |||
498 | # force nptl support (may not detected always) | ||
499 | echo "libc_cv_forced_unwind=yes" > config.cache || die | ||
500 | echo "libc_cv_c_cleanup=yes" >> config.cache || die | ||
501 | |||
502 | BUILD_CC="gcc" \ | ||
503 | CC="${TARGET_CHOST}-gcc" \ | ||
504 | AR="${TARGET_CHOST}-ar" \ | ||
505 | RANLIB="${TARGET_CHOST}-ranlib" \ | ||
506 | CFLAGS="${my_glibc_CFLAGS}" \ | ||
507 | ../configure \ | ||
508 | --host=${TARGET_CHOST} \ | ||
509 | --build=${CROSS_CHOST} \ | ||
510 | --prefix=${TARGET_DEST} \ | ||
511 | --disable-profile \ | ||
512 | --enable-add-ons=nptl --with-tls \ | ||
513 | --with-__thread \ | ||
514 | --enable-kernel=2.6.0 \ | ||
515 | --without-cvs \ | ||
516 | --with-headers=${TARGET_DEST}/include \ | ||
517 | --with-binutils=${CROSS_DEST}/bin \ | ||
518 | --cache-file=config.cache \ | ||
519 | || die | ||
520 | |||
521 | make PARALLELMFLAGS="-j2" || die | ||
522 | } | ||
523 | |||
524 | glibc_cross_src_install() | ||
525 | { | ||
526 | cd ${GLIBC_SRCDIR}/build | ||
527 | make install || die | ||
528 | } | ||
529 | |||
530 | |||
531 | gcc_cross_src_prepare() | ||
532 | { | ||
533 | munpack ${GCC_SRCFILE} || die | ||
534 | cd ${GCC_SRCDIR} | ||
535 | |||
536 | mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die | ||
537 | mpatch gcc-${GCC_PVER}-magellan-version.patch || die | ||
538 | |||
539 | # fixes location of the dynamic linker and not append include | ||
540 | # search path to /usr/include | ||
541 | # but first set the location to ${TARGET_DEST} and than patch | ||
542 | sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \ | ||
543 | ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die | ||
544 | |||
545 | # do not search the /usr directory for libgcc_s.so when cross-compiling | ||
546 | mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die | ||
547 | |||
548 | # suppress installation of libiberty, as we will be | ||
549 | # using the one from binutils | ||
550 | #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die | ||
551 | |||
552 | # fix up the startfile spec to search /opt/cross-tools/lib | ||
553 | # fixes errors like this on the final cross-gcc compilation | ||
554 | # /opt/cross-tools/i686-cross-linux-gnu/bin/ld: crti.o: No such file: No such file or directory | ||
555 | # collect2: ld returned 1 exit status | ||
556 | echo " | ||
557 | #undef STARTFILE_PREFIX_SPEC | ||
558 | #define STARTFILE_PREFIX_SPEC \"${TARGET_DEST}/lib/\"" >> ${GCC_SRCDIR}/gcc/config/linux.h || die | ||
559 | |||
560 | # change header search path to look only in $TARGET_DEST/include | ||
561 | # and not the hosts own include pathes | ||
562 | sed -i "s@\(^CROSS_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" \ | ||
563 | ${GCC_SRCDIR}/gcc/Makefile.in || die | ||
564 | |||
565 | # disable -B in configure, so it doesn't pick up the host's header files | ||
566 | sed -i '/FLAGS_FOR_TARGET.*\/lib\//s@-B[^ ]*/lib/@@g' configure || die | ||
567 | |||
568 | install -d ${GCC_SRCDIR}/build || die | ||
569 | } | ||
570 | |||
571 | gcc_cross_src_compile() | ||
572 | { | ||
573 | cd ${GCC_SRCDIR}/build | ||
574 | |||
575 | ../configure \ | ||
576 | --host=${CROSS_CHOST} \ | ||
577 | --target=${TARGET_CHOST} \ | ||
578 | --prefix=${CROSS_DEST} \ | ||
579 | --with-local-prefix=${TARGET_DEST} \ | ||
580 | --enable-shared \ | ||
581 | --enable-threads=posix \ | ||
582 | --enable-__cxa_atexit \ | ||
583 | --enable-c99 \ | ||
584 | --enable-long-long \ | ||
585 | --enable-languages=c,c++ \ | ||
586 | --disable-nls \ | ||
587 | --disable-multilib \ | ||
588 | || die | ||
589 | |||
590 | make \ | ||
591 | AS_FOR_TARGET="${TARGET_CHOST}-as" \ | ||
592 | LD_FOR_TARGET="${TARGET_CHOST}-ld" \ | ||
593 | || die | ||
594 | } | ||
595 | |||
596 | gcc_cross_src_install() | ||
597 | { | ||
598 | cd ${GCC_SRCDIR}/build | ||
599 | make install || die | ||
600 | } | ||
601 | |||
602 | |||
603 | binutils_stage1_src_prepare() | ||
604 | { | ||
605 | munpack ${BINUTILS_SRCFILE} || die | ||
606 | install -d ${BINUTILS_SRCDIR}/build || die | ||
607 | } | ||
608 | |||
609 | binutils_stage1_src_compile() | ||
610 | { | ||
611 | cd ${BINUTILS_SRCDIR}/build | ||
612 | |||
613 | ../configure \ | ||
614 | --build=${CROSS_CHOST} \ | ||
615 | --host=${TARGET_CHOST} \ | ||
616 | --target=${TARGET_CHOST} \ | ||
617 | --prefix=${TARGET_DEST} \ | ||
618 | --with-lib-path=${TARGET_DEST}/lib \ | ||
619 | --disable-nls \ | ||
620 | --enable-shared \ | ||
621 | --enable-64-bit-bfd \ | ||
622 | --disable-multilib \ | ||
623 | || die | ||
624 | |||
625 | make configure-host || die | ||
626 | mmake || die | ||
627 | } | ||
628 | |||
629 | binutils_stage1_src_install() | ||
630 | { | ||
631 | cd ${BINUTILS_SRCDIR}/build | ||
632 | |||
633 | make install || die | ||
634 | |||
635 | install -d ${TARGET_DEST}/include || die | ||
636 | cp ../include/libiberty.h ${TARGET_DEST}/include || die | ||
637 | } | ||
638 | |||
639 | |||
640 | gcc_stage1_src_prepare() | ||
641 | { | ||
642 | munpack ${GCC_SRCFILE} || die | ||
643 | cd ${GCC_SRCDIR} | ||
644 | |||
645 | mpatch gcc-${GCC_PVER}-no-fixincludes.patch || die | ||
646 | mpatch gcc-${GCC_PVER}-magellan-version.patch || die | ||
647 | |||
648 | # fixes location of the dynamic linker and not append include | ||
649 | # search path to /usr/include | ||
650 | # but first set the location to ${TARGET_DEST} and than patch | ||
651 | sed "s:/tools/lib/:${TARGET_DEST}/lib/:g" \ | ||
652 | ${SOURCEDIR}/${PNAME}/gcc-${GCC_PVER}-specs.patch | patch -Np1 || die | ||
653 | |||
654 | # do not search the /usr directory for libgcc_s.so when cross-compiling | ||
655 | mpatch gcc-${GCC_PVER}-cross-search-paths.patch || die | ||
656 | |||
657 | # suppress installation of libiberty, as we will be | ||
658 | # using the one from binutils | ||
659 | #sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in || die | ||
660 | |||
661 | # don't search headers in /usr/include | ||
662 | sed -i '/#define STANDARD_INCLUDE_DIR/s@"/usr/include"@0@g' gcc/cppdefault.c || die | ||
663 | |||
664 | # set the directory searched by the fixincludes process for system headers | ||
665 | sed -i "s@\(^NATIVE_SYSTEM_HEADER_DIR =\).*@\1 ${TARGET_DEST}/include@g" gcc/Makefile.in || die | ||
666 | |||
667 | install -d ${GCC_SRCDIR}/build || die | ||
668 | } | ||
669 | |||
670 | gcc_stage1_src_compile() | ||
671 | { | ||
672 | cd ${GCC_SRCDIR}/build | ||
673 | |||
674 | ../configure \ | ||
675 | --build=${CROSS_CHOST} \ | ||
676 | --host=${TARGET_CHOST} \ | ||
677 | --target=${TARGET_CHOST} \ | ||
678 | --prefix=${TARGET_DEST} \ | ||
679 | --with-local-prefix=${TARGET_DEST} \ | ||
680 | --disable-nls \ | ||
681 | --enable-shared \ | ||
682 | --enable-threads=posix \ | ||
683 | --enable-__cxa_atexit \ | ||
684 | --enable-long-long \ | ||
685 | --enable-c99 \ | ||
686 | --enable-cstdio=stdio \ | ||
687 | --enable-languages=c,c++ \ | ||
688 | --disable-libstdcxx-pch \ | ||
689 | || die | ||
690 | |||
691 | make AS_FOR_TARGET="${AS}" LD_FOR_TARGET="${LD}" || die | ||
692 | } | ||
693 | |||
694 | gcc_stage1_src_install() | ||
695 | { | ||
696 | cd ${GCC_SRCDIR}/build | ||
697 | make install || die | ||
698 | } | ||
699 | |||
700 | |||
701 | ncurses_stage1_src_prepare() | ||
702 | { | ||
703 | munpack ${NCURSES_SRCFILE} || die | ||
704 | } | ||
705 | |||
706 | ncurses_stage1_src_compile() | ||
707 | { | ||
708 | cd ${NCURSES_SRCDIR} | ||
709 | |||
710 | stage1_configure \ | ||
711 | --with-shared \ | ||
712 | --without-debug \ | ||
713 | --without-ada \ | ||
714 | --enable-overwrite \ | ||
715 | --with-build-cc=gcc \ | ||
716 | || die | ||
717 | |||
718 | mmake || die | ||
719 | } | ||
720 | |||
721 | ncurses_stage1_src_install() | ||
722 | { | ||
723 | cd ${NCURSES_SRCDIR} | ||
724 | mmake install || die | ||
725 | } | ||
726 | |||
727 | |||
728 | bash_stage1_src_prepare() | ||
729 | { | ||
730 | munpack ${BASH_SRCFILE} || die | ||
731 | } | ||
732 | |||
733 | bash_stage1_src_compile() | ||
734 | { | ||
735 | cd ${BASH_SRCDIR} | ||
736 | |||
737 | # while cross-compiling, bash test for the presence of named pipes etc | ||
738 | echo "ac_cv_func_mmap_fixed_mapped=yes" > config.cache | ||
739 | echo "ac_cv_func_strcoll_works=yes" >> config.cache | ||
740 | echo "ac_cv_func_working_mktime=yes" >> config.cache | ||
741 | echo "bash_cv_func_sigsetjmp=present" >> config.cache | ||
742 | echo "bash_cv_getcwd_malloc=yes" >> config.cache | ||
743 | echo "bash_cv_job_control_missing=present" >> config.cache | ||
744 | echo "bash_cv_printf_a_format=yes" >> config.cache | ||
745 | echo "bash_cv_sys_named_pipes=present" >> config.cache | ||
746 | echo "bash_cv_ulimit_maxfds=yes" >> config.cache | ||
747 | echo "bash_cv_under_sys_siglist=yes" >> config.cache | ||
748 | echo "bash_cv_unusable_rtsigs=no" >> config.cache | ||
749 | echo "gt_cv_int_divbyzero_sigfpe=yes" >> config.cache | ||
750 | |||
751 | stage1_configure \ | ||
752 | --without-bash-malloc \ | ||
753 | --cache-file=config.cache \ | ||
754 | || die | ||
755 | |||
756 | mmake || die | ||
757 | } | ||
758 | |||
759 | bash_stage1_src_install() | ||
760 | { | ||
761 | cd ${BASH_SRCDIR} | ||
762 | mmake install || die | ||
763 | |||
764 | # use bash as default shell | ||
765 | ln -snf bash ${TARGET_DEST}/bin/sh || die | ||
766 | } | ||
767 | |||
768 | |||
769 | bzip2_stage1_src_prepare() | ||
770 | { | ||
771 | munpack ${BZIP2_SRCFILE} || die | ||
772 | cd ${BZIP2_SRCDIR} | ||
773 | |||
774 | # disable testsuite; won't work on multi-arch/cross build | ||
775 | sed -i 's@^\(all:.*\) test@\1@g' Makefile || die | ||
776 | } | ||
777 | |||
778 | bzip2_stage1_src_compile() | ||
779 | { | ||
780 | cd ${BZIP2_SRCDIR} | ||
781 | mmake CC="${CC}" AR="${AR}" RANLIB="${RANLIB}" || die | ||
782 | } | ||
783 | |||
784 | bzip2_stage1_src_install() | ||
785 | { | ||
786 | cd ${BZIP2_SRCDIR} | ||
787 | mmake PREFIX=${TARGET_DEST} install || die | ||
788 | } | ||
789 | |||
790 | |||
791 | coreutils_stage1_src_prepare() | ||
792 | { | ||
793 | munpack ${COREUTILS_SRCFILE} || die | ||
794 | } | ||
795 | |||
796 | coreutils_stage1_src_compile() | ||
797 | { | ||
798 | cd ${COREUTILS_SRCDIR} | ||
799 | |||
800 | # configure can not properly determine how to get free space | ||
801 | # and 'df' will not be built | ||
802 | #echo "fu_cv_sys_stat_statfs2_bsize=yes" > config.cache | ||
803 | |||
804 | # from debian | ||
805 | # configure can not properly determine how to get free space | ||
806 | # and 'df' will not be built | ||
807 | # | ||
808 | # fixes include/stdio.h:718: error: conflicting types for 'rpl_fseeko' | ||
809 | # see: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480706 | ||
810 | # | ||
811 | # coreutils 6.10 needs a patch for the gettime issue | ||
812 | # see: http://bugs.gentoo.org/show_bug.cgi?id=207560 | ||
813 | # (appling outside) | ||
814 | # | ||
815 | echo 'gl_cv_func_tzset_clobber=no' > config.cache | ||
816 | echo 'jm_cv_func_gettimeofday_clobber=no' >> config.cache | ||
817 | echo 'utils_cv_localtime_cache=no' >> config.cache | ||
818 | echo 'ac_cv_func_futimesat=yes' >> config.cache | ||
819 | echo 'ac_cv_prog_cc_c99=${ac_cv_prog_cc_c99=-std=gnu99}' >> config.cache | ||
820 | echo 'ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=-std=gnu99}' >> config.cache | ||
821 | echo 'fu_cv_sys_stat_statfs2_bsize=yes' >> config.cache | ||
822 | echo 'gl_cv_struct_dirent_d_ino=yes' >> config.cache | ||
823 | echo 'ac_cv_func_malloc_0_nonnull=yes' >> config.cache | ||
824 | echo 'ac_cv_func_realloc_0_nonnull=yes' >> config.cache | ||
825 | echo 'gl_cv_header_working_fcntl_h=yes' >> config.cache | ||
826 | echo 'gl_cv_func_gnu_getopt=yes' >> config.cache | ||
827 | echo 'ac_cv_func_calloc_0_nonnull=yes' >> config.cache | ||
828 | echo 'gl_cv_func_fflush_stdin=yes' >> config.cache | ||
829 | echo 'gl_cv_func_wcwidth_works=yes' >> config.cache | ||
830 | echo 'ac_cv_func_fnmatch_gnu=yes' >> config.cache | ||
831 | echo 'gl_cv_func_getcwd_null=yes' >> config.cache | ||
832 | echo 'ac_cv_func_memcmp_working=yes' >> config.cache | ||
833 | echo 'gl_cv_func_signbit=yes' >> config.cache | ||
834 | echo 'ac_cv_func_lstat_empty_string_bug=no' >> config.cache | ||
835 | echo 'gl_cv_func_working_acl_get_file=yes' >> config.cache | ||
836 | echo 'gl_cv_func_fchownat_nofollow_works=yes' >> config.cache | ||
837 | |||
838 | stage1_configure --cache-file=config.cache || die | ||
839 | mmake || die | ||
840 | } | ||
841 | |||
842 | coreutils_stage1_src_install() | ||
843 | { | ||
844 | cd ${COREUTILS_SRCDIR} | ||
845 | mmake install || die | ||
846 | } | ||
847 | |||
848 | |||
849 | diffutils_stage1_src_prepare() | ||
850 | { | ||
851 | munpack ${DIFFUTILS_SRCFILE} || die | ||
852 | } | ||
853 | |||
854 | diffutils_stage1_src_compile() | ||
855 | { | ||
856 | cd ${DIFFUTILS_SRCDIR} | ||
857 | stage1_configure || die | ||
858 | mmake || die | ||
859 | } | ||
860 | |||
861 | diffutils_stage1_src_install() | ||
862 | { | ||
863 | cd ${DIFFUTILS_SRCDIR} | ||
864 | mmake install || die | ||
865 | } | ||
866 | |||
867 | |||
868 | findutils_stage1_src_prepare() | ||
869 | { | ||
870 | munpack ${FINDUTILS_SRCFILE} || die | ||
871 | } | ||
872 | |||
873 | findutils_stage1_src_compile() | ||
874 | { | ||
875 | cd ${FINDUTILS_SRCDIR} | ||
876 | stage1_configure || die | ||
877 | mmake || die | ||
878 | } | ||
879 | |||
880 | findutils_stage1_src_install() | ||
881 | { | ||
882 | cd ${FINDUTILS_SRCDIR} | ||
883 | mmake install || die | ||
884 | } | ||
885 | |||
886 | |||
887 | zlib_stage1_src_prepare() | ||
888 | { | ||
889 | munpack ${ZLIB_SRCFILE} || die | ||
890 | } | ||
891 | |||
892 | zlib_stage1_src_compile() | ||
893 | { | ||
894 | cd ${ZLIB_SRCDIR} | ||
895 | # zlib uses a non standart configure | ||
896 | ./configure --prefix=${TARGET_DEST} --shared || die | ||
897 | mmake || die | ||
898 | } | ||
899 | |||
900 | zlib_stage1_src_install() | ||
901 | { | ||
902 | cd ${FINDUTILS_SRCDIR} | ||
903 | mmake install || die | ||
904 | } | ||
905 | |||
906 | |||
907 | file_stage1_src_prepare() | ||
908 | { | ||
909 | munpack ${FILE_SRCFILE} || die | ||
910 | } | ||
911 | |||
912 | file_stage1_src_compile() | ||
913 | { | ||
914 | cd ${FILE_SRCDIR} | ||
915 | stage1_configure || die | ||
916 | mmake || die | ||
917 | } | ||
918 | |||
919 | file_stage1_src_install() | ||
920 | { | ||
921 | cd ${FILE_SRCDIR} | ||
922 | mmake install || die | ||
923 | } | ||
924 | |||
925 | |||
926 | gawk_stage1_src_prepare() | ||
927 | { | ||
928 | munpack ${GAWK_SRCFILE} || die | ||
929 | } | ||
930 | |||
931 | gawk_stage1_src_compile() | ||
932 | { | ||
933 | cd ${GAWK_SRCDIR} | ||
934 | stage1_configure || die | ||
935 | mmake || die | ||
936 | } | ||
937 | |||
938 | gawk_stage1_src_install() | ||
939 | { | ||
940 | cd ${GAWK_SRCDIR} | ||
941 | mmake install || die | ||
942 | } | ||
943 | |||
944 | |||
945 | gettext_stage1_src_prepare() | ||
946 | { | ||
947 | munpack ${GETTEXT_SRCFILE} || die | ||
948 | } | ||
949 | |||
950 | gettext_stage1_src_compile() | ||
951 | { | ||
952 | cd ${GETTEXT_SRCDIR}/gettext-tools | ||
953 | |||
954 | # fixes compilation; configure assume that wcwidth is broken | ||
955 | echo "gl_cv_func_wcwidth_works=yes" > config.cache | ||
956 | stage1_configure --disable-shared --cache-file=config.cache || die | ||
957 | |||
958 | # only built neccessary stuff | ||
959 | mmake -C gnulib-lib || die | ||
960 | mmake -C src msgfmt || die | ||
961 | } | ||
962 | |||
963 | gettext_stage1_src_install() | ||
964 | { | ||
965 | cd ${GETTEXT_SRCDIR}/gettext-tools | ||
966 | |||
967 | # only install neccessary stuff | ||
968 | install -m0755 src/msgfmt ${TARGET_DEST}/bin || die | ||
969 | } | ||
970 | |||
971 | |||
972 | grep_stage1_src_prepare() | ||
973 | { | ||
974 | munpack ${GREP_SRCFILE} || die | ||
975 | } | ||
976 | |||
977 | grep_stage1_src_compile() | ||
978 | { | ||
979 | cd ${GREP_SRCDIR} | ||
980 | stage1_configure --disable-perl-regexp || die | ||
981 | mmake || die | ||
982 | } | ||
983 | |||
984 | grep_stage1_src_install() | ||
985 | { | ||
986 | cd ${GREP_SRCDIR} | ||
987 | mmake install || die | ||
988 | } | ||
989 | |||
990 | |||
991 | gzip_stage1_src_prepare() | ||
992 | { | ||
993 | munpack ${GZIP_SRCFILE} || die | ||
994 | } | ||
995 | |||
996 | gzip_stage1_src_compile() | ||
997 | { | ||
998 | cd ${GZIP_SRCDIR} | ||
999 | stage1_configure || die | ||
1000 | mmake || die | ||
1001 | } | ||
1002 | |||
1003 | gzip_stage1_src_install() | ||
1004 | { | ||
1005 | cd ${GZIP_SRCDIR} | ||
1006 | mmake install || die | ||
1007 | } | ||
1008 | |||
1009 | |||
1010 | make_stage1_src_prepare() | ||
1011 | { | ||
1012 | munpack ${MAKE_SRCFILE} || die | ||
1013 | } | ||
1014 | |||
1015 | make_stage1_src_compile() | ||
1016 | { | ||
1017 | cd ${MAKE_SRCDIR} | ||
1018 | stage1_configure || die | ||
1019 | mmake || die | ||
1020 | } | ||
1021 | |||
1022 | make_stage1_src_install() | ||
1023 | { | ||
1024 | cd ${MAKE_SRCDIR} | ||
1025 | mmake install || die | ||
1026 | } | ||
1027 | |||
1028 | |||
1029 | patch_stage1_src_prepare() | ||
1030 | { | ||
1031 | munpack ${PATCH_SRCFILE} || die | ||
1032 | } | ||
1033 | |||
1034 | patch_stage1_src_compile() | ||
1035 | { | ||
1036 | cd ${PATCH_SRCDIR} | ||
1037 | stage1_configure || die | ||
1038 | mmake || die | ||
1039 | } | ||
1040 | |||
1041 | patch_stage1_src_install() | ||
1042 | { | ||
1043 | cd ${PATCH_SRCDIR} | ||
1044 | mmake install || die | ||
1045 | } | ||
1046 | |||
1047 | |||
1048 | sed_stage1_src_prepare() | ||
1049 | { | ||
1050 | munpack ${SED_SRCFILE} || die | ||
1051 | } | ||
1052 | |||
1053 | sed_stage1_src_compile() | ||
1054 | { | ||
1055 | cd ${SED_SRCDIR} | ||
1056 | stage1_configure || die | ||
1057 | mmake || die | ||
1058 | } | ||
1059 | |||
1060 | sed_stage1_src_install() | ||
1061 | { | ||
1062 | cd ${SED_SRCDIR} | ||
1063 | mmake install || die | ||
1064 | } | ||
1065 | |||
1066 | |||
1067 | tar_stage1_src_prepare() | ||
1068 | { | ||
1069 | munpack ${TAR_SRCFILE} || die | ||
1070 | } | ||
1071 | |||
1072 | tar_stage1_src_compile() | ||
1073 | { | ||
1074 | cd ${TAR_SRCDIR} | ||
1075 | |||
1076 | # fixes compilation; configure assume that wcwidth is broken | ||
1077 | echo "gl_cv_func_wcwidth_works=yes" > config.cache | ||
1078 | |||
1079 | stage1_configure --cache-file=config.cache || die | ||
1080 | mmake || die | ||
1081 | } | ||
1082 | |||
1083 | tar_stage1_src_install() | ||
1084 | { | ||
1085 | cd ${TAR_SRCDIR} | ||
1086 | mmake install || die | ||
1087 | } | ||
1088 | |||
1089 | |||
1090 | texinfo_stage1_src_prepare() | ||
1091 | { | ||
1092 | munpack ${TEXINFO_SRCFILE} || die | ||
1093 | cd ${TEXINFO_SRCDIR} | ||
1094 | |||
1095 | # fixes a build error due to mbstate being undefined | ||
1096 | mpatch texinfo-${TEXINFO_PVER}-mbstate-fix.patch || die | ||
1097 | } | ||
1098 | |||
1099 | texinfo_stage1_src_compile() | ||
1100 | { | ||
1101 | cd ${TEXINFO_SRCDIR} | ||
1102 | |||
1103 | |||
1104 | # forcefully override any activated ccache support, | ||
1105 | # which may break the built | ||
1106 | deactivate_ccache | ||
1107 | |||
1108 | # sometimes texinfo includes the termcap.h from host system instead from our buildroot | ||
1109 | # see http://www.linuxquestions.org/questions/linux-from-scratch-13/compiling-temporary-system-tools-628818/ | ||
1110 | CPPFLAGS="-I${TARGET_DEST}/include" \ | ||
1111 | LDFLAGS="-L${TARGET_DEST}/lib" \ | ||
1112 | stage1_configure || die | ||
1113 | mmake -C tools/gnulib/lib || die | ||
1114 | mmake -C tools || die | ||
1115 | mmake || die | ||
1116 | |||
1117 | # re-activate ccache | ||
1118 | activate_ccache | ||
1119 | } | ||
1120 | |||
1121 | texinfo_stage1_src_install() | ||
1122 | { | ||
1123 | cd ${TEXINFO_SRCDIR} | ||
1124 | mmake install || die | ||
1125 | } | ||
1126 | |||
1127 | |||
1128 | e2fsprogs_stage1_src_prepare() | ||
1129 | { | ||
1130 | munpack ${E2FSPROGS_SRCFILE} || die | ||
1131 | install -d ${E2FSPROGS_SRCDIR} || die | ||
1132 | } | ||
1133 | |||
1134 | e2fsprogs_stage1_src_compile() | ||
1135 | { | ||
1136 | cd ${E2FSPROGS_SRCDIR} | ||
1137 | |||
1138 | # lfs method | ||
1139 | # stage1_configure \ | ||
1140 | # --with-cc="${CC}" \ | ||
1141 | # --with-linker="${LD}" \ | ||
1142 | # --enable-elf-shlibs \ | ||
1143 | # --disable-evms \ | ||
1144 | # || die | ||
1145 | |||
1146 | # lfs not working, trying this one: http://www.oesf.org/forum/index.php?showtopic=1370 | ||
1147 | CC="${TARGET_CHOST}-gcc" \ | ||
1148 | LINKER="${TARGET_CHOST}-g++" \ | ||
1149 | COMPILER="${TARGET_CHOST}-gcc" \ | ||
1150 | stage1_configure --enable-elf-shlibs --disable-evms || die | ||
1151 | # libs only | ||
1152 | mmake libs || die | ||
1153 | } | ||
1154 | |||
1155 | e2fsprogs_stage1_src_install() | ||
1156 | { | ||
1157 | cd ${E2FSPROGS_SRCDIR} | ||
1158 | # install libs only | ||
1159 | mmake install-libs || die | ||
1160 | } | ||
1161 | |||
1162 | |||
1163 | util_linux_stage1_src_prepare() | ||
1164 | { | ||
1165 | munpack ${UTIL_LINUX_SRCFILE} || die | ||
1166 | } | ||
1167 | |||
1168 | util_linux_stage1_src_compile() | ||
1169 | { | ||
1170 | cd ${UTIL_LINUX_SRCDIR} | ||
1171 | |||
1172 | stage1_configure || die | ||
1173 | |||
1174 | # compile only {u,}mount and more | ||
1175 | mmake -C mount mount umount || die | ||
1176 | mmake -C text-utils more || die | ||
1177 | } | ||
1178 | |||
1179 | util_linux_stage1_src_install() | ||
1180 | { | ||
1181 | cd ${UTIL_LINUX_SRCDIR} | ||
1182 | |||
1183 | # install only {u,}mount and more | ||
1184 | install -m0755 mount/{,u}mount text-utils/more ${TARGET_DEST}/bin || die | ||
1185 | } | ||
1186 | |||
1187 | wget_stage1_src_prepare() | ||
1188 | { | ||
1189 | munpack ${WGET_SRCFILE} || die | ||
1190 | cd ${WGET_SRCDIR} | ||
1191 | |||
1192 | # enable passive mode by default | ||
1193 | sed -i 's:#passive_ftp = off:passive_ftp = on:g' doc/sample.wgetrc || die | ||
1194 | } | ||
1195 | |||
1196 | wget_stage1_src_compile() | ||
1197 | { | ||
1198 | cd ${WGET_SRCDIR} | ||
1199 | stage1_configure || die | ||
1200 | mmake || die | ||
1201 | } | ||
1202 | |||
1203 | wget_stage1_src_install() | ||
1204 | { | ||
1205 | cd ${WGET_SRCDIR} | ||
1206 | mmake install || die | ||
1207 | } | ||
1208 | |||
1209 | |||
1210 | rsync_stage1_src_prepare() | ||
1211 | { | ||
1212 | munpack ${RSYNC_SRCFILE} || die | ||
1213 | } | ||
1214 | |||
1215 | rsync_stage1_src_compile() | ||
1216 | { | ||
1217 | cd ${RSYNC_SRCDIR} | ||
1218 | stage1_configure --with-rsyncd-conf=/etc/rsyncd.conf --with-included-popt || die | ||
1219 | mmake || die | ||
1220 | } | ||
1221 | |||
1222 | rsync_stage1_src_install() | ||
1223 | { | ||
1224 | cd ${RSYNC_SRCDIR} | ||
1225 | mmake install || die | ||
1226 | } | ||
1227 | |||
1228 | |||
1229 | cvs_stage1_src_prepare() | ||
1230 | { | ||
1231 | munpack ${CVS_SRCFILE} || die | ||
1232 | } | ||
1233 | |||
1234 | cvs_stage1_src_compile() | ||
1235 | { | ||
1236 | cd ${CVS_SRCDIR} | ||
1237 | stage1_configure --enable-client --disable-server || die | ||
1238 | mmake || die | ||
1239 | } | ||
1240 | |||
1241 | cvs_stage1_src_install() | ||
1242 | { | ||
1243 | cd ${CVS_SRCDIR} | ||
1244 | mmake install || die | ||
1245 | } | ||
1246 | |||
1247 | |||
1248 | perl_minimal_stage1_src_prepare() | ||
1249 | { | ||
1250 | munpack ${PERL_SRCFILE} || die | ||
1251 | cd ${PERL_SRCDIR} | ||
1252 | |||
1253 | mpatch perl-${PERL_PVER}-hardwired-libc.patch || die | ||
1254 | } | ||
1255 | |||
1256 | perl_minimal_stage1_src_compile() | ||
1257 | { | ||
1258 | cd ${PERL_SRCDIR} | ||
1259 | |||
1260 | ./configure.gnu \ | ||
1261 | --prefix=${TARGET_DEST} \ | ||
1262 | -Dstatic_ext='Data/Dumper IO Fcntl POSIX' \ | ||
1263 | -Dcc="${CC}" \ | ||
1264 | || die | ||
1265 | |||
1266 | mmake perl utilities || die | ||
1267 | } | ||
1268 | |||
1269 | perl_minimal_stage1_src_install() | ||
1270 | { | ||
1271 | cd ${PERL_SRCDIR} | ||
1272 | |||
1273 | install -m0755 perl pod/pod2man ${TARGET_DEST}/bin || die | ||
1274 | install -d ${TARGET_DEST}/lib/perl${PERL_PVER:0:1}/${PERL_PVER} || die | ||
1275 | cp -Rv lib/* ${TARGET_DEST}/lib/perl${PERL_PVER:0:1}/${PERL_PVER} || die | ||
1276 | minstalldir ${BUILDROOT_DEST}/usr/bin || die | ||
1277 | mlink ${TARGET_DEST}/bin/perl ${BUILDROOT_DEST}/usr/bin || die | ||
1278 | } | ||
1279 | |||
1280 | |||
1281 | m4_stage1_src_prepare() | ||
1282 | { | ||
1283 | munpack ${M4_SRCFILE} || die | ||
1284 | } | ||
1285 | |||
1286 | m4_stage1_src_compile() | ||
1287 | { | ||
1288 | cd ${M4_SRCDIR} | ||
1289 | |||
1290 | stage1_configure --enable-changeword || die | ||
1291 | mmake || die | ||
1292 | } | ||
1293 | |||
1294 | m4_stage1_src_install() | ||
1295 | { | ||
1296 | cd ${M4_SRCDIR} | ||
1297 | mmake install || die | ||
1298 | } | ||
1299 | |||
1300 | |||
1301 | bison_stage1_src_prepare() | ||
1302 | { | ||
1303 | munpack ${BISON_SRCFILE} || die | ||
1304 | } | ||
1305 | |||
1306 | bison_stage1_src_compile() | ||
1307 | { | ||
1308 | cd ${BISON_SRCDIR} | ||
1309 | |||
1310 | stage1_configure || die | ||
1311 | mmake || die | ||
1312 | } | ||
1313 | |||
1314 | bison_stage1_src_install() | ||
1315 | { | ||
1316 | cd ${BISON_SRCDIR} | ||
1317 | mmake install || die | ||
1318 | } | ||
1319 | |||
1320 | |||
1321 | flex_stage1_src_prepare() | ||
1322 | { | ||
1323 | munpack ${FLEX_SRCFILE} || die | ||
1324 | } | ||
1325 | |||
1326 | flex_stage1_src_compile() | ||
1327 | { | ||
1328 | cd ${FLEX_SRCDIR} | ||
1329 | |||
1330 | stage1_configure || die | ||
1331 | mmake || die | ||
1332 | } | ||
1333 | |||
1334 | flex_stage1_src_install() | ||
1335 | { | ||
1336 | cd ${FLEX_SRCDIR} | ||
1337 | mmake install || die | ||
1338 | } | ||
1339 | |||
1340 | filesystem_stage2_src_prepare() | ||
1341 | { | ||
1342 | munpack ${INITSCRIPTS_SRCFILE} || die | ||
1343 | } | ||
1344 | |||
1345 | |||
1346 | filesystem_stage2_src_install() | ||
1347 | { | ||
1348 | local magerc="${BINDIR}/${BUILDROOT_DEST}/etc/mage.rc" | ||
1349 | |||
1350 | mkeepdir ${BUILDROOT_DEST}/etc || die | ||
1351 | install -m0644 /etc/mage.rc ${magerc} || die | ||
1352 | install -m0644 /etc/resolv.conf ${BINDIR}/${BUILDROOT_DEST}/etc || die | ||
1353 | sed -i "s:\(ARCH=\).*:\1\"${TARGET_ARCH}\":" ${magerc} || die | ||
1354 | MAGERC="${magerc}" \ | ||
1355 | MROOT="${BINDIR}/${BUILDROOT_DEST}" \ | ||
1356 | mage srcinstall base-files || die | ||
1357 | |||
1358 | # essential symlinks for the toolchain | ||
1359 | mlink ${TARGET_DEST}/bin/bash ${BUILDROOT_DEST}/bin || die | ||
1360 | mlink ${TARGET_DEST}/bin/cat ${BUILDROOT_DEST}/bin || die | ||
1361 | mlink ${TARGET_DEST}/bin/echo ${BUILDROOT_DEST}/bin || die | ||
1362 | mlink ${TARGET_DEST}/bin/grep ${BUILDROOT_DEST}/bin || die | ||
1363 | mlink ${TARGET_DEST}/bin/pwd ${BUILDROOT_DEST}/bin || die | ||
1364 | mlink ${TARGET_DEST}/bin/rm ${BUILDROOT_DEST}/bin || die | ||
1365 | mlink ${TARGET_DEST}/bin/stty ${BUILDROOT_DEST}/bin || die | ||
1366 | mlink ${TARGET_DEST}/bin/file ${BUILDROOT_DEST}/usr/bin || die | ||
1367 | # x86_64 multilib support | ||
1368 | if [[ ${TARGET_ARCH} = x86_64 ]] | ||
1369 | then | ||
1370 | mlink ${TARGET_DEST}/lib/libgcc_s.so ${BUILDROOT_DEST}/usr/lib64 || die | ||
1371 | mlink ${TARGET_DEST}/lib/libgcc_s.so.1 ${BUILDROOT_DEST}/usr/lib64 || die | ||
1372 | mlink ${TARGET_DEST}/lib/libstd\* ${BUILDROOT_DEST}/usr/lib || die | ||
1373 | else | ||
1374 | mlink ${TARGET_DEST}/lib/libgcc_s.so ${BUILDROOT_DEST}/usr/lib || die | ||
1375 | mlink ${TARGET_DEST}/lib/libgcc_s.so.1 ${BUILDROOT_DEST}/usr/lib || die | ||
1376 | mlink ${TARGET_DEST}/lib/libstd\* ${BUILDROOT_DEST}/usr/lib || die | ||
1377 | fi | ||
1378 | mlink bash ${BUILDROOT_DEST}/bin/sh || die | ||
1379 | |||
1380 | # basic passwd @ group file | ||
1381 | install -m0644 ${INITSCRIPTS_SRCDIR}/etc/group ${BINDIR}/${BUILDROOT_DEST}/etc || die | ||
1382 | install -m0644 ${INITSCRIPTS_SRCDIR}/etc/passwd ${BINDIR}/${BUILDROOT_DEST}/etc || die | ||
1383 | |||
1384 | # essential files for logging | ||
1385 | memptyfile ${BUILDROOT_DEST}/var/run/utmp || die | ||
1386 | memptyfile ${BUILDROOT_DEST}/var/log/btmp || die | ||
1387 | memptyfile ${BUILDROOT_DEST}/var/log/lastlog || die | ||
1388 | memptyfile ${BUILDROOT_DEST}/var/log/wtmp || die | ||
1389 | # permissions | ||
1390 | mchown root:utmp ${BUILDROOT_DEST}/var/run/utmp || die | ||
1391 | mchown root:utmp ${BUILDROOT_DEST}/var/log/lastlog || die | ||
1392 | mchmod 0664 ${BUILDROOT_DEST}/var/run/utmp || die | ||
1393 | mchmod 0664 ${BUILDROOT_DEST}/var/log/lastlog || die | ||
1394 | mchmod 0600 ${BUILDROOT_DEST}/var/log/btmp || die | ||
1395 | } | ||
1396 | |||
1397 | |||
1398 | mage_stage2_src_install() | ||
1399 | { | ||
1400 | MAGERC="${BINDIR}/${BUILDROOT_DEST}/etc/mage.rc" \ | ||
1401 | MROOT="${BINDIR}/${BUILDROOT_DEST}" \ | ||
1402 | mage srcinstall mage || die | ||
1403 | |||
1404 | minstalldir ${BUILDROOT_DEST}/${MAGEDIR} || die | ||
1405 | minstalldir ${BUILDROOT_DEST}/${SMAGESCRIPTSDIR} || die | ||
1406 | minstalldir ${BUILDROOT_DEST}/${BUILDDIR} || die | ||
1407 | |||
1408 | # link default profile of the host system | ||
1409 | mlink $(readlink /etc/mage-profile) ${BUILDROOT_DEST}/etc/mage-profile || die | ||
1410 | |||
1411 | chrooted /sbin/mage update | ||
1412 | chrooted /sbin/smage2 update | ||
1413 | } | ||
1414 | |||
1415 | |||
1416 | # linux_headers_stage2_src_prepare() | ||
1417 | # { | ||
1418 | # munpack ${LINUX_HEADERS_SRCFILE} || die | ||
1419 | # } | ||
1420 | # | ||
1421 | # linux_headers_stage2_src_compile() | ||
1422 | # { | ||
1423 | # cd ${LINUX_HEADERS_SRCDIR} | ||
1424 | # make mrproper || die | ||
1425 | # make ARCH=${ARCH/i*86/x86} headers_check || die | ||
1426 | # } | ||
1427 | # | ||
1428 | # linux_headers_stage2_src_install() | ||
1429 | # { | ||
1430 | # cd ${LINUX_HEADERS_SRCDIR} | ||
1431 | # make ARCH=${ARCH/i*86/x86} INSTALL_HDR_PATH=/usr headers_install || die | ||
1432 | # } | ||
1433 | |||
1434 | linux_headers_stage2_src_install() | ||
1435 | { | ||
1436 | chrooted --mount --sources /sbin/mage srcinstall linux-libc-headers || die | ||
1437 | } | ||
1438 | |||
1439 | # glibc_stage2_src_prepare() | ||
1440 | # { | ||
1441 | # munpack ${GLIBC_SRCFILE} ${BUILDROOT}/${BUILDDIR} || die | ||
1442 | # cd ${BUILDROOT}/${GLIBC_SRCDIR} | ||
1443 | # | ||
1444 | # # disable binutils -as-needed | ||
1445 | # sed -i 's/^have-as-needed.*/have-as-needed = no/' \ | ||
1446 | # ${BUILDROOT}/${GLIBC_SRCDIR}/config.make.in || die | ||
1447 | # | ||
1448 | # # fix segfault of localdef on arches beside x86-32 | ||
1449 | # mpatch glibc-2.3.5-localedef_segfault-1.patch || die | ||
1450 | # | ||
1451 | # # fix permissions on some of the scripts | ||
1452 | # chmod u+x ${BUILDROOT}/${GLIBC_SRCDIR}/scripts/*.sh || die | ||
1453 | # | ||
1454 | # install -d ${BUILDROOT}/${GLIBC_SRCDIR}/build || die | ||
1455 | # } | ||
1456 | # | ||
1457 | # glibc_stage2_src_compile() | ||
1458 | # { | ||
1459 | # cd ${GLIBC_SRCDIR}/build | ||
1460 | # | ||
1461 | # local my_glibc_CFLAGS | ||
1462 | # local my_glibc_CXXFLAGS | ||
1463 | # # glibc-2.6.1 and above needs march CFLAGS: -march=${ARCH} -mtune=generic | ||
1464 | # [[ ${TARGET_ARCH} = i*86 ]] && my_glibc_CFLAGS="${CFLAGS} -march=${TARGET_ARCH}" # only i*86 | ||
1465 | # my_glibc_CFLAGS="${my_glibc_CFLAGS} -mtune=generic" # all arches | ||
1466 | # | ||
1467 | # # force nptl support (may not detected always) | ||
1468 | # echo "libc_cv_forced_unwind=yes" > config.cache || die | ||
1469 | # echo "libc_cv_c_cleanup=yes" >> config.cache || die | ||
1470 | # | ||
1471 | # BUILD_CC="gcc" \ | ||
1472 | # CC="${TARGET_CHOST}-gcc" \ | ||
1473 | # AR="${TARGET_CHOST}-ar" \ | ||
1474 | # RANLIB="${TARGET_CHOST}-ranlib" \ | ||
1475 | # CFLAGS="${my_glibc_CFLAGS}" \ | ||
1476 | # ../configure \ | ||
1477 | # --host=${TARGET_CHOST} \ | ||
1478 | # --build=${CROSS_CHOST} \ | ||
1479 | # --prefix=${TARGET_DEST} \ | ||
1480 | # --disable-profile \ | ||
1481 | # --enable-add-ons=nptl --with-tls \ | ||
1482 | # --with-__thread \ | ||
1483 | # --enable-kernel=2.6.0 \ | ||
1484 | # --without-cvs \ | ||
1485 | # --with-headers=${TARGET_DEST}/include \ | ||
1486 | # --with-binutils=${CROSS_DEST}/bin \ | ||
1487 | # --cache-file=config.cache \ | ||
1488 | # || die | ||
1489 | # | ||
1490 | # make PARALLELMFLAGS="-j2" || die | ||
1491 | # } | ||
1492 | |||
1493 | glibc_stage2_src_install() | ||
1494 | { | ||
1495 | chrooted --mount --sources NODEPS=true mage srcinstall glibc-nptl || die | ||
1496 | } | ||
1497 | |||
1498 | stage2_adjusting_toolchain() | ||
1499 | { | ||
1500 | local linker | ||
1501 | local libdir | ||
1502 | local linker_adjusted | ||
1503 | linker=$(basename $(chrooted readelf -l ${TARGET_DEST}/bin/ls | grep interpreter | sed 's/.*interpreter: \(.*\)]/\1/')) | ||
1504 | |||
1505 | case ${TARGET_ARCH} in | ||
1506 | x86_64) libdir=lib64 ;; | ||
1507 | *) libdir=lib ;; | ||
1508 | esac | ||
1509 | |||
1510 | chrooted gcc -dumpspecs | \ | ||
1511 | sed -e "s:${TARGET_DEST}/${libdir}/${linker}:/${libdir}/${linker}:g" \ | ||
1512 | -e "/\*startfile_prefix_spec:/{n;s@.*@/usr/${libdir}/ @}" \ | ||
1513 | -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' \ | ||
1514 | > ${BINDIR}/${BUILDROOT_DEST}/$(dirname $(chrooted gcc --print-libgcc-file-name))/specs \ | ||
1515 | || die | ||
1516 | |||
1517 | # test it | ||
1518 | echo 'main(){}' > ${BINDIR}/${BUILDROOT_DEST}/dummy.c || die | ||
1519 | chrooted gcc /dummy.c -v -Wl,--verbose &> /dummy.log || die | ||
1520 | linker_adjusted=$(chrooted readelf -l /a.out | grep interpreter | sed 's/.*interpreter: \(.*\)]/\1/') | ||
1521 | if [[ ${linker_adjusted} != /${libdir}/${linker} ]] | ||
1522 | then | ||
1523 | die "broken toolchain: ${linker_adjusted} != /${libdir}/${linker}" | ||
1524 | fi | ||
1525 | } | ||
1526 | |||
1527 | #binutils_stage2_src_prepare() { return 0; } | ||
1528 | #binutils_stage2_src_compile() { return 0; } | ||
1529 | binutils_stage2_src_install() | ||
1530 | { | ||
1531 | chrooted --mount --sources AR=ar NODEPS=true mage srcinstall binutils || die | ||
1532 | } | ||
1533 | |||
1534 | |||
1535 | #gcc_stage2_src_prepare() { return 0; } | ||
1536 | #gcc_stage2_src_compile() { return 0; } | ||
1537 | gcc_stage2_src_install() | ||
1538 | { | ||
1539 | # gcc is splitted into two packages: libstc++ and gcc | ||
1540 | chrooted --mount --sources NODEPS=true mage srcinstall libstdc++ || die | ||
1541 | chrooted --mount --sources NODEPS=true mage srcinstall gcc || die | ||
1542 | } | ||
1543 | |||
1544 | |||
1545 | buildroot_clean() | ||
1546 | { | ||
1547 | # prune packages | ||
1548 | # chrooted /sbin/mage update || die | ||
1549 | chrooted /sbin/mage clean || die | ||
1550 | |||
1551 | # prune sources | ||
1552 | if [[ -d ${BUILDROOT_DEST}/${SOURCEDIR} ]] | ||
1553 | then | ||
1554 | rm -rf ${BUILDROOT_DEST}/${SOURCEDIR} || die | ||
1555 | fi | ||
1556 | |||
1557 | # # prune install db | ||
1558 | # if [[ -d ${BUILDROOT_DEST}/${INSTALLDB} ]] | ||
1559 | # then | ||
1560 | # rm -rf ${BUILDROOT_DEST}/${INSTALLDB} || die | ||
1561 | # fi | ||
1562 | } | ||
1563 | |||
1564 | buildroot_src_prepare() | ||
1565 | { | ||
1566 | if [[ -e ${TARGET_DEST} ]] || [[ -L ${TARGET_DEST} ]] | ||
1567 | then | ||
1568 | echo | ||
1569 | echo "Please uninstall any buildroot packages first." | ||
1570 | echo "To build the tools I'll create a fake symlink to ${TARGET_DEST}," | ||
1571 | echo "so this directory must not exist." | ||
1572 | echo | ||
1573 | die "${TARGET_DEST} exists." | ||
1574 | fi | ||
1575 | |||
1576 | if [[ -e ${CROSS_DEST} ]] || [[ -L ${CROSS_DEST} ]] | ||
1577 | then | ||
1578 | echo | ||
1579 | echo "Please uninstall any buildroot packages first." | ||
1580 | echo "To build the tools I'll create a fake symlink to ${CROSS_DEST}," | ||
1581 | echo "so this directory must not exist." | ||
1582 | echo | ||
1583 | die "${CROSS_DEST} exists." | ||
1584 | fi | ||
1585 | |||
1586 | if [[ ${CHOST} = ${TARGET_CHOST} ]] | ||
1587 | then | ||
1588 | echo | ||
1589 | echo "\$CHOST and \$TARGET_CHOST have the same values." | ||
1590 | echo " CHOST=${CHOST}" | ||
1591 | echo " TARGET_CHOST=${TARGET_CHOST}" | ||
1592 | echo | ||
1593 | echo "You cannot build a buildroot with these settings," | ||
1594 | echo "please use the native gcc-\${ARCH} builds." | ||
1595 | echo | ||
1596 | die "\$CHOST equal \$TARGET_CHOST." | ||
1597 | fi | ||
1598 | |||
1599 | # create a fake build-root | ||
1600 | install -d ${BINDIR}${BUILDROOT_DEST}${TARGET_DEST} || die | ||
1601 | ln -snf ${BINDIR}${BUILDROOT_DEST}${TARGET_DEST} ${TARGET_DEST} || die | ||
1602 | |||
1603 | # create a fake cross-root | ||
1604 | install -d ${BINDIR}${BUILDROOT_DEST}${CROSS_DEST} || die | ||
1605 | ln -snf ${BINDIR}${BUILDROOT_DEST}${CROSS_DEST} ${CROSS_DEST} || die | ||
1606 | } | ||
1607 | |||
1608 | buildroot_src_compile() | ||
1609 | { | ||
1610 | # setup a proper build environment | ||
1611 | export PATH=${CROSS_DEST}/bin:${PATH} | ||
1612 | |||
1613 | # setup cross-compilation tools | ||
1614 | |||
1615 | #################################### | ||
1616 | # toolchain - cross: linux-headers # | ||
1617 | #################################### | ||
1618 | linux_headers_cross_src_prepare | ||
1619 | linux_headers_cross_src_compile | ||
1620 | linux_headers_cross_src_install | ||
1621 | |||
1622 | |||
1623 | ############################### | ||
1624 | # toolchain - cross: binutils # | ||
1625 | ############################### | ||
1626 | binutils_cross_src_prepare | ||
1627 | binutils_cross_src_compile | ||
1628 | binutils_cross_src_install | ||
1629 | |||
1630 | # remove BINUTILS_SRCDIR | ||
1631 | rm -rf ${BINUTILS_SRCDIR} || die | ||
1632 | |||
1633 | ################################# | ||
1634 | # toolchain - cross: gcc-static # | ||
1635 | ################################# | ||
1636 | gcc_static_cross_src_prepare | ||
1637 | gcc_static_cross_src_compile | ||
1638 | gcc_static_cross_src_install | ||
1639 | |||
1640 | # remove GCC_SRCDIR | ||
1641 | rm -rf ${GCC_SRCDIR} || die | ||
1642 | |||
1643 | |||
1644 | ############################ | ||
1645 | # toolchain - cross: glibc # | ||
1646 | ############################ | ||
1647 | glibc_cross_src_prepare | ||
1648 | glibc_cross_src_compile | ||
1649 | glibc_cross_src_install | ||
1650 | |||
1651 | |||
1652 | ########################## | ||
1653 | # toolchain - cross: gcc # | ||
1654 | ########################## | ||
1655 | gcc_cross_src_prepare | ||
1656 | gcc_cross_src_compile | ||
1657 | gcc_cross_src_install | ||
1658 | |||
1659 | # remove GCC_SRCDIR | ||
1660 | rm -rf ${GCC_SRCDIR} || die | ||
1661 | |||
1662 | |||
1663 | # export TOOLCHAIN Variables | ||
1664 | export CC="${TARGET_CHOST}-gcc" | ||
1665 | export CXX="${TARGET_CHOST}-g++" | ||
1666 | export AR="${TARGET_CHOST}-ar" | ||
1667 | export AS="${TARGET_CHOST}-as" | ||
1668 | export RANLIB="${TARGET_CHOST}-ranlib" | ||
1669 | export LD="${TARGET_CHOST}-ld" | ||
1670 | export STRIP="${TARGET_CHOST}-strip" | ||
1671 | |||
1672 | |||
1673 | ################################ | ||
1674 | # toolchain - stage1: binutils # | ||
1675 | ################################ | ||
1676 | binutils_stage1_src_prepare | ||
1677 | binutils_stage1_src_compile | ||
1678 | binutils_stage1_src_install | ||
1679 | |||
1680 | |||
1681 | ########################### | ||
1682 | # toolchain - stage1: gcc # | ||
1683 | ########################### | ||
1684 | gcc_stage1_src_prepare | ||
1685 | gcc_stage1_src_compile | ||
1686 | gcc_stage1_src_install | ||
1687 | |||
1688 | |||
1689 | ############################### | ||
1690 | # toolchain - stage1: ncurses # | ||
1691 | ############################### | ||
1692 | ncurses_stage1_src_prepare | ||
1693 | ncurses_stage1_src_compile | ||
1694 | ncurses_stage1_src_install | ||
1695 | |||
1696 | |||
1697 | ############################ | ||
1698 | # toolchain - stage1: bash # | ||
1699 | ############################ | ||
1700 | bash_stage1_src_prepare | ||
1701 | bash_stage1_src_compile | ||
1702 | bash_stage1_src_install | ||
1703 | |||
1704 | |||
1705 | ############################# | ||
1706 | # toolchain - stage1: bzip2 # | ||
1707 | ############################# | ||
1708 | bzip2_stage1_src_prepare | ||
1709 | bzip2_stage1_src_compile | ||
1710 | bzip2_stage1_src_install | ||
1711 | |||
1712 | |||
1713 | ################################# | ||
1714 | # toolchain - stage1: coreutils # | ||
1715 | ################################# | ||
1716 | coreutils_stage1_src_prepare | ||
1717 | coreutils_stage1_src_compile | ||
1718 | coreutils_stage1_src_install | ||
1719 | |||
1720 | |||
1721 | ################################# | ||
1722 | # toolchain - stage1: diffutils # | ||
1723 | ################################# | ||
1724 | diffutils_stage1_src_prepare | ||
1725 | diffutils_stage1_src_compile | ||
1726 | diffutils_stage1_src_install | ||
1727 | |||
1728 | |||
1729 | ################################# | ||
1730 | # toolchain - stage1: findutils # | ||
1731 | ################################# | ||
1732 | findutils_stage1_src_prepare | ||
1733 | findutils_stage1_src_compile | ||
1734 | findutils_stage1_src_install | ||
1735 | |||
1736 | |||
1737 | ############################ | ||
1738 | # toolchain - stage1: zlib # | ||
1739 | ############################ | ||
1740 | zlib_stage1_src_prepare | ||
1741 | zlib_stage1_src_compile | ||
1742 | zlib_stage1_src_install | ||
1743 | |||
1744 | |||
1745 | ############################ | ||
1746 | # toolchain - stage1: file # | ||
1747 | ############################ | ||
1748 | file_stage1_src_prepare | ||
1749 | file_stage1_src_compile | ||
1750 | file_stage1_src_install | ||
1751 | |||
1752 | |||
1753 | ############################ | ||
1754 | # toolchain - stage1: gawk # | ||
1755 | ############################ | ||
1756 | gawk_stage1_src_prepare | ||
1757 | gawk_stage1_src_compile | ||
1758 | gawk_stage1_src_install | ||
1759 | |||
1760 | |||
1761 | ############################### | ||
1762 | # toolchain - stage1: gettext # | ||
1763 | ############################### | ||
1764 | gettext_stage1_src_prepare | ||
1765 | gettext_stage1_src_compile | ||
1766 | gettext_stage1_src_install | ||
1767 | |||
1768 | |||
1769 | ############################ | ||
1770 | # toolchain - stage1: grep # | ||
1771 | ############################ | ||
1772 | grep_stage1_src_prepare | ||
1773 | grep_stage1_src_compile | ||
1774 | grep_stage1_src_install | ||
1775 | |||
1776 | |||
1777 | ############################ | ||
1778 | # toolchain - stage1: gzip # | ||
1779 | ############################ | ||
1780 | gzip_stage1_src_prepare | ||
1781 | gzip_stage1_src_compile | ||
1782 | gzip_stage1_src_install | ||
1783 | |||
1784 | |||
1785 | ############################ | ||
1786 | # toolchain - stage1: make # | ||
1787 | ############################ | ||
1788 | make_stage1_src_prepare | ||
1789 | make_stage1_src_compile | ||
1790 | make_stage1_src_install | ||
1791 | |||
1792 | |||
1793 | ############################# | ||
1794 | # toolchain - stage1: patch # | ||
1795 | ############################# | ||
1796 | patch_stage1_src_prepare | ||
1797 | patch_stage1_src_compile | ||
1798 | patch_stage1_src_install | ||
1799 | |||
1800 | |||
1801 | ########################### | ||
1802 | # toolchain - stage1: sed # | ||
1803 | ########################### | ||
1804 | sed_stage1_src_prepare | ||
1805 | sed_stage1_src_compile | ||
1806 | sed_stage1_src_install | ||
1807 | |||
1808 | |||
1809 | ########################### | ||
1810 | # toolchain - stage1: tar # | ||
1811 | ########################### | ||
1812 | tar_stage1_src_prepare | ||
1813 | tar_stage1_src_compile | ||
1814 | tar_stage1_src_install | ||
1815 | |||
1816 | |||
1817 | ############################### | ||
1818 | # toolchain - stage1: texinfo # | ||
1819 | ############################### | ||
1820 | texinfo_stage1_src_prepare | ||
1821 | texinfo_stage1_src_compile | ||
1822 | texinfo_stage1_src_install | ||
1823 | |||
1824 | |||
1825 | ################################# | ||
1826 | # toolchain - stage1: e2fsprogs # | ||
1827 | ################################# | ||
1828 | e2fsprogs_stage1_src_prepare | ||
1829 | e2fsprogs_stage1_src_compile | ||
1830 | e2fsprogs_stage1_src_install | ||
1831 | |||
1832 | |||
1833 | ################################## | ||
1834 | # toolchain - stage1: util-linux # | ||
1835 | ################################## | ||
1836 | util_linux_stage1_src_prepare | ||
1837 | util_linux_stage1_src_compile | ||
1838 | util_linux_stage1_src_install | ||
1839 | |||
1840 | |||
1841 | ############################ | ||
1842 | # toolchain - stage1: wget # | ||
1843 | ############################ | ||
1844 | wget_stage1_src_prepare | ||
1845 | wget_stage1_src_compile | ||
1846 | wget_stage1_src_install | ||
1847 | |||
1848 | |||
1849 | ############################# | ||
1850 | # toolchain - stage1: rsync # | ||
1851 | ############################# | ||
1852 | rsync_stage1_src_prepare | ||
1853 | rsync_stage1_src_compile | ||
1854 | rsync_stage1_src_install | ||
1855 | |||
1856 | |||
1857 | ########################### | ||
1858 | # toolchain - stage1: cvs # | ||
1859 | ########################### | ||
1860 | cvs_stage1_src_prepare | ||
1861 | cvs_stage1_src_compile | ||
1862 | cvs_stage1_src_install | ||
1863 | |||
1864 | |||
1865 | #################################### | ||
1866 | # toolchain - stage1: perl minimal # | ||
1867 | #################################### | ||
1868 | # perl is needed by the final glibc | ||
1869 | perl_minimal_stage1_src_prepare | ||
1870 | perl_minimal_stage1_src_compile | ||
1871 | perl_minimal_stage1_src_install | ||
1872 | |||
1873 | |||
1874 | ########################## | ||
1875 | # toolchain - stage1: m4 # | ||
1876 | ########################## | ||
1877 | # m4 is needed by the final binutils | ||
1878 | m4_stage1_src_prepare | ||
1879 | m4_stage1_src_compile | ||
1880 | m4_stage1_src_install | ||
1881 | |||
1882 | |||
1883 | ############################# | ||
1884 | # toolchain - stage1: bison # | ||
1885 | ############################# | ||
1886 | # bison is needed by the final binutils | ||
1887 | bison_stage1_src_prepare | ||
1888 | bison_stage1_src_compile | ||
1889 | bison_stage1_src_install | ||
1890 | |||
1891 | |||
1892 | ############################ | ||
1893 | # toolchain - stage1: flex # | ||
1894 | ############################ | ||
1895 | # flex is needed by the final binutils | ||
1896 | flex_stage1_src_prepare | ||
1897 | flex_stage1_src_compile | ||
1898 | flex_stage1_src_install | ||
1899 | |||
1900 | |||
1901 | ######################################## | ||
1902 | # basesystem - stage2: base filesystem # | ||
1903 | ######################################## | ||
1904 | filesystem_stage2_src_prepare | ||
1905 | filesystem_stage2_src_install | ||
1906 | |||
1907 | |||
1908 | ############################# | ||
1909 | # basesystem - stage2: mage # | ||
1910 | ############################# | ||
1911 | mage_stage2_src_install | ||
1912 | |||
1913 | |||
1914 | ###################################### | ||
1915 | # basesystem - stage2: linux-headers # | ||
1916 | ###################################### | ||
1917 | # linux_headers_stage2_src_prepare | ||
1918 | # linux_headers_stage2_src_compile | ||
1919 | linux_headers_stage2_src_install | ||
1920 | |||
1921 | |||
1922 | ############################## | ||
1923 | # basesystem - stage2: glibc # | ||
1924 | ############################## | ||
1925 | #glibc_stage2_src_prepare | ||
1926 | #glibc_stage2_src_compile | ||
1927 | glibc_stage2_src_install | ||
1928 | |||
1929 | ################################################ | ||
1930 | # basesystem - stage2: adjusting the toolchain # | ||
1931 | ################################################ | ||
1932 | stage2_adjusting_toolchain | ||
1933 | |||
1934 | |||
1935 | ################################# | ||
1936 | # basesystem - stage2: binutils # | ||
1937 | ################################# | ||
1938 | #binutils_stage2_src_prepare | ||
1939 | #binutils_stage2_src_compile | ||
1940 | binutils_stage2_src_install | ||
1941 | |||
1942 | |||
1943 | ############################ | ||
1944 | # basesystem - stage2: gcc # | ||
1945 | ############################ | ||
1946 | #gcc_stage2_src_prepare | ||
1947 | #gcc_stage2_src_compile | ||
1948 | gcc_stage2_src_install | ||
1949 | |||
1950 | # cleanup | ||
1951 | # buildroot_clean | ||
1952 | } | ||
1953 | |||
1954 | buildroot_src_install() | ||
1955 | { | ||
1956 | # remove unneeded man and info pages to save some space | ||
1957 | local dir | ||
1958 | for dir in info man | ||
1959 | do | ||
1960 | [ -d ${BINDIR}/${dir} ] && { rm -rf ${BINDIR}/${dir} || die; } | ||
1961 | done | ||
1962 | |||
1963 | # remove ${TARGET_DEST} fake root symlink | ||
1964 | [[ -L ${TARGET_DEST} ]] && { rm ${TARGET_DEST} || die; } | ||
1965 | [[ -L ${CROSS_DEST} ]] && { rm ${CROSS_DEST} || die; } | ||
1966 | |||
1967 | # # setup environment | ||
1968 | # install -d ${BINDIR}/etc/env.d || die | ||
1969 | # | ||
1970 | # echo "PATH=${TARGET_DEST}/bin" > ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die | ||
1971 | # echo "ROOTPATH=${TARGET_DEST}/bin" >> ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die | ||
1972 | # echo "LDPATH=${TARGET_DEST}/lib" >> ${BINDIR}/etc/env.d/99cross-${TARGET_ARCH} || die | ||
1973 | |||
1974 | # # enter buildroot script | ||
1975 | #chroot /var/tmp/magebuild/builded /buildroot-tools/bin/env -i HOME=/root TERM="${TERM}" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin:/buildroot-tools/bin /buildroot-tools/bin/bash --login +h | ||
1976 | |||
1977 | echo "Building of ${PNAME}-toolchain finished ..." | ||
1978 | } | ||
1979 | |||
1980 | export_inherits buildroot src_prepare src_compile src_install |