Wiki source for DevNormalVsStandalone


Show raw source

{{fbdoc item="title" value="Normal vs. Standalone FreeBASIC"}}----

When built from source, ""FreeBASIC"" can be configured for and installed in one of these two different setups:

<<{{fbdoc item="section" value="Normal build (default)"}}
<<>>{{fbdoc item="section" value="Standalone build"}}
>>::c::<<Normal directory layout:
- bin/
- fbc.exe
- [<target>-]ld.exe
- //other tools for native/cross compilation...//
- include/
- freebasic/
- fbgfx.bi
- //other headers...//
- lib/
- freebasic/
- <target>/
- libfb.a
- //other libraries...//
<<>>Standalone directory layout:
- bin/
- <target>/
- ld.exe
- //other tools...//
- inc/
- fbgfx.bi
- //other headers...//
- lib/
- <target>/
- libfb.a
- //other libraries...//
- fbc.exe
>>::c::<<Differences to the standalone build:

- fbc is located in ##bin/##, like other programs
- looks for includes in ##include/freebasic/##, instead of ##inc/##, to cleanly separate FB headers from system headers
- looks for its own libraries in ##lib/freebasic/## instead of ##lib/##, to cleanly separate FB libraries from system libraries
- looks for binutils/gcc 1) in ##bin/## and 2) by relying on ##PATH##
- looks for crt/gcc libraries 1) in ##lib/freebasic/## and 2) by running "##gcc -print-file-name=...##"
- ##[[CompilerOpttarget|-target]]## option accepts system triplets such as "##i686-pc-linux-gnu##" or "##x86_64-w64-mingw32##"
- the target name given to the ##[[CompilerOpttarget|-target]]## option is prepended to the gcc/binutils program names when cross-compiling
- compatible with the standard ##/usr## or ##/usr/local## directories
- typically used for the FB-linux release
- uses ##windres## from binutils to compile win32 resource scripts

This makes the normal FB build integrate with GNU/Linux distributions and other Unix-like systems pretty well, allows fbc to be installed into ""MinGW"" or DJGPP trees next to gcc, and allows fbc to work with binutils/gcc cross-compiling toolchains.
<<>>Differences to the normal build:

- the fbc binary is located at the toplevel, not inside ##bin/##
- looks for tools inside ##bin/<target>/##, i.e. it uses ##bin/<target>/ld.exe## instead of ##bin/[<target>-]ld.exe##
- looks for FB includes in ##inc/##, not in ##include/freebasic/##
- looks for libraries in ##lib/##, not in ##lib/freebasic/##
- does not try to rely on ##PATH## and use system tools
- does not try to query gcc to find files
- ##[[CompilerOpttarget|-target]]## only accepts simple FB target names, no system triplets
- typically used for the FB-dos and FB-win32 releases
- uses ""GoRC"" to compile win32 resource scripts

The standalone build is intended to be used for self-contained installations such as the traditional FB-win32 and FB-dos releases. It also allows adding fbc to the PATH, without having to add the whole ##bin/## directory.
>>::c::

{{fbdoc item="back" value="DevToc|FreeBASIC Developer Information"}}
{{fbdoc item="back" value="DocToc|Table of Contents"}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode