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 -
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
Using ldc and Termux, it's possible to build an Android app from
scratch _on_ your Android device, by following these instructions:
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.