2 # Written by Uwe Hermann <uwe@hermann-uwe.de>, released as public domain.
3 # Modified by Piotr Esden-Tempski <piotr@esden.net>, released as public domain.
5 TARGET=arm-none-eabi # Or: TARGET=arm-none-eabi
6 PREFIX=${HOME}/arm-none-eabi # Install location of your final toolchain
7 PARALLEL="" # Or: PARALLEL="-j 5" for 4 CPU's
8 DARWIN_OPT_PATH=/opt/local # Path in which MacPorts or Fink is installed
10 BINUTILS=binutils-2.19.1
22 SOURCES=${SUMMON_DIR}/sources
24 export PATH="${PREFIX}/bin:${PATH}"
28 echo "Found Linux OS."
33 echo "Found Darwin OS."
34 GCCFLAGS="--with-gmp=${DARWIN_OPT_PATH} \
35 --with-mpfr=${DARWIN_OPT_PATH} \
36 -with-libiconv-prefix=${DARWIN_OPT_PATH}"
37 GDBFLAGS="--disable-werror"
40 echo "Found unknown OS. Aborting!"
45 if [ ! -e ${SOURCES} ]; then
51 echo "Downloading binutils sources..."
52 wget -c http://ftp.gnu.org/gnu/binutils/${BINUTILS}.tar.bz2
54 echo "Downloading gcc sources..."
55 wget -c ftp://ftp.gnu.org/gnu/gcc/${GCC}/${GCC}.tar.bz2
57 echo "Downloading newlib sources..."
58 wget -c ftp://sources.redhat.com/pub/newlib/${NEWLIB}.tar.gz
60 echo "Downloading gdb sources..."
61 wget -c ftp://ftp.gnu.org/gnu/gdb/${GDB}.tar.bz2
63 if [ ${LIBSTM32_EN} != 0 ]; then
64 if [ ! -e libcmsis-${LIBCMSIS}.tar.bz2 ]; then
65 echo "Cloning libcmsis sources..."
66 git clone git://git.open-bldc.org/libcmsis.git
68 git archive --format=tar --prefix=libcmsis-${LIBCMSIS}/ ${LIBCMSIS} | \
69 bzip2 --stdout > ../libcmsis-${LIBCMSIS}.tar.bz2
74 if [ ! -e libstm32-${LIBSTM32}.tar.bz2 ]; then
75 echo "Cloning libstm32 sources..."
76 git clone git://git.open-bldc.org/libstm32.git
78 git archive --format=tar --prefix=libstm32-${LIBSTM32}/ ${LIBSTM32} | \
79 bzip2 --stdout > ../libstm32-${LIBSTM32}.tar.bz2
84 if [ ! -e libstm32usb-${LIBSTM32USB}.tar.bz2 ]; then
85 echo "Cloning libstm32usb sources..."
86 git clone git://git.open-bldc.org/libstm32usb.git
88 git archive --format=tar --prefix=libstm32usb-${LIBSTM32USB}/ ${LIBSTM32USB} | \
89 bzip2 --stdout > ../libstm32usb-${LIBSTM32USB}.tar.bz2
95 if [ ${LIBOPENSTM32_EN} != 0 ]; then
96 if [ ! -e libopenstm32-${LIBOPENSTM32}.tar.bz2 ]; then
97 echo "Cloning libopenstm32 sources..."
98 git clone git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32
100 git archive --format=tar --prefix=libopenstm32-${LIBOPENSTM32}/ ${LIBOPENSTM32} | \
101 bzip2 --stdout > ../libopenstm32-${LIBOPENSTM32}.tar.bz2
109 if [ ! -e build ]; then
113 if [ ! -e .${BINUTILS}.build ]; then
114 echo "******************************************************************"
115 echo "* Unpacking ${BINUTILS}"
116 echo "******************************************************************"
117 tar xfvj ${SOURCES}/${BINUTILS}.tar.bz2
119 echo "******************************************************************"
120 echo "* Configuring ${BINUTILS}"
121 echo "******************************************************************"
122 ../${BINUTILS}/configure --target=${TARGET} \
128 --disable-nls || exit
129 echo "******************************************************************"
130 echo "* Building ${BINUTILS}"
131 echo "******************************************************************"
132 make ${PARALLEL} || exit
133 echo "******************************************************************"
134 echo "* Installing ${BINUTILS}"
135 echo "******************************************************************"
138 echo "******************************************************************"
139 echo "* Cleaning up ${BINUTILS}"
140 echo "******************************************************************"
141 touch .${BINUTILS}.build
142 rm -rf build/* ${BINUTILS}
145 if [ ! -e .${GCC}-boot.build ]; then
146 echo "******************************************************************"
147 echo "* Unpacking ${GCC}-boot"
148 echo "******************************************************************"
149 tar xfvj ${SOURCES}/${GCC}.tar.bz2
151 echo "******************************************************************"
152 echo "* Configuring ${GCC}-boot"
153 echo "******************************************************************"
154 ../${GCC}/configure --target=${TARGET} \
158 --enable-languages="c" \
166 echo "******************************************************************"
167 echo "* Building ${GCC}-boot"
168 echo "******************************************************************"
169 make ${PARALLEL} all-gcc || exit
170 echo "******************************************************************"
171 echo "* Installing ${GCC}-boot"
172 echo "******************************************************************"
173 make install-gcc || exit
175 echo "******************************************************************"
176 echo "* Cleaning up ${GCC}-boot"
177 echo "******************************************************************"
178 touch .${GCC}-boot.build
179 rm -rf build/* ${GCC}
182 if [ ! -e .${NEWLIB}.build ]; then
183 echo "******************************************************************"
184 echo "* Unpacking ${NEWLIB}"
185 echo "******************************************************************"
186 tar xfvz ${SOURCES}/${NEWLIB}.tar.gz
188 echo "******************************************************************"
189 echo "* Configuring ${NEWLIB}"
190 echo "******************************************************************"
191 ../${NEWLIB}/configure --target=${TARGET} \
198 --disable-newlib-supplied-syscalls || exit
199 echo "******************************************************************"
200 echo "* Building ${NEWLIB}"
201 echo "******************************************************************"
202 make ${PARALLEL} || exit
203 echo "******************************************************************"
204 echo "* Installing ${NEWLIB}"
205 echo "******************************************************************"
208 echo "******************************************************************"
209 echo "* Cleaning up ${NEWLIB}"
210 echo "******************************************************************"
211 touch .${NEWLIB}.build
212 rm -rf build/* ${NEWLIB}
215 # Yes, you need to build gcc again!
216 if [ ! -e .${GCC}.build ]; then
217 echo "******************************************************************"
218 echo "* Unpacking ${GCC}"
219 echo "******************************************************************"
220 #tar xfvj ${SOURCES}/${GCC}.tar.bz2
222 echo "******************************************************************"
223 echo "* Configuring ${GCC}"
224 echo "******************************************************************"
225 # ../${GCC}/configure --target=${TARGET} \
226 # --prefix=${PREFIX} \
227 # --enable-interwork \
228 # --enable-multilib \
229 # --enable-languages="c,c++" \
235 # ${GCCFLAGS} || exit
236 echo "******************************************************************"
237 echo "* Building ${GCC}"
238 echo "******************************************************************"
239 make ${PARALLEL} || exit
240 echo "******************************************************************"
241 echo "* Installing ${GCC}"
242 echo "******************************************************************"
245 echo "******************************************************************"
246 echo "* Cleaning up ${GCC}"
247 echo "******************************************************************"
249 rm -rf build/* ${GCC}
252 if [ ! -e .${GDB}.build ]; then
253 echo "******************************************************************"
254 echo "* Unpacking ${GDB}"
255 echo "******************************************************************"
256 tar xfvj ${SOURCES}/${GDB}.tar.bz2
258 echo "******************************************************************"
259 echo "* Configuring ${GDB}"
260 echo "******************************************************************"
261 ../${GDB}/configure --target=${TARGET} \
266 echo "******************************************************************"
267 echo "* Building ${GDB}"
268 echo "******************************************************************"
269 make ${PARALLEL} || exit
270 echo "******************************************************************"
271 echo "* Installing ${GDB}"
272 echo "******************************************************************"
275 echo "******************************************************************"
276 echo "* Cleaning up ${GDB}"
277 echo "******************************************************************"
279 rm -rf build/* ${GDB}
282 if [ ${LIBSTM32_EN} != 0 ]; then
283 if [ ! -e .libcmsis-${LIBCMSIS}.build ]; then
284 echo "******************************************************************"
285 echo "* Unpacking libcmsis-${LIBCMSIS}"
286 echo "******************************************************************"
287 tar xfvj ${SOURCES}/libcmsis-${LIBCMSIS}.tar.bz2
288 cd libcmsis-${LIBCMSIS}
289 echo "******************************************************************"
290 echo "* Building libcmsis-${LIBCMSIS}"
291 echo "******************************************************************"
292 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
293 echo "******************************************************************"
294 echo "* Installing libcmsis-${LIBCMSIS}"
295 echo "******************************************************************"
296 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
298 echo "******************************************************************"
299 echo "* Cleaning up libcmsis-${LIBCMSIS}"
300 echo "******************************************************************"
301 touch .libcmsis-${LIBCMSIS}.build
302 rm -rf libcmsis-${LIBCMSIS}
305 if [ ! -e .libstm32-${LIBSTM32}.build ]; then
306 echo "******************************************************************"
307 echo "* Unpacking libstm32-${LIBSTM32}"
308 echo "******************************************************************"
309 tar xfvj ${SOURCES}/libstm32-${LIBSTM32}.tar.bz2
310 cd libstm32-${LIBSTM32}
311 echo "******************************************************************"
312 echo "* Building libstm32-${LIBSTM32}"
313 echo "******************************************************************"
314 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
315 echo "******************************************************************"
316 echo "* Installing libstm32-${LIBSTM32}"
317 echo "******************************************************************"
318 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
320 echo "******************************************************************"
321 echo "* Cleaning up libstm32-${LIBSTM32}"
322 echo "******************************************************************"
323 touch .libstm32-${LIBSTM32}.build
324 rm -rf libstm32-${LIBSTM32}
327 if [ ! -e .libstm32usb-${LIBSTM32USB}.build ]; then
328 echo "******************************************************************"
329 echo "* Unpacking libstm32usb-${LIBSTM32USB}"
330 echo "******************************************************************"
331 tar xfvj ${SOURCES}/libstm32usb-${LIBSTM32USB}.tar.bz2
332 cd libstm32usb-${LIBSTM32USB}
333 echo "******************************************************************"
334 echo "* Building libstm32usb-${LIBSTM32USB}"
335 echo "******************************************************************"
336 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
337 echo "******************************************************************"
338 echo "* Installing libstm32usb-${LIBSTM32USB}"
339 echo "******************************************************************"
340 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
342 echo "******************************************************************"
343 echo "* Cleaning up libstm32usb-${LIBSTM32USB}"
344 echo "******************************************************************"
345 touch .libstm32usb-${LIBSTM32USB}.build
346 rm -rf libstm32usb-${LIBSTM32USB}
350 if [ $LIBOPENSTM32_EN != 0 ]; then
351 echo "******************************************************************"
352 echo "* Unpacking libopenstm32-${LIBOPENSTM32}"
353 echo "******************************************************************"
354 tar xfvj ${SOURCES}/libopenstm32-${LIBOPENSTM32}.tar.bz2
355 cd libopenstm32-${LIBOPENSTM32}
356 echo "******************************************************************"
357 echo "* Building libopenstm32-${LIBOPENSTM32}"
358 echo "******************************************************************"
359 make PREFIX=${TARGET} DESTDIR=${PREFIX} || exit
360 echo "******************************************************************"
361 echo "* Installing libopenstm32-${LIBOPENSTM32}"
362 echo "******************************************************************"
363 make PREFIX=${TARGET} DESTDIR=${PREFIX} install || exit
365 echo "******************************************************************"
366 echo "* Cleaning up libopenstm32-${LIBOPENSTM32}"
367 echo "******************************************************************"
368 touch .libopenstm32-${LIBOPENSTM32}.build
369 rm -rf libopenstm32-${LIBOPENSTM32}