added missing files, working on extruder module ( not finished, removing
[clinton/Smoothieware.git] / gcc4mbed / mac_install
CommitLineData
3b1e82d2
AW
1#! /usr/bin/env bash
2# Copyright 2011 Adam Green (http://mbed.org/users/AdamGreen/)
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
40CODE_SOURCERY_VERSION=arm-2011.03
41CODE_SOURCERY_FILENAME=arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
42CODE_SOURCERY_URL=https://sourcery.mentor.com/sgpp/lite/arm/portal/package8734/public/arm-none-eabi/$CODE_SOURCERY_FILENAME
43CODE_SOURCERY_TAR=$ROOTDIR/$CODE_SOURCERY_FILENAME
44CODE_SOURCERY_MD5=b1bd1dcb1f922d815ba7fa8d0e6fcd37
45CODE_SOURCERY_DIR=$ROOTDIR/$CODE_SOURCERY_VERSION
46CODE_SOURCERY_BINDIR=$CODE_SOURCERY_DIR/bin
47CODE_SOURCERY_LIBEXEC=$CODE_SOURCERY_DIR/libexec/gcc/arm-none-eabi/4.5.2
48MACBIN_URL=https://github.com/adamgreen/csgcc4mac/tarball/master
49MACBIN_TAR=$ROOTDIR/csgcc4mac.tar.gz
50MACBIN_MD5=5591077f049837249455131d463ff885
51MACBIN_DIR=$ROOTDIR/csgcc4mac/osx64
52BUILDSHELL_CMD=$ROOTDIR/BuildShell
53
54
55# Initialize install log files.
56echo Logging install results to $LOGFILE
57echo `date` Starting $0 $*>$LOGFILE
58
59echo Downloading Code Sourcery G++ Lite...
60echo `date` Executing curl -L0 $CODE_SOURCERY_URL>>$LOGFILE
61curl -L0 $CODE_SOURCERY_URL >$CODE_SOURCERY_FILENAME
62
63echo Validating md5 signature of Code Sourcery G++ Lite...
64echo `date` Validating md5 signature of Code Sourcery G++ Lite>>$LOGFILE
65archive_match=`md5 -q $CODE_SOURCERY_FILENAME | grep -c $CODE_SOURCERY_MD5`
66if [ "$archive_match" != "1" ] ; then
67 echo $CODE_SOURCERY_FILENAME failed MD5 signature check.>>$LOGFILE
68 echo `date` Failure forced early exit>>$LOGFILE
69 cat $LOGFILE
70 rm -f $ERRORFILE
71 popd >/dev/null
72 read -n 1 -sp "Press any key to continue..." dummy ; echo
73 exit 1
74fi
75
76echo Downloading csgcc4mac project...
77echo `date` Executing curl -L0 $MACBIN_URL>>$LOGFILE
78curl -L0 $MACBIN_URL >$MACBIN_TAR
79
80echo Validating md5 signature of csgcc4mac project...
81echo `date` Validating md5 signature of csgcc4mac project>>$LOGFILE
82archive_match=`md5 -q $MACBIN_TAR | grep -c $MACBIN_MD5`
83if [ "$archive_match" != "1" ] ; then
84 echo $MACBIN_TAR failed MD5 signature check.>>$LOGFILE
85 echo `date` Failure forced early exit>>$LOGFILE
86 cat $LOGFILE
87 rm -f $ERRORFILE
88 popd >/dev/null
89 read -n 1 -sp "Press any key to continue..." dummy ; echo
90 exit 1
91fi
92
93echo Extracting Code Sourcery G++ Lite files...
94RunAndLog tar xf $CODE_SOURCERY_TAR
95
96echo Extracting csgcc4mac project files...
97RunAndLog tar -x -s /adamgreen-csgcc4mac-[a-f0-9]*/csgcc4mac/ -f $MACBIN_TAR
98
99echo Installing 64-bit Intel Mac OS X binaries...
100RunAndLog rm -f $CODE_SOURCERY_BINDIR/*
101RunAndLog cp $MACBIN_DIR/arm-none-eabi-* $CODE_SOURCERY_BINDIR/
102files_to_link=(as g++ ld objcopy ranlib ar c++ gcc nm objdump strip)
103for file_item in ${files_to_link[*]} ; do
104 RunAndLog rm -f $CODE_SOURCERY_DIR/arm-none-eabi/bin/$file_item
105 RunAndLog cp $CODE_SOURCERY_BINDIR/arm-none-eabi-$file_item $CODE_SOURCERY_DIR/arm-none-eabi/bin/$file_item
106done
107RunAndLog rm -rf $CODE_SOURCERY_LIBEXEC/
108RunAndLog mkdir $CODE_SOURCERY_LIBEXEC/
109RunAndLog cp -R $MACBIN_DIR/libexec/ $CODE_SOURCERY_LIBEXEC/
110
111echo Creating helper scripts...
112echo "#! /usr/bin/env bash">$BUILDSHELL_CMD
113echo "# Modify next line and set destination drive to match mbed device">>$BUILDSHELL_CMD
114echo "export LPC_DEPLOY='cp PROJECT.bin /Volumes/MBED/'">>$BUILDSHELL_CMD
115echo>>$BUILDSHELL_CMD
116echo "SCRIPT_PATH=\$0">>$BUILDSHELL_CMD
117echo "SCRIPT_PATH=\${SCRIPT_PATH%/*}">>$BUILDSHELL_CMD
118echo "cd \$SCRIPT_PATH">>$BUILDSHELL_CMD
119echo "SCRIPT_PATH=\$PWD">>$BUILDSHELL_CMD
120echo "export PATH=\$SCRIPT_PATH/arm-2011.03/bin:\$PATH">>$BUILDSHELL_CMD
121echo "exec bash">>$BUILDSHELL_CMD
122chmod +x $BUILDSHELL_CMD
123
124# Place Code Sourcery G++ Lite tools in the path before building gcc4mbed code.
125PATH=$CODE_SOURCERY_BINDIR:$PATH
126
127echo Installing mbed libs and headers...
128RunAndLog make install_mbed
129
130echo Performing a clean build of the gcc4mbed samples...
131RunAndLog make clean
132RunAndLog make
133
134echo
135echo To build gcc4mbed samples, you will first need to run the following script
136echo so that your environment variables are set correctly:
137echo $BUILDSHELL_CMD
138echo You will want to run this each time you start a new Terminal. You
139echo can simply double-click on this script file from Finder to launch a
140echo bash Terminal that has been properly initialized for building gcc4mbed
141echo based code. Feel free to customize it as you desire.
142echo
143echo You can also just edit your existing setup script such as \~/.profile
144echo to update the PATH environment variable to include:
145echo $CODE_SOURCERY_BINDIR
146
147
148# Restore current directory and exit script on success.
149echo `date` Finished successfully>>$LOGFILE
150echo Finished successfully
151rm -f $ERRORFILE
152popd >/dev/null
153read -n 1 -sp "Press any key to continue..." dummy ; echo