Allow separate optimization flags for the BSP, cpukit, and tests. For example,
the BSP and cpukit may be built without optimization if coverage
instrumentation is enabled, however, the tests may still use optimization.
Update #4670.
The waf build system uses lists for tool flags. The build items may use
variable substitution. Add the ability to use the variable substitution in
lists. For example:
MORE_FLAGS = ['-more', '-flags']
flags:
- -some-flag
- ${MORE_FLAGS}
Before this change, the ${MORE_FLAGS} was substituted to "-more -flags". This
would be passed by waf as a single command line argument to the tool.
After this change, the ${MORE_FLAGS} list extends the flags list:
flags = ['-some-flag', '-more', '-flags']
This list extension is performed if a list element consists of exactly one
variable.
Update #4670.
Start code for most platforms requires hand-coded ASM but some can be
bootstrapped entirely in C, especially for paravirtualized platforms.
This change allows start code to be written in C where possible instead
of requiring architecture-specific ASM to bridge to C.
This expands the ability to substitute variables outside the current
limitation of values in options to asflags, cflags, cppflags, cxxflags,
ldflags, and includes. It is possible for all of these flags to utilize
user-defined information in config.ini, especially for paths to external
resources.
The variety of expected test states are not currently applied to tests
with names containing '-' correctly due to a failure to replace '-' with
'_' before adding the CPPFLAGS to the environment for that test. This
ensures that all additions of CPPFLAGS have that replacement performed
so that the CPPFLAGS are applied properly during compilation.
This improves support for the --out option. Previously, the cache file
was placed in the source directory under "build/...". Now, it is placed
in the output directory, which is "build" by default. So, if you don't
use the --out option nothing changes. However, if you use the --out
option, then the cache file is placed under the specified directory.
Add a feature to enforce an explicit target file for assembler sources.
Add a build start file node list and use it as a test program
dependency.
The fix for #3846 and #4080 needs to be combined, because the fix
for #3846 requires the removal of 'before=["cstlib"]'. This patch fixes
two issues:
1. The tracking of start file dependencies.
2. Reflect that executables depend on the start files.
We need a start.o file in the right path so that the linker can find is
as specified by the linker script, and not for example a start.S.17.o
file in some path. This part is addressed by the "explicit_asm_target"
feature.
This build process extension
@after("apply_link")
@feature("cprogram", "cxxprogram")
def process_start_files(self):
if getattr(self, "start_files", False):
self.link_task.dep_nodes.extend(self.bld.start_files)
addresses 2.
Close#3846.
Close#4080.