Самый простой путь — скачать и поставить GNAT Community Edition.
Но если Вам интересны подробности и варианты, мы рассмотрим их в этой статье.
Из бесплатных вариантов на данный момент доступен компилятор Ады из состава коллекции компиляторов GCC (the Gnu Compiler Collection). Он называется GNAT (акроним GNU NYU Ada Translator). Есть два варианта этого компилятора. Назовем их условно GNAT FSF и GNAT Community. Вот в чем различия:
Давайте рассмотрим какие есть варианты в зависимости от операционной системы разработчика.
32‐битный компилятор для Windows входит в состав GNAT GPL 2017 (так раньше назывался GNAT Community) и доступен для скачивания на сайте http://www.adacore.com/download/more
Если Вас устраивает GPL лицензия — используйте GNAT Community Edition.
Из различных вариантов/сборок GNAT FSF мы рекомендуем использовать дистрибутив msys2. Эта такая система управления пакетами (пакетный менеджер) для Windows. Она основана на форке pacman, основного пакетного менеджера дистрибутива Arch Linux. После ее установки появляется возможность пользоваться bash, autotools и прочим ПО характерным для POSIX систем. Установка выполняется в несколько шагов
pacman -S mingw-w64-gcc-ada
adalib=$(dirname `gcc -print-libgcc-file-name`)/adalib bin_dir=$(dirname `which gcc`) rm -f $adalib/libgna{t,rl}-*.dll.a cp $bin_dir/libgna{t,rl}-*.dll $adalib/
Если Вас устраивает GPL лицензия — используйте GNAT Community Edition. Установить его имеет смысл даже, если вы планируете использовать GNAT FSF. Это даст Вам возможность воспользоваться средой разработки GPS. Для этого нужно добавить путь к GNAT Community в конец переменной PATH.
В современных дистрибутивах Linux GNAT FSF обычно входит в список пакетов готовых для установки. Версии компилятора и наличие библиотек разработки на языке Ада варьируются в зависимости от дистрибутива Linux.
Выгодно выделяется на общем фоне Fedora Linux. Так Fedora 26 предлагает 7.0.1 для архитектур x86_64, ia64, ppc, ppc64, alpha, arm и aarch64, а Fedora 25 — 6.3.1.
В Debian компилятор более старый. Debian Jessie предлагается 4.9.2 (выпуск 2014 года). Дистрибутив Ubuntu основан на Debian и предлагает аналогичный компилятор. Для платформы ARM есть популярный дистрибутив Raspbian. Он также основан на Debian и в нем тоже есть GNAT FSF 4.9.2.
Также стоит упомянуть дистрибутив OpenSUSE. В нем идет компилятор 6.
Для тех, кто умеет пользоваться docker не составит труда запустить GNAT Community версию в контейнере:
docker run -i -t reznik/gnat:gpl.2018.slim
Версия .slim отличается отсутствием интегрированной среды разработки GPS и дополнительных библиотек (GNATCOLL, XmlAda, AWS, AUnit и др.). Ее удобно использовать в системах непрерывного тестирования ввиду сравнительно небольшого размера образа контейнера.
Для этой ОС также выпускается GNAT Community Edition.
Вполне работающие сборки GNAT FSF можно найти на сайте gnuada
Для FreeBSD, DragonFly, OpenBSD и прочих развивается порт GNAT FSF на сайте www.dragonlace.net. Там же есть и кросс компиляторы для Android.
Интересный вариант — компиляция Ады в LLVM. Этот подход открывает возможности использования Ады с LLVM инструментарием, а значит можно относительно несложно получить поддержку тех архитектур, которые есть в LLVM. В том числе WebAssembly, OpenCL SPIR-V, и др. На github выложены исходные тексты компилятора GNAT LLVM. Процесс построения описан в README.md. Помимо исходных текстов GNAT LLVM также необходимы исходные тексты GNAT, сам LLVM и clang. Для построения нужен работаеющи компилятор Ады. Подойдет GNAT Community Edition 2019 или даже GNAT FSF 8. Использовать GNAT Community, наверное предпочтительней, тк. там есть поддержка GNAT LLVM в конфигурационных файлах gprbuild/gprconfig. Зато GNAT FSF 8 и другие зависимости можно поставить в Ubuntu прямо «из коробки». Вот как выглядит установка на Ubuntu 19.04:
git clone https://github.com/AdaCore/gnat-llvm.git cd gnat-llvm svn co svn://gcc.gnu.org/svn/gcc/trunk/gcc/ada llvm-interface/gnat_src sudo apt install -y llvm-dev clang cmake gnat gprbuild g++ make export PATH=$PWD/llvm-interface/bin:$PATH cat > hello.adb << EOF with Ada.Text_IO; procedure Hello is begin Ada.Text_IO.Put_Line ("Hello"); end; EOF llvm-gnatmake hello.adb
На том же сайте http://www.adacore.com/download/more есть возможность скачать кросс компилятор в ARM и RISC-V. Он позволяет собирать программы для Raspberrypi 2 с ОС Linux и для некоторый “голых досок” (bareboard, без ОС) с процессорами ARM Cortex M3, ARM Cortex M4F and ARM Cortex R4F. Это GNAT GPL по нашей классификации. Библиотеки времени исполнения для bareboard с лицензией “GPL с исключением” мне не встречались.
С помощью Fedora оказалось не трудно получить кросс компилятор Linux -> Windows. В дистрибутив Fedora включен кросс компилятор в Windows, но в нем нет поддержки Ады. Включит Аду оказалось довольно легко. Вот например пакеты собранные для Fedora 24 https://build.opensuse.org/package/show/home:reznik/mingw-gcc Воспользоваться ими можно так:
dnf install --assumeyes dnf-plugins-core dnf config-manager --add-repo http://download.opensuse.org/repositories/home:reznik/Fedora_24/home:reznik.repo dnf --assumeyes install gcc-gnat gprbuild mingw32-gcc-gnat mingw64-gcc-gnat
Либо воспользоваться готовым Docker образом:
docker pull reznik/matreshka-cross docker run -i -t reznik/matreshka-cross /bin/bash
Интересные эксперименты можно провести используя AdaMagic. Этот компилятор имеет давнюю историю. Сейчас он распространяется MapuSoft, как часть их продукта Ada-C/C++ Changer™. OCTAGRAM провел целое исследование и записал руководство, как скачать, поставить и начать использовать этот транслятор.
Июнь 2018