Make Rules

Stay organized with collections Save and categorize content based on your preferences.

Don't define make rules in the product configuration. A Make rule looks like this:

output_file_name: dependencies
    shell commands to build the output

The product/board configuration is intended to only set variables that are later used in the build, not define new build actions. These rules should be converted to Soong modules, or when the Bazel conversion is far enough along, Bazel targets. Soong's genrule module type is generic enough to cover most use cases.

If converting to Soong is too challenging right now, move the rule into any file matching {device,product,vendor}/*/[*/]build/tasks/*.mk. These files are always included by the build system, but are separate from the product configuration. They're included all the time, so any rules added there must be guarded by a variable that is set in the product configuration, so the rule is not defined for other products. See this changelist, Move Make rules from board config to build/tasks

Keep in mind that the build/tasks folders will also eventually have to be removed when Make is removed from the build entirely.