Параметры конфигурации построения FB
 

FB makefile также как compiler/rtlib/gfxlib2 исходный код предлагает некоторые параметры конфигурации. Если вы строите FB, используя makefile FB, то имеет смысл использовать параметры конфигурации в FB makefile. Если вы строите FB путем компиляции источников вручную (без использования FB makefile), тогда, конечно, вы можете использовать только параметры конфигурации исходного кода, и вы уже сами отвечаете за настройку FB.

Компилятор и исходный код rtlib/gfxlib2 обрабатывая некоторые #defines позволяют проводить некоторую конфигурацию. Для примера, #defining ENABLE_STANDALONE при построении компилятора (путем указания -d ENABLE_STANDALONE в командной строке fbc) настроит компилятор для standalone(автономной) установки. В качестве другого примера, #defining DISABLE_FFI при построении rtlib (путем указания -DDISABLE_FFI в командной строке gcc) приведет к тому, что rtlib будет построен без использования заголовков libffi (ffi.h). Это отключает поддержку Threadcall в rtlib, но может быть полезным, если вы не имеете libffi.

При использовании файла makefile FB, вы можете установить некоторые переменные в командной строке make или внутри config.mk , которые затрагивают как makefile будет вызывать fbc/gcc компиляторы и какие каталоги будут использоваться для установки FB. Это включает в себя случаи, когда makefile автоматически передают параметры конфигурации на исходный код compiler/rtlib/gfxlib2. Например, если задать ENABLE_STANDALONE=1 в makefile FB , то это заставляет его использовать -d ENABLE_STANDALONE при компиляции нового компилятора (, чтобы сделать его автономным) и положить недавно построенный компилятор и библиотеки в автономное расположение каталогов.

FB makefile команды

  • нет или all
По умолчанию - строит все, что нужно построить
  • compiler, rtlib, gfxlib2
Используется только для построения конкретного компонента. Например, это может использоваться для построения rtlib для конкретной цели, для того, чтобы иметь возможность кросс-компиляции программ FB (например, compiler) для этой цели.
  • clean[-component]
Используется для удаления построенных файлов. make clean удаляет все построенные файлы, в то время как, например, make clean-compiler удаляет только файлы, созданные для компилятора, позволяя компилятору перекомпилировать быстрее, без необходимости восстанавливать весь код rtlib/gfxlib2.
  • install[-component], uninstall[-component]
Используется для копирования построенных файлов в каталоге, указанном в переменной prefix, или удаления их оттуда. Это особенно полезно при установке обычной сборки в /usr/local на системах Linux/BSD. Для автономного сборки, make install также будет работать и скопирует или удалит файлы. Тем не менее, автономная сборка использует несовместимое расположение каталогов и не следует устанавливать в /usr/local или аналогичные каталоги из-за этого.

Обратите внимание, что довольно неплохо запускать недавно построенную установку FB прямо из каталога, в котором он был составлен; make install не нуждается в prefix (если путь prefix был жестко задан в компилятор через ENABLE_PREFIX).

Кроме того есть команды install-includes и uninstall-includes, которые копируют/удаляют только FB включаемые файлы(заголовочные файлы). Обратите внимание, что нет никаких make includes или подобных команд, чтобы включаемые файлы не могли быть построены.

FB makefile конфигурация

Следующие переменные предназначены для установки make в командной строке или в файле config.mk рядом с FB makefile, который читается в FB makefile. config.mk полезно для настройки переменных в виде констант, таким образом вам не придется указывать их вручную каждый раз при вызове make.

Пример Make в командной строке:

$ make CFLAGS='-O2 -g'

config.mk пример:

CFLAGS = -O2 -g

  • FBFLAGS, FBCFLAGS, FBLFLAGS
Дополнительные флаги fbc для использования при компиляции и/или линковки компилятора. Значение по умолчанию -maxerr 1 (проверьте FB makefile для получения более подробной информации). Обычно это используется для добавления параметров, таких как -g -exx для создания отладочной версии компилятора.
  • CFLAGS
Дополнительные флаги gcc для использования при компиляции rtlib и gfxlib2. Значение по умолчанию -O2 (проверьте FB makefile для получения более подробной информации). Обычно это переопределяется для отладочных целей, делая CFLAGS=-g.
  • prefix
Путь установки FB. По умолчанию /usr/local. Примечание: MSYS карты /usr/local в C:\msys\1.0\local.

Это используется только...
      • для команд makefile install и uninstall,
      • в компиляторе (жестко), если ENABLE_PREFIX был использован
Обратите внимание, что в сочетании с bash на платформе Win32 (например, из DJGPP или MSYS) необходимо использовать прямую косую черту вместо обратной косой черты в пути к каталогам, например: prefix=C:/MinGW
  • TARGET
