Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/api
diff options
context:
space:
mode:
authorLeitwolf112026-11-12 22:19:46 +0300
committerLeitwolf112026-11-12 22:19:46 +0300
commit7cb809c6560fc4ed29f41e4e4199cd91af6cbed1 (patch)
treeaffc0bfef110459bc8fcf3e8f197ed95cc46f6bb /api
parent95cdafcf1aa01b5d32171c56e6a94137402643b9 (diff)
downloadtazel-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