# http://www.nongnu.org/avr-libc/user-manual/install_tools.html # http://doswa.com/blog/2010/08/24/avrdude-5-10-with-ftdi-bitbang/ TOP=$(CURDIR) CHAIN=20101030 TOOLCHAIN=$(TOP)/../avr-linux-libc-toolchain-$(CHAIN) export PATH:=$(TOOLCHAIN)/bin:$(PATH) export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH):$(TOOLCHAIN)/lib TARGET="avr" INSTALLDIR=$(TOOLCHAIN) DOWNLOADDIR=$(TOP)/download BUILDDIR=$(TOP)/build binutils=binutils-2.20.1 binutilsurl=ftp://ftp.gnu.org/gnu/binutils mpc=mpc-0.8.1 mpcurl=ftp://gcc.gnu.org/pub/gcc/infrastructure gccver=4.4.4 #gccver=4.5.0 #gccver=4.6-20101009 gcc=gcc-$(gccver) gccurl=ftp://gcc.gnu.org/pub/gcc/releases/$(gcc) #gccurl=ftp://gcc.gnu.org/pub/gcc/snapshots/$(gccver) libc=avr-libc-1.7.0 libcdoc=avr-libc-user-manual-1.7.0.pdf libcurl=http://download.savannah.gnu.org/releases/avr-libc gdb=gdb-7.2 gdburl=ftp://gcc.gnu.org/pub/gdb/releases libftd=libftd2xx0.4.16 libftdurl=http://www.ftdichip.com/Drivers/D2XX/Linux/ dfuprog=dfu-programmer-0.5.2 dfuprogurl=http://surfnet.dl.sourceforge.net/sourceforge/dfu-programmer ############################################################################### .PHONY: all build clean check download extract all: rm -rf $(TOOLCHAIN).old -mv -f $(TOOLCHAIN) $(TOOLCHAIN).old mkdir -p $(TOOLCHAIN) $(MAKE) check $(MAKE) download mkdir -p $(BUILDDIR) $(MAKE) build build: binutils mpc gcc libc libc_manual gdb dfuprog -strip $(TOOLCHAIN)/bin/* -strip $(TOOLCHAIN)/avr/bin/* -strip $(TOOLCHAIN)/libexec/gcc/avr/*/* -strip $(TOOLCHAIN)/libexec/gcc/avr/*/install-tools/* rm -rf $(TOOLCHAIN)/info rm -rf `ls $(TOOLCHAIN)/share/locale|grep -v locale/de` chmod -R go-rwx $(TOOLCHAIN) clean: rm -rf $(BUILDDIR) *~ check: test -x /usr/bin/bison test -x /usr/bin/flex test -x /usr/bin/gcc test -x /usr/bin/byacc test -x /usr/bin/g++ test -x /usr/bin/wget test -f /usr/include/usb.h download: mkdir -p $(DOWNLOADDIR) wget -P $(DOWNLOADDIR) -N $(binutilsurl)/$(binutils).tar.bz2 wget -P $(DOWNLOADDIR) -N $(mpcurl)/$(mpc).tar.gz wget -P $(DOWNLOADDIR) -N $(gccurl)/$(gcc).tar.bz2 wget -P $(DOWNLOADDIR) -N $(libcurl)/$(libc).tar.bz2 wget -P $(DOWNLOADDIR) -N $(libcurl)/$(libcdoc).bz2 wget -P $(DOWNLOADDIR) -N $(gdburl)/$(gdb).tar.bz2 wget -P $(DOWNLOADDIR) -N $(libftdurl)/$(libftd).tar.gz wget -P $(DOWNLOADDIR) -N $(dfuprogurl)/$(dfuprog).tar.gz extract: rm -rf $(BUILDDIR)/$(SOURCE) if test -f $(DOWNLOADDIR)/$(SOURCE).tar.bz2; then \ tar -C $(BUILDDIR) -xjf $(DOWNLOADDIR)/$(SOURCE).tar.bz2; \ else \ tar -C $(BUILDDIR) -xzf $(DOWNLOADDIR)/$(SOURCE).tar.gz; \ fi binutils: OBJDIR=$(BUILDDIR)/obj-$@ binutils: $(MAKE) extract SOURCE=$(binutils) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(binutils)/configure --prefix=$(INSTALLDIR) --target=$(TARGET) --disable-nls) $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install mpc: OBJDIR=$(BUILDDIR)/obj-$@ mpc: $(MAKE) extract SOURCE=$(mpc) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(mpc)/configure --prefix=$(INSTALLDIR)) $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install gcc: OBJDIR=$(BUILDDIR)/obj-$@ gcc: $(MAKE) extract SOURCE=$(gcc) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(gcc)/configure --prefix=$(INSTALLDIR) --target=$(TARGET) --enable-languages=c --disable-libssp --disable-nls --with-mpc=$(INSTALLDIR)) $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install libc: OBJDIR=$(BUILDDIR)/obj-$@ libc: $(MAKE) extract SOURCE=$(libc) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(libc)/configure --prefix=$(INSTALLDIR) --host=$(TARGET) CC="$(INSTALLDIR)/bin/$(TARGET)-gcc") $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install libc_manual: mkdir -p $(INSTALLDIR)/share/doc bzcat $(DOWNLOADDIR)/$(libcdoc).bz2 > $(INSTALLDIR)/share/doc/$(libc)/$(libcdoc) gdb: OBJDIR=$(BUILDDIR)/obj-$@ gdb: $(MAKE) extract SOURCE=$(gdb) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(gdb)/configure --prefix=$(INSTALLDIR) --target=$(TARGET)) $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install libftd: OBJDIR=$(BUILDDIR)/obj-$@ libftd: $(MAKE) extract SOURCE=$(libftd) dfuprog: OBJDIR=$(BUILDDIR)/obj-$@ dfuprog: $(MAKE) extract SOURCE=$(dfuprog) rm -rf $(OBJDIR) mkdir $(OBJDIR) (cd $(OBJDIR); \ $(BUILDDIR)/$(dfuprog)/configure --prefix=$(INSTALLDIR)) $(MAKE) -C $(OBJDIR) $(MAKE) -C $(OBJDIR) install