bp/BoardConfig-product.md

1.2 KiB

Replacing Android.mk

What devices currently do

Choose HAL variants, pass Make flags to HAL build systems

Add packages

Add prebuilt or config files -> can be moved into packages

Set props

Inherit product files, inherit stuff from build/make/target/product

Set variables that configure HALs, initiate build guards

Use conditionals massively

Add soong namespaces, add soong configs

Add overlays

Add manifest files

Use CleanSpec.mk files for deleted and moved module remnants

Use shell tools invoked from make to manipulate files

AndroidProducts.mk: Add COMMON_LUNCH_CHOICES and PRODUCT_MAKEFILES, add lunch targets, set PRODUCT variables

BoardConfig.mk: Set base stuff like target arch, kernel, more non-PRODUCT variables

Issues

Currently, you have three stages: PRODUCT variables via PRODUCT_MAKEFILES and inherit-product but also include chains, generic variables via BoardConfig and include chains, module/package-specific via Android.mk and include chains.

Terminology

Product, board, device, sku, soc, customization

system, vendor, product, system_ext, odm, oem, cust, misc soc_specific, device_specific, system_ext_specific

Questions

Use CamelCase, smallCammelCase, under_scores for configs?