• Stars
    star
    38
  • Rank 683,489 (Top 14 %)
  • Language
    Ada
  • License
    MIT License
  • Created over 13 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Drake: A Runtime Library for gcc-Ada

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.

Environment

  • 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

gcc

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.

Downloads

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

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

  2. GNAT Community Edition is not supported. That was previously called GNAT GPL Edition.↩