Building GHDL from Sources¶
GHDL can be downloaded as a tarball/zipfile
or cloned with git clone
from GitHub. GitHub offers HTTPS and SSH as transfer protocols. See the Sources page for
further details.
Important
Since GHDL is written in Ada, independently of the code generator
you use, a compiler is required. Most GNU/Linux package managers
provide gcc-ada
or gcc-gnat
(which could be outdated).
MSYS2 also provides gcc-ada
for MinGW64 and UCRT64.
Attention
Since v0.37
, GHDL’s synthesis features require GCC >=8.1, due to some new GNAT features which are not available in
previous releases.
GHDL currently supports three different back-ends (code generators):
mcode - built-in in-memory x86 (or x86_64) code generator
GCC - Gnu Compiler Collection (gcc.gnu.org)
LLVM - Low-Level Virtual Machine (llvm.org)
Here is a short comparison, so that you can choose the one you want to use:
Back-end |
Pros |
Cons |
---|---|---|
|
|
|
|
|
|
|
|
Hint
The output of both GCC and LLVM is an executable file, but mcode does not generate any. Therefore, if using GCC/LLVM,
the call with argument -r
can be replaced with direct execution of the binary. See section Simulation.
After making your choice, you can jump to the corresponding section. However, we suggest you to read Directory structure first, so that you know where the content will be placed and which files are expected to be created.
Hint
In these instructions, the configure script is executed in the source directory; but you can execute in a different directory too, like this:
$ mkdir ghdl-objs $ cd ghdl-objs $ ../path/to/ghdl/configure ...
Hint
For MacOS 10.15 (Catalina), see #1368 for workarounds to link failures.
TL;DR¶
In order to follow the traditional way to configure
and make
, you need an Ada compiler.
Hint
Depending on the OS and distribution you are using, you will also need to install some toolchain dependencies, such as
zlib
.
To use mcode backend (easiest to build), in the GHDL base directory, configure and build:
$ ./configure --prefix=/usr/local
$ make
At that place, you can already use the ghdl_mcode built in the directory. You can also install GHDL:
$ make install
That’s all!
Hint
The executable is installed as ‘ghdl’ in /usr/local
. To install it to a different path, change the --prefix
in the
call to configure
. For example, on Windows, you may want to set it to --prefix=/c/Program Files (x86)/GHDL
.