Компиляция из SVN для FreeBSD
 
Построение FreeBASIC из SVN на FreeBSD


Этот учебный руководство основано на этой странице. Да, я изменил некоторые вещи. Поверьте мне, я знаю что делаю, даже если вы так не думаете.

Предпосылки


Во-первых вам нужно проверить FreeBASIC подверсию репозитория. Это выходит за рамки настоящего документа, и если вы читаете эту страницу, вы вероятно уже сделали это в любом случае. Но некоторые люди не знают этого, поэтому данные шаги описаны здесь:

  • Во-первых установите переменную FBC_SRC в вашей оболочке (СДЕЛАЙТЕ ЭТО, ДАЖЕ ЕСЛИ ВЫ УЖЕ ПРОВЕРИЛИ ИСТОЧНИК) так: FBC_SRC=~/src/fbc/fbc-svn
  • Далее проверьте источник: svn co https://fbc.svn.sourceforge.net/svnroot/fbc/trunk/FreeBASIC ${FBC_SRC}/FreeBASIC
  • Примечание: Если вы скопироватли и вставили команду во 2 строке(выше),  вы получите знак «#» в вставке. Удалите его, он будет портить все, если вы не знаете.

ВАЖНОЕ ПРИМЕЧАНИЕ: НЕ ВЫХОДИТЕ ИЗ ОБОЛОЧКИ! FBC_SRC устанавливается только для текущего сеанса оболочки и не существует в любой другом процессе, за исключением вашего текущего сеанса оболочки.

Кроме того для графики, вам нужно иметь установленный X11. Чтобы упростить, мета-порт x11/xorg обеспечивает весь дистрибутив X.org (объявив все X.org как зависимости).

Если у вас чистая установка FreeBSD (скорее всего нет), вы можете установить X вот так (из под root):
cd /usr/ports/x11/xorg
make install distclean


Обратите внимание, что этот процесс займет час или больше, даже на быстрой машине, но как я уже сказал, у вас вероятно уже есть X11 и не нужно этого делать.

Наконец поскольку компилятор Freebasic написан на себе самом, вам будет нужно установить копию готовой версии FreeBASIC - я (segin) предоставил построение и вы можете найти его здесь.

Внешние зависимости


Если вы сделали все правильно, вы сможете найти источники FreeBASIC runtime библиотеки ~/src/fbc/fbc-svn/FreeBASIC/src/rtlib . Если вы сделали что-то неправильно , то источник может находится в другом месте.

Далее, вам необходимы символические ссылки для некоторых объектов C rintime в FreeBASIC дереве сборки, а также создать каталоги для библиотек FreeBSD:
cd ${FBC_SRC}/FreeBASIC/lib
mkdir freebsd
cd freebsd
ln -s /usr/lib/crt1.o
ln -s /usr/lib/crti.o
ln -s /usr/lib/crtbegin.o
ln -s /usr/lib/crtend.o
ln -s /usr/lib/crtn.o
cd ../../bin/freebsd
ln -s /usr/bin/as
ln -s /usr/bin/ar
ln -s /usr/bin/ld


Если mkdir не удается, и говорит, что каталог freebsd уже существует, считайте, что это сделано и продолжайте в обычном режиме.

На данный момент вам нужно иметь библиотеку libbfd от GNU binutils 2.17 . Обратите внимание, что версия должна быть именно 2.17, а не какая либо другая. В настоящее время FreeBASIC имеет только заголовки для версии 2.17, и библиотеку интерфейса изменений между версиями, так что используйте именно эту версию.

Используйте cd без параметров, чтобы вернуться в ваш домашний каталог ~

Теперь, скачайте бинарную сборку 2,17 так:
fetch http://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2
tar jxf binutils-2.17.tar.bz2
cd binutils-2.17


И затем постройте соответствующие библиотеки:
cd intl && ./configure && make && cp libintl.a ${FBC_SRC}/FreeBASIC/lib/freebsd/ && cd ..
cd bfd && ./configure && make && cp libbfd.a ${FBC_SRC}/FreeBASIC/lib/freebsd/ && cd ..
cd libiberty && ./configure && make && cp libiberty.a ${FBC_SRC}/FreeBASIC/lib/freebsd/


Собственно построение FreeBASIC


На этом этапе у вас должно быть все необходимое для построения FreeBASIC. Теперь можно построить runtime библиотеку.

Построение Runtime библиотеки


Все, что Вам придется сделать:
cd ${FBC_SRC}/FreeBASIC/src/rtlib/obj/freebsd
../../configure
gmake
gmake MULTITHREADED=1
gmake install


А сейчас gfxlib2.

Построение графической библиотеки, gfxlib2


Опять же просто, как и выше:
cd ${FBC_SRC}/FreeBASIC/src/gfxlib2/obj/freebsd
../../configure
gmake
gmake install


Если сборка не удается жалуясь на отсутствие X11/extensions/X<whatever>.h, это - потому что X.org  реструктурировали некоторые заголовки в каких-то пакетах, удаляя заголовки интерфейса библиотеки из пакетов заголовков протокола и помещая их в пакет фактической библиотеки, из которой они описывают интерфейс. Пример: XInput.h был в inputproto но был удален оттуда и вместо этого вставлен в libXi. Вы модернизировали свои xorg пакеты частично и имеете несоответствия вариантов - сделайте portupgrade -R xorg для фикса.

Построение компилятора


Выполните следующее:
cd ${FBC_SRC}/FreeBASIC/src/compiler/obj/freebsd
../../configure
gmake


И вот оно! Вы должны иметь "fbc_new", собранный из последних исходников! Если вы ищете распределения для упаковки, вы можете использовать install.sh из моей предварительно построенной копии.