# Compile Stage for language-agnostic compilation to ready execuable for grading. This does not apply to all languages, e.g. interpreted languages do not need to use this stage. ## Config ``` compile: input: [String] # full set of files needed for compilation output: String? # name of the compiled target executable flags: [String]? # flags used for compilation. These will be fed into specific compilation commands of the language. [default: ] additional_packages: [String]? # any additional package to install as dependency to the container [default: []] ``` - `output`: - `cpp`: `[default: a.out]` - `java`: Output does not need to be specified; `javac` will compile the `input` file(s) and all dependent files automatically - `flags`: - `cpp`: `[default: ["-std=c++11", "-pedantic", "-Wall", "-Wextra", "-g"]]` - `java`: `[default: ["-d", "."]]` - `additionalPackages` mostly work with Debian-based images. - The available language (distros) are also limited currently. This will be extended in the future. ## Report ``` compile: - isSuccess: Boolean # whether the execution was successful, i.e. zero exit code stderr: [String] # the standard errors generated during execution toolName: String? # optional compilation tool used to generate the stderr, for potential UI parsing, categorizing into info/warn/error, and rendering ```