On Thu, Mar 12, 2009 at 6:17 AM, Dietmar Ebner <span dir="ltr"><<a href="mailto:ebner@complang.tuwien.ac.at">ebner@complang.tuwien.ac.at</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On Mar 11, 2009, at 9:44 PM, Misha Brukman wrote:<br>
> The problem I've had is building an LLVM cross-compiler from Linux/<br>
> x86 to Linux/ARM (as has another llvm-dev poster).  Someone<br>
> mentioned to me off-list that he managed to get it to build, but I<br>
> haven't been able to reproduce the build using his instructions<br>
> (I'll post my results in another thread).<br>
<br>
</div>I've been successfully experimenting with an arm-softfloat-linux-gnu<br>
cross-compiler at the time of llvm 2.1. The easiest way to get this<br>
working is to use Dan Kegel's crosstool to build a regular gcc<br>
toolchain. This will give you binutils, libgcc, and glibc, which you<br>
will need anyway.</blockquote><div><br>I've been trying to build for the target arm-none-linux-gnueabi, using the appropriate pre-built CodeSourcery toolchain, hence avoiding building my own gcc crosstool prior to starting building LLVM and LLVM-GCC.  LLVM builds just fine, it's building llvm-gcc that gives me this error:<br>
<br>gcc -c -g -O2 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild
-I../../../../src/llvm-gcc4.2-2.5.source/gcc -I../../../../src/llvm-gcc4.2-2.5.source/gcc/build -I../../../../src/llvm-gcc4.2-2.5.source/gcc/../include -I../../../../src/llvm-gcc4.2-2.5.source/gcc/../libcpp/include  -I../../../../src/llvm-gcc4.2-2.5.source/gcc/../libdecnumber -I../libdecnumber -I/tmp/llvm-project/install/x86_64-arm/llvm/include -I/tmp/llvm-project/src/llvm-2.5/include -DENABLE_LLVM -I/tmp/llvm-project/install/x86_64-arm/llvm/include  -D_DEBUG  -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS   -o build/gencondmd.o build/gencondmd.c<br>
<br>../../../../src/llvm-gcc4.2-2.5.source/gcc/config/arm/<a href="http://arm.md:4788">arm.md:4788</a>: error: ‘MACHO_DYNAMIC_NO_PIC_P’ undeclared here (not in a function)<br><br>This tells me there are some Darwin-specific bits in <a href="http://arm.md">arm.md</a> which shouldn't be there (MachO is Mac OS X-specific).  I'm using the attached script llvm-arm-crosstool.sh to configure/build/install LLVM and LLVM-GCC from the 2.5 release.  If anyone wants to try it out and see if it works for them, I'd love to hear their experiences.<br>
<br>If any ARM/GCC experts know how to fix <a href="http://arm.md">arm.md</a> to not refer to Darwin-specific macros, that would be great, too.<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Building llvm-gcc was relatively painless. The only problem I've<br>
encountered was that my target had no hardware floating point support<br>
and the endianess for the softfloat implementation (libgcc) differed<br>
from integer endianess, which required some patches at the llvm side.<br>
I have not checked if this is still necessary. If you run into the<br>
same problems, I would be happy to share the patch (which I have<br>
updated to llvm 2.4 at some point).</blockquote><div><br>I would be interested in seeing your patch, if you wouldn't mind sharing it.  Bonus points if you have a script similar to mine above to simplify the entire process, or your notes/directions that I can convert into an easy-to-run script.  :-)<br>
<br>Thanks,<br>Misha<br></div></div>