Drake: A Runtime Library for gcc-Ada
Ada C Other
Latest commit b180450 Sep 21, 2016 ytomino Fix Ada.Containers.Doubly_Linked_Lists.Splice for the case that Befor…
…e = Position

readme.rst

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.

Please, read the wiki for more information.

Environment

  • Darwin (from 10.5, x86, 32bit/64bit)
  • FreeBSD (from 8, x86, 32bit/64bit)
  • Linux (from 2.6, x86, 32bit/64bit)
  • Windows (from XP, x86, 32bit/64bit) [1]

Required tools and libraries

gcc
Use of gcc instead of the GNAT GPL Edition is required.
translated headers
Install headmaster to convert the headers on your system, or download them from pre-translated headers page.

Downloads

Clone this repository.

$ git clone git://github.com/ytomino/drake.git

The master branch is targeted for gcc 6. Please checkout a branch corresponds to the version of your gcc.

$ git checkout gcc-5 # 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
    begin
       Ada.Text_IO.Put_Line ("Hello, Drake runtime!");
    end hello;
    ^D
    
  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!
    

Limitations

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.