Product and board configuration with Starlark

Product and Board configurations define Make variables that affect the build. This is in contrast to files, which define Make rules. The top-level product configuration makefiles are defined by adding them to PRODUCT_MAKEFILES in an file. Top-level board config makefiles are called and contained in folders whose names are the value of TARGET_DEVICE.

When the build is run with RBC_PRODUCT_CONFIG and/or RBC_BOARD_CONFIG set, these files are converted to Starlark and executed by the Starlark interpreter instead of executing them in Make.

Regression testing script

The regression script runs the build with and without the Starlark auto-converter and compares the resulting ninja files -- they should be identical.

Issues in Makefiles

Some patterns can't be converted from Make to Starlark, and must be manually removed or refactored. This process can be done now, in order to be ready for when Starlark conversion is enabled by default. See the pages under the "issues" section in the sidebar for some common patterns and alternatives.