<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tazel/sources/test/resources/reference, branch main</title>
<subtitle>A build system and package manager for C, C++, Objective-C, Objective-C++ and Zig, with Kotlin project files.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/tazel/'/>
<entry>
<title>Read MODULE.kts and BUILD.kts, and resolve labels</title>
<updated>2026-11-12T04:46:46+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-12T04:46:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/tazel/commit/?id=3bffdc1d747a73ff83fab83f1a51b53c0ab507d9'/>
<id>3bffdc1d747a73ff83fab83f1a51b53c0ab507d9</id>
<content type='text'>
Tazel now reads the project files of the accepted DSL:

- Labels: //:x for the root BUILD.kts, //dir/:x for dir/BUILD.kts, :x for
  the same file, @name//:x for a dependency, and the patterns //dir/... and
  //... . The //dir shorthand is refused with a hint.
- MODULE.kts: module (name, SemVer version, description, authors, license),
  dependencies (implementation, testImplementation, localImplementation,
  localTestImplementation, with alias), viget (push, pushTarget, exclude),
  cache and execution. Duplicate dependency names, a push without version,
  description or author, and a pushTarget in a private BUILD.kts are errors.
- BUILD.kts: isPublic per file and c, cpp, objc, objcpp and zig targets,
  each with bin, staticlib, sharedlib and test. The scopes carry type
  markers of their language and kind, so a setting that one does not have
  (exports on a bin, args on a staticlib, a C standard on C++, arc on C,
  compiler on Zig, test settings on a bin, bundle on C++) is a compile
  error at its line in the project file.
- A target block runs for each triple and build mode it is built for; OS
  and ARCH come from the LLVM triple, BUILD_MODE from the command. Its
  depends are resolved: libraries only, visibility through isPublic, test
  dependencies for test targets only, paths kept inside the module.
- Directories starting with a dot and nested modules are not packages;
  file names are compared case-sensitively.

The tests load a reference module that uses every setting of the DSL and
configure each of its eleven targets for each triple and mode.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tazel now reads the project files of the accepted DSL:

- Labels: //:x for the root BUILD.kts, //dir/:x for dir/BUILD.kts, :x for
  the same file, @name//:x for a dependency, and the patterns //dir/... and
  //... . The //dir shorthand is refused with a hint.
- MODULE.kts: module (name, SemVer version, description, authors, license),
  dependencies (implementation, testImplementation, localImplementation,
  localTestImplementation, with alias), viget (push, pushTarget, exclude),
  cache and execution. Duplicate dependency names, a push without version,
  description or author, and a pushTarget in a private BUILD.kts are errors.
- BUILD.kts: isPublic per file and c, cpp, objc, objcpp and zig targets,
  each with bin, staticlib, sharedlib and test. The scopes carry type
  markers of their language and kind, so a setting that one does not have
  (exports on a bin, args on a staticlib, a C standard on C++, arc on C,
  compiler on Zig, test settings on a bin, bundle on C++) is a compile
  error at its line in the project file.
- A target block runs for each triple and build mode it is built for; OS
  and ARCH come from the LLVM triple, BUILD_MODE from the command. Its
  depends are resolved: libraries only, visibility through isPublic, test
  dependencies for test targets only, paths kept inside the module.
- Directories starting with a dot and nested modules are not packages;
  file names are compared case-sensitively.

The tests load a reference module that uses every setting of the DSL and
configure each of its eleven targets for each triple and mode.
</pre>
</div>
</content>
</entry>
</feed>
