I have installed SparkBuild and ran a build but could not find the annotation file.
emake help sais that it only created when running under Accelerator.
Am I missing something?
You'll need to take two additional steps to get the annotation file. First, you have to set --emake-annodetail=(basic,env,waiting). Second, you'll have to redirect or tee stdout to a file - the annotation output is written to stdout.
Here's an example:
emake --emake-subbuild-db=my.db --emake-annodetail=basic,waiting,env | tee anno.xml
Unfortunately in local mode emake does not support the --emake-annofile=PATH argument: annotation can only be written to stdout. We hope to remove that limitation in the future, but for now that's how it works.
Eric Melski
Architect, ElectricAccelerator
Electric Cloud, Inc.
SparkBuild will handle this case just fine. All the output from the build which would normally be printed to the console will end up in sections of the appropriate block in the annotation.
Great.
Our build uses a script that sets the environment and calls make twice.
Each make calls itself recursively etc.
I am not sure if the recursive make uses $(MAKE) or just make.
Will emake catch all this?
If we change each top make to emake, will it append to the same .db and .xml?
The recursive make needs to use $(MAKE), otherwise you'll get gmake for those submakes. (If it is hard to change them by hand, you could always rename emake to make instead and put it early in $PATH)
If you change each top-level make to emake, you'll need to have two separate .db files - one for each top-level build. (Neither the db nor the anno file can be appended to) You'll also want to store the anno data in two separate files.
Your commands might look like this:
build.cmd:
(setup stuff...)
emake --emake-subbuild-db=phase1.db | tee phase1.xml
(interim stuff)
emake --emake-subbuild-db=phase2.db | tee phase2.xml
(teardown)