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" \
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} \
270 echo "******************************************************************"
271 echo "* Building ${GDB}"
272 echo "******************************************************************"
273 make ${PARALLEL} || exit
274 echo "******************************************************************"
275 echo "* Installing ${GDB}"
276 echo "******************************************************************"
279 echo "******************************************************************"
280 echo "* Cleaning up ${GDB}"
281 echo "******************************************************************"
283 rm -rf build/* ${GDB}
286 if [ ${LIBSTM32_EN} != 0 ]; then
287 if [ ! -e .libcmsis-${LIBCMSIS}.build ]; then
288 echo "******************************************************************"
289 echo "* Unpacking libcmsis-${LIBCMSIS}"
290 echo "******************************************************************"
291 tar xfvj ${SOURCES}/libcmsis-${LIBCMSIS}.tar.bz2
292 cd libcmsis-${LIBCMSIS}
293 echo "******************************************************************"
294 echo "* Building libcmsis-${LIBCMSIS}"
295 echo "******************************************************************"
296 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
297 echo "******************************************************************"
298 echo "* Installing libcmsis-${LIBCMSIS}"
299 echo "******************************************************************"
300 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
302 echo "******************************************************************"
303 echo "* Cleaning up libcmsis-${LIBCMSIS}"
304 echo "******************************************************************"
305 touch .libcmsis-${LIBCMSIS}.build
306 rm -rf libcmsis-${LIBCMSIS}
309 if [ ! -e .libstm32-${LIBSTM32}.build ]; then
310 echo "******************************************************************"
311 echo "* Unpacking libstm32-${LIBSTM32}"
312 echo "******************************************************************"
313 tar xfvj ${SOURCES}/libstm32-${LIBSTM32}.tar.bz2
314 cd libstm32-${LIBSTM32}
315 echo "******************************************************************"
316 echo "* Building libstm32-${LIBSTM32}"
317 echo "******************************************************************"
318 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
319 echo "******************************************************************"
320 echo "* Installing libstm32-${LIBSTM32}"
321 echo "******************************************************************"
322 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
324 echo "******************************************************************"
325 echo "* Cleaning up libstm32-${LIBSTM32}"
326 echo "******************************************************************"
327 touch .libstm32-${LIBSTM32}.build
328 rm -rf libstm32-${LIBSTM32}
331 if [ ! -e .libstm32usb-${LIBSTM32USB}.build ]; then
332 echo "******************************************************************"
333 echo "* Unpacking libstm32usb-${LIBSTM32USB}"
334 echo "******************************************************************"
335 tar xfvj ${SOURCES}/libstm32usb-${LIBSTM32USB}.tar.bz2
336 cd libstm32usb-${LIBSTM32USB}
337 echo "******************************************************************"
338 echo "* Building libstm32usb-${LIBSTM32USB}"
339 echo "******************************************************************"
340 make arch_prefix=${TARGET} prefix=${PREFIX} || exit
341 echo "******************************************************************"
342 echo "* Installing libstm32usb-${LIBSTM32USB}"
343 echo "******************************************************************"
344 make arch_prefix=${TARGET} prefix=${PREFIX} install || exit
346 echo "******************************************************************"
347 echo "* Cleaning up libstm32usb-${LIBSTM32USB}"
348 echo "******************************************************************"
349 touch .libstm32usb-${LIBSTM32USB}.build
350 rm -rf libstm32usb-${LIBSTM32USB}
354 if [ $LIBOPENSTM32_EN != 0 ]; then
355 echo "******************************************************************"
356 echo "* Unpacking libopenstm32-${LIBOPENSTM32}"
357 echo "******************************************************************"
358 tar xfvj ${SOURCES}/libopenstm32-${LIBOPENSTM32}.tar.bz2
359 cd libopenstm32-${LIBOPENSTM32}
360 echo "******************************************************************"
361 echo "* Building libopenstm32-${LIBOPENSTM32}"
362 echo "******************************************************************"
363 make PREFIX=${TARGET} DESTDIR=${PREFIX} || exit
364 echo "******************************************************************"
365 echo "* Installing libopenstm32-${LIBOPENSTM32}"
366 echo "******************************************************************"
367 make PREFIX=${TARGET} DESTDIR=${PREFIX} install || exit
369 echo "******************************************************************"
370 echo "* Cleaning up libopenstm32-${LIBOPENSTM32}"
371 echo "******************************************************************"
372 touch .libopenstm32-${LIBOPENSTM32}.build
373 rm -rf libopenstm32-${LIBOPENSTM32}