Hello,
Thank you for making the toolchain available for the Mac at
http://www.mikrocontroller.net/en/arm-gcc . I am assuming that this
version is a PowerPC (PPC) toolchain, right? If so, would it be possible
to get the Intel Mac version or give me instructions on how to make the
Intel Mac version? I use WinARM on my PC and in some cases need to use
the toolchain on my Mac.
Also, what is the difference between the "Mac version" of WinARM versus
the toolchain distributed by Making Things? (
http://prdownloads.sourceforge.net/makingthings/GnuArmTools.dmg )
Thanks!
Darrik
Darrik Spaude wrote:
> Hello,>> Thank you for making the toolchain available for the Mac at> http://www.mikrocontroller.net/en/arm-gcc . I am assuming that this> version is a PowerPC (PPC) toolchain, right?
Yes. It should also run on Intel, but probably not as fast as a native
toolchain.
> If so, would it be possible> to get the Intel Mac version or give me instructions on how to make the> Intel Mac version?
You can try my build script:
http://andreas-s.net/tmp/build.sh> Also, what is the difference between the "Mac version" of WinARM versus> the toolchain distributed by Making Things? (> http://prdownloads.sourceforge.net/makingthings/GnuArmTools.dmg )
I don't know that toolchain; if it contains GCC > 4.0, there shouldn't
be a big difference.
Andreas
> Yes. It should also run on Intel, but probably not as fast as a native> toolchain.
Compared to my Windows machine, my Intel Macs compile more slowly so I
figure that it is running Rosetta to translate from PPC to Intel.
> You can try my build script:> http://andreas-s.net/tmp/build.sh
I'll give it a try. I'm on dial-up so it will take a while to get the
sources. I'll report back to this thread with my status.
>> Also, what is the difference between the "Mac version" of WinARM versus>> the toolchain distributed by Making Things? (>> http://prdownloads.sourceforge.net/makingthings/GnuArmTools.dmg )>> I don't know that toolchain; if it contains GCC > 4.0, there shouldn't> be a big difference.
Their toolchain had all of the same versions, but I wasn't sure if
Newlib was compiled with -DREENTRANT_SYSCALLS_PROVIDED.
Darrik
>> You can try my build script:>> http://andreas-s.net/tmp/build.sh>> I'll give it a try. I'm on dial-up so it will take a while to get the> sources. I'll report back to this thread with my status.
The following doesn't appear to exist (can't get gcc-4.1.0.tar.bz2 and
binutils-2.16.1.tar.bz2):
http://ftp.uni-erlangen.de/pub/mirrors/GNU/
I'm currently getting newlib-1.14.0.tar.gz.
Darrik
Andreas Schwarz wrote:
> You can get them from another GNU mirror. And you don't need exactly the> versions specified in the file, just take the most recent ones.
Thanks. That's what I will do. The only thing I can't seem to find is
http://guest.engelschall.com/~martin/lpc21xx/isp/lpc21isp_source.zip
I don't need that, but to be consistent with the current version here I
should try to get that.
Thanks again, Andreas.
Darrik
Andreas,
I'm getting various errors on compiling using build.sh. First, I should
show you what my directory looks like (I had to create the packages and
src directories):
drwxr-xr-x 7 ~~user~~ admin 238 Apr 14 12:34 .
drwxr-xr-x 25 ~~user~~ admin 850 Apr 14 13:35 ..
drwxr-xr-x 6 ~~user~~ admin 204 Apr 14 14:01 build
-rw-r--r-- 1 ~~user~~ admin 3315 Apr 14 14:01 build.sh
drwxr-xr-x 7 ~~user~~ admin 238 Apr 14 09:43 packages
drwxr-xr-x 7 ~~user~~ admin 238 Apr 14 13:13 src
---------
Now to the errors.
The first one is this when trying to build binutils:
creating cache ./config.cache
checking host system type... i686-apple-darwin8.9.1
checking target system type... arm-unknown-elf
checking build system type... i686-apple-darwin8.9.1
checking for a BSD compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for gcc... ccache gcc
checking whether the C compiler (ccache gcc ) works... no
configure: error: installation or configuration problem: C compiler
cannot create executables.
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target `install'. Stop.
So I then changed the script to explicitly change to the appropriate
directories and use ./configure. This seems to work for binutils, but
not for the GCC, NEWLIB, and GDB. Binutils finally ends with:
make[2]: Nothing to be done for `install'. But it did appear to install
something in /usr/local/arm.
Next, for GCC, I don't have any "t-arm-elf" in the root directory with
the build.sh script. It also gives the following output:
cp: ../../t-arm-elf: No such file or directory
creating cache ./config.cache
checking host system type... i386-apple-darwin8.9.1
checking target system type... arm-unknown-elf
checking build system type... i386-apple-darwin8.9.1
checking for a BSD compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for gcc... ccache gcc
checking whether the C compiler (ccache gcc ) works... no
configure: error: installation or configuration problem: C compiler
cannot create executables.
make: *** No rule to make target `all-gcc'. Stop.
make: *** No rule to make target `install-gcc'. Stop.
I changed the directory stuff again, but I still end up with the
t-arm-elf error (no such file) and "No rule to make target 'all-gcc'.
I'll stop with these errors for now. The other builds have the same
errors.
Thanks for any help.
Darrik
By the way, I'm using a Mac Pro (Intel Xeon) with Mac OS X 10.4.9. I
have Xcode installed, so all the compilers are installed and such. I do
NOT have any Fink or DarwinPorts stuff installed (and I really don't
want to install either of those). This is basically a "factory-fresh"
Mac OS X client installation. I'll keep track of documenting how this
Intel version gets built as long as we can work through it and get it
built.
Thanks,
Darrik
> The first one is this when trying to build binutils:> creating cache ./config.cache> checking host system type... i686-apple-darwin8.9.1> checking target system type... arm-unknown-elf> checking build system type... i686-apple-darwin8.9.1> checking for a BSD compatible install... /usr/bin/install -c> checking whether ln works... yes> checking whether ln -s works... yes> checking for gcc... ccache gcc> checking whether the C compiler (ccache gcc ) works... no> configure: error: installation or configuration problem: C compiler> cannot create executables.> make: *** No targets specified and no makefile found. Stop.> make: *** No rule to make target `install'. Stop.
No idea where this error comes from.
> Next, for GCC, I don't have any "t-arm-elf" in the root directory with> the build.sh script. It also gives the following output:> cp: ../../t-arm-elf: No such file or directory
You can get this file here:
http://www.gnuarm.com/t-arm-elf
You don't need anything except the XCode package.
>> configure: error: installation or configuration problem: C compiler>> cannot create executables.>> make: *** No targets specified and no makefile found. Stop.>> make: *** No rule to make target `install'. Stop.>> No idea where this error comes from.
Do you have ccache installed? I don't seem to have it on my system so I
removed the export "ccache gcc" and the compile is now running. I'll see
what happens...
Darrik
>> Next, for GCC, I don't have any "t-arm-elf" in the root directory with>> the build.sh script. It also gives the following output:>> cp: ../../t-arm-elf: No such file or directory>> You can get this file here:> http://www.gnuarm.com/t-arm-elf
I think I may also need: newlib-cflags_for_target.patch
It appears this goes in the same directory as the build.sh script also.
Thanks,
Darrik
Now we're talking speed!
I got everything to compile except for the following issues:
* I didn't get the LPC21ISP source code--could just inlcude the version
from the PPC one.
* I don't have the patch file for newlib (I don't know if there was a
warning regarding this because the window cache overflowed)
I tried compiling my AT91SAM7 source code and it compiled just fine (but
much faster).
Let me know if I should get the patch file and re-do this before I
submit the Intel version of the cross-compiler.
Also, I noticed that Newlib on the ARM GCC toolchain web page indicated
-DREENTRANT_SYSCALLS_PROVIDED was used. Is that what the patch is for or
do I need to add that to the ./configure for Newlib?
Best Regards,
Darrik
Darrik Spaude wrote:
> Now we're talking speed!>> I got everything to compile except for the following issues:> * I didn't get the LPC21ISP source code--could just inlcude the version> from the PPC one.
That should be ok. Take this version:
http://www.mikrocontroller.net/download/lpc21isp-133-osx> Also, I noticed that Newlib on the ARM GCC toolchain web page indicated> -DREENTRANT_SYSCALLS_PROVIDED was used. Is that what the patch is for or> do I need to add that to the ./configure for Newlib?
That's what the patch is for. Sorry, I forgot to upload it:
http://andreas-s.net/tmp/newlib-cflags_for_target.patch
> That should be ok. Take this version:> http://www.mikrocontroller.net/download/lpc21isp-133-osx
Got it.
>> Also, I noticed that Newlib on the ARM GCC toolchain web page indicated>> -DREENTRANT_SYSCALLS_PROVIDED was used. Is that what the patch is for or>> do I need to add that to the ./configure for Newlib?>> That's what the patch is for. Sorry, I forgot to upload it:> http://andreas-s.net/tmp/newlib-cflags_for_target.patch
Got it.
I'll recompile everything from scratch. I'll also try to use ccache.
Newlib took at least 15 minutes to compile yesterday and it looked like
it was re-compiling a lot of the same code several times (it was hard to
tell, though, since it was flying past so quickly).
I'm documenting what I did to get all of this to compile, so I'll send
my version of the build script along with the Intel version maybe later
today.
Darrik
Everything compiled without trouble. I use ccache this time, but I don't
know if it made any difference or not. All of it still took about 15 to
20 minutes. I also copied the PPC version of LPC21ISP to the
/usr/local/arm/bin/ directory.
On the practical side, I did some compile time tests. On my Mac Pro, I
saw the following changes when compiling my small application for the
AT91SAM7:
PPC version of arm-elf toolchain: 46 seconds
Intel version of arm-elf toolchain: 4 seconds
Very nice. Thank you Andreas and Martin for your help and input.
Is there a location to which I should submit the /usr/local/arm file and
some of the build script files (but not the sources)? I bzipped the arm
directory and it is 52,113,775 bytes (49.7 MB). I can also put it on an
FTP site if you want to get it and move it to another server.
Thanks again,
Darrik
Darrik Spaude wrote:
> Is there a location to which I should submit the /usr/local/arm file and> some of the build script files (but not the sources)?
Did you make any changes to the script? What versions of binutils, GCC
and GDB did you use?
> I bzipped the arm> directory and it is 52,113,775 bytes (49.7 MB).
You can reduce the size significantly by stripping the binaries:
strip /usr/local/arm/bin/*
strip /usr/local/arm/libexec/gcc/arm-elf/yourversion/*
strip /usr/local/arm/arm-elf/bin/*
Including the lpc21isp binary is not necessary, I think it's better to
keep the GNU toolchain seperate from the rest.
> I can also put it on an> FTP site if you want to get it and move it to another server.
That would be nice.
Andreas
> Did you make any changes to the script? What versions of binutils, GCC> and GDB did you use?
Yes, I modified the script (link given at the end of this message) but
really all I did was make it possible to compile it on my Mac.
Otherwise, the script conforms to what is given on the ARM GCC toolchain
web page (http://www.mikrocontroller.net/en/arm-gcc).
I used the following sources:
newlib-1.14.0.tar.gz
binutils-2.16.1.tar.bz2
gdb-6.4.tar.bz2
gcc-4.1.0.tar.bz2
> You can reduce the size significantly by stripping the binaries:> strip /usr/local/arm/bin/*> strip /usr/local/arm/libexec/gcc/arm-elf/yourversion/*> strip /usr/local/arm/arm-elf/bin/*
Okay, I did that. It is down to 33274627 bytes (from 52113775).
> Including the lpc21isp binary is not necessary, I think it's better to> keep the GNU toolchain seperate from the rest.
I removed the lpc21isp binary (which was a PPC build anyway).
I have put the build script and supporting files (minus the source
files) (17 KB) at:
ftp://ftp.multitech.com/multivoip/misc/darrik/IntelARMGCCToolchain_20070
418.zip
I have put the GNU ARM toolchain for Mac OS X (Intel) (31.7 MB) at:
ftp://ftp.multitech.com/multivoip/misc/darrik/arm-toolchain-macosx-2_200
70418_Intel.tar.bz2
Darrik
Darrik, Andreas,
In the last week I've moved my Eclipse cross-compile environment from a
PPC laptop to a Mac Pro, and just yesterday discovered how SLOW the PPC
cross-compiler was running under Rosetta. Then lo, I find this forum
with Intel-compatible binaries POSTED FOR THE FIRST TIME THAT SAME DAY!
May you both live long, blessed, healthy and prosperous lives!!! Can I
buy you a beer?
By the way, "bostjan" at:
http://www.japina.eu/blog-eng/index.php/post/79/
offers (as of 8 April 2007) what he claims is a universal-binary version
of lpc21isp 1.39. I have downloaded it and verified that it starts up
OK on the (Intel) Mac Pro, but have not tested it with a target, nor on
PPC architecture.
Bill
This morning I created an ARM toolchain for Intel Mac OS X based on the
following (similar to what was done at gnuarm.org):
- Binutils 2.17
- GCC 4.2.0
- Newlib 1.15.0
- GDB 6.6
Is there any interest in this toolchain? It is based on the same process
found at
http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X
.
From my limited testing this morning it appears to be working.
Best Regards,
Darrik
> Is there any interest in this toolchain? It is based on the same process> found at> http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X
I looked at the http://gnuarm.org/support.html page and it looks like
the t-arm-elf file was modified and some of the build parameters are a
little different. The gnuarm.org parameters include "--with-float=soft".
However, it doesn't appear -DREENTRANT_SYSCALLS_PROVIDED was used.
Would there be any benefit to using the modified t-arm-elf file and
adding --with-float=soft?
Darrik