It's alive! D building D building D, all on Android

Joakim via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu May 5 01:17:07 PDT 2016


After a sleepless night of trying to build the latest ldc master 
branch 2.070.2 on my Android tablet a couple nights ago, almost 
the full druntime/phobos standard library test suite passes (only 
one assert in std.conv) and the same for the dmd test suite, with 
a handful of failures across three modules exclusively testing 
C/C++ ABI compatibility.

The 2.070 frontend is written in D, ie ddmd, and also natively 
compiled on the Android tablet by ldc 2.068 (alpha build 
available here, first download link - 
https://github.com/joakim-noah/android/releases/tag/polish), 
hence D (2.068) building D (2.070) building D (tests, apps, 
etc.). :) Of course ldc 2.068 was itself built natively on 
Android, using the Termux Android app and the dev tools that it 
comes with 
(https://play.google.com/store/apps/details?id=com.termux&hl=en). 
Using ldc and Termux, it's possible to build an Android app from 
scratch _on_ your Android device, by following these instructions:

https://github.com/termux/termux-packages/issues/63#issuecomment-184115581

It only took a single night of tweaking to build this because of 
all the great work many contributors have put in over the past 
year.  First, there's all the work that Walter, Daniel, and 
others have put into C++ integration, as ldc is now a moderately 
large mixed D/C++ codebase (Dscanner counts 62.5k klocs of D in 
the ddmd frontend, plus ldc's C++ layer and how many ever umpteen 
lines are invoked in llvm's C++ codebase).

Dan got the full ldc testsuite working on the Raspberry Pi a 
couple weeks ago 
(https://github.com/ldc-developers/ldc/issues/1283), in the 
process fixing several ARM codegen issues that were hitting 
Android/ARM also. Finally, there's all the great work put into 
ldc recently by Johan, kinke, Dan, Rainer, and of course David 
and Kai, to integrate the new D frontend with llvm and get ldc 
working on new platforms.

I'll look at getting JNI working next, along with finishing up a 
translated C++/OpenGL ES 2.0 sample app 
(https://github.com/googlesamples/android-ndk/tree/master/Teapot).  A linux->Android cross-compiler will need the in-progress work to cross-compile reals, have to look into that.  Once those issues are rounded up, I'll release a ldc 1.0.0 beta for Android sometime this month.


More information about the Digitalmars-d-announce mailing list