Go Down

Topic: Tentiamo di compilare la Toolchain 3.4.2 su Mac OS X (Read 27841 times) previous topic - next topic

gpb01

Come suggerito e concordato altrove ( http://forum.arduino.cc/index.php?topic=153592.msg1348926#msg1348926 ) apriamo questo nuovo thread per vedere se, mettendo assieme le varie forze, riusciamo a compilare la Toolchain 3.4.2 per AVR su piattaforma MAC OS X.

Il thread, in realtà, è aperto a tutti e non solo ai possessori di Mac visto che, almeno in teoria, scaricando i sorgenti della Toolchain 3.4.2 AVR da QUI : http://distribute.atmel.no/tools/opensource/Atmel-AVR-Toolchain-3.4.2/avr/ ... DOVREBBE essere possibile la loro compilazione su qualunque piattaforma ... :smiley-roll:

Personalmente sto effettuando le prove su OS X 10.8.4 ... e, in contemporanea, Leo ha provato la compilazione su piattaforma Linux ... sempre con scarsi risultati ...  =(

Comunque, riporto la mia configurazione che, ad oggi, mi ha almeno permesso SOLO di lanciare lo script fornito da Atmel senza che si arrestasse per mancanza di qualche cosa ...
... ora c'è da capire COME e DOVE vuole le varie cose per compilarle ... :(


Allora, cominciamo ...


... prima di tutto, per semplificarmi la vita nell'installazione degli innumerevoli pacchetti richiesti, ho installato "Homebrew", operazione che è facilmente fattibile su Mac OS X da terminale digitando il seguente comando :

Code: [Select]
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

Installato Homebrew ho potuto poi installare tutti gli altri pacchetti, semplicemente, con il comando :

Code: [Select]
brew install nome_pacchetto

L'elenco completo dei pacchetti che, tramite brew, ho dovuto installare è il seguente (estratto con il comando brew list) :

Code: [Select]
brew list
autoconf            gmp           libmpdclient           libusb-compat           pkg-config
automake            jasper        libpng                 mpc                     texinfo
dfu-programmer      jpeg          libtiff                mpfr                    wget
git                 libmpc        libusb                 netpbm


... ok, ce ne anche qualch'uno in più (git, libusb, dfu-programmer) ... ma conviene installarli, tanto servono :)


Non basta, ho dovuto installare tutto il package TeX per il quale, fortunatamente, esiste una distribuzione aggiornata per OS X : http://mirror.ctan.org/systems/mac/mactex/MacTeX.pkg ... occhio è un .pkg da oltre 2 GB ... ma almeno si installa senza problemi ... ;)


Quindi ... questo è l'ambiente completo che al momento ho dovuto creare per poter avere tutti i moduli che, come dicevo, lo script fornito da Atmel, richiedeva al lancio ...
... ora ... quando siamo tutti sincronizzati, vediamo se riusciamo a capire dove mettere le varie cose affinché lo script le trovi ;)

Aspetto notizie da chi è interessato a partecipare ...

Guglielmo
Search is Your friend ... or I am Your enemy !

cece99

Se posso essere d'aiuto (e se lo trovo!!!) accendo il mio Hackintosh con leopard :D
Il Vero Programmatore non ha bisogno di manuali sull'assembler, sono<br />  sufficienti i data sheet dei microprocessori.

gpb01

Ragazzi ... FORSE e sottolineo FORSE ... ho trovato una soluzione per OS X ...

... qualcuno ha scritto le apposite "formule" per brew ... QUI : https://github.com/larsimmisch/homebrew-avr ... ho appena lanciato :

Code: [Select]
brew install avr-libc

che dovrebbe generare TUTTA la Toolchain aggiornata :)

Vi tengo informati ...

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

RIPORTO IL RISULTATO !!!!  

Code: [Select]

Guglielmos-iMac-27:~ gpb01$ brew tap larsimmisch/avr
Cloning into '/usr/local/Library/Taps/larsimmisch-avr'...
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 48 (delta 18), reused 31 (delta 8)
Unpacking objects: 100% (48/48), done.
Checking connectivity... done
Tapped 3 formula
Guglielmos-iMac-27:~ gpb01$ brew install avr-libc
==> Installing avr-libc dependency: avr-binutils
==> Downloading http://ftpmirror.gnu.org/binutils/binutils-2.23.1.tar.bz2
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
==> Patching
patching file binutils/size.c
==> building libbfd
==> ./configure --enable-install-libbfd --prefix=/usr/local/Cellar/avr-binutils/
==> make
==> make install
==> ./configure --target=avr --prefix=/usr/local/Cellar/avr-binutils/2.23.1 --in
==> make
==> make install
 /usr/local/Cellar/avr-binutils/2.23.1: 139 files, 12M, built in 3.2 minutes
