Building and Compiling

Guide on how to not only setup an ashen project, but also on how to compile it.

Creating a project

Simple run "ashen init" and the compiler will guide you through project creation (please do so in an empty directory! note that the compiler won't let you make a project in a directory with files...)

But I just want to compile without making a project!

No worries, Projects in ashen are just a series of parameters stored in a .ashml file like this:

-o miyuki
-I ./source
app.ashen

If you just want to compile one file,

ashen build main.ashen -o myprogram

# Or make a ashml file for it
echo "-o hello
-I src
src/main.ashen" > project.ashml
ashen build project.ashml

So, you can either hand write the parameters line by line in an .ashml file and pass it to the compiler (like this: ashen build project.ashml)

...or pass them individually!

WITCH WARNING:Heads up: Ashen main procedures are defined with a @Export rune and a args String[] parameter, like this: @Export proc main(args : String[]) {...

ashen build -o miyuki -I ./source app.ashen

By the way, you can always pass both build.ashml and extra parameters, just make sure to place them in order of priority of least required to most required (if using a parameter like -o, dont pass -o before your build.ashml as the -o on your ashml file will overwrite the one you wrote before it)

Compilation Flags

--no-nebulosa 
or --no-builtin     -- Disables libnebula, but you will also be unable to use Ashen Arrays, and anything that rely on them.

--freestanding      -- Will not compile against the systems libc and the ashen standard library will not be available.

--gen-<flag>        -- Parameter to pass to the generator, currently, the only generator is C code, so this will be either a clang or gcc parameter after --gen-.

--link-<flag>       -- Parameter to pass to the linker

-I <path>           -- Adds an import path

-o <out>            -- Specifies an output executable name 

--dump-ast          -- Dumps the AST of your project into a file named "bootstrap-ast"