1*333d2b36SAndroid Build Coastguard Worker// Copyright 2022 Google Inc. All rights reserved. 2*333d2b36SAndroid Build Coastguard Worker// 3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*333d2b36SAndroid Build Coastguard Worker// 7*333d2b36SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*333d2b36SAndroid Build Coastguard Worker// 9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*333d2b36SAndroid Build Coastguard Worker// limitations under the License. 14*333d2b36SAndroid Build Coastguard Worker 15*333d2b36SAndroid Build Coastguard Workerpackage cc 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "testing" 19*333d2b36SAndroid Build Coastguard Worker 20*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint" 21*333d2b36SAndroid Build Coastguard Worker 22*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 23*333d2b36SAndroid Build Coastguard Worker) 24*333d2b36SAndroid Build Coastguard Worker 25*333d2b36SAndroid Build Coastguard Workerfunc TestNdkHeaderDependency(t *testing.T) { 26*333d2b36SAndroid Build Coastguard Worker isDep := func(ctx *android.TestResult, from, toExpected android.Module) bool { 27*333d2b36SAndroid Build Coastguard Worker foundDep := false 28*333d2b36SAndroid Build Coastguard Worker ctx.VisitDirectDeps(from, func(toActual blueprint.Module) { 29*333d2b36SAndroid Build Coastguard Worker if toExpected.Name() == toActual.Name() { 30*333d2b36SAndroid Build Coastguard Worker foundDep = true 31*333d2b36SAndroid Build Coastguard Worker } 32*333d2b36SAndroid Build Coastguard Worker }) 33*333d2b36SAndroid Build Coastguard Worker return foundDep 34*333d2b36SAndroid Build Coastguard Worker } 35*333d2b36SAndroid Build Coastguard Worker bp := ` 36*333d2b36SAndroid Build Coastguard Worker ndk_library { 37*333d2b36SAndroid Build Coastguard Worker name: "libfoo", 38*333d2b36SAndroid Build Coastguard Worker first_version: "29", 39*333d2b36SAndroid Build Coastguard Worker symbol_file: "libfoo.map.txt", 40*333d2b36SAndroid Build Coastguard Worker export_header_libs: ["libfoo_headers"], 41*333d2b36SAndroid Build Coastguard Worker } 42*333d2b36SAndroid Build Coastguard Worker ndk_headers { 43*333d2b36SAndroid Build Coastguard Worker name: "libfoo_headers", 44*333d2b36SAndroid Build Coastguard Worker srcs: ["foo.h"], 45*333d2b36SAndroid Build Coastguard Worker license: "NOTICE", 46*333d2b36SAndroid Build Coastguard Worker } 47*333d2b36SAndroid Build Coastguard Worker //This module is needed since Soong creates a dep edge on source 48*333d2b36SAndroid Build Coastguard Worker cc_library { 49*333d2b36SAndroid Build Coastguard Worker name: "libfoo", 50*333d2b36SAndroid Build Coastguard Worker } 51*333d2b36SAndroid Build Coastguard Worker ` 52*333d2b36SAndroid Build Coastguard Worker ctx := prepareForCcTest.RunTestWithBp(t, bp) 53*333d2b36SAndroid Build Coastguard Worker libfoo := ctx.ModuleForTests("libfoo.ndk", "android_arm64_armv8-a_sdk_shared") 54*333d2b36SAndroid Build Coastguard Worker libfoo_headers := ctx.ModuleForTests("libfoo_headers", "") 55*333d2b36SAndroid Build Coastguard Worker android.AssertBoolEquals(t, "Could not find headers of ndk_library", true, isDep(ctx, libfoo.Module(), libfoo_headers.Module())) 56*333d2b36SAndroid Build Coastguard Worker} 57