==> Installing avr-libc dependency: avr-gcc
==> Downloading http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2
######################################################################## 100.0%
==> ../configure --enable-languages=c,c++ --target=avr --disable-libssp --disabl
==> make
==> make install
 /usr/local/Cellar/avr-gcc/4.7.2: 229 files, 40M, built in 9.7 minutes
==> Installing avr-libc
==> Downloading http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.
######################################################################## 100.0%
==> ./configure --build=i686-apple-darwin12.4.0 --prefix=/usr/local/Cellar/avr-l
==> make install
==> copying /usr/local/Cellar/avr-libc/1.8.0/avr -> /usr/local/Cellar/avr-gcc/4.
 /usr/local/Cellar/avr-libc/1.8.0: 517 files, 24M, built in 3.4 minutes



TUTTO COMPILATO SENZA ERRORI !!!!  XD XD XD


Ora ... resta da capire come utilizzare quello che ha prodotto ... LEO ... mi sa che mi devi dare una mano ...  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo
Search is Your friend ... or I am Your enemy !

ibbba


RIPORTO IL RISULTATO !!!!  

Code: [Select]

Guglielmos-iMac-27:~ gpb01$ brew tap larsimmisch/avr
Cloning into '/usr/local/Library/Taps/larsimmisch-avr'...
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 48 (delta 18), reused 31 (delta 8)
Unpacking objects: 100% (48/48), done.
Checking connectivity... done
Tapped 3 formula
Guglielmos-iMac-27:~ gpb01$ brew install avr-libc
==> Installing avr-libc dependency: avr-binutils
==> Downloading http://ftpmirror.gnu.org/binutils/binutils-2.23.1.tar.bz2
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
==> Patching
patching file binutils/size.c
==> building libbfd
==> ./configure --enable-install-libbfd --prefix=/usr/local/Cellar/avr-binutils/
==> make
==> make install
==> ./configure --target=avr --prefix=/usr/local/Cellar/avr-binutils/2.23.1 --in
==> make
==> make install
 /usr/local/Cellar/avr-binutils/2.23.1: 139 files, 12M, built in 3.2 minutes
==> Installing avr-libc dependency: avr-gcc
==> Downloading http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2
######################################################################## 100.0%
==> ../configure --enable-languages=c,c++ --target=avr --disable-libssp --disabl
==> make
==> make install
 /usr/local/Cellar/avr-gcc/4.7.2: 229 files, 40M, built in 9.7 minutes
==> Installing avr-libc
==> Downloading http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.
######################################################################## 100.0%
==> ./configure --build=i686-apple-darwin12.4.0 --prefix=/usr/local/Cellar/avr-l
==> make install
==> copying /usr/local/Cellar/avr-libc/1.8.0/avr -> /usr/local/Cellar/avr-gcc/4.
 /usr/local/Cellar/avr-libc/1.8.0: 517 files, 24M, built in 3.4 minutes



TUTTO COMPILATO SENZA ERRORI !!!!  XD XD XD


Ora ... resta da capire come utilizzare quello che ha prodotto ... LEO ... mi sa che mi devi dare una mano ...  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo


Ottima notizia!!.. E  per di più nella mia prima giornata di mare!!!... Per qualche gi

ibbba


RIPORTO IL RISULTATO !!!!  

Code: [Select]

Guglielmos-iMac-27:~ gpb01$ brew tap larsimmisch/avr
Cloning into '/usr/local/Library/Taps/larsimmisch-avr'...
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 48 (delta 18), reused 31 (delta 8)
Unpacking objects: 100% (48/48), done.
Checking connectivity... done
Tapped 3 formula
Guglielmos-iMac-27:~ gpb01$ brew install avr-libc
==> Installing avr-libc dependency: avr-binutils
==> Downloading http://ftpmirror.gnu.org/binutils/binutils-2.23.1.tar.bz2
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
==> Patching
patching file binutils/size.c
==> building libbfd
==> ./configure --enable-install-libbfd --prefix=/usr/local/Cellar/avr-binutils/
==> make
==> make install
==> ./configure --target=avr --prefix=/usr/local/Cellar/avr-binutils/2.23.1 --in
==> make
==> make install
 /usr/local/Cellar/avr-binutils/2.23.1: 139 files, 12M, built in 3.2 minutes
