Upgrade gcc4mbed project used by Smoothie.
[clinton/Smoothieware.git] / gcc4mbed / mac_install
CommitLineData
3b1e82d2 1#! /usr/bin/env bash
8fcce42e 2# Copyright 2012 Adam Green (http://mbed.org/users/AdamGreen/)
3b1e82d2
AW
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16
17# Logs the command to be run and then executes the command while logging the results.
18RunAndLog () {
19 echo `date` Executing $@>>$LOGFILE
20 $@ 1>>$LOGFILE 2>$ERRORFILE
21 if [ "$?" != "0" ] ; then
22 cat $ERRORFILE >>$LOGFILE
23 echo `date` Failure forced early exit>>$LOGFILE
24 cat $LOGFILE
25 rm -f $ERRORFILE
26 popd >/dev/null
27 read -n 1 -sp "Press any key to continue..." dummy ; echo
28 exit 1
29 fi
30}
31
32
33# Setup script variables.
34ROOTDIR=$0
35ROOTDIR=${ROOTDIR%/*}
36pushd $ROOTDIR
37ROOTDIR=$PWD
38LOGFILE=$ROOTDIR/mac_install.log
39ERRORFILE=$ROOTDIR/mac_install.err
8fcce42e
AG
40GCC4ARM_VERSION=gcc-arm-none-eabi-4_6-2012q1
41GCC4ARM_FILENAME=gcc-arm-none-eabi-4_6-2012q1-20120316.tar.bz2
42GCC4ARM_URL=https://launchpad.net/gcc-arm-embedded/4.6/4.6-2012-q1-update/+download/$GCC4ARM_FILENAME
43GCC4ARM_TAR=$ROOTDIR/$GCC4ARM_FILENAME
44GCC4ARM_MD5=3999e0ce25ecd97b3138f3b0dc13c76f
45GCC4ARM_EXTRACT=$ROOTDIR/$GCC4ARM_VERSION
46GCC4ARM_DIR=$ROOTDIR/gcc-arm-none-eabi
47GCC4ARM_BINDIR=$GCC4ARM_DIR/bin
48GCC4ARM_LIBEXEC=$GCC4ARM_DIR/libexec/gcc/arm-none-eabi/4.6.2
49MACBIN_URL=https://github.com/adamgreen/GCC-ARM-Embedded-20120316/tarball/master
50MACBIN_TAR=$ROOTDIR/GCC-ARM-Embedded-20120316.tar.gz
51MACBIN_MD5=ab3e32a3418a38121eceb267e4366848
52MACBIN_BASEDIR=$ROOTDIR/GCC-ARM-Embedded
53MACBIN_DIR=$MACBIN_BASEDIR/osx64
54OUR_MAKE=$ROOTDIR/external/osx64/make
3b1e82d2 55BUILDSHELL_CMD=$ROOTDIR/BuildShell
8fcce42e 56BUILDSHELL_DEBUG_CMD=$ROOTDIR/BuildShellDebug
3b1e82d2
AW
57
58
3b1e82d2
AW
59echo Logging install results to $LOGFILE
60echo `date` Starting $0 $*>$LOGFILE
61
8fcce42e
AG
62echo Downloading GNU Tools for ARM Embedded Processors...
63echo `date` Executing curl -L0 $GCC4ARM_URL>>$LOGFILE
64curl -L0 $GCC4ARM_URL >$GCC4ARM_FILENAME
3b1e82d2 65
8fcce42e
AG
66echo Validating md5 signature of GNU Tools for ARM Embedded Processors...
67echo `date` Validating md5 signature of GNU Tools for ARM Embedded Processors>>$LOGFILE
68archive_match=`md5 -q $GCC4ARM_FILENAME | grep -c $GCC4ARM_MD5`
3b1e82d2 69if [ "$archive_match" != "1" ] ; then
8fcce42e 70 echo $GCC4ARM_FILENAME failed MD5 signature check.>>$LOGFILE
3b1e82d2
AW
71 echo `date` Failure forced early exit>>$LOGFILE
72 cat $LOGFILE
73 rm -f $ERRORFILE
74 popd >/dev/null
75 read -n 1 -sp "Press any key to continue..." dummy ; echo
76 exit 1
77fi
78
8fcce42e 79echo Downloading Mac OS X GCC binaries from github...
3b1e82d2
AW
80echo `date` Executing curl -L0 $MACBIN_URL>>$LOGFILE
81curl -L0 $MACBIN_URL >$MACBIN_TAR
82
8fcce42e 83echo Validating md5 signature of Mac OS X GCC binaries...
3b1e82d2
AW
84echo `date` Validating md5 signature of csgcc4mac project>>$LOGFILE
85archive_match=`md5 -q $MACBIN_TAR | grep -c $MACBIN_MD5`
86if [ "$archive_match" != "1" ] ; then
87 echo $MACBIN_TAR failed MD5 signature check.>>$LOGFILE
88 echo `date` Failure forced early exit>>$LOGFILE
89 cat $LOGFILE
90 rm -f $ERRORFILE
91 popd >/dev/null
92 read -n 1 -sp "Press any key to continue..." dummy ; echo
93 exit 1
94fi
95
8fcce42e
AG
96echo Extracting GNU Tools for ARM Embedded Processors...
97rm -r $GCC4ARM_DIR >/dev/null 2>/dev/null
98RunAndLog tar xf $GCC4ARM_TAR
99RunAndLog mv $GCC4ARM_EXTRACT $GCC4ARM_DIR
3b1e82d2 100
8fcce42e
AG
101echo Extracting Mac OS X GCC binaries...
102RunAndLog tar -x -s /adamgreen-GCC-ARM-Embedded-[0-9]*-[a-f0-9]*/GCC-ARM-Embedded/ -f $MACBIN_TAR
3b1e82d2
AW
103
104echo Installing 64-bit Intel Mac OS X binaries...
8fcce42e
AG
105RunAndLog rm -f $GCC4ARM_BINDIR/*
106RunAndLog cp $MACBIN_DIR/arm-none-eabi-* $GCC4ARM_BINDIR/
3b1e82d2
AW
107files_to_link=(as g++ ld objcopy ranlib ar c++ gcc nm objdump strip)
108for file_item in ${files_to_link[*]} ; do
8fcce42e
AG
109 RunAndLog rm -f $GCC4ARM_DIR/arm-none-eabi/bin/$file_item
110 RunAndLog cp $GCC4ARM_BINDIR/arm-none-eabi-$file_item $GCC4ARM_DIR/arm-none-eabi/bin/$file_item
3b1e82d2 111done
8fcce42e
AG
112RunAndLog rm -rf $GCC4ARM_LIBEXEC/
113RunAndLog mkdir $GCC4ARM_LIBEXEC/
114RunAndLog cp -R $MACBIN_DIR/libexec/ $GCC4ARM_LIBEXEC/
3b1e82d2
AW
115
116echo Creating helper scripts...
117echo "#! /usr/bin/env bash">$BUILDSHELL_CMD
118echo "# Modify next line and set destination drive to match mbed device">>$BUILDSHELL_CMD
119echo "export LPC_DEPLOY='cp PROJECT.bin /Volumes/MBED/'">>$BUILDSHELL_CMD
120echo>>$BUILDSHELL_CMD
121echo "SCRIPT_PATH=\$0">>$BUILDSHELL_CMD
122echo "SCRIPT_PATH=\${SCRIPT_PATH%/*}">>$BUILDSHELL_CMD
123echo "cd \$SCRIPT_PATH">>$BUILDSHELL_CMD
124echo "SCRIPT_PATH=\$PWD">>$BUILDSHELL_CMD
8fcce42e 125echo "export PATH=\$SCRIPT_PATH/gcc-arm-none-eabi/bin:\$SCRIPT_PATH/external/osx64:\$PATH">>$BUILDSHELL_CMD
3b1e82d2
AW
126echo "exec bash">>$BUILDSHELL_CMD
127chmod +x $BUILDSHELL_CMD
128
8fcce42e
AG
129echo "#! /usr/bin/env bash">$BUILDSHELL_DEBUG_CMD
130echo "# Modify next line and set destination drive to match mbed device">>$BUILDSHELL_DEBUG_CMD
131echo "export LPC_DEPLOY='cp PROJECT.bin /Volumes/MBED/'">>$BUILDSHELL_DEBUG_CMD
132echo>>$BUILDSHELL_DEBUG_CMD
133echo "SCRIPT_PATH=\$0">>$BUILDSHELL_DEBUG_CMD
134echo "SCRIPT_PATH=\${SCRIPT_PATH%/*}">>$BUILDSHELL_DEBUG_CMD
135echo "cd \$SCRIPT_PATH">>$BUILDSHELL_DEBUG_CMD
136echo "SCRIPT_PATH=\$PWD">>$BUILDSHELL_DEBUG_CMD
137echo "export PATH=\$SCRIPT_PATH/gcc-arm-none-eabi/bin:\$PATH">>$BUILDSHELL_DEBUG_CMD
138echo "export GCC4MBED_TYPE=Debug">>$BUILDSHELL_DEBUG_CMD
139echo "exec bash">>$BUILDSHELL_DEBUG_CMD
140chmod +x $BUILDSHELL_DEBUG_CMD
141
142# Place arm-none-eabi-* tools in the path before building gcc4mbed code.
143PATH=$GCC4ARM_BINDIR:$PATH
3b1e82d2
AW
144
145echo Performing a clean build of the gcc4mbed samples...
8fcce42e
AG
146RunAndLog $OUR_MAKE clean
147RunAndLog $OUR_MAKE
148
149echo Cleaning up intermediate files...
150RunAndLog rm -r $MACBIN_BASEDIR
151RunAndLog rm $MACBIN_TAR
152RunAndLog rm $GCC4ARM_TAR
3b1e82d2
AW
153
154echo
155echo To build gcc4mbed samples, you will first need to run the following script
156echo so that your environment variables are set correctly:
157echo $BUILDSHELL_CMD
158echo You will want to run this each time you start a new Terminal. You
159echo can simply double-click on this script file from Finder to launch a
160echo bash Terminal that has been properly initialized for building gcc4mbed
161echo based code. Feel free to customize it as you desire.
162echo
163echo You can also just edit your existing setup script such as \~/.profile
164echo to update the PATH environment variable to include:
8fcce42e 165echo $GCC4ARM_BINDIR
3b1e82d2
AW
166
167
168# Restore current directory and exit script on success.
169echo `date` Finished successfully>>$LOGFILE
170echo Finished successfully
171rm -f $ERRORFILE
172popd >/dev/null
173read -n 1 -sp "Press any key to continue..." dummy ; echo