Emerge gentoo crossdev avr-gcc for Arduino and Cura

In order to update the firmware of our 3D printer for dual head extrusion and to compile Cura (an alternative gcode slicer) a working AVR crossdev toolchain was needed.

The printer firmware uses the Arduino toolkit so the dependency was obvious, the Cura build unfortunately needs a working avr-gcc as well (not that obvious), because it also ships with Ultimaker firmware, which cannot be disabled, even if you don't have an Ultimaker (kinda stupid).

Currently, the stable crossdev avr-gcc suite with gcc 4.8.3 did not compile so it was a bit of a hassle to get it running again. In order to save somebody else the time to figure this out, here's the install trace that was already tested verbatim on another gentoo amd64 box and worked as well.

Let's start with a clean slate and unmerge any cross-avr chain:

crossdev -C avr

This was used originally:

USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0

As of 2015-04-05 the above combination doesn't work anymore, please use this instead:

USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0

And to finish it up:

ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/avr/lib/ldscripts
ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/x86_64-pc-linux-gnu/avr/binutils-bin/2.20.1/ldscripts
cd /usr/avr/lib
ln -nsf avr5/crtm328p.o .
ln -nsf avr6/crtm2561.o .
ln -nsf avr6/crtm2560.o .
mkdir -p /usr/share/arduino/hardware/tools/avr/bin/
ln -s /usr/bin/avr-gcc /usr/share/arduino/hardware/tools/avr/bin/avr-gcc
ln -s /usr/bin/avr-g++ /usr/share/arduino/hardware/tools/avr/bin/avr-g++
ln -s /usr/bin/avr-objcopy /usr/share/arduino/hardware/tools/avr/bin/avr-objcopy
ln -s /usr/bin/avr-ar /usr/share/arduino/hardware/tools/avr/bin/avr-ar
ln -s /usr/bin/avr-as /usr/share/arduino/hardware/tools/avr/bin/avr-as
ln -s /usr/bin/avr-size /usr/share/arduino/hardware/tools/avr/bin/avr-size

If you want to use the Software Serial and monitoring feature, you need to install rxtx-2.2_pre2 or newer. This version is still masked in the main portage tree, so you will need to unmask it by adding

=dev-java/rxtx-2.2_pre2 ~x86 ~amd64

to /etc/portage/package.keywords/arduino and then (re)emerge it

$ emerge dev-java/rxtx

Also, if you don't want to use the crappy JAVA based Arduino IDE, you can simply use a Makefile like this: https://github.com/sudar/Arduino-Makefile