==> Installing avr-libc dependency: avr-gcc
==> Downloading http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2
######################################################################## 100.0%
==> ../configure --enable-languages=c,c++ --target=avr --disable-libssp --disabl
==> make
==> make install
 /usr/local/Cellar/avr-gcc/4.7.2: 229 files, 40M, built in 9.7 minutes
==> Installing avr-libc
==> Downloading http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.8.
######################################################################## 100.0%
==> ./configure --build=i686-apple-darwin12.4.0 --prefix=/usr/local/Cellar/avr-l
==> make install
==> copying /usr/local/Cellar/avr-libc/1.8.0/avr -> /usr/local/Cellar/avr-gcc/4.
 /usr/local/Cellar/avr-libc/1.8.0: 517 files, 24M, built in 3.4 minutes



TUTTO COMPILATO SENZA ERRORI !!!!  XD XD XD


Ora ... resta da capire come utilizzare quello che ha prodotto ... LEO ... mi sa che mi devi dare una mano ...  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

Guglielmo

Ottima notizia!!.. E  per di più nella mia prima giornata di mare!!!... Per qualche giorno ho deciso di non tirare fuori il Mac dalla borsa,ma nel frattempo vi seguo con estremo interesse!!!...ps: fosse la volta buona

gpb01

Si, ottima notizia ... ora però ho il tutto suddiviso in 3 cartelle ...

- avr-binutils
- avr-gcc
- avr-libc

... quello che occorre capire COSA prendere da ciascuna per creare LA cartella da sostituire dentro Arduino ... LEOOOOOOOOOOO ...

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

Per completezza, nello zip allegato, l'elenco dei files di ogni singola cartella suddivisi nelle varie sottocartelle, ottenuto con ...

Code: [Select]
ls -laR *

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

Leo (... e altri utilizzatori Linux) ... per fare le prove ... sembra che Homebrew, nato per OS X, sia disponibile anche per Linux : https://github.com/Homebrew/linuxbrew ...
... potresti provare ad installarlo e vedere se funziona bene ;)

Così poi dovresti poter compilare la Toolchain usando la stessa "formula" che ho usato io per Mac :)

Guglielmo
Search is Your friend ... or I am Your enemy !

leo72

Leggo solo stamattina. Non ho capito se hai compilato ed installato tutta la toolchain oppure no.
Nel dubbio, allego lo script con le modifiche che avevo fatto io e che compilava fino ad un certo punto (mi pare fino a gcc-avr). E con le istruzioni su cosa scaricare e dove metterlo prima di avviare la compilazione

gpb01


Leggo solo stamattina. Non ho capito se hai compilato ed installato tutta la toolchain oppure no.
...


Rileggi con attenzione il tutto ...
... ho trovato una "formula" per Homebrew che permette la CORRETTA compilazione di tutti i moduli (ultima release)

- avr-binutils
- avr-gcc
- avr-libc

... solo che ora mi serve una mano a capire come, da tre directory separate che contengono il tutto, creare l'unica directory "avr" che è poi quella da sostituire dentro ad "Arduino" ...

GRAZIE  :smiley-mr-green:

Guglielmo
Search is Your friend ... or I am Your enemy !

leo72

Eh... bel problema...
Guarda nello script che ti ho allegato se c'è la parte relativa alla costruzione della cartella della toolchain.

Maurotec

Homebrew per me è cosa oscura fino a che qualcuno non mi spiega cosa fa.

Ho visto il risultato dei comandi lanciati da gpb01 e non ho capito qual'è il suo obbiettivo.

Dal risultato dei comandi lanciati vedo che ha scaricato pacchetti, patch e le ha applicate e poi esegue il build ed install, però da atmel non scarica nulla
quindi non si tratta della toolchain Atmel ma di quella GNU con gcc 4.7.2, ma può essere che mi sbaglio io.

Lo script bash di Atmel non dovrebbe funzionare su MAC, perchè ci sono dei controlli che cercano di individuare il sistema host di partenza e non è prevista una ricerca di sistema host Mac. Inoltre lo script effettua una sostituzione in toto degli header della libreria avr-libc, cosa che per come siamo abbituati noi di linux è cosa da non fare. Inoltre cambia il nome dei pacchetti prima della compilazione, attiva totalmente la generazione della documentazione che appunto richiede TeTex & company. Ovviamente fa anche altre cose più complesse che non riesco a descrivere a parole.

Comunque per quello che vale, il modo scelto da Atmel per costruire la toolchain non è il massimo, però ha il vantaggio di lavorare anche su win, su SUN e altro tranne che darwin o macosx, ma questo si può risolvere modificando lo script.

