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
- ld.exe
- <target>-ld.exe
- other native and cross-compilation tools...
- include/
- freebasic/
- fbgfx.bi
- other headers...
- lib/
- freebasic/
- libfb.a (native)
- other libraries...
- <target>-freebasic/
- libfb.a (for other target)
- other libraries for that target...
| 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/ or include/
- looks for its own libraries in lib/freebasic/ instead of lib/
- 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 accepts system triplets such as "i686-pc-linux-gnu"
- the target name given to -target 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, and also allows installing FreeBASIC into MinGW or DJGPP trees, and even allows FB 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>/, not just bin/
- looks for FB includes in inc/, not in include/freebasic/
- looks for libraries in lib/<target>/, 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.
|