Drake
Drake: A Runtime Library for gcc-Ada
Install / Use
/learn @ytomino/DrakeREADME
==================================== 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) [#experimental]_
Required tools and libraries
gcc
Use the official versions of gcc_. [#not-gnatgpl]_
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
-
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
-
Build drake. ::
$ 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
Specify
--RTSoption ofgnatmaketo use the alternative runtime. -
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_.
.. _Predefined Language Environment: http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-A.html
.. _gcc: http://gcc.gnu.org/
.. _headmaster: http://github.com/ytomino/headmaster
.. _wiki: https://github.com/ytomino/drake/wiki
.. _pre-translated headers page: https://github.com/ytomino/drake/wiki/Pre-translated-headers
.. _build page: https://github.com/ytomino/drake/wiki/Build
.. incompatibility features page: https://github.com/ytomino/drake/wiki/Incompatibility
.. [#experimental] 64bit Windows support is under construction,
limited and experimental.
.. [#not-gnatgpl] GNAT Community Edition is not supported.
That was previously called GNAT GPL Edition.
.. _GNAT Community Edition: https://www.adacore.com/download
Related Skills
node-connect
331.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
331.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.5kCommit, push, and open a PR
