annotate root-filesystem.sh @ 726:db5cb617339a

Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
author Rob Landley <rob@landley.net>
date Thu, 07 May 2009 19:09:56 -0500
parents f0ede6d6c952
children feec13d32dde
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
177
6b4844b708b9 dash->bash.
Rob Landley <rob@landley.net>
parents: 164
diff changeset
1 #!/bin/bash
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
2
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 # Get lots of predefined environment variables and shell functions.
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
669
1cf41855bb85 More error checking.
Rob Landley <rob@landley.net>
parents: 661
diff changeset
5 source sources/include.sh || exit 1
96
137ba51ee993 Delete output directories on re-run, teach build to log and build multiple
Rob Landley <rob@landley.net>
parents: 85
diff changeset
6
395
c2b290c1df40 Upgrade BUILD_SHORT to make a small busybox+uClibc system in /usr, with top level symlinks (/bin, /lib, etc) and adjustments to boot script and run-emulator.
Rob Landley <rob@landley.net>
parents: 390
diff changeset
7 # Purple. And why not?
485
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 484
diff changeset
8 echo -e "$NATIVE_COLOR"
685
90ab1a1f4db5 Teach build not to rebuild base architecture toolchains. Factor out some common code while there.
Rob Landley <rob@landley.net>
parents: 675
diff changeset
9
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 709
diff changeset
10 check_for_base_arch root-filesystem || exit 0
685
90ab1a1f4db5 Teach build not to rebuild base architecture toolchains. Factor out some common code while there.
Rob Landley <rob@landley.net>
parents: 675
diff changeset
11
485
b0438691e9e1 Move color selection into ./config. (The default colors don't look great on a white background.)
Rob Landley <rob@landley.net>
parents: 484
diff changeset
12 echo "=== Building minimal native development environment"
395
c2b290c1df40 Upgrade BUILD_SHORT to make a small busybox+uClibc system in /usr, with top level symlinks (/bin, /lib, etc) and adjustments to boot script and run-emulator.
Rob Landley <rob@landley.net>
parents: 390
diff changeset
13
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 579
diff changeset
14 rm -rf "${NATIVE_ROOT}"
96
137ba51ee993 Delete output directories on re-run, teach build to log and build multiple
Rob Landley <rob@landley.net>
parents: 85
diff changeset
15
658
dc5512d734f0 Actually put MANIFEST into mini-native.
Rob Landley <rob@landley.net>
parents: 633
diff changeset
16 # Determine which directory layout we're using
dc5512d734f0 Actually put MANIFEST into mini-native.
Rob Landley <rob@landley.net>
parents: 633
diff changeset
17
496
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
18 if [ ! -z "${NATIVE_TOOLSDIR}" ]
331
d2820523ee06 When doing BUILD_SHORT (without development tools), use / instead of /tools.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
19 then
423
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
20 mkdir -p "${TOOLS}/bin" || dienow
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
21
331
d2820523ee06 When doing BUILD_SHORT (without development tools), use / instead of /tools.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
22 # Tell the wrapper script where to find the dynamic linker.
d2820523ee06 When doing BUILD_SHORT (without development tools), use / instead of /tools.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
23 export UCLIBC_DYNAMIC_LINKER=/tools/lib/ld-uClibc.so.0
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 579
diff changeset
24 UCLIBC_TOPDIR="${NATIVE_ROOT}"
521
e7d1db74c942 More fiddling to make /tools vs /usr work.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
25 UCLIBC_DLPREFIX="/tools"
331
d2820523ee06 When doing BUILD_SHORT (without development tools), use / instead of /tools.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
26 else
661
75cffdfe71fe If the root filesystem is read only, the /home mount point already needs to exist.
Rob Landley <rob@landley.net>
parents: 658
diff changeset
27 mkdir -p "${NATIVE_ROOT}"/{tmp,proc,sys,dev,etc,home} || dienow
521
e7d1db74c942 More fiddling to make /tools vs /usr work.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
28 UCLIBC_TOPDIR="${TOOLS}"
423
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
29 for i in bin sbin lib
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
30 do
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
31 mkdir -p "$TOOLS/$i" || dienow
597
3d67228ceb1e Rename $NATIVE to $NATIVE_ROOT and allow it to be supplied externally so system-image.sh can package up an arbitrary native root filesystem source dir.
Rob Landley <rob@landley.net>
parents: 579
diff changeset
32 ln -s "usr/$i" "${NATIVE_ROOT}/$i" || dienow
423
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
33 done
331
d2820523ee06 When doing BUILD_SHORT (without development tools), use / instead of /tools.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
34 fi
395
c2b290c1df40 Upgrade BUILD_SHORT to make a small busybox+uClibc system in /usr, with top level symlinks (/bin, /lib, etc) and adjustments to boot script and run-emulator.
Rob Landley <rob@landley.net>
parents: 390
diff changeset
35
553
80f3356577fc Move kernel building from mini-native to package-mini-native in preparation for initramfs packaging option.
Rob Landley <rob@landley.net>
parents: 546
diff changeset
36 # Install Linux kernel headers.
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
37
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
38 setupfor linux
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
39 # Install Linux kernel headers (for use by uClibc).
278
f878f79763c7 Use make -j to install kernel headers.
Rob Landley <rob@landley.net>
parents: 223
diff changeset
40 make headers_install -j "$CPUS" ARCH="${KARCH}" INSTALL_HDR_PATH="${TOOLS}" &&
540
d0b059fd91a8 Link include/asm/page.h to include/sys/user.h, in case people try to build old packages.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
41 # This makes some very old package builds happy.
d0b059fd91a8 Link include/asm/page.h to include/sys/user.h, in case people try to build old packages.
Rob Landley <rob@landley.net>
parents: 537
diff changeset
42 ln -s ../sys/user.h "${TOOLS}/include/asm/page.h" &&
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
43 cd ..
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
44
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
45 cleanup linux
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
46
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
47 # Build and install uClibc. (We could just copy the one from the compiler
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
48 # toolchain, but this is cleaner.)
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
49
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
50 setupfor uClibc
530
ea7a010e5c47 Add ldd/readelf/ldconfig to cross and native toolchains, and teach build to fallback to stable miniconfig when miniconfig-alt is absent.
Rob Landley <rob@landley.net>
parents: 527
diff changeset
51 make CROSS="${ARCH}-" KCONFIG_ALLCONFIG="$(getconfig uClibc)" allnoconfig &&
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
52 cp .config "${WORK}"/config-uClibc || dienow
533
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
53
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
54 # Alas, if we feed install and install_utils to make at the same time with
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
55 # -j > 1, it dies. Not SMP safe.
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
56 for i in install install_utils
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
57 do
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
58 make CROSS="${ARCH}-" KERNEL_HEADERS="${TOOLS}/include" \
709
64cc63ad26ce Add BUILD_VERBOSE config option.
Rob Landley <rob@landley.net>
parents: 701
diff changeset
59 PREFIX="${UCLIBC_TOPDIR}/" $VERBOSITY \
533
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
60 RUNTIME_PREFIX="$UCLIBC_DLPREFIX/" DEVEL_PREFIX="$UCLIBC_DLPREFIX/" \
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
61 UCLIBC_LDSO_NAME=ld-uClibc -j $CPUS $i || dienow
b970ffb2eb4d Work around problem with the make -j dependencies of uClibc.
Rob Landley <rob@landley.net>
parents: 530
diff changeset
62 done
721
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
63
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
64 # There's no way to specify a prefix for the uClibc utils; rename them by hand.
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
65
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
66 if [ ! -z "$PROGRAM_PREFIX" ]
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
67 then
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
68 for i in ldd readelf
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
69 do
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
70 mv "${TOOLS}"/bin/{"$i","${PROGRAM_PREFIX}$i"} || dienow
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
71 done
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
72 fi
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
73
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
74 cd ..
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
75
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
76 cleanup uClibc
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
77
598
5fa326c07bc4 Change NATIVE_TOOLCHAIN to work like all the other config variables: unset gives the default behavior.
Rob Landley <rob@landley.net>
parents: 597
diff changeset
78 if [ "$NATIVE_TOOLCHAIN" == "none" ]
496
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
79 then
510
d6182f514567 A system without development headers doesn't need static libraries either.
Rob Landley <rob@landley.net>
parents: 503
diff changeset
80 # If we're not installing a compiler, delete the headers, static libs,
d6182f514567 A system without development headers doesn't need static libraries either.
Rob Landley <rob@landley.net>
parents: 503
diff changeset
81 # and example source code.
d6182f514567 A system without development headers doesn't need static libraries either.
Rob Landley <rob@landley.net>
parents: 503
diff changeset
82
496
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
83 rm -rf "${TOOLS}"/include &&
510
d6182f514567 A system without development headers doesn't need static libraries either.
Rob Landley <rob@landley.net>
parents: 503
diff changeset
84 rm -rf "${TOOLS}"/lib/*.a &&
496
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
85 rm -rf "${TOOLS}/src" || dienow
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
86
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
87 elif [ "$NATIVE_TOOLCHAIN" == "headers" ]
423
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
88 then
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
89
496
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
90 # If you want to use a compiler other than gcc, you need to keep the headers,
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
91 # so do nothing here.
3cebbc0b0723 Rename (invert) NATIVE_NOTOOLCHAIN and NATIVE_NOTOOLSDIR, and tweak colors again.
Rob Landley <rob@landley.net>
parents: 485
diff changeset
92 echo
423
8029eb9a4a8c Split out BUILD_NOTOOLS from BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 417
diff changeset
93
310
3a1ae92d6f6a Teach BUILD_SHORT to remove include files (saving ~5 megs), and move the
Rob Landley <rob@landley.net>
parents: 306
diff changeset
94 else
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
95
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
96 # Build and install native binutils
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
97
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
98 setupfor binutils build-binutils
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
99 CC="${FROM_ARCH}-gcc" AR="${FROM_ARCH}-ar" "${CURSRC}/configure" --prefix="${TOOLS}" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
100 --build="${CROSS_HOST}" --host="${FROM_HOST}" --target="${CROSS_TARGET}" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
101 --disable-nls --disable-shared --disable-multilib --disable-werror \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
102 --program-prefix="$PROGRAM_PREFIX" $BINUTILS_FLAGS &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
103 make -j $CPUS configure-host &&
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
104 make -j $CPUS CFLAGS="-O2 $STATIC_FLAGS" &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
105 make -j $CPUS install &&
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
106 cd .. &&
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
107 mkdir -p "${TOOLS}/include" &&
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
108 cp binutils/include/libiberty.h "${TOOLS}/include"
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
109
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
110 cleanup binutils build-binutils
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
111
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
112 # Build and install native gcc, with c++ support this time.
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
113
223
f6973e090c4f Update mini-native for the new tarball strategy.
Rob Landley <rob@landley.net>
parents: 221
diff changeset
114 setupfor gcc-core build-gcc
f6973e090c4f Update mini-native for the new tarball strategy.
Rob Landley <rob@landley.net>
parents: 221
diff changeset
115 setupfor gcc-g++ build-gcc gcc-core
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
116 # GCC tries to "help out in the kitchen" by screwing up the linux include
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
117 # files. Cut out those bits with sed and throw them away.
295
bbfb6e7bf7e6 Add first pass at Super Hitachi platform.
Rob Landley <rob@landley.net>
parents: 294
diff changeset
118 sed -i 's@^STMP_FIX.*@@' "${CURSRC}/gcc/Makefile.in" &&
46
eeddef87a747 Still doesn't work, but doesn't work better.
Rob Landley <rob@landley.net>
parents: 44
diff changeset
119 # GCC has some deep assumptions about the name of the cross-compiler it should
eeddef87a747 Still doesn't work, but doesn't work better.
Rob Landley <rob@landley.net>
parents: 44
diff changeset
120 # be using. These assumptions are wrong, and lots of redundant corrections
294
87df194d555d Back to gcc 4.1.2 until I find a large enough rock to fix the soft-float thing.
Rob Landley <rob@landley.net>
parents: 293
diff changeset
121 # are required to make it stop.
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
122 CC="${FROM_ARCH}-gcc" AR="${FROM_ARCH}-ar" AS="${FROM_ARCH}-as" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
123 LD="${FROM_ARCH}-ld" NM="${FROM_ARCH}-nm" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
124 CC_FOR_TARGET="${ARCH}-cc" AR_FOR_TARGET="${ARCH}-ar" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
125 NM_FOR_TARGET="${ARCH}-nm" GCC_FOR_TARGET="${ARCH}-gcc" \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
126 CXX_FOR_TARGET="${ARCH}-g++" \
632
4ab92aee351c Gcc 4.2 needs three more environment variables set to emit a native compiler.
Rob Landley <rob@landley.net>
parents: 626
diff changeset
127 ac_cv_path_AR_FOR_TARGET="${ARCH}-ar" \
4ab92aee351c Gcc 4.2 needs three more environment variables set to emit a native compiler.
Rob Landley <rob@landley.net>
parents: 626
diff changeset
128 ac_cv_path_RANLIB_FOR_TARGET="${ARCH}-ranlib" \
4ab92aee351c Gcc 4.2 needs three more environment variables set to emit a native compiler.
Rob Landley <rob@landley.net>
parents: 626
diff changeset
129 ac_cv_path_NM_FOR_TARGET="${ARCH}-nm" \
294
87df194d555d Back to gcc 4.1.2 until I find a large enough rock to fix the soft-float thing.
Rob Landley <rob@landley.net>
parents: 293
diff changeset
130 "${CURSRC}/configure" --prefix="${TOOLS}" --disable-multilib \
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
131 --build="${CROSS_HOST}" --host="${CROSS_TARGET}" --target="${CROSS_TARGET}" \
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
132 --enable-long-long --enable-c99 --enable-shared --enable-threads=posix \
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
133 --enable-__cxa_atexit --disable-nls --enable-languages=c,c++ \
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
134 --disable-libstdcxx-pch --program-prefix="$PROGRAM_PREFIX" \
443
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
135 $GCC_FLAGS &&
517
89b2e2c55b28 Give mini-native.sh the same xgcc bypass trick cross-compiler.sh uses.
Rob Landley <rob@landley.net>
parents: 516
diff changeset
136 mkdir gcc &&
89b2e2c55b28 Give mini-native.sh the same xgcc bypass trick cross-compiler.sh uses.
Rob Landley <rob@landley.net>
parents: 516
diff changeset
137 ln -s `which "${ARCH}-gcc"` gcc/xgcc &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
138 make -j $CPUS configure-host &&
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
139 make -j $CPUS all-gcc LDFLAGS="$STATIC_FLAGS" &&
456
2a308aa24aec Make gcc stop putting stuff in a lib64 directory on x86-64 even when we --disable-multilib, and remove spurious uClibc warnings about trying to use the cross compiler to "make allnoconfig".
Rob Landley <rob@landley.net>
parents: 453
diff changeset
140 # Work around gcc bug; we disabled multilib but it doesn't always notice.
2a308aa24aec Make gcc stop putting stuff in a lib64 directory on x86-64 even when we --disable-multilib, and remove spurious uClibc warnings about trying to use the cross compiler to "make allnoconfig".
Rob Landley <rob@landley.net>
parents: 453
diff changeset
141 ln -s lib "$TOOLS/lib64" &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
142 make -j $CPUS install-gcc &&
456
2a308aa24aec Make gcc stop putting stuff in a lib64 directory on x86-64 even when we --disable-multilib, and remove spurious uClibc warnings about trying to use the cross compiler to "make allnoconfig".
Rob Landley <rob@landley.net>
parents: 453
diff changeset
143 rm "$TOOLS/lib64" &&
721
f0ede6d6c952 Do canadian cross static toolchains properly, via buildall.sh.
Rob Landley <rob@landley.net>
parents: 716
diff changeset
144 ln -s "${PROGRAM_PREFIX}gcc" "${TOOLS}/bin/${PROGRAM_PREFIX}cc" &&
443
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
145 # Now we need to beat libsupc++ out of gcc (which uClibc++ needs to build).
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
146 # But don't want to build the whole of libstdc++-v3 because
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
147 # A) we're using uClibc++ instead, B) the build breaks.
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
148 make -j $CPUS configure-target-libstdc++-v3 &&
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
149 cd "$CROSS_TARGET"/libstdc++-v3/libsupc++ &&
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
150 make -j $CPUS &&
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
151 mv .libs/libsupc++.a "$TOOLS"/lib &&
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
152 cd ../../../..
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
153
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
154 cleanup gcc-core build-gcc
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
155
716
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
156 # Move the gcc internal libraries and headers somewhere sane
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
157
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
158 mkdir -p "${TOOLS}"/gcc &&
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
159 mv "${TOOLS}"/lib/gcc/*/*/include "${TOOLS}"/gcc/include &&
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
160 mv "${TOOLS}"/lib/gcc/*/* "${TOOLS}"/gcc/lib &&
716
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
161
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
162 # Rub gcc's nose in the binutils output.
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
163 cd "${TOOLS}"/libexec/gcc/*/*/ &&
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
164 cp -s "../../../../$CROSS_TARGET/bin/"* . &&
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
165
ff2cd7c539b2 Make canadian cross work by nailing binutils files to gcc's forehead.
Rob Landley <rob@landley.net>
parents: 714
diff changeset
166 # build and install gcc wrapper script.
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
167 mv "${TOOLS}/bin/${PROGRAM_PREFIX}gcc" "${TOOLS}/bin/${PROGRAM_PREFIX}rawgcc" &&
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
168 "${FROM_ARCH}-gcc" "${SOURCES}"/toys/ccwrap.c -Os -s \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
169 -o "${TOOLS}/bin/${PROGRAM_PREFIX}gcc" -DGIMME_AN_S $STATIC_FLAGS \
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
170 -DGCC_UNWRAPPED_NAME='"'"${PROGRAM_PREFIX}rawgcc"'"' &&
443
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
171
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
172 # Wrap C++
714
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
173 mv "${TOOLS}/bin/${PROGRAM_PREFIX}g++" "${TOOLS}/bin/${PROGRAM_PREFIX}rawg++" &&
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
174 ln "${TOOLS}/bin/${PROGRAM_PREFIX}gcc" "${TOOLS}/bin/${PROGRAM_PREFIX}g++" &&
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
175 rm "${TOOLS}/bin/${PROGRAM_PREFIX}c++" &&
db04bd3c11e0 First pass at canadian cross toolchain build. Result doesn't actually work yet, but it builds.
Rob Landley <rob@landley.net>
parents: 713
diff changeset
176 ln -s "${PROGRAM_PREFIX}g++" "${TOOLS}/bin/${PROGRAM_PREFIX}c++"
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
177
432
b697ea9d73f3 Use the wrapper for g++, and clean up compiler install slightly better.
Rob Landley <rob@landley.net>
parents: 424
diff changeset
178 cleanup "${TOOLS}"/{lib/gcc,gcc/lib/install-tools,bin/${ARCH}-unknown-*}
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
179
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 709
diff changeset
180 # Tell future packages to link against the libraries in root-filesystem,
443
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
181 # rather than the ones in the cross compiler directory.
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
182
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
183 export WRAPPER_TOPDIR="${TOOLS}"
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
184
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
185 # Build and install uClibc++
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
186
447
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
187 setupfor uClibc++
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
188 CROSS= make defconfig &&
701
b4a9c0084f2f Converted ARMV5L from OABI to EABI with VFP support. Added patches for uClibc and uClibc++ to deal with Unwind Exception handling, made uClibc++ pull in libgcc_eh for this as well, and disabled SJLJ exceptions for ARMV5L EABI, which is apparently required, so --enable-sjlj-exceptions was added to the details file for all the other arches. Also correct the GENTOO_CHOST variable for armeb.
Mark Miller <mark@mirell.org>
parents: 693
diff changeset
189 sed -r -i 's/(UCLIBCXX_HAS_(TLS|LONG_DOUBLE))=y/# \1 is not set/' .config &&
447
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
190 sed -r -i '/UCLIBCXX_RUNTIME_PREFIX=/s/".*"/""/' .config &&
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
191 CROSS= make oldconfig &&
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
192 CROSS="$ARCH"- make &&
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
193 CROSS= make install PREFIX="${TOOLS}/c++" &&
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
194
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
195 # Move libraries somewhere useful.
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
196
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
197 mv "${TOOLS}"/c++/lib/* "${TOOLS}"/lib &&
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
198 rm -rf "${TOOLS}"/c++/{lib,bin} &&
470
919121ba6c5c Move uClibc 0.9.30 build from unstable to stable (and an unrelated fix: symlink uClibc++.a like .so).
Rob Landley <rob@landley.net>
parents: 456
diff changeset
199 ln -s libuClibc++.so "${TOOLS}"/lib/libstdc++.so &&
479
06d7357c87fd Fix uClibc++ cleanup.
Rob Landley <rob@landley.net>
parents: 470
diff changeset
200 ln -s libuClibc++.a "${TOOLS}"/lib/libstdc++.a &&
06d7357c87fd Fix uClibc++ cleanup.
Rob Landley <rob@landley.net>
parents: 470
diff changeset
201 cd ..
447
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
202
4ed02d53fc92 Add C++ support to native compiler, based on uClibc++.
Rob Landley <rob@landley.net>
parents: 445
diff changeset
203 cleanup uClibc++
443
716b7af6d8c3 Build libsupc++.a in preparation for building uClibc++.
Rob Landley <rob@landley.net>
parents: 432
diff changeset
204
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
205 fi # End of NATIVE_TOOLCHAIN build
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
206
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
207 if [ "$NATIVE_TOOLCHAIN" != "only" ]
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
208 then
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
209
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
210 # Copy qemu setup script and so on.
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
211
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
212 cp -r "${SOURCES}/native/." "${TOOLS}/" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
213 cp "$SRCDIR"/MANIFEST "${TOOLS}/src" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
214 cp "${WORK}/config-uClibc" "${TOOLS}/src/config-uClibc" || dienow
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
215
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
216 if [ -z "${NATIVE_TOOLSDIR}" ]
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
217 then
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
218 sed -i -e 's@/tools/@/usr/@g' "${TOOLS}/sbin/init.sh" || dienow
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
219 fi
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
220
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
221 # Build and install toybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
222
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
223 setupfor toybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
224 make defconfig &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
225 if [ -z "$USE_TOYBOX" ]
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
226 then
726
db5cb617339a Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
Rob Landley <rob@landley.net>
parents: 721
diff changeset
227 CFLAGS="$CFLAGS $STATIC_FLAGS" make CROSS="${ARCH}-" &&
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
228 cp toybox "$TOOLS/bin" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
229 ln -s toybox "$TOOLS/bin/patch" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
230 ln -s toybox "$TOOLS/bin/oneit" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
231 ln -s toybox "$TOOLS/bin/netcat" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
232 cd ..
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
233 else
726
db5cb617339a Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
Rob Landley <rob@landley.net>
parents: 721
diff changeset
234 CFLAGS="$CFLAGS $STATIC_FLAGS" \
db5cb617339a Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
Rob Landley <rob@landley.net>
parents: 721
diff changeset
235 make install_flat PREFIX="${TOOLS}"/bin CROSS="${ARCH}-" &&
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
236 cd ..
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
237 fi
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
238
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
239 cleanup toybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
240
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
241 # Build and install busybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
242
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
243 setupfor busybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
244 make allyesconfig KCONFIG_ALLCONFIG="${SOURCES}/trimconfig-busybox" &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
245 cp .config "${TOOLS}"/src/config-busybox &&
726
db5cb617339a Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
Rob Landley <rob@landley.net>
parents: 721
diff changeset
246 LDFLAGS="$LDFLAGS $STATIC_FLAGS" \
db5cb617339a Centrialize BUILD_STATIC and make it apply to more of root-filesystem.sh
Rob Landley <rob@landley.net>
parents: 721
diff changeset
247 make -j $CPUS CROSS_COMPILE="${ARCH}-" $VERBOSITY &&
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
248 make busybox.links &&
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
249 cp busybox "${TOOLS}/bin"
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
250
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
251 [ $? -ne 0 ] && dienow
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
252
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
253 for i in $(sed 's@.*/@@' busybox.links)
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
254 do
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
255 # Allowed to fail.
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
256 ln -s busybox "${TOOLS}/bin/$i" 2>/dev/null
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
257 done
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
258 cd ..
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
259
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
260 cleanup busybox
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
261
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
262 # Build and install make
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
263
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
264 setupfor make
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
265 CC="${ARCH}-gcc" ./configure --prefix="${TOOLS}" --build="${CROSS_HOST}" \
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
266 --host="${CROSS_TARGET}" &&
182
fc827ab6166f Autodetect number of processors and feed appropriate -j to make.
Rob Landley <rob@landley.net>
parents: 177
diff changeset
267 make -j $CPUS &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
268 make -j $CPUS install &&
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
269 cd ..
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
270
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
271 cleanup make
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
272
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
273 # Build and install bash. (Yes, this is an old version. It's intentional.)
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
274
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
275 setupfor bash
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
276 # Remove existing /bin/sh link (busybox) so the bash install doesn't get upset.
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
277 #rm "$TOOLS"/bin/sh
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
278 # wire around some tests ./configure can't run when cross-compiling.
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
279 cat > config.cache << EOF &&
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
280 ac_cv_func_setvbuf_reversed=no
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
281 bash_cv_sys_named_pipes=yes
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
282 bash_cv_have_mbstate_t=yes
66
57f77c25b39d Hit uClibc build with a large rock so it stops inserting hardwired paths in
Rob Landley <rob@landley.net>
parents: 63
diff changeset
283 bash_cv_getenv_redef=no
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
284 EOF
157
dff36fab9e7e Of course there's a bug. (The ranlib fix was apparently a NOP, this should
Rob Landley <rob@landley.net>
parents: 155
diff changeset
285 CC="${ARCH}-gcc" RANLIB="${ARCH}-ranlib" ./configure --prefix="${TOOLS}" \
153
106f3875f606 The bash build continues to be stupid. Force RANLIB.
Rob Landley <rob@landley.net>
parents: 131
diff changeset
286 --build="${CROSS_HOST}" --host="${CROSS_TARGET}" --cache-file=config.cache \
106f3875f606 The bash build continues to be stupid. Force RANLIB.
Rob Landley <rob@landley.net>
parents: 131
diff changeset
287 --without-bash-malloc --disable-readline &&
183
d2a27709d3b6 Fixup the -j stuff to actually work. (typo in gcc, and uClibc can't use it.)
Rob Landley <rob@landley.net>
parents: 182
diff changeset
288 # note: doesn't work with -j
d2a27709d3b6 Fixup the -j stuff to actually work. (typo in gcc, and uClibc can't use it.)
Rob Landley <rob@landley.net>
parents: 182
diff changeset
289 make &&
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
290 make install &&
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
291 # Make bash the default shell.
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
292 ln -sf bash "${TOOLS}/bin/sh" &&
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
293 cd ..
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
294
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
295 cleanup bash
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
296
280
00ee362817e1 Cross-compile a native distcc for target.
Rob Landley <rob@landley.net>
parents: 278
diff changeset
297 setupfor distcc
544
fcdbdb1059fa Commit 527 broke distccd. Fix it. (Cross compiling remains fiddly.)
Rob Landley <rob@landley.net>
parents: 540
diff changeset
298 CC="${ARCH}-cc" ./configure --host="${CROSS_TARGET}" --prefix="${TOOLS}" \
613
518c8e257b3d Fixes Mark Miller sent for distcc support.
Rob Landley <rob@landley.net>
parents: 598
diff changeset
299 --with-included-popt --disable-Werror &&
293
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
300 make -j $CPUS &&
cdd26f8acc35 Update to gcc 4.1.2->4.2.2. Still doesn't fix the internal compiler error
Rob Landley <rob@landley.net>
parents: 284
diff changeset
301 make -j $CPUS install &&
484
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
302 mkdir -p "${TOOLS}/distcc" || dienow
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
303
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
304 for i in gcc cc g++ c++
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
305 do
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
306 ln -s ../bin/distcc "${TOOLS}/distcc/$i" || dienow
4b0507445452 Hook up c++ to distcc.
Rob Landley <rob@landley.net>
parents: 482
diff changeset
307 done
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
308 cd ..
280
00ee362817e1 Cross-compile a native distcc for target.
Rob Landley <rob@landley.net>
parents: 278
diff changeset
309
301
309b574a5059 Redo the $CLEANUP logic to a cleanup function in include.sh (meaning if a
Rob Landley <rob@landley.net>
parents: 295
diff changeset
310 cleanup distcc
280
00ee362817e1 Cross-compile a native distcc for target.
Rob Landley <rob@landley.net>
parents: 278
diff changeset
311
83
8fb80545fe84 Move the "hello world" source into sources/toys. Build (in mini-native)
Rob Landley <rob@landley.net>
parents: 81
diff changeset
312 # Put statically and dynamically linked hello world programs on there for
315
7fe514d773b9 Install setup script even for BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 311
diff changeset
313 # test purposes.
83
8fb80545fe84 Move the "hello world" source into sources/toys. Build (in mini-native)
Rob Landley <rob@landley.net>
parents: 81
diff changeset
314
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
315 "${ARCH}-gcc" "${SOURCES}/toys/hello.c" -Os -s -o "${TOOLS}/bin/hello-dynamic" &&
315
7fe514d773b9 Install setup script even for BUILD_SHORT.
Rob Landley <rob@landley.net>
parents: 311
diff changeset
316 "${ARCH}-gcc" "${SOURCES}/toys/hello.c" -Os -s -static -o "${TOOLS}/bin/hello-static"
83
8fb80545fe84 Move the "hello world" source into sources/toys. Build (in mini-native)
Rob Landley <rob@landley.net>
parents: 81
diff changeset
317
8fb80545fe84 Move the "hello world" source into sources/toys. Build (in mini-native)
Rob Landley <rob@landley.net>
parents: 81
diff changeset
318 [ $? -ne 0 ] && dienow
8fb80545fe84 Move the "hello world" source into sources/toys. Build (in mini-native)
Rob Landley <rob@landley.net>
parents: 81
diff changeset
319
713
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
320 fi # End of NATIVE_TOOLCHAIN != only
9282f84b31a1 Add NATIVE_TOOLCHAIN=only, to build _just_ the native toolchain (sae set of packages as the cross compiler, only --enable-shared and with uClibc++).
Rob Landley <rob@landley.net>
parents: 711
diff changeset
321
516
f846099333ac I can see the man pages being potentially useful, but info pages are a complete waste of space.
Rob Landley <rob@landley.net>
parents: 510
diff changeset
322 # Delete some unneeded files
f846099333ac I can see the man pages being potentially useful, but info pages are a complete waste of space.
Rob Landley <rob@landley.net>
parents: 510
diff changeset
323
579
05a608d26600 Delete man pages (they take up almost 2 megs) and consolidate some code.
Rob Landley <rob@landley.net>
parents: 576
diff changeset
324 rm -rf "${TOOLS}"/{info,man,libexec/gcc/*/*/install-tools}
516
f846099333ac I can see the man pages being potentially useful, but info pages are a complete waste of space.
Rob Landley <rob@landley.net>
parents: 510
diff changeset
325
75
38e7e0cc3b9f Build mksquashfs in the non-short cross-compiler, and use it at the end of
Rob Landley <rob@landley.net>
parents: 68
diff changeset
326 # Clean up and package the result
43
6d16887ec084 Intermediate snapshot. Doesn't work yet.
Rob Landley <rob@landley.net>
parents:
diff changeset
327
53
3fd961e31444 Build a gcc wrapper for _target_, and add a "strip" command to halve the
Rob Landley <rob@landley.net>
parents: 52
diff changeset
328 "${ARCH}-strip" "${TOOLS}"/{bin/*,sbin/*,libexec/gcc/*/*/*}
633
d2cc6cb79afc Don't strip .a and .o files, even with -strip-unneeded screws 'em up.
Rob Landley <rob@landley.net>
parents: 632
diff changeset
329 "${ARCH}-strip" --strip-unneeded "${TOOLS}"/lib/*.so
53
3fd961e31444 Build a gcc wrapper for _target_, and add a "strip" command to halve the
Rob Landley <rob@landley.net>
parents: 52
diff changeset
330
711
20ba34b54140 Rename mini-native.sh to root-filesystem.sh, since that's what it builds.
Rob Landley <rob@landley.net>
parents: 709
diff changeset
331 create_stage_tarball root-filesystem
576
036dbe218036 Add BASE_ARCH support, so a hardware architecture can specify a base architecture and just provide a different kernel.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
332
50
5aeba79b8f5f Remove qemu build (it's in cross-compiler.sh now), move uClibc build right
Rob Landley <rob@landley.net>
parents: 46
diff changeset
333 # Color back to normal
52
6d6551a37687 Add make to mini-native (required one more option switched on in uClibc), add
Rob Landley <rob@landley.net>
parents: 51
diff changeset
334 echo -e "\e[0mBuild complete"