Drake: A Runtime Library for gcc-Ada
Drake is a runtime library written completely in Ada to replace the GNAT runtime.
A primary project goal is re-implementing the Predefined Language Environment in Annex A, for real world applications.
Read the wiki for more information.
- Darwin (from 10.6, x86, 32bit/64bit)
- FreeBSD (from 8, x86, 32bit/64bit)
- GNU/Linux (from kernel 2.6 and glibc 2.24, x86, 32bit/64bit)
- Windows (from XP, x86, 32bit/64bit) 
Required tools and libraries
- Use the official versions of gcc. 
- translated headers
- Install headmaster to convert the headers on your system, or download them from pre-translated headers page.
Clone this repository.
$ git clone git://github.com/ytomino/drake.git
The master branch is targeted for gcc 7. Checkout a branch corresponds to the version of your gcc.
$ git checkout gcc-6 # for example
How to build
make command with some variables, specify a translated headers path
IMPORTDIR and a destination path to
$ make IMPORTDIR=... RTSDIR=...
Read the build page for details.
A short example
Prepare the source code of a sample application.
$ cat > hello.adb with Ada.Text_IO; procedure hello is begin Ada.Text_IO.Put_Line ("Hello, Drake runtime!"); end hello; ^D
$ make -C ~/Downloads/drake/source \ # drake source path IMPORTDIR=~/Downloads/i686-apple-darwin9 \ # translated headers path RTSDIR=$PWD/rts-drake # destination path
Build the sample application.
$ gnatmake hello.adb --RTS=rts-drake
gnatmaketo use the alternative runtime.
Run the sample application.
$ ./hello Hello, Drake runtime!
Many features are unimplemented and there are several intentional ACATS violations for usability. See incompatibility features page.
|||64bit Windows support is under construction, limited and experimental.|
|||GNAT Community Edition is not supported. That was previously called GNAT GPL Edition.|