Do not require to purge Allen in most cases
This MR makes it such that purging / making Allen becomes almost never required.
- A list of algorithm headers is produced in GenerateConfiguration.cmake.
- This list is used to set the requirements of target
algorithms.py
. - The generated
algorithms.py
now properly triggers generating all subsequent steps that depend on it. (As a sidenote, the documentation in https://cmake.org/cmake/help/v3.3/command/add_custom_command.html is very confusing about howDEPENDS
should be used). - Generation of StructToTuple has been removed. Instead, Boost.PFR is used (https://www.boost.org/doc/libs/1_75_0/doc/html/boost_pfr/tutorial.html). This permits not requiring a recompilation of all algorithms each time one algorithm header file is changed, as the intermediate StructToTuple step is now removed.
- The only moment purging is now required when building Allen is when an algorithm is added or removed. This has been documented in the Adding an algorithm section.
Closes #355 (closed).
As a sidenote, going any further into a world where one never needs to purge would require to:
- Remove the ability of Allen to generate
json
configurations at compile time (which right now is required for production), and only allow it to use them at runtime instead. - Exploit static initialization to provide a functionality akin to
AlgorithmDB.h
. - Have some sort of mechanism to have all Gaudi-Allen views in a series of source files (similarly to Moore functors, if I recall correctly).
Edited by Daniel Hugo Campora Perez