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}"
32 echo "Found Linux OS."
35 echo "Found Darwin OS."
36 GCCFLAGS="--with-gmp=${DARWIN_OPT_PATH} \
37 --with-mpfr=${DARWIN_OPT_PATH} \
38 -with-libiconv-prefix=${DARWIN_OPT_PATH}"
41 echo "Found unknown OS. Aborting!"
46 if [ ! -e ${SOURCES} ]; then
52 echo "Downloading binutils sources..."
53 wget -c http://ftp.gnu.org/gnu/binutils/${BINUTILS}.tar.bz2
55 echo "Downloading gcc sources..."
56 wget -c http://ftp.gnu.org/gnu/gcc/${GCC}/${GCC}.tar.bz2
58 echo "Downloading newlib sources..."
59 wget -c --no-passive-ftp ftp://sources.redhat.com/pub/newlib/${NEWLIB}.tar.gz
61 echo "Downloading gdb sources..."
62 wget -c http://ftp.gnu.org/gnu/gdb/${GDB}.tar.bz2
64 if [ ${LIBSTM32_EN} != 0 ]; then
65 if [ ! -e libcmsis-${LIBCMSIS}.tar.bz2 ]; then
66 echo "Cloning libcmsis sources..."
67 git clone git://git.open-bldc.org/libcmsis.git
69 git archive --format=tar --prefix=libcmsis-${LIBCMSIS}/ ${LIBCMSIS} | \
70 bzip2 --stdout > ../libcmsis-${LIBCMSIS}.tar.bz2
75 if [ ! -e libstm32-${LIBSTM32}.tar.bz2 ]; then
76 echo "Cloning libstm32 sources..."
77 git clone git://git.open-bldc.org/libstm32.git
79 git archive --format=tar --prefix=libstm32-${LIBSTM32}/ ${LIBSTM32} | \
80 bzip2 --stdout > ../libstm32-${LIBSTM32}.tar.bz2
85 if [ ! -e libstm32usb-${LIBSTM32USB}.tar.bz2 ]; then
86 echo "Cloning libstm32usb sources..."
87 git clone git://git.open-bldc.org/libstm32usb.git
89 git archive --format=tar --prefix=libstm32usb-${LIBSTM32USB}/ ${LIBSTM32USB} | \
90 bzip2 --stdout > ../libstm32usb-${LIBSTM32USB}.tar.bz2
96 if [ ${LIBOPENSTM32_EN} != 0 ]; then
97 if [ ! -e libopenstm32-${LIBOPENSTM32}.tar.bz2 ]; then
98 echo "Cloning libopenstm32 sources..."
99 git clone git://libopenstm32.git.sourceforge.net/gitroot/libopenstm32/libopenstm32
101 git archive --format=tar --prefix=libopenstm32-${LIBOPENSTM32}/ ${LIBOPENSTM32} | \
102 bzip2 --stdout > ../libopenstm32-${LIBOPENSTM32}.tar.bz2
110 if [ ! -e build ]; then
114 if [ ! -e .${BINUTILS}.build ]; then
115 echo "******************************************************************"
116 echo "* Unpacking ${BINUTILS}"
117 echo "******************************************************************"
118 tar xfvj ${SOURCES}/${BINUTILS}.tar.bz2
120 echo "******************************************************************"
121 echo "* Configuring ${BINUTILS}"
122 echo "******************************************************************"
123 ../${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" \
170 echo "******************************************************************"
171 echo "* Building ${GCC}-boot"
172 echo "******************************************************************"
173 make ${PARALLEL} all-gcc || exit
174 echo "******************************************************************"
175 echo "* Installing ${GCC}-boot"
176 echo "******************************************************************"
177 make install-gcc || exit
179 echo "******************************************************************"
180 echo "* Cleaning up ${GCC}-boot"
181 echo "******************************************************************"
182 touch .${GCC}-boot.build
183 rm -rf build/* ${GCC}
186 if [ ! -e .${NEWLIB}.build ]; then
187 echo "******************************************************************"
188 echo "* Unpacking ${NEWLIB}"
189 echo "******************************************************************"
190 tar xfvz ${SOURCES}/${NEWLIB}.tar.gz
192 echo "******************************************************************"
193 echo "* Configuring ${NEWLIB}"
194 echo "******************************************************************"
195 ../${NEWLIB}/configure --target=${TARGET} \
203 --disable-newlib-supplied-syscalls || exit
204 echo "******************************************************************"
205 echo "* Building ${NEWLIB}"
206 echo "******************************************************************"
207 make ${PARALLEL} || exit
208 echo "******************************************************************"
209 echo "* Installing ${NEWLIB}"
210 echo "******************************************************************"
213 echo "******************************************************************"
214 echo "* Cleaning up ${NEWLIB}"
215 echo "******************************************************************"
216 touch .${NEWLIB}.build
217 rm -rf build/* ${NEWLIB}
220 # Yes, you need to build gcc again!
221 if [ ! -e .${GCC}.build ]; then
222 echo "******************************************************************"
223 echo "* Unpacking ${GCC}"
224 echo "******************************************************************"
225 tar xfvj ${SOURCES}/${GCC}.tar.bz2
227 echo "******************************************************************"
228 echo "* Configuring ${GCC}"
229 echo "******************************************************************"
230 ../${GCC}/configure --target=${TARGET} \
234 --enable-languages="c,c++" \
242 echo "******************************************************************"
243 echo "* Building ${GCC}"
244 echo "******************************************************************"
245 make ${PARALLEL} || exit
246 echo "******************************************************************"
247 echo "* Installing ${GCC}"
248 echo "******************************************************************"
251 echo "******************************************************************"
252 echo "* Cleaning up ${GCC}"
253 echo "******************************************************************"
255 rm -rf build/* ${GCC}
258 if [ ! -e .${GDB}.build ]; then
259 echo "******************************************************************"
260 echo "* Unpacking ${GDB}"
261 echo "******************************************************************"
262 tar xfvj ${SOURCES}/${GDB}.tar.bz2
264 echo "******************************************************************"
265 echo "* Configuring ${GDB}"
266 echo "******************************************************************"
267 ../${GDB}/configure --target=${TARGET} \
273 echo "******************************************************************"
274 echo "* Building ${GDB}"
275 echo "******************************************************************"
276 make ${PARALLEL} || exit
277 echo "******************************************************************"
278 echo "* Installing ${GDB}"
279 echo "******************************************************************"
282 echo "******************************************************************"
283 echo "* Cleaning up ${GDB}"
284 echo "******************************************************************"
286 rm -rf build/* ${GDB}
289 if [ ${LIBSTM32_EN} != 0 ]; then
290 if [ ! -e .libcmsis-${LIBCMSIS}.build ]; then
291 echo "******************************************************************"
292 echo "* Unpacking libcmsis-${LIBCMSIS}"
293 echo "******************************************************************"
294 tar xfvj ${SOURCES}/libcmsis-${LIBCMSIS}.tar.bz2
295 cd libcmsis-${LIBCMSIS}
296 echo "******************************************************************"
297 echo "* Building libcmsis-${LIBCMSIS}"
298 echo "******************************************************************"
299 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
300 echo "******************************************************************"
301 echo "* Installing libcmsis-${LIBCMSIS}"
302 echo "******************************************************************"
303 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
305 echo "******************************************************************"
306 echo "* Cleaning up libcmsis-${LIBCMSIS}"
307 echo "******************************************************************"
308 touch .libcmsis-${LIBCMSIS}.build
309 rm -rf libcmsis-${LIBCMSIS}
312 if [ ! -e .libstm32-${LIBSTM32}.build ]; then
313 echo "******************************************************************"
314 echo "* Unpacking libstm32-${LIBSTM32}"
315 echo "******************************************************************"
316 tar xfvj ${SOURCES}/libstm32-${LIBSTM32}.tar.bz2
317 cd libstm32-${LIBSTM32}
318 echo "******************************************************************"
319 echo "* Building libstm32-${LIBSTM32}"
320 echo "******************************************************************"
321 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
322 echo "******************************************************************"
323 echo "* Installing libstm32-${LIBSTM32}"
324 echo "******************************************************************"
325 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
327 echo "******************************************************************"
328 echo "* Cleaning up libstm32-${LIBSTM32}"
329 echo "******************************************************************"
330 touch .libstm32-${LIBSTM32}.build
331 rm -rf libstm32-${LIBSTM32}
334 if [ ! -e .libstm32usb-${LIBSTM32USB}.build ]; then
335 echo "******************************************************************"
336 echo "* Unpacking libstm32usb-${LIBSTM32USB}"
337 echo "******************************************************************"
338 tar xfvj ${SOURCES}/libstm32usb-${LIBSTM32USB}.tar.bz2
339 cd libstm32usb-${LIBSTM32USB}
340 echo "******************************************************************"
341 echo "* Building libstm32usb-${LIBSTM32USB}"
342 echo "******************************************************************"
343 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
344 echo "******************************************************************"
345 echo "* Installing libstm32usb-${LIBSTM32USB}"
346 echo "******************************************************************"
347 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
349 echo "******************************************************************"
350 echo "* Cleaning up libstm32usb-${LIBSTM32USB}"
351 echo "******************************************************************"
352 touch .libstm32usb-${LIBSTM32USB}.build
353 rm -rf libstm32usb-${LIBSTM32USB}
357 if [ $LIBOPENSTM32_EN != 0 ]; then
358 echo "******************************************************************"
359 echo "* Unpacking libopenstm32-${LIBOPENSTM32}"
360 echo "******************************************************************"
361 tar xfvj ${SOURCES}/libopenstm32-${LIBOPENSTM32}.tar.bz2
362 cd libopenstm32-${LIBOPENSTM32}
363 echo "******************************************************************"
364 echo "* Building libopenstm32-${LIBOPENSTM32}"
365 echo "******************************************************************"
366 make PREFIX=${TARGET} DESTDIR=${PREFIX} || exit
367 echo "******************************************************************"
368 echo "* Installing libopenstm32-${LIBOPENSTM32}"
369 echo "******************************************************************"
370 make PREFIX=${TARGET} DESTDIR=${PREFIX} install || exit
372 echo "******************************************************************"
373 echo "* Cleaning up libopenstm32-${LIBOPENSTM32}"
374 echo "******************************************************************"
375 touch .libopenstm32-${LIBOPENSTM32}.build
376 rm -rf libopenstm32-${LIBOPENSTM32}