fbc's default options should work for native builds.
When building for other platforms or developing and building with multiple tool chains, these command line options can help ease the needs of various non-native or uncommon compilations:
- Default prefix:
- prefix may have been compiled in when fbc itself was compiled, in which case the default prefix is determined by fbc's build/makefile option 'ENABLE_PREFIX'
If fbc was not compiled with 'ENABLE_PREFIX':
- standalone: prefix = <fbc path>/
- normal : prefix = <fbc path>/../
- Override default prefix:
- if the '-prefix <path>' command line option given, overrides the default prefix
- Default target:
- determined by target build for fbc itself by fbc's makefile
- Override default target:
- if the '-target <target>' command line option given, overrides the default target
- Default buildprefix:
- Override default buildprefix:
- if the '-buildprefix <name>' command line option given, overrides the default build prefix
- Default binary, include, and library paths:
- binary path: where tools are located (AS, LD, AR, etc)
- include path: location of fbc's '*.bi' files
- library path: where fbc's libraries are located (static libraries and import libraries)
- toolname: the name of a specific tool, which may include the path for a specific location, or the name of the tool only if relying on PATH environment variable
standalone fbc:
- binary path = <prefix>/bin/<target>/
- toolname = <binary path> + <buildprefix> + <tool name>[.exe]
- include path = <prefix>/inc
- library path = <prefix>/lib/<target>
normal fbc:
- default binary path:
- binary path = <prefix>/bin/<target->
- or if '-buildprefix' given:
- binary path = <prefix>/bin/<buildprefix>
- toolname = <binary path> + <tool name>[.exe]
- If binary tool not found, then rely on PATH environment variable to find:
- toolname = <target-|buildprefix> + <tool name>
- include path = prefix/include/freebasic
- library path = prefix/lib[64]/freebasic/target
- Environment variables override tool name and path completely:
- environment variables can override the tool name and path completely
- 'AS' overrides gnu assembler tool
- 'AR' overrides gnu archiver tool
- 'LD' overrides gnu linker
- 'GCC' overrides gnu C compiler
- 'LLC' overrides LLVM compiler
- 'CLANG' overrides clang C compiler (currently never used)
- 'DLLTOOL' overrides gnu dlltool (GAS)
- 'GORC' overrides resource tool (if fbc was compiled with ENABLE_GORC)
- 'WINDRES' overrides resource tool (if fbc was compiled without ENABLE_GORC)
- 'CXBE' overrides xbox xbe generator tool
- 'DXE3GEN' overrides djgpp DOS dll tool
- 'EMAR' overrides emscripten archiver ool
- 'EMCC' overrides emscripten assember, compiler, and linker tools
The tool name prefix (stored in the binary path) is set by default with 'target' + '-'.
'-buildprefix <name>' overrides the tool name prefix.
When 'binary path' is set (internally in the fbc compiler), it includes the prefix of the tool name.
For examples:
fbc -prefix /pppp/ -target tttt source.bas
gnu-AS invoked is: /pppp/bin/tttt-as
fbc -prefix /pppp/ -target tttt -buildprefix bbbbX source.bas
gnu-AS invoked is: /pppp/bin/bbbbXas
'-prefix' command line option controls top level path for fbc.
'-target' command line option controls code generation and many related options including the default tool name prefix.
'-buildprefix' command line option overrides the default tool name prefix.