BlitzMax Compiler (bcc)
bcc
is used to translate BlitzMax source code into C code. The name "bcc" came from Blitz Code Compiler but since BlitzMax NG bcc
became more of a transpiler.
Command line syntax
bcc [options]
(Note that you will need ./bcc
on *nix platforms, if you want to run bcc from the bin
directory.)
Options
-q
Tells bcc
to be quiet. For now it does not change something in bcc
output itself but if passed back to bmk
this will have an effect to [bmk
].
-v
Sets bcc
into a verbose mode. This outputs more text information than during normal operation.
This can be useful if you want to see where stuff hangs, takes a while or just to see what happesn during compilation.
-r
Create a release mode transpile of the BlitzMax source code.
-h
Enables threading in your code file. (This is enabled as default in BlitzMax NG compilation processes).
-s
Disable "strict upgrade". This then no longer upgrades strict subclass method/function return types to match the superstrict superclass. Without this parameter (so "default") bcc
does auto-upgrade. Set flag if you want to throw an error - because of mismatch. (Example: strict is Int, superstrict is Void).
-g <architecture>
Select for what architecture to create code. Valid architectures (for now) are: x86
. x64
, pcc
, arm
, arm64
, armeabi
, armeabiv7a
, and arm64v8a
.
-m <modulename>
Create code for the given modulename
.
-o <output file>
Specifies the output file. Must be full path to the outputfile (excluding final extension - there will be a .h, .c and .i generated).
-p <platform>
Select platform to create code for. Valid platforms (for now) are:
Windows OS: win32
Mac OS X: macos
Linux: linux
Android: android
RaspberryPi: raspberrypi
Web / Javascript: emscripten
-t <apptype>
Define type of the application. Should be either console
or gui
.
The default is console
.
-f <framework>
Defines to use a specific module as framework instead of importing all brl.mod
and pub.mod
modules.
-d
Create a debug mode transpile of the BlitzMax source code. (This is the default mode)
-musl
Enables musl libc compatibility. (Linux only)
-w
Generate warnings (and accept) instead of errors for calling methods with arguments that need to be cast down. May cause issues using overloaded methods.
-nodef
Defines to not generate .def files useable by created DLLs/shared libraries.
-nohead
Defines to not generate header files useable by created DLLs/shared libraries.
-makelib
Tells bcc
that the generated code is used in a DLL/shared library.
-override
Sets requirement for overriding methods and functions to append override
to their definitions.
-overerr
Defines missing override
keywords in overridden methods and functions to be handled as error instead of warning.
-ud <user defined conditionals>
Add user defined conditionals (comma separated) then usable via ?myconditional
.