This directory contains spec files and scripts used for creating rpms of the latest 4.x gcc releases for openSUSE 12.3. http://volker.top.geek.nz/arduino/tools/suse12.3/ The packages are compiled for prefix /usr. Package building was on openSUSE 12.3 using rpmbuild. Steps: * Remove all AVR packages. * Install cross-avr-binutils from the OSS(!!!!) repo. * Build + install avr-gcc-482. * Build avr-libc. * Uninstall all avr-gcc-X, avr-libc, and build the other compiler versions. I don't know whether the compilers can be built with any avr-gcc found in PATH, so it's safer not to. Notes: * Building avr-gcc does NOT depend on avr-libc. * The "cross-" package name prefix is silly, serves no useful purpose and is just a PITA. * The avr-binutils get their "cross-" prefix from the maintainer in the OSS repo. * Using wrapper scripts (see https://bugzilla.novell.com/show_bug.cgi?id=767294) is a bad headache, and not required. * A goal is to be able to install multiple avr-gcc versions in parallel. * All these compilers are vanilla gcc packages, no patches. * I am getting substantially smaller binaries with the later gcc versions, and the avr-gcc maintainer says the latest are the best optimised and the least buggy (fixes are not backported). I don't know why the Arduino people hold on to this massively obsolete 4.3.2. * The avr-gcc maintainer says LTO is not expected to work with AVR, but it works for me and the additional (over non-LTO)code space saving is also substantial. YMMV, but it's definitely worth a try! Issues to decide: * One of the compiler packages should be built with noversion_symlink set to 1, so avr-gcc etc. symlinks are created in /usr/bin. Only one such package can be installed. * The AVR repo contains an avr-gcc 4.3.3 version with several patches applied. I don't know to what extent these patches are required or useful. The Arduino IDE 1.0.5 ships with avr-gcc 4.3.2 and I don't know how many patches to that. If the aim was to have the default compiler in the AVR repo match what the Arduino official IDE uses then that's a fail. Volker Kuhlmann, 23 Oct 2013