This directory contains the source code of the dmd compiler. Refer to this file for an overview of the actual source files.
The compiler can be built using the integrated build system build.d.
./build.dBuilding requires a host D compiler (DMD/LDC/GDC) of version 2.079.1 or above
and defaults to dmd as found on the path. This behaviour can be overriden
by explicitly specifying a different host compiler using the HOST_DMD variable.
./build.d HOST_DMD=<compiler path>Note that building with LDC & GDC requires the ldmd2/gdmd wrappers to
translate the command line arguments.
See the output of ./build.d --help to get a list of all supported targets
or see the list of major targets below.
To bootstrap dmd on posix you need to have a C++ compiler installed,
such as gcc, when using the default $CC setting.
Use bootstrap.sh to bootstrap the compiler if there is no D compiler
installed. The script will download an official release and use it
as a host compiler when forwarding targets to build.d.
Refer to the HOST_DMD_VER variable in bootstrap.sh for the currently
used release version.
build.d supports a variety of checks for the source which are enforced
alongside of the general test suite.
Runs all unittest blocks in the source code.
Runs the C++ frontent test to verify the manually created C++ headers in the source directory.
Note: This is currently not supported on windows.
Automatically generates a C++ header from the compilers source code using
the integrated C++ header generator dtoh and compares it
to the reference header.
Changes to the C++ interface need to be reflected in both the reference
and the manually curated header (named XXX.h for XXX.d). The first
can be done automatically by passing AUTO_UPDATE=1 when running this
target.
./build.d cxx-headers-test AUTO_UPDATE=1Note that dtoh is currently experimental and may emit invalid code for
certain declarations, so frontend.h is not required to be compilable
until the remaining issues are resolved.