shareable

This boolean flag controls output sharing. It defaults to true. See object sharing for details.

When enabled for a rule, this rule's output files will end up in a location that is context-independent:

${build-dir}/objects/<filestem>.<hash>.<ext>

E.g., a source file some-module/foo.c would end up in ${build-dir}/objects/some-module/foo.<hash>.o.

When disabled, the output will end up in a builder and app specific location:

${bindir}/<file-path>/foo.o

The variable ${bindir} defaults to ${build-dir}/out/${builder}/${app}, so e.g., a source file some-module/foo.c built for builder host and app bar would end up in ${bindir}/out/host/bar/some-module/foo.o.

Example:

context:
 - # ...
   rules:
   - name: MYRULE
     shareable: false # disable object sharing for this rule
   # ... possible other fields