EmbDev.net

Forum: ARM programming with GCC/GNU tools ToolChain for Intel Mac


von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
>> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
>>> 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.

It also doesn't find the following:
http://ftp.uni-erlangen.de/pub/mirrors/GNU/gdb/gdb-6.4.tar.bz2

http://guest.engelschall.com/~martin/lpc21xx/isp/lpc21isp_source.zip

So a total of 4 of the source files cannot be found.

Darrik

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
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.

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Martin Thomas (Guest)


Rate this post
useful
not useful
Darrik  Spaude wrote:
> The only thing I can't seem to find is
> http://guest.engelschall.com/~martin/lpc21xx/isp/lpc21isp_source.zip

AFAIK the "engelschall"-site does not longer provide lpc21sip binaries
or sources. The source-code can be found in the files-area of the
lpc21isp yahoo-group:
http://tech.groups.yahoo.com/group/lpc21isp/
(yahoo-account needed for access)

Martin Thomas

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
> 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.

von Darrik Spaude (Guest)


Rate this post
useful
not useful
>> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
>> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
> 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

von Bill B. (auldreekie)


Rate this post
useful
not useful
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

von Andreas S. (andreas) (Admin)


Rate this post
useful
not useful
Thanks, I have uploaded the toolchain to my server:
http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X

von Darrik Spaude (Guest)


Rate this post
useful
not useful
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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
> 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

von Darrik Spaude (Guest)


Rate this post
useful
not useful
I posted the GCC 4.2.0 toolchain (PPC and Intel) to my web site's blog
section:

http://spaudemedia.com/blogs/blog_20070704_ARM7Toolchain04.html

Darrik

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.