When built from source, FreeBASIC can be configured for and installed in one of these two different setups:
Normal build (default)
| Standalone build
|
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/
- inc/
- fbgfx.bi
- other headers...
- lib/
- <target>/
- libfb.a
- other libraries...
- fbc.exe
|
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=..."
- -target option accepts system triplets such as "i686-pc-linux-gnu" or "x86_64-w64-mingw32"
- the target name given to the -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
- -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.
|