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-elf
6 PREFIX=${HOME}/arm-none-eabi # Install location of your final toolchain
7 PARALLEL="" # Or: PARALLEL="-j 5" for 4 CPUs
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."
34 echo "Found Darwin OS."
35 GCCFLAGS="--with-gmp=${DARWIN_OPT_PATH} \
36 --with-mpfr=${DARWIN_OPT_PATH} \
37 -with-libiconv-prefix=${DARWIN_OPT_PATH}"
38 GDBFLAGS="--disable-werror"
39 BINUTILFLAGS="--disable-werror"
42 echo "Found unknown OS. Aborting!"
47 if [ ! -e ${SOURCES} ]; then
53 echo "Downloading binutils sources..."
54 wget -c http://ftp.gnu.org/gnu/binutils/${BINUTILS}.tar.bz2
56 echo "Downloading gcc sources..."
57 wget -c http://ftp.gnu.org/gnu/gcc/${GCC}/${GCC}.tar.bz2
59 echo "Downloading newlib sources..."
60 wget -c ftp://sources.redhat.com/pub/newlib/${NEWLIB}.tar.gz
62 echo "Downloading gdb sources..."
63 wget -c http://ftp.gnu.org/gnu/gdb/${GDB}.tar.bz2
65 if [ ${LIBSTM32_EN} != 0 ]; then
66 if [ ! -e libcmsis-${LIBCMSIS}.tar.bz2 ]; then
67 echo "Cloning libcmsis sources..."
68 git clone git://git.open-bldc.org/libcmsis.git
70 git archive --format=tar --prefix=libcmsis-${LIBCMSIS}/ ${LIBCMSIS} | \
71 bzip2 --stdout > ../libcmsis-${LIBCMSIS}.tar.bz2
76 if [ ! -e libstm32-${LIBSTM32}.tar.bz2 ]; then
77 echo "Cloning libstm32 sources..."
78 git clone git://git.open-bldc.org/libstm32.git
80 git archive --format=tar --prefix=libstm32-${LIBSTM32}/ ${LIBSTM32} | \
81 bzip2 --stdout > ../libstm32-${LIBSTM32}.tar.bz2
86 if [ ! -e libstm32usb-${LIBSTM32USB}.tar.bz2 ]; then
87 echo "Cloning libstm32usb sources..."
88 git clone git://git.open-bldc.org/libstm32usb.git
90 git archive --format=tar --prefix=libstm32usb-${LIBSTM32USB}/ ${LIBSTM32USB} | \
91 bzip2 --stdout > ../libstm32usb-${LIBSTM32USB}.tar.bz2
97 if [ ${LIBOPENSTM32_EN} != 0 ]; then
98 if [ ! -e libopenstm32-${LIBOPENSTM32}.tar.bz2 ]; then
99 echo "Cloning libopenstm32 sources..."
100 git clone git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32
102 git archive --format=tar --prefix=libopenstm32-${LIBOPENSTM32}/ ${LIBOPENSTM32} | \
103 bzip2 --stdout > ../libopenstm32-${LIBOPENSTM32}.tar.bz2
111 if [ ! -e build ]; then
115 if [ ! -e .${BINUTILS}.build ]; then
116 echo "******************************************************************"
117 echo "* Unpacking ${BINUTILS}"
118 echo "******************************************************************"
119 tar xfvj ${SOURCES}/${BINUTILS}.tar.bz2
121 echo "******************************************************************"
122 echo "* Configuring ${BINUTILS}"
123 echo "******************************************************************"
124 ../${BINUTILS}/configure --target=${TARGET} \
131 ${BINUTILFLAGS} || exit
132 echo "******************************************************************"
133 echo "* Building ${BINUTILS}"
134 echo "******************************************************************"
135 make ${PARALLEL} || exit
136 echo "******************************************************************"
137 echo "* Installing ${BINUTILS}"
138 echo "******************************************************************"
141 echo "******************************************************************"
142 echo "* Cleaning up ${BINUTILS}"
143 echo "******************************************************************"
144 touch .${BINUTILS}.build
145 rm -rf build/* ${BINUTILS}
148 if [ ! -e .${GCC}-boot.build ]; then
149 echo "******************************************************************"
150 echo "* Unpacking ${GCC}-boot"
151 echo "******************************************************************"
152 tar xfvj ${SOURCES}/${GCC}.tar.bz2
154 echo "******************************************************************"
155 echo "* Configuring ${GCC}-boot"
156 echo "******************************************************************"
157 ../${GCC}/configure --target=${TARGET} \
161 --enable-languages="c" \
169 echo "******************************************************************"
170 echo "* Building ${GCC}-boot"
171 echo "******************************************************************"
172 make ${PARALLEL} all-gcc || exit
173 echo "******************************************************************"
174 echo "* Installing ${GCC}-boot"
175 echo "******************************************************************"
176 make install-gcc || exit
178 echo "******************************************************************"
179 echo "* Cleaning up ${GCC}-boot"
180 echo "******************************************************************"
181 touch .${GCC}-boot.build
182 rm -rf build/* ${GCC}
185 if [ ! -e .${NEWLIB}.build ]; then
186 echo "******************************************************************"
187 echo "* Unpacking ${NEWLIB}"
188 echo "******************************************************************"
189 tar xfvz ${SOURCES}/${NEWLIB}.tar.gz
191 echo "******************************************************************"
192 echo "* Configuring ${NEWLIB}"
193 echo "******************************************************************"
194 ../${NEWLIB}/configure --target=${TARGET} \
201 --disable-newlib-supplied-syscalls || exit
202 echo "******************************************************************"
203 echo "* Building ${NEWLIB}"
204 echo "******************************************************************"
205 make ${PARALLEL} || exit
206 echo "******************************************************************"
207 echo "* Installing ${NEWLIB}"
208 echo "******************************************************************"
211 echo "******************************************************************"
212 echo "* Cleaning up ${NEWLIB}"
213 echo "******************************************************************"
214 touch .${NEWLIB}.build
215 rm -rf build/* ${NEWLIB}
218 # Yes, you need to build gcc again!
219 if [ ! -e .${GCC}.build ]; then
220 echo "******************************************************************"
221 echo "* Unpacking ${GCC}"
222 echo "******************************************************************"
223 tar xfvj ${SOURCES}/${GCC}.tar.bz2
225 echo "******************************************************************"
226 echo "* Configuring ${GCC}"
227 echo "******************************************************************"
228 ../${GCC}/configure --target=${TARGET} \
232 --enable-languages="c,c++" \
239 echo "******************************************************************"
240 echo "* Building ${GCC}"
241 echo "******************************************************************"
242 make ${PARALLEL} || exit
243 echo "******************************************************************"
244 echo "* Installing ${GCC}"
245 echo "******************************************************************"
248 echo "******************************************************************"
249 echo "* Cleaning up ${GCC}"
250 echo "******************************************************************"
252 rm -rf build/* ${GCC}
255 if [ ! -e .${GDB}.build ]; then
256 echo "******************************************************************"
257 echo "* Unpacking ${GDB}"
258 echo "******************************************************************"
259 tar xfvj ${SOURCES}/${GDB}.tar.bz2
261 echo "******************************************************************"
262 echo "* Configuring ${GDB}"
263 echo "******************************************************************"
264 ../${GDB}/configure --target=${TARGET} \
269 echo "******************************************************************"
270 echo "* Building ${GDB}"
271 echo "******************************************************************"
272 make ${PARALLEL} || exit
273 echo "******************************************************************"
274 echo "* Installing ${GDB}"
275 echo "******************************************************************"
278 echo "******************************************************************"
279 echo "* Cleaning up ${GDB}"
280 echo "******************************************************************"
282 rm -rf build/* ${GDB}
285 if [ ${LIBSTM32_EN} != 0 ]; then
286 if [ ! -e .libcmsis-${LIBCMSIS}.build ]; then
287 echo "******************************************************************"
288 echo "* Unpacking libcmsis-${LIBCMSIS}"
289 echo "******************************************************************"
290 tar xfvj ${SOURCES}/libcmsis-${LIBCMSIS}.tar.bz2
291 cd libcmsis-${LIBCMSIS}
292 echo "******************************************************************"
293 echo "* Building libcmsis-${LIBCMSIS}"
294 echo "******************************************************************"
295 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
296 echo "******************************************************************"
297 echo "* Installing libcmsis-${LIBCMSIS}"
298 echo "******************************************************************"
299 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
301 echo "******************************************************************"
302 echo "* Cleaning up libcmsis-${LIBCMSIS}"
303 echo "******************************************************************"
304 touch .libcmsis-${LIBCMSIS}.build
305 rm -rf libcmsis-${LIBCMSIS}
308 if [ ! -e .libstm32-${LIBSTM32}.build ]; then
309 echo "******************************************************************"
310 echo "* Unpacking libstm32-${LIBSTM32}"
311 echo "******************************************************************"
312 tar xfvj ${SOURCES}/libstm32-${LIBSTM32}.tar.bz2
313 cd libstm32-${LIBSTM32}
314 echo "******************************************************************"
315 echo "* Building libstm32-${LIBSTM32}"
316 echo "******************************************************************"
317 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
318 echo "******************************************************************"
319 echo "* Installing libstm32-${LIBSTM32}"
320 echo "******************************************************************"
321 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
323 echo "******************************************************************"
324 echo "* Cleaning up libstm32-${LIBSTM32}"
325 echo "******************************************************************"
326 touch .libstm32-${LIBSTM32}.build
327 rm -rf libstm32-${LIBSTM32}
330 if [ ! -e .libstm32usb-${LIBSTM32USB}.build ]; then
331 echo "******************************************************************"
332 echo "* Unpacking libstm32usb-${LIBSTM32USB}"
333 echo "******************************************************************"
334 tar xfvj ${SOURCES}/libstm32usb-${LIBSTM32USB}.tar.bz2
335 cd libstm32usb-${LIBSTM32USB}
336 echo "******************************************************************"
337 echo "* Building libstm32usb-${LIBSTM32USB}"
338 echo "******************************************************************"
339 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
340 echo "******************************************************************"
341 echo "* Installing libstm32usb-${LIBSTM32USB}"
342 echo "******************************************************************"
343 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
345 echo "******************************************************************"
346 echo "* Cleaning up libstm32usb-${LIBSTM32USB}"
347 echo "******************************************************************"
348 touch .libstm32usb-${LIBSTM32USB}.build
349 rm -rf libstm32usb-${LIBSTM32USB}
353 if [ $LIBOPENSTM32_EN != 0 ]; then
354 echo "******************************************************************"
355 echo "* Unpacking libopenstm32-${LIBOPENSTM32}"
356 echo "******************************************************************"
357 tar xfvj ${SOURCES}/libopenstm32-${LIBOPENSTM32}.tar.bz2
358 cd libopenstm32-${LIBOPENSTM32}
359 echo "******************************************************************"
360 echo "* Building libopenstm32-${LIBOPENSTM32}"
361 echo "******************************************************************"
362 make PREFIX=${TARGET} DESTDIR=${PREFIX} || exit
363 echo "******************************************************************"
364 echo "* Installing libopenstm32-${LIBOPENSTM32}"
365 echo "******************************************************************"
366 make PREFIX=${TARGET} DESTDIR=${PREFIX} install || exit
368 echo "******************************************************************"
369 echo "* Cleaning up libopenstm32-${LIBOPENSTM32}"
370 echo "******************************************************************"
371 touch .libopenstm32-${LIBOPENSTM32}.build
372 rm -rf libopenstm32-${LIBOPENSTM32}