By the way, I verified this can also be used for bare metal ARM
programming as described in
https://github.com/JinShil/D_Runtime_ARM_Cortex-M_study/wiki/1.0-Introduction
Very very cool,
ian
On Monday, 17 March 2014 at 14:07:13 UTC, Johannes Pfau wrote:
I'm happy to announce the first GDC ARM beta on behalf of the
GDC
team :)
ARM support is now at a point where the automated tests (test
suite,
unit tests) pass and we're ready for feedback from real world
usage.
All changes have been fully integrated into the standard GDC
sources
which also means we're currently using the 2.064 frontend. ARM
support
is currently limited to ARM/GNU Linux, i.e. GlibC. (This
especially
means Android and bare metal programming are not officially
supported).
Please report all bugs to
http://bugzilla.gdcproject.org/
If you're sure that the bug is a bug in phobos/druntime/DMD
frontend
and not GDC specific please report it to
https://d.puremagic.com/issues
==== Getting the ARM beta ====
* All necessary code changes have been merged into Druntime,
Phobos and
GDC and you can simply get the latest GDC sources and build
them on
ARM. ( http://wiki.dlang.org/GDC/Installation/Generic )
* GDC is also part of the official Archlinux ARM repositories.
To get
GDC for Archlinux ARM, simply use these commands:
pacman -S gdc libgphobos-devel
You can also get dub on Archlinux ARM by executing
pacman -S dub
Many thanks to Dicebot for maintaining the Archlinux packages.
* We provide binary cross compilers for windows X86 (32/64bit)
and Linux
x86 (32/64bit). We also provide 'native' compilers which run
directly
on ARM machines.
http://gdcproject.org/downloads/
Note: Linux distribution packages or building from source
should be
preferred.
==== Precompiled GDC binaries ====
Precompiled toolchains are available for ARM hardfloat and ARM
softfloat systems. These toolchains target systems with
relatively
recent glibc and linux kernel (GlibC >= 2.14, Linux >= 2.6.32).
To check if you need the hard- or softfloat version run gcc -v
where
gcc is a working gcc for your ARM target. Then look for
--with-float=
in the output: --with-float=soft <==> softfloat
--with-float=hard <==> hardfloat
--with-float=softfp:
We have no special binaries for these systems. Either compile
GDC from
sources or use the softfloat binaries. The softfloat binaries
should
work in 99% of all cases. The only known exception is using
floating
point functions in fibers, a 'softfp' toolchain is required in
this
case.
To compile for ARM simply use this gdc executable:
./arm-gdcproject-linux-gnueabi[hf]/bin/arm-gdcproject-linux-gnueabi[hf]-gdc
Note: The toolchain directories are write protected. If you
want to
change this, use chmod +w -R arm-gdcproject-linux-gnueabi[hf].
For more information on how to use additional libraries with
the cross
compilers, see
http://crosstool-ng.org/hg/crosstool-ng/raw-file/e11a8a2e225d/docs/5%20-%20Using%20the%20toolchain.txt
==== Known issues ====
Known ARM-specific issues
* std.internal.math.gammafunction.d is not ported yet (Help
here is
very appreciated!)
* Array ops are evaluated in reverse order (WIP, FE 2.065)
http://bugzilla.gdcproject.org/show_bug.cgi?id=8
Known issues with the binary builds
* If you extract 7z files and are asked if you want to
overwrite files,
answer yes (toolchains are built on case sensitive
filesystems,
extracting on case insensitive filesystems will cause this
warning)
* Use the arm-...-gdc.exe executables and not
bin/arm.../gdc.exe.
* Unfortunately there's no multilib support for now. We use
crosstool-NG to build these toolchains and multilib support in
crosstool-NG is broken. However, this might change in the
next few
months.