Add a property in ndk_library for header contributions
The new property will be used to determine the header file contributions of
ndk_library(s) to the Public API surface. This should be a no-op for
regular Soong builds.
This will be used by a future bp2build converter to populate
the BUILD files for Multi-tree `cc_api_contribution` targets
(Also noticed that sdk_test.go was never added to testSrcs, which this
CL should fix)
Test: go test ./cc
Test: TH
Change-Id: Ieea093e4aac68e341c6414b6cafe02c441643cdf
diff --git a/cc/ndk_test.go b/cc/ndk_test.go
new file mode 100644
index 0000000..f20d3c6
--- /dev/null
+++ b/cc/ndk_test.go
@@ -0,0 +1,56 @@
+// Copyright 2022 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package cc
+
+import (
+ "testing"
+
+ "github.com/google/blueprint"
+
+ "android/soong/android"
+)
+
+func TestNdkHeaderDependency(t *testing.T) {
+ isDep := func(ctx *android.TestResult, from, toExpected android.Module) bool {
+ foundDep := false
+ ctx.VisitDirectDeps(from, func(toActual blueprint.Module) {
+ if toExpected.Name() == toActual.Name() {
+ foundDep = true
+ }
+ })
+ return foundDep
+ }
+ bp := `
+ ndk_library {
+ name: "libfoo",
+ first_version: "29",
+ symbol_file: "libfoo.map.txt",
+ export_header_libs: ["libfoo_headers"],
+ }
+ ndk_headers {
+ name: "libfoo_headers",
+ srcs: ["foo.h"],
+ license: "NOTICE",
+ }
+ //This module is needed since Soong creates a dep edge on source
+ cc_library {
+ name: "libfoo",
+ }
+ `
+ ctx := prepareForCcTest.RunTestWithBp(t, bp)
+ libfoo := ctx.ModuleForTests("libfoo.ndk", "android_arm64_armv8-a_sdk_shared")
+ libfoo_headers := ctx.ModuleForTests("libfoo_headers", "")
+ android.AssertBoolEquals(t, "Could not find headers of ndk_library", true, isDep(ctx, libfoo.Module(), libfoo_headers.Module()))
+}