I've seen old posts (latest ones were from january) regarding cross-compiling D for ARM, but back then it seemed the only solution was to use GDC, which seems to have some potential (see https://bitbucket.org/goshawk/gdc/wiki/GDC%20on%20Android : still some issues with druntime and phobos).
With LDC, isn't that supposed to be easier with the intermediate LLVM bytecode?
What is the current situation with LDC, and is there some planned (at least partial) support for compiling D for android or ios?
Unfortunately, as far as I know, none of the currently active developers are using LDC to target ARM, so I can't provide you with a good answer. What I know is that people have used (or at least tried to use) LDC to compile for ARM, so it should definitely be doable. If there are any specific roadblocks you hit, be sure to let us know, maybe we can still help.
Be aware, though, that most of the druntime/Phobos code is highly x86-specific, so definitely expect issues there – you might be able to build on prior work (like the linked GDC fork) here, though.
@alexrp is working on this.
That's great news!
As far as I know, Alex is working mainly on getting the basic druntime facilities to work right now – you'd have to directly contact him for further details and/or coordination, though.
A couple of things that need to be done (once @klickverbot merges my initial patch set) is:
R_ARM_ABS32 used with TLS symbol ...
I have basically no idea how the va_arg() stuff should be done. I guess there is a formal ABI on this somewhere... As for EH, some investigation will have to be done to see what libstdc++ does for ARM.
Do note, I'm compiling/developing directly on my ARM device, not cross-compiling. I may look into cross-compiling later, but it's not very important for me.
hi, what is the feature state?
I want help with ARM. LDC2 build correct on Raspeberry Pi with Arch Linux ARM, but build fail DRuntime.
I'll have another look at building LDC for armhf on my Efika MX soon...
@ithamsteri: Do you want help, or want to help? ;)
If the latter, the best way to do so would be to get a proper ARM EABI implementation done, see http://firstname.lastname@example.org.
(I just arrived at home from DConf, and will post my druntime changes soon)
ARM changes will go in after 0.11.0 has been branched off.
just to log a build on arm arch http://kojipkgs.fedoraproject.org//work/tasks/8541/5798541/build.log
fail of course
Any news are welcome :-)
All errors are Error: undefined identifier va_list
That is no surprise. The base of a port of druntime is an implementation of core.stdc.stdarg and core.thread. Both modules are really essential.
LDC from Git master (5dc02c0) builds a working Phobos "Hello World" on ARM now (armv7l-unknown-linux-gnueabihf, cortex-a9).
There is still a lot of work to do, e.g. EH is completely broken (see #489), and cross compiling has not been tested yet (#490).
I'm closing this umbrella ticket, please open individual bug reports for any specific issues you might run into.
Thanks a lot klickverbot, nice job :-)