Assemble API surface headers before compiling rdeps
The current combined multi-tree build graph is not accurate. A vendor.c file currently does not have a dependency on the assembled .h file in multi-tree out. Previous successful builds of `multitree_build vendor/vendorimage` were a happy coincidence (presumably because the actions which copy the .h files from a speciific inner tree to out/ are at the bottom of the build graph). Fix this by exporting `cc_api_library.src` to be an order only dependency of its rdeps (both compile and link). Making an .so file an order only dependency of _compilation_ is probably confusing, but I think it will be less confusing than the other alternative I could think of (creating .timestamp files for each api_surface include dir and creating phony targets to make them available from top-level to chdir'd inner tree) Test: go test ./cc Test: orchestrator/prebuilts/build-tools/linux-x86/bin/nsjail --config out/nsjail.cfg -- orchestrator/prebuilts/build-tools/linux-x86/bin/ninja -f out/multitree.ninja -t path vendor/out/soong/.intermediates/external/angle/angle_common/android_arm64_armv8-a_cortex-a53_static/obj/external/angle/src/common/android_util.o out/api_surfaces/vendorapi/current/libc/libc_headers.contribution.androidos_include/features.h (Path did not exist before this CL) Change-Id: I74391100f2108993448004019eeba6456af0c12a
This commit is contained in:
@@ -278,4 +278,9 @@ func TestExportDirFromStubLibrary(t *testing.T) {
|
||||
android.AssertStringDoesNotContain(t, "Vendor binary should not compile using headers of source", vendorCFlags, "-Isource_include_dir")
|
||||
android.AssertStringDoesContain(t, "Vendor binary should compile using system headers provided by stub", vendorCFlags, "-isystem stub_system_include_dir")
|
||||
android.AssertStringDoesNotContain(t, "Vendor binary should not compile using system headers of source", vendorCFlags, "-isystem source_system_include_dir")
|
||||
|
||||
vendorImplicits := ctx.ModuleForTests("vendorbin", "android_vendor.29_arm64_armv8-a").Rule("cc").OrderOnly.Strings()
|
||||
// Building the stub.so file first assembles its .h files in multi-tree out.
|
||||
// These header files are required for compiling the other API domain (vendor in this case)
|
||||
android.AssertStringListContains(t, "Vendor binary compilation should have an implicit dep on the stub .so file", vendorImplicits, "libfoo.so")
|
||||
}
|
||||
|
Reference in New Issue
Block a user