Справочник CLI wavec
wavec — низкоуровневый компилятор, похожий по роли на rustc или cc. Разрешение пакетов, lockfile, registry и workspace относятся к инструментам выше уровня, например Vex.
Базовая форма
wavec [global-options] <command> [command-options] [input...]
Основные команды
build <input...> управляет компиляцией, проверкой, линковкой и необязательным запуском через флаги. check <file> — alias для build <file> --emit=check. run <file> — alias для build <file> --run. print <item> выводит capability компилятора: targets, emit kinds, input types и linker по умолчанию.
Правила входов
build принимает один или несколько входов. Расширения выводятся автоматически: .wave для Wave source, .ll для LLVM IR, .bc для bitcode, .s или .asm для assembly, .o или .obj для object files. --input-type=<kind> задаёт один тип для всех входов.
wavec build main.wave
wavec build main.wave util.wave --emit=bin
wavec build start.o runtime.o --link-only --emit=bin
Правила emit
--emit поддерживает check, ast, ir, bc, asm, obj и bin. check — управляющий режим, а не обычный artifact, поэтому используется только отдельно. Если bin создаётся вместе с другими artifacts, -o задаёт имя финального linked binary; промежуточные artifacts используют --out-dir или пути по умолчанию.
wavec build main.wave --emit=check
wavec build main.wave --emit=ir,obj
wavec build main.wave --emit=bin -o app
Запуск результата
--run разрешён только если создаётся ровно один исполняемый artifact bin. Он недопустим с --shared или неисполняемыми emit modes. Аргументы после -- передаются созданному executable.
wavec run main.wave -- arg1 arg2
wavec build main.wave --run -- arg1 arg2
Freestanding и bare-metal
--freestanding предназначен для kernels, bootloaders, firmware и embedded targets. Он отключает стандартную линковку libc/libm, отключает red zone backend и создаёт код для сред без runtime.
wavec build kernel.wave --target x86_64-unknown-none-elf --freestanding --emit=obj -o kernel.o
Управление backend
Для точного управления compiler и linker используйте --target, --cpu, --features, --abi, --sysroot, -C linker=..., -C link-arg=..., -C link-sysroot=..., -C relocation-model=..., -C code-model=... и -C no-default-libs.
Запросы capability
wavec print target-list, supported-emit-kinds, supported-input-types и default-linker нужны инструментам вроде Vex для проверки установленного compiler без догадок.
wavec print target-list
wavec print supported-emit-kinds
wavec print supported-input-types
wavec print default-linker
