Conditional inclusion of blueprint modules

Bug: 270654958

This introduces a new `blueprint_package_includes` module type. If
present, other blueprint modules in that file will be analyzed
if and only if the requested include tags are met

example syntax:
```
Android.bp
blueprint_packgage_includes {
  match_all: ["tag1", "tag2", ...],
}

other_module1 {...}
other_module2 {...}
```
other_module1 and other_module2 will not be analyzed unless
tag1,tag2, ... are set

This also adds a new object of type `IncludeTags` to the Context object,
which is a container for these string keys.

Test: In build/blueprint, go test ./
Test: TH

Change-Id: I79de0d7da3224a5b2025c27a5137f39d00c7382e
Merged-In: I79de0d7da3224a5b2025c27a5137f39d00c7382e
(cherry picked from commit fd1f976100fb78d50902bd6feb550e92f70fa962)
3 files changed
tree: 62791ccd0971c96ebf4a8ce0b295181777cdbef7
  1. .github/
  2. bootstrap/
  3. bpfmt/
  4. bpmodify/
  5. deptools/
  6. gotestmain/
  7. gotestrunner/
  8. loadplugins/
  9. metrics/
  10. microfactory/
  11. parser/
  12. pathtools/
  13. proptools/
  14. tests/
  15. .gitignore
  16. .gofmt.sh
  17. Android.bp
  18. CODEOWNERS
  19. context.go
  20. context_test.go
  21. CONTRIBUTING.md
  22. doc.go
  23. glob.go
  24. glob_test.go
  25. go.mod
  26. LICENSE
  27. live_tracker.go
  28. mangle.go
  29. module_ctx.go
  30. module_ctx_test.go
  31. name_interface.go
  32. ninja_defs.go
  33. ninja_strings.go
  34. ninja_strings_test.go
  35. ninja_writer.go
  36. ninja_writer_test.go
  37. OWNERS
  38. package_ctx.go
  39. PREUPLOAD.cfg
  40. provider.go
  41. provider_test.go
  42. README.md
  43. scope.go
  44. singleton_ctx.go
  45. splice_modules_test.go
  46. visit_test.go
README.md

Blueprint Build System

Blueprint is being archived on 2021 May 3.

On 2021 May 3, we will be archiving the Blueprint project. This means it will not be possible to file new issues or open new pull requests for this GitHub project. As the project is being archived, patches -- including security patches -- will not be applied after May 3. The source tree will remain available, but changes to Blueprint in AOSP will not be merged here and Blueprint's source tree in AOSP will eventually stop being usable outside of Android.

Whereas there are no meta-build systems one can use as a drop-in replacement for Blueprint, there are a number of build systems that can be used:

  • Bazel, Google's multi-language build tool to build and test software of any size, quickly and reliably
  • Soong, for building the Android operating system itself
  • CMake, an open-source, cross-platform family of tools designed to build, test and package software
  • Buck, a fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages
  • The venerable GNU Make