diff options
| author | Leitwolf11 | 2026-11-12 22:19:46 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-11-12 22:19:46 +0300 |
| commit | 7cb809c6560fc4ed29f41e4e4199cd91af6cbed1 (patch) | |
| tree | affc0bfef110459bc8fcf3e8f197ed95cc46f6bb /api | |
| parent | 95cdafcf1aa01b5d32171c56e6a94137402643b9 (diff) | |
| download | tazel-7cb809c6560fc4ed29f41e4e4199cd91af6cbed1.tar.gz | |
Build and run C, C++, Objective-C, Objective-C++ and Zig targetsfeature/build-c-family
Tazel gets its first build commands:
tazel build [--release] [--triple <LLVM triple>] [labels...]
tazel run [--release] [--triple <LLVM triple>] [label] [-- program arguments]
Without a label they take the package of the current directory. A
pattern skips targets not built for the triple; a label names one, or
it is an error. tazel run builds and runs one bin target with its args
and env from BUILD.kts, then the arguments after --.
- Plan (driver.BuildPlan): the selected targets and every library they
depend on, configured once each for one triple and build mode, with
link order (dependents before dependencies) and cycle detection.
Dependencies from ViGet and local .vipkg files are refused with a
message, since they are not built yet.
- Compilers (driver.CcToolchain): Clang, then GCC, then zig cc on PATH
unless the target chooses one. Clang builds for other triples with
--target, zig cc with its own triple spelling; GCC only for the host.
MSVC and clang-cl are refused with a message for now.
- Commands (driver.CcCommands): standard, gnuExtensions, optimize and
debugInfo with their mode defaults, warnings, warningsAsErrors,
position-independent code (sharedlibs, and staticlibs a sharedlib
links unless pic says otherwise), arc, sanitizers, LTO, public and
private defines and headers with those of the libraries, headers
staged under includePrefix/stripIncludePrefix, precompiledHeader as a
forced include, flags; archives with llvm-ar or ar; links with
alwaysLink as whole-archive, links, frameworks on macOS, rpath (and
the directories of shared libraries), linkerScript, exports (version
script or exported symbols), soVersion (soname and the unversioned
name), defFile and subsystem on Windows, strip and linkFlags.
Windows resource scripts are refused with a message for now.
- Zig targets run zig build-exe, build-lib (-dynamic) or test
--test-no-exec on their root file, with the libraries they depend on.
- Incremental (driver.UpToDate): every compile writes a depfile (-MD
-MF); an object is current while its command line is the same and no
input in its depfile is newer. Archives and programs are remade when
their command or an input changed. A failed command is redone.
- Jobs: the job pool and build graph of the legacy Tazel run the
translation units in parallel (execution.jobs, keepGoing).
- data files are copied beside the output.
Tests: depfile reading, up-to-date decisions, globs and excludes, Zig
triples and output names, and a real build with the C compiler of the
machine: a first build, a build with nothing to do, a header change
that recompiles both units, tazel run with args, env and extra
arguments, and a compiler error.
Diffstat (limited to 'api')
0 files changed, 0 insertions, 0 deletions