-
Notifications
You must be signed in to change notification settings - Fork 4
Description
It would be useful to be able to pass a set of build options to the configs to easier run builds with combinations of options. These would be for example:
- compiler
- compiler version
- dependency (e.g. boost) version
- compiler/linker flags
- sanitizer
- and so on...
These can be generic though so that projects can define their own set of options. I'm not sure what the best syntax would be for this (could be command line options or a separate build options config file), but essentially one should be able to launch pycicle with:
project=hpxmachine=daintbuild_options={compiler: gcc49, clang5; generic_option_1: value_1, value_2; generic_option_2: value_1, value_2}
pycicle would then generate the cartesian product of the build options and launch a build for each combination with ctest -S config/hpx/daint.cmake ... -Dcompiler=gcc49 -Dgeneric_option_1=value_1 -Dgeneric_option_2=value_1.
The build name should be derived from the build options to make them unique.
Conflicts/dependencies between build options are project specific anyway, so this should be handled on a per project basis in the config files.
One may not want to run builds for all combinations of build options so one could additionally:
- launch multiple instances of pycicle to piece together the combinations one wants (will this work now?), or
- have a way to include or exclude specific combinations (probably easiest to put in a separate file which is passed to pycicle)
Ideally the build options and config (daint.cmake) would be taken from the source repository but this might require a bigger refactoring.