PS: io uso la versione precedente della toolchain atmel, quella con avr-gcc 4.5.1

Ciao.


Maurotec

#13
Aug 12, 2013, 01:20 pm Last Edit: Aug 12, 2013, 01:52 pm by MauroTec Reason: 1
Facciamo (Fate) il debug dello script di atmel in questo modo.

Lo script inizia qui:
Code: [Select]
############# Start of main program. ####################
# chiamata a funzione start_timer
start_timer

############ Set up some usable variables #######################
SUDO_PASSWORD=
KEEP_BUILD_FOLDER="NO"
TIMESTAMP=$(date +%Y%m%d%H%M)
binutils_version_atmel="atmel-$(date +%Y%m%d%H%M%Z)"
gcc_version_atmel="atmel-$(date +%Y%m%d%H%M%Z)"
gdb_version_atmel="atmel-$(date +%Y%m%d%H%M%Z)"
platform_version=""
srcdir=
builddir=
execdir=`pwd`

# aggiunte echo di debug
echo "binutils_version_atmel:"$binutils_version_atmel
echo "gcc_version_atmel:"$gcc_version_atmel
echo "gdb_version_atmel:"$gdb_version_atmel
# fine echo di debug

# Set Toolchain version number
# Use env variable AVR_GNU_TOOLCHAIN_VERSION if set
avr_8_gnu_toolchain_version=${AVR_8_GNU_TOOLCHAIN_VERSION:-"3.2.0"}

# la versione dovrebbe essere 3.4.2, quindi occorre chiamare lo script da bash in questo modo:
# AVR_8_GNU_TOOLCHAIN_VERSION=3.4.2 ./build-avr8-gnu-toolchain.sh
# lasciamo stare tutto com'è

echo "avr_8_gnu_toolchain_version:"$avr_8_gnu_toolchain_version
echo "lo script termina qui"
exit 0

# Set BUILD_NUMBER
# BUILD_NUMBER is set by Hudson build server or can be set before running this script
# If not set we use the date
BUILD_NUMBER=${BUILD_NUMBER:-$(date +%Y%m%d%H%M)}


Lo script termina prematuramente dove viene messa l'istruzione 'exit 0', spostatela di volta in volta. Il caratte # apre il commento
Il comando echo stampa sul terminale ciò che c'è tra apici "", per stampare una variabile fatela precedere dal simbolo $

Lo script diventa complicato da leggere dove c'è il codice che gestisce i parametri della riga di comando.

Su Mac aprire terminale bash e eseguire il seguente comando:
Code: [Select]

echo "OSTYPE"${OSTYPE}


Su Fedora il risultato è: 'linux-gnu'
Su Mac ??

Lo script continua fino ad intercettare le opzioni della riga di comando, il codice è il seguente:
Code: [Select]

############ Get and decode options given #########################
while getopts "B:b:klhH:p:P:s:T:" options; do
 case $options in
     B ) build_platform=$OPTARG
         ;;
     b ) builddir=$OPTARG
         ;;
     H ) host_platform=$OPTARG
         ;;
     k )
         KEEP_BUILD_FOLDER="YES"
         ;;
     l )
         echo "Default packages and build order:"
         for package in $packages
         do
             echo $package
         done
         exit 1
         ;;
   p ) AVR_PREFIX=$OPTARG
       ;;
   P ) SUDO_PASSWORD=$OPTARG
       ;;
     s ) srcdir=$OPTARG
         ;;
   h ) echo "$usage"
       exit 1;;
   \? ) echo "$usage"
        exit 1;;
   * ) echo "$usage"
         exit 1;;

 esac
done

Il codice è abbastanza esplicativo.
Interessante è il seguente codice:
Code: [Select]

######### Check for crosscompile ###############

# If build_platform != host_platform != target_platform
# then we are doing canadian cross
# since target always is avr32 or avr32-linux we check only
# the build and host platforms
if test ${host_platform} != ${build_platform}
then
    canadian_cross=true;
fi


Se build_platform è diverso da host_platform la variabile 'canadian_cross=true', per avr8 build e host devono essere diverso, mentre nel caso
di AVR32 il compilatore può essere nativo installato in una sd su un embedded board basata su AVR32, oppure può essere un canadian cross compiler.
Peccato che questo non ci dice nulla riguardo al valore che deve assumere  'build_platform', cosa sarà AVR, avr, AVR8, avr8, vediamo se spunta fuori.

Ciao.

PaoloP


Go Up