GHDL backends
=============

In a deviation from upstream which installs a single backend selected at compile
time, the Debian packaging offers all three backends and also allows them all to
be installed at the same time.

GHDL offers three machine code generation backends: one based on GCC, one using
the LLVM compiler suite and a GHDL specific one called mcode. These are
available in the ghdl-gcc, ghdl-llvm and ghdl-mcode packages respectively. Both
the GCC and LLVM backends create highly optimized code for excellent simulation
performance while simulations compiled with the GCC backend also allow coverage
testing using gcov. The mcode backend creates less performant code but makes up
for it with much faster compilation. It is therefore preferable for smaller
projects without large or long running simulations.

Different from upstream, the GHDL package allows simultaneous installation of
multiple backends. The GHDL executable /usr/bin/ghdl is a symlink managed using
the update-alternatives(1) framework. If you want to run GHDL with a specific
backend you can directly run their executable, named ghdl-mcode, ghdl-gcc and
ghdl-llvm respectively.

Build profiles
==============

When building the Debian package from source, it is possible to skip building
any of the backends using the build profile mechanism. The profiles are named
pkg.ghdl.nogcc, pkg.ghdl.nollvm and pkg.ghdl.nomcode.
