I’m refining the granularity of toolchain and build task support in OBazl. In particular, precise control over flags and options. There are three basic build tasks (compile, archive, and link executable); some options work for all three, and some are task-specific (e.g. ‘-open’ is for compiling). Furthermore different toolchains support different options.
Devs need the ability to group options into “profiles”. So if we want dev, dgb, test, and release profiles, across multiple toolchains, we risk detonating combinatorial explosions.
OBazl addresses this by supporting “toolchain profiles”. A toolchain profile has several attributes to aggregate task-specifc options: compile_options, archive_options, link_options. One profile can be used for many toolchains, or for toolchains fitting a description (e.g. targets the VM or some HW architecture, with debug enabled).
For testing, I could use a list of options by task. The compilers have a lot of options listed by --help that are not in the official documentation and for most of them, I have no idea which tasks they control. I suspect such a list would be useful in general. Anybody have such a thing?