BuildTools 2 years ago
parent
commit
e2e5ada08c
9 changed files with 310 additions and 2 deletions
  1. 293 0
      build-avr-toolchain
  2. 2 2
      clean.sh
  3. 15 0
      easy_install
  4. 0 0
      pack/build-avr-binutils
  5. 0 0
      pack/build-avr-gcc
  6. 0 0
      pack/build-avr-gdb
  7. 0 0
      pack/build-avr-libc
  8. 0 0
      pack/build-avrdude
  9. 0 0
      pack/build-simulavr

+ 293 - 0
build-avr-toolchain

@@ -0,0 +1,293 @@
+#!/bin/bash
+
+# http://www.nongnu.org/avr-libc/user-manual/install_tools.html
+
+# Stop on errors
+set -e
+if [ ! -f .prereq ];then ./prerequise.sh;fi
+
+source avr-file-names
+
+function binutils (){
+# Figure out which version of the patch to use
+OLD_PATCH_CUTOFF="2.32"
+OLD_PATCH_CUTOFF_MAJ=${OLD_PATCH_CUTOFF%%.*}
+OLD_PATCH_CUTOFF_MIN=${OLD_PATCH_CUTOFF#*.}
+
+BINUTILS_VER=${NAME_BINUTILS#binutils-}
+BINUTILS_VER_MAJ=${BINUTILS_VER%%.*}
+BINUTILS_VER_MIN_TMP=${BINUTILS_VER#*.}
+BINUTILS_VER_MIN=${BINUTILS_VER_MIN_TMP%.*}
+
+if [ $BINUTILS_VER_MAJ -eq "1" ]; then
+  echo "ERROR:  Binutils version 1.xx is too old -- use at least version 2.xx"
+  exit 1;
+fi
+
+if [ $BINUTILS_VER_MAJ -gt $OLD_PATCH_CUTOFF_MAJ ] || \
+( [ $BINUTILS_VER_MAJ -eq $OLD_PATCH_CUTOFF_MAJ ] && [ $BINUTILS_VER_MIN -gt $OLD_PATCH_CUTOFF_MIN ] ) ; then
+  NAME_BINUTILS_SIZE_PATCH="avr-binutils-size-2.33.patch";
+else
+  NAME_BINUTILS_SIZE_PATCH="avr-binutils-size-2.32.patch";
+fi
+
+
+TIME_START=$(date +%s)
+
+makeDir()
+{
+	rm -rf "$1/"
+	mkdir -p "$1"
+}
+
+
+echo "Downloading sources..."
+
+if [ ! -f $NAME_BINUTILS.tar.xz ]; then
+    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_BINUTILS.tar.xz
+fi
+
+
+# Make AVR-Binutils
+NAME_BINUTILS_BLD=${NAME_BINUTILS}_bld
+echo "Making Binutils in $NAME_BINUTILS_BLD..."
+echo "Extracting..."
+rm -rf $NAME_BINUTILS/
+tar xJf $NAME_BINUTILS.tar.xz
+
+# Patch the size function
+cd $NAME_BINUTILS/binutils
+patch -p 1 < ../../pack/$NAME_BINUTILS_SIZE_PATCH
+cd ../..
+
+makeDir $NAME_BINUTILS_BLD
+cd $NAME_BINUTILS_BLD
+../$NAME_BINUTILS/configure --prefix=$PREFIX --target=avr --disable-nls
+make -j $JOBCOUNT
+sudo make install-strip
+cd ..
+
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+
+}
+
+function avr-gcc () {
+
+source avr-file-names
+
+TIME_START=$(date +%s)
+
+makeDir()
+{
+	rm -rf "$1/"
+	mkdir -p "$1"
+}
+
+
+echo "Downloading sources..."
+
+if [ ! -f $NAME_GCC.tar.xz ]; then
+    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_GCC.tar.xz
+fi
+
+
+# Make AVR-GCC
+NAME_GCC_BLD=${NAME_GCC}_bld
+echo "Making GCC in $NAME_GCC_BLD..."
+echo "Extracting..."
+rm -rf $NAME_GCC/
+tar xJf $NAME_GCC.tar.xz
+
+# Patch the download_prerequisites script
+cd $NAME_GCC
+sed -i 's/ftp/https/g' ./contrib/download_prerequisites
+./contrib/download_prerequisites
+cd ..
+
+makeDir $NAME_GCC_BLD
+cd $NAME_GCC_BLD
+../$NAME_GCC/configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --disable-libada --with-dwarf2 --disable-shared --enable-static
+make -j $JOBCOUNT
+sudo make install-strip
+cd ..
+
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+
+}
+
+function avr-gdb () {
+source avr-file-names
+
+TIME_START=$(date +%s)
+
+makeDir()
+{
+	rm -rf "$1/"
+	mkdir -p "$1"
+}
+
+
+echo "Downloading sources..."
+
+if [ ! -f $NAME_GDB.tar.xz ]; then
+    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_GDB.tar.xz
+fi
+
+
+# Make AVR-libc
+NAME_GDB_BLD=${NAME_GDB}_bld
+echo "Making AVR-GDB in $NAME_GDB_BLD..."
+echo "Extracting..."
+rm -rf $NAME_GDB/
+tar xJf $NAME_GDB.tar.xz
+
+makeDir $NAME_GDB_BLD
+cd $NAME_GDB_BLD
+../$NAME_GDB/configure --prefix=$PREFIX --target=avr
+make -j $JOBCOUNT
+sudo make install
+cd ..
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+
+}
+
+function avr-libc () { 
+source avr-file-names
+
+TIME_START=$(date +%s)
+
+makeDir()
+{
+	rm -rf "$1/"
+	mkdir -p "$1"
+}
+
+
+echo "Downloading sources..."
+
+if [ ! -f $NAME_LIBC.tar.xz ]; then
+    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_LIBC.tar.xz
+fi
+
+
+# Make AVR-libc
+NAME_LIBC_BLD=${NAME_LIBC}_bld
+echo "Making AVR-LIBC in $NAME_LIBC_BLD..."
+echo "Extracting..."
+rm -rf $NAME_LIBC/
+tar xJf $NAME_LIBC.tar.xz
+
+makeDir $NAME_LIBC_BLD
+AR='avr-ar'
+AS='avr-as'
+CC='avr-gcc'
+CCAS='gcc'
+
+cd $NAME_LIBC_BLD
+../$NAME_LIBC/configure --prefix=$PREFIX --build=$(../$NAME_LIBC/config.guess) --host=avr
+make -j $JOBCOUNT
+sudo env "PATH=$PATH" make install-strip
+cd ..
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+}
+
+function build-simu (){
+
+source avr-file-names
+
+TIME_START=$(date +%s)
+
+echo "Downloading sources..."
+wget -c http://wareck.free.fr/cross_compilation/avr_toolchain/simulavr.tar.xz
+tar xfJ simulavr.tar.xz
+
+# Make simulavr
+echo "Making simulavr in $NAME_SIMULAVR..."
+cd $NAME_SIMULAVR/
+git checkout traumflug
+
+cp ../pack/simulavr_patch1.patch .
+cp ../pack/simulavr_patch2.patch .
+patch -p1 < simulavr_patch1.patch
+patch -p1 < simulavr_patch2.patch
+
+./bootstrap
+./configure --enable-tcl --prefix=$PREFIX
+make
+sudo make install-strip
+
+cd ..
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+}
+
+function avdude(){
+source avr-file-names
+
+TIME_START=$(date +%s)
+
+makeDir()
+{
+	rm -rf "$1/"
+	mkdir -p "$1"
+}
+
+
+echo "Downloading sources..."
+
+if [ ! -f $NAME_AVRDUDE.tar.xz ]; then
+    wget http://wareck.free.fr/cross_compilation/avr_toolchain/$NAME_AVRDUDE.tar.xz
+fi
+
+
+# Make avrdude
+NAME_AVRDUDE_BLD=${NAME_AVRDUDE}_bld
+echo "Making AVRDUDE in $NAME_AVRDUDE_BLD..."
+echo "Extracting..."
+rm -rf $NAME_AVRDUDE/
+tar xJf $NAME_AVRDUDE.tar.xz
+
+makeDir $NAME_AVRDUDE_BLD
+cd $NAME_AVRDUDE_BLD
+../$NAME_AVRDUDE/configure --prefix=$PREFIX
+make -j $JOBCOUNT
+sudo make install-strip
+cd ..
+
+TIME_END=$(date +%s)
+TIME_RUN=$(($TIME_END - $TIME_START))
+
+echo ""
+echo "Done in $TIME_RUN seconds"
+}
+
+binutils
+avr-gcc
+avr-gdb
+avr-libc
+build-simu
+avdude

+ 2 - 2
clean.sh

@@ -10,12 +10,12 @@ rm -r -f avrdude-6.3_bld
 rm -r -f avrdude-6.3
 rm -r -f avr-libc-2.0.0_bld
 rm -r -f avr-libc-2.0.0
-rm -r -f simulavr
+sudo rm -r -f simulavr
 rm avrdude-6.3.tar.xz
+rm swig-3.0.12.tar.xz
 rm avr-libc-2.0.0.tar.xz
 rm binutils-2.37.tar.xz
 rm gdb-8.1.1.tar.xz
 rm simulavr.tar.xz
 rm gcc-7.5.0.tar.xz
-rm swig-3.0.12.tar.xz
 rm .prereq

+ 15 - 0
easy_install

@@ -0,0 +1,15 @@
+#!/bin/bash
+wget -c http://wareck.free.fr/cross_compilation/avr_toolchain/avr_toolchain.tar.xz
+tar xvfJ avr_toolchain.tar.xz
+sudo cp -r avr /usr/local
+rm -r -f avr
+rm avr_toolchain.tar.xz
+
+
+if ! grep "/usr/local/avr/bin" ~/.bashrc >/dev/null
+        then
+        echo "export PATH=XXXXPATH::/usr/local/avr/bin" >> ~/.bashrc
+        sed -i -e "s/XXXX/$/g" ~/.bashrc
+        source ~/.bashrc
+fi
+echo "Done."

+ 0 - 0
build-avr-binutils → pack/build-avr-binutils


+ 0 - 0
build-avr-gcc → pack/build-avr-gcc


+ 0 - 0
build-avr-gdb → pack/build-avr-gdb


+ 0 - 0
build-avr-libc → pack/build-avr-libc


+ 0 - 0
build-avrdude → pack/build-avrdude


+ 0 - 0
build-simulavr → pack/build-simulavr