zom-lang/zom

Convert `zom` to `zomc`

Larsouille25 opened this issue · 0 comments

The idea is to make the Zom compiler like gcc or rustc, only one command with many options. And if anyone wants to make an alternative package manager they can do (for now their is no official package manager but one will come).

Todo

  • rename zom to zomc
  • remove subcommands dev, gettarget, version
  • add mandatory argument SOURCE_FILE that is the main file, e.g: bor a bin, it's main.zom, for a lib it's lib.zom
  • add options
    • --verbose, print to stdout more details.
    • --version --verbose shows the version + the commit hash + build date + target triple of the compiler.
    • --target TARGET, where TARGET is the target triple used when compiling with LLVM.
    • --emit [asm|llvm-ir|llvm-bc|obj], comma separated list of types of output for the compiler to emit.
    • --pkg-type [bin|zlib|lib|dylib|staticlib], what type of output the compiler will emit. zomlib will be covered in an RFC, and for now it'll not be done but will be their.
    • --pkg-name NAME, specify the name of the package, used when the output filename isn't specified to determine a filename.
    • --link-dir -L PATH, add a directory to the library search path.
    • --link -l NAME[:RENAME], link the generated package to the specified native library NAME. The RENAME is used if in the Zom source of the package you use another name for the library NAME.
    • --error -E [human|json], how stdout will look like. human is beautiful error messages, human readable. json is to print a json with the error if there is.
    • --opt LEVEL, optimization level, used by LLVM optimizer.
    • --output -O FILENAME, write output to FILENAME
    • --output-dir DIR, write the output in the DIR with the filename based on the package name.
  • remake a panic hook like before.