Его переменная может быть установлена ​​в наборе инструментов GCC, таких как триплет i686-pc-linux-gnu or x86_64-w64-mingw32 для кросс-компиляции с помощью этого набора инструментов GCC кросс-компилятора. makefile будет использовать fbc -target $(TARGET) вместо fbc, а $(TARGET)-gcc вместо gcc.

Например, на системе Debian GNU/Linux с установленным i686-w64-mingw32 GCC кросс-компилятором, вы можете построить win32 rtlib примерно так:

# Build the win32 rtlib/gfxlib2
make rtlib gfxlib2 TARGET=i686-w64-mingw32

# Install it into /usr/local/lib/i686-w64-mingw32-freebasic
make install-rtlib install-gfxlib2 TARGET=i686-w64-mingw32
Это будет дополнять существующую установку FBC в /usr/local, как плагин и теперь вы можете выполнить кросс-компиляцию программы FB для win32:

fbc -target i686-w64-mingw32 ...
  • FBC, CC, AR
Эти переменные указывают программам fbc, gcc и ar использоваться во время построения. Можно указать их для переопределения по умолчанию, например:

      • make FBC=~/FreeBASIC-0.90.1-linux/fbc CC="gcc -m32"
FBC влияет только на исходный код compiler, а CC и AR используются для rtlib и gfxlib2.
  • V=1
V для подробностей. По умолчанию, makefile не отображает в полной мере информацию, используемые во время компиляции, в командной строке, а просто печатает последний инструмент и комбинацию имени файла, чтобы дать лучшую визуальную индикацию прогресса сборки. Он также делает предупреждения и ошибки. Если переменная V установлена, то будет показана полностью информация в командной строке, как обычный make GNU.
  • ENABLE_STANDALONE=1
Автономная сборка FB вместо обычной сборки Unix стиля, смотрите также: автономная vs. обычная сборка, сравнения. Это заставляет makefile использовать автономное расположение каталогов и использовать -d ENABLE_STANDALONE при построении компилятора.
  • ENABLE_PREFIX=1
Это заставляет makefile использовать -d ENABLE_PREFIX=$(prefix) при построении компилятора.
  • ENABLE_SUFFIX=foo
Это заставляет makefile использовать -d ENABLE_SUFFIX=$(ENABLE_SUFFIX) при построении компилятора, и добавлять строку данного суффикса к исполняемому fbc и именам каталогов lib/ .

Например использование ENABLE_PREFIX=-0.24 даст вам bin/fbc-0.24.exe и каталог lib/freebasic-0.24/ , вместо по умолчанию bin/fbc.exe и lib/freebasic/. Это позволяет устанавливать несколько версий компилятора и сред выполнения параллельно.

Примечание: имя каталога include/freebasic/  не затрагивается, и FB заголовки всегда являются общими для всех установленных версий FB.

Это поддерживается только для построения нормальной (не автономной) сборки. Это не требуется для построения автономной сборки, потому что каждая из них может быть в отдельном каталоге , хотя обычная (не автономная) сборка может совместно использовать общий каталог установки такой как /usr/local или C:\MinGW.

Конфигурации исходного кода компилятора  (FBFLAGS)

  • -d ENABLE_STANDALONE
Это заставляет компилятор вести себя как автономный инструмент, который не может полагаться на системные определенные программы или библиотеки. См. автономная vs. обычная сборка, сравнения для получения дополнительной информации.
  • -d ENABLE_SUFFIX=foo
Это заставляет компилятор добавить суффикс к имени каталога lib/freebasic/ при поиске собственного каталога lib/freebasic/. Для примера, -d ENABLE_SUFFIX=-0.24 заставляет его искать lib/freebasic-0.24/ вместо lib/freebasic/. Соответствующая опция ENABLE_SUFFIX=foo makefile, настроит компилятор на работу в новом каталоге.
  • -d ENABLE_PREFIX=/some/path
Это вызывает заданный префикс пути быть жестко закодированным в компилятор, отключая использование Exepath(). Таким образом он больше не будет перемещаемый. Это полезно, если известно, что компилятор не нужно перемещать, или если exepath() не работает должным образом (Например, в FB 0.90.1, это относится к FreeBSD).

Конфигурации исходного кода rtlib и gfxlib2 (CFLAGS)

  • -DDISABLE_X11
С этим, Unix rtlib/gfxlib2 не будет использовать X11 заголовки, отключая графический драйвер gfxlib2 X11 и некоторые функциональности из rtlib Linux консоли (влияет на multikey() и обработку событий мыши в консоли).
  • -DDISABLE_GPM
С этим, Linux rtlib не будет использовать General Purpose Mouse headers (gpm.h), отключая функциональность Linux GetMouse.
  • -DDISABLE_FFI
С этим, rtlib не будет использовать заголовки libffi (ffi.h), отключая функциональность Threadcall.
  • -DDISABLE_OPENGL
С этим, gfxlib2 не будет использовать OpenGL заголовки, отключая драйвера OpenGL графики.