Instead of using `x := $(x) foo`, make sure `x` is initialized first,
then use `x += foo`.
For a aosp-master/aosp_crosshatch-userdebug build, this takes the build
from 49s to 33s (no significant difference in peak memory)
Bug: 158488548
Test: build-aosp_crosshatch.ninja is the same before/after
Change-Id: I41fb7611030dd3ba824f896a9c9eadbdd218f464
Similar to native:vendor, native:product can use VNDK libs but not
vndk_private.
It is activated when PRODUCT_PRODUCT_VNDK_VERSION is set.
This restores the reverted commit
4e7e76fe5a (aosp/1197274).
The problem of the original CL was assuming no modules have both
LOCAL_PRODUCT_MODULE and LOCAL_USE_VNDK in the old implementations.
But many vendor modules in the targets without setting
PRODUCT_PRODUCT_VNDK_VERSION in old branches had both flags that
caused link failures.
To make it no-op without PRODUCT_PRODUCT_VNDK_VERSION, I defined
LOCAL_USE_VNDK_PRODUCT that is set to true if
PRODUCT_PRODUCT_VNDK_VERSION is defined and LOCAL_PRODUCT_MODULE is
true.
Bug: 146620523
Test: build with PRODUCT_PRODUCT_VNDK_VERSION := current
Change-Id: I344c7dc1c47f08706c101e486ff07c3f10aff8ac
This reverts commit 4e7e76fe5a.
Reason for revert: build breaks (bid: 6147225) and postsubmit test fails.
There are some modules that have both "product_specific: true" and "vendor_available: true", which tags the module as "native:product" unintentionally.
We need to clean up these cases first and revisit this CL.
Bug: 146620523
Bug: 147987741
Change-Id: Ib07543235d72a135b6b732aaa909c147d2df832b
Similar to native:vendor, native:product can use VNDK libs but not
vndk_private.
It is activated when PRODUCT_PRODUCT_VNDK_VERSION is set.
Bug: 146620523
Test: build with PRODUCT_PRODUCT_VNDK_VERSION := current
Change-Id: Icfd94dfc30e77581991799d9e2f408f57da22cea
After the split up of prebuilt_internal.mk, the logic for running
host-init-verifier on init.rc files was misplaced. This change moves
it back to the right location.
Test: see that a mistake in rootdir/init.rc causes the build to fail
Change-Id: I60e503cc48639f4f11c47e6636f140672fde61b4
Now that ONE_SHOT_MAKEFILE no longer exists, we don't have to rely on
the filesystem to store this informtion.
This removes ~16.7k files from our build graph
(aosp-master/aosp_arm64-eng), though only about 600 of them were being
used in a normal build.
Test: treehugger
Change-Id: I3ac12f5ea7f11d25064109a0599bc5be1976fba5
This commit strips my_shared_libraries to remove the unwanted space
character when both `$(filter-out ...)` and
`$(my_system_shared_libraries)` are empty.
Bug: 137302468
Test: lunch aosp_walleye-userdebug && make
Test: lunch aosp_walleye-userdebug && make check-elf-files
Change-Id: Ia0410da877196c104a61d48c92a2be969a9754a5
This commit moves `include cxx_stl_setup.mk` out of `ifdef
my_shared_libraries` so that it can always get a chance to tweak
my_shared_libraries.
Bug: 137302468
Test: lunch aosp_walleye-userdebug && make
Test: lunch aosp_walleye-userdebug && make check-elf-files
Change-Id: Id756340f0a62d7ac06d301c3260430a1af74ed89
There are prebuilt modules which are meant to be just copied.
e.g. ETC,SCRIPT,DATA files
The problem for current prebuilt_internal.mk is that those modules are
handled by cc_prebuilt_internal.mk, which adds libc++ as dependency,
which is simply wrong with copy-only prebuilt modules.
As a fix, misc_prebuilt_internal.mk is introduced to handle
ETC,SCRIPT,DATA prebuilt modules and doesn't do additional processing.
Bug: 132925121
Test: m nothing && check build-<TARGET>.ninja if there is no dependency
to libc++ from ETC modules such as /system/etc/sepolicy_test
Change-Id: I846f8e1f3741ca71c86f5420cfaafa7419ebf3f6
Add cc_prebuilt_internal.mk and java_prebuilt_internal.mk. Now all
buisiness logic lives in individual per-class prebuilt mk files.
Fixes: 128609813
Test: Built and flashed a Pixel device image + TreeHugger
Change-Id: I3827f990642bb7587dc682d1a382b3a1ce22fe66