Небольшой How To по Gela

Как скачать исходные тексты из репозитория Subversion

Установите subversion и выполните команды

svn checkout http://svn.ten15.org/trunk/tendra/
svn checkout http://svn.ten15.org/trunk/contrib/

Что нужно чтобы построить Ада компилятор

Вам понадобиться Ада компилятор gnat и утилита xsltproc. Кроме этого нужно построить утилиты bmake, ayacc и aflex из contrib/

  1. построение bmake. Выполните makemake -f Makefile.<ваша OS>, например
    cd contrib/make
    make -f Makefile.Linux
    
  2. построение ayacc
    cd contrib/ada/aflex/src
    gnatmake aflex
    
  3. построение ayacc
    cd contrib/ada/ayacc/src/
    gnatmake ayacc
    

Скопируйте получившиеся утилиты в каталог доступный из PATH, например, /usr/local/bin.

Как построить Ада компилятор

Само построение выполняется командой bmake в каталоге tendra/:

cd tendra
bmake
YOU HAVE NOT CONFIGURED TenDRA YET

Available targets are:
  aix cygwin32 darwin freebsd hpux irix linux netbsd  openbsd osf1 qnx solaris sunos tru64

In order to configure TenDRA, please execute make with the
proper target to create config.mk

Выберите вашу OS из списка и запустите bmake опять, например

bmake freebsd WITH_ADA=yes

Замечание для Linux: нужно указать формат объектных файлов (elf или aout)

bmake linux WITH_ADA=yes MACH_EXEC=elf

После при этом bmake проверит пути к нужным файлам. Откорректировать пути можно в файле mk/def/def.<OS>.mk.

Запустите построение (все в том же каталоге tendra/)

bmake
bmake install

Готовый набор утилит TenDRA + Ада компилятор будет установлен в /usr/local/

Проверка работоспособности

Добавте в пути /usr/local/bin:

export PATH=$PATH:/usr/local/bin

Попробуйте скомпилять hello world на Си:

cat > hello.c << EOF
#include <stdio.h>
void main ()
{
  printf ("Hello world!\n");
}
EOF

tcc hello.c
./a.out 
Hello world!

Запустите набор регрессион тестов для Ады:

cd tendra/regression
bmake

Особенности построения на различных платформах

Gentoo Linux

файлы crtbegin.o/crtend.o отсутствуют в /usr/lib. Они находяться в каталоге текущей версии gcc. Найдите их, сипользуя команду

ls `gcc-config -L`/crt*

и исправте переменные 'LIB_CRTBEGIN', 'LIB_CRTEND' в фале tendra/mk/def/def.linux.mk

Ubuntu Linux

Шел по умолчанию стоит dash, который не правильно интерпретирует шаблоны фалов (asis-[^g]*.adb). Исправте символическую ссылку /bin/sh -> /bin/dash, перенаправилв ее на /bin/bash.