Skip to content
Drake: A Runtime Library for gcc-Ada
Ada C Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Drake: A Runtime Library for gcc-Ada

What's this?

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) [1]

Required tools and libraries

Use the official versions of gcc. [2]
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://

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

Run the make command with some variables, specify a translated headers path to IMPORTDIR and a destination path to RTSDIR.

$ make IMPORTDIR=... RTSDIR=...

Read the build page for details.

A short example

  1. Prepare the source code of a sample application.

    $ cat > hello.adb
    with Ada.Text_IO;
    procedure hello is
       Ada.Text_IO.Put_Line ("Hello, Drake runtime!");
    end hello;
  2. Build drake.

    $ make -C ~/Downloads/drake/source \ # drake source path
      IMPORTDIR=~/Downloads/i686-apple-darwin9 \ # translated headers path
      RTSDIR=$PWD/rts-drake # destination path
  3. Build the sample application.

    $ gnatmake hello.adb --RTS=rts-drake

    Specify --RTS option of gnatmake to use the alternative runtime.

  4. 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.

[1]64bit Windows support is under construction, limited and experimental.
[2]GNAT Community Edition is not supported. That was previously called GNAT GPL Edition.
You can’t perform that action at this time.