4 # $ V=1 TARGET=i386-linux-uclibc ./build_toolchain.sh
9 test -n "$APT_GET_SOURCE" || APT_GET_SOURCE
="apt-get source"
10 test -n "$FAKEROOT" || FAKEROOT
="fakeroot"
13 test $V -gt 0 && printf "$0: "$
*
17 printf "$0: Error: "$
*
22 dpkg-query
-f='${Version} ${Revision}\n' -W $1 2> /dev
/null | \
24 while read version_ revision_
; do
25 echo "pkg_version=$(echo $version_ | sed -e 's/-.*//')"
26 echo "deb_version=$(echo $version_ | sed -e 's/[^-]*-\(.*\)/\1/')"
27 echo "deb_revision=$revision_"
34 dpkg-query
-f='${Status} ${Version}\n' -W $name 2> /dev
/null |
35 egrep -q "^install ok installed" |
36 while read ii_vers
; do
37 test "x$ii_vers" = "x$vers"
45 eval $
(get_version binutils
)
46 verb
"Building binutils-%s" $pkg_version
47 binutils_name
="binutils-$pkg_version"
48 test -d $binutils_name ||
$APT_GET_SOURCE binutils
49 cd $binutils_name || die
"Failed to get $binutils_name"
50 $FAKEROOT debian
/rules binary-cross
57 eval $
(get_version binutils
)
58 is_installed binutils-
${TARGET} ${pkg_version} && return 0
59 verb
"Installing binutils-%s_%s" $TARGET $pkg_version
60 ls -t1 binutils-
${TARGET}_
${pkg_version}*.deb |
head -n 1 |
xargs dpkg
-i ||
61 die
"Failed to install binutils-${TARGET}_${pkg_version}"
68 eval $
(get_version uclibc
)
69 if test "No$pkg_version" = "No"
71 # not available, fallback
72 pkg_version
="0.9.30.1"
73 uclibc_name
="uClibc-$pkg_version"
74 test -d $uclibc_name &&
75 svn up
$uclibc_name ||
76 svn co svn
://uclibc.org
/branches
/uClibc_0_9_30
$uclibc_name
77 rm -rf $uclibc_name/debian
78 cp -a uClibc-0.9
.30.1-debian $uclibc_name/debian
80 verb
"uClibc-%s" $pkg_version
81 uclibc_name
="uClibc-$pkg_version"
82 test -d $uclibc_name ||
$APT_GET_SOURCE uclibc
83 cd $uclibc_name || die
"Failed to get $uclibc_name"
84 $FAKEROOT debian
/rules binary-indep
87 install_uclibc_headers
() {
91 eval $
(get_version uclibc
)
92 if test "No$pkg_version" = "No"
94 # not available, fallback
95 pkg_version
="0.9.30.1"
96 uclibc_name
="uClibc-$pkg_version"
98 is_installed uclibc-
${TARGET} ${pkg_version} && return 0
99 verb
"Installing uclibc-%s_%s" $TARGET $pkg_version
100 ls -t1 uclibc-
${TARGET}_
${pkg_version}*.deb |
head -n 1 |
xargs dpkg
-i ||
101 die
"Failed to install uclibc-${TARGET}_${pkg_version}"
104 uclibc_runtime_and_devel
() {
108 eval $
(get_version uclibc
)
109 if test "No$pkg_version" = "No"
111 # not available, fallback
112 pkg_version
="0.9.30.1"
113 uclibc_name
="uClibc-$pkg_version"
114 test -d $uclibc_name &&
115 svn up
$uclibc_name ||
116 svn co svn
://uclibc.org
/branches
/uClibc_0_9_30
$uclibc_name
117 rm -rf $uclibc_name/debian
118 cp -a uClibc-0.9
.30.1-debian $uclibc_name/debian
120 verb
"uClibc-%s" $pkg_version
121 uclibc_name
="uClibc-$pkg_version"
122 test -d $uclibc_name ||
$APT_GET_SOURCE uclibc
123 cd $uclibc_name || die
"Failed to get $uclibc_name"
124 $FAKEROOT debian
/rules binary-runtime
125 $FAKEROOT debian
/rules binary-devel
129 build_initial_cross_gcc
() {
135 eval $
(get_version
$pkg_name-[[:digit
:]]*\.
[[:digit
:]]*)
136 # XXX: revisit ${Package} later
139 if test "No$pkg_version" = "No"
141 # not available, fallback
144 gcc_name
="gcc-$pkg_version"
147 svn co svn
://gcc.gnu.org
/svn
/gcc
/trunk
$gcc_name
148 rm -rf $gcc_name/debian
149 cp -a gcc-
${pkg_version}-debian $gcc_name/debian
151 gcc_name
="$pkg_name-$pkg_version"
152 verb
"%s-%s" $pkg_name $pkg_version
153 test -d $gcc_name ||
$APT_GET_SOURCE $pkg_name
154 cd $gcc_name || die
"Failed to get $gcc_name"
155 # honour our idea of languages that we need, else fallback to old values
156 sed -i -e '/^ languages = c /c \
157 ifeq ($(LANGUAGES),)\
158 languages = c c++ objc objpp\
160 languages = $(LANGUAGES)\
161 endif' debian
/rules.conf
162 # heck, and the same goes for addons
163 sed -i -e '/^ addons = libgcc /c \
165 addons = libgcc lib64gcc lib32gcc libcxx lib32cxx lib64cxx libn32cxx cdev c++dev libobjc objcdev objppdev gccxbase\
168 endif' debian
/rules.conf
170 GCC_TARGET
=$TARGET DEB_CROSS__
=yes LANGUAGES
=c ADDONS
=libgcc debian
/rules control
171 GCC_TARGET
=$TARGET DEB_CROSS__
=yes LANGUAGES
=c ADDONS
=libgcc dpkg-buildpackage
-rfakeroot
179 install_uclibc_headers
180 build_initial_cross_gcc
181 install_initial_cross_gcc
182 # uclibc_runtime_and_devel