Zum Hauptinhalt springen

wavec CLI-Referenz

wavec ist ein Low-Level-Compiler wie rustc oder cc. Paketauflösung, Lockfiles, Registries und Workspaces gehören zu höheren Werkzeugen wie Vex.

Grundform

wavec [global-options] <command> [command-options] [input...]

Kernbefehle

build <input...> steuert Kompilieren, Prüfen, Linken und optionales Ausführen über Flags. check <file> ist ein Alias für build <file> --emit=check. run <file> ist ein Alias für build <file> --run. print <item> meldet Compiler-Capabilities wie Targets, Emit-Arten, Eingabetypen und den Standard-Linker.

Eingaberegeln

build akzeptiert eine oder mehrere Eingaben. Dateiendungen werden automatisch abgeleitet: .wave für Wave source, .ll für LLVM IR, .bc für bitcode, .s oder .asm für assembly und .o oder .obj für object files. --input-type=<kind> erzwingt einen Typ für alle Eingaben.

wavec build main.wave
wavec build main.wave util.wave --emit=bin
wavec build start.o runtime.o --link-only --emit=bin

Emit-Regeln

--emit unterstützt check, ast, ir, bc, asm, obj und bin. check ist ein Kontrollmodus und kein normales Artifact, daher muss es allein verwendet werden. Wird bin zusammen mit anderen Artifacts erzeugt, benennt -o das finale gelinkte Binary; Zwischenprodukte folgen --out-dir oder Standardpfaden.

wavec build main.wave --emit=check
wavec build main.wave --emit=ir,obj
wavec build main.wave --emit=bin -o app

Ergebnis ausführen

--run ist nur erlaubt, wenn genau ein ausführbares bin-Artifact entsteht. Es ist nicht gültig mit --shared oder nicht ausführbaren Emit-Modi. Argumente nach -- werden an das erzeugte Executable übergeben.

wavec run main.wave -- arg1 arg2
wavec build main.wave --run -- arg1 arg2

Freestanding und bare-metal

--freestanding ist für Kernel, Bootloader, Firmware und Embedded-Targets gedacht. Es deaktiviert das Standard-Linking von libc/libm, deaktiviert die Red Zone im Backend und erzeugt Code für Umgebungen ohne Runtime.

wavec build kernel.wave --target x86_64-unknown-none-elf --freestanding --emit=obj -o kernel.o

Backend-Steuerung

Nutzen Sie --target, --cpu, --features, --abi, --sysroot, -C linker=..., -C link-arg=..., -C link-sysroot=..., -C relocation-model=..., -C code-model=... und -C no-default-libs für präzise Compiler- und Linker-Steuerung.

Capability-Abfragen

wavec print target-list, supported-emit-kinds, supported-input-types und default-linker sind dafür gedacht, dass Tools wie Vex den installierten Compiler ohne Raten validieren.

wavec print target-list
wavec print supported-emit-kinds
wavec print supported-input-types
wavec print default-linker