Как "поставить Аду"?

wiki:/graphics/start.jpg

В этой статье мы рассмотрим, как установить компилятор языка Ада.

Из бесплатных вариантов на данный момент доступен компилятор Ады из состава коллекции компиляторов GCC (the Gnu Compiler Collection). Он называется GNAT (акроним GNU NYU Ada Translator). Есть два варианта этого компилятора. Назовем их условно GNAT FSF и GNAT GPL. Вот в чем различия:

  • Первый собирается из исходных текстов GCC авторами дистрибутивов, второй распространяется AdaCore - основным разработчиком компилятора Ады Для GNAT FSF доступен компилятор основанный на последней версии генератора кода (так называемого backend). В тоже время GNAT GPL основывается на более старой версии генератора кода.
  • Компилятор GNAT FSF тестируется (если этим озаботился автор дистрибутива) с помощью относительно небольшого набора тестов из состава GCC. AdaCore тестирует GNAT GPL используя свой набор тестов, который значительно больше.
  • Наверное, наиболее важное отличие в том, что библиотека времени исполнения (runtime) в GNAT FSF распространяется по лицензии GPLv3 с исключением, позволяющим пользователю использовать любую лицензию для своих исходных текстов. В GNAT GPL такого исключения нет, как следствие пользователь должен публиковать свои исходные тексты под лицензией GPL, если он распространяет свою программу.
  • В GNAT FSF обычно входит лишь компилятор, остальные компоненты необходимо устанавливать отдельно. В дистрибутив GNAT GPS, кроме компилятора, упаковываются несколько библиотек, а также интегрированная среда разработки GPS (GNAT Programming Studio).

Рассмотрим какие есть варианты в зависимости от операционной системы разработчика.

Windows 32

GNAT GPL доступен для скачивания на сайте http://libre.adacore.com/

Windows 64

Для построения программ с целевой 64-битной архитектурой нет пока GNAT GPL. Из различных вариантов/сборок GNAT FSF мы рекомендуем использовать дистрибутив msys2. Эта такая система управления пакетами (пакетный менеджер) для Windows. Она основана на форке pacman, основного пакетного менеджера дистрибутива Arch Linux. После ее установки появляется возможность пользоваться bash, autotools и прочим ПО характерным для POSIX систем. Установка выполняется в несколько шагов

  • Качаем и ставим msys2 с сайта http://www.msys2.org/
  • Запускаем 64-битный шел (есть еще 32-битный) и ставим компилятор Ады:
 pacman -S mingw-w64-x86_64-gcc-ada
  • Если вы планируете строить динамические библиотеки необходимо скопировать libgnat-6.dll и libgnarl-6.dll из bin/ в adalib/ Потому, что предлагаемый авторами дистрибутива msys2 механизм *.dll.a не всегда работает корректно:
adalib=$(dirname `gcc -print-libgcc-file-name`)/adalib
bin_dir=$(dirname `which gcc`)
rm -f $adalib/libgna{t,rl}-6.dll.a
cp $bin_dir/libgna{t,rl}-6.dll $adalib/
  • По желанию можно установить другие компоненты. В нашем репозитории есть собранные версии gprbuild, asis, aws, matreshka. Для этого добавляем новый репозиторий в настройки менеджера пакетов и ставим сами пакеты:
echo [ci.mingw] >> /etc/pacman.conf
echo SigLevel = Optional >> /etc/pacman.conf
echo Server = https://dl.bintray.com/reznikmm/msys2/ >> /etc/pacman.conf
pacman -S mingw-w64-x86_64-gprbuild-gpl
pacman -S mingw-w64-x86_64-aws
pacman -S mingw-w64-x86_64-asis
pacman -S mingw-w64-x86_64-matreshka

Linux

В современных дистрибутивах 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.

Для архитектуры x86_64 можно скачать и поставить GNAT GPL. Это имеет смысл сделать даже, если вы планируете использовать GNAT FSF, чтобы воспользоваться средой разработки GPS. Для этого нужно добавить путь к GNAT GPL в конец переменной PATH.

Mac OS

Вполне работающие сборки GNAT FSF можно найти на сайте gnuada

GNAT GPL доступен с сайта http://libre.adacore.com

Экзотика - Кросс компиляторы

x86_64 -> ARM

На том же сайте http://libre.adacore.com есть возможность скачать кросс компилятор в ARM. Он позволяет собирать программы для Raspberrypi 2 с ОС Linux и для некоторый “голых досок” (bareboard, без ОС) с процессорами ARM Cortex M3, ARM Cortex M4F and ARM Cortex R4F. Это GNAT GPL по нашей классификации. Библиотеки времени исполнения для bareboard с лицензией “GPL с исключением” мне не встречались.

Linux -> Windows

С помощью 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 

Март 2017