Current CC/Rust Image variations are generated with target VNDK version. However, this is no longer valid if VNDK is deprecated. This change generates image variation without version ("vendor", "product") if VNDK is deprecated. Bug: 316829758 Test: m nothing --no-skip-soong-tests passed Test: aosp_cf_x86_64_phone build succeeded Change-Id: I2387ed8a2632bfd9462621f882a947695ae1653d
166 lines
4.5 KiB
Go
166 lines
4.5 KiB
Go
// Copyright 2023 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 codegen
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"android/soong/android"
|
|
"android/soong/cc"
|
|
)
|
|
|
|
var ccCodegenModeTestData = []struct {
|
|
setting, expected string
|
|
}{
|
|
{"", "production"},
|
|
{"mode: `production`,", "production"},
|
|
{"mode: `test`,", "test"},
|
|
{"mode: `exported`,", "exported"},
|
|
}
|
|
|
|
func TestCCCodegenMode(t *testing.T) {
|
|
for _, testData := range ccCodegenModeTestData {
|
|
testCCCodegenModeHelper(t, testData.setting, testData.expected)
|
|
}
|
|
}
|
|
|
|
func testCCCodegenModeHelper(t *testing.T, bpMode string, ruleMode string) {
|
|
t.Helper()
|
|
result := android.GroupFixturePreparers(
|
|
PrepareForTestWithAconfigBuildComponents,
|
|
cc.PrepareForTestWithCcDefaultModules).
|
|
ExtendWithErrorHandler(android.FixtureExpectsNoErrors).
|
|
RunTestWithBp(t, fmt.Sprintf(`
|
|
aconfig_declarations {
|
|
name: "my_aconfig_declarations",
|
|
package: "com.example.package",
|
|
srcs: ["foo.aconfig"],
|
|
}
|
|
|
|
cc_library {
|
|
name: "server_configurable_flags",
|
|
srcs: ["server_configurable_flags.cc"],
|
|
}
|
|
|
|
cc_aconfig_library {
|
|
name: "my_cc_aconfig_library",
|
|
aconfig_declarations: "my_aconfig_declarations",
|
|
%s
|
|
}
|
|
`, bpMode))
|
|
|
|
module := result.ModuleForTests("my_cc_aconfig_library", "android_arm64_armv8-a_shared")
|
|
rule := module.Rule("cc_aconfig_library")
|
|
android.AssertStringEquals(t, "rule must contain test mode", rule.Args["mode"], ruleMode)
|
|
}
|
|
|
|
var incorrectCCCodegenModeTestData = []struct {
|
|
setting, expectedErr string
|
|
}{
|
|
{"mode: `unsupported`,", "mode: \"unsupported\" is not a supported mode"},
|
|
}
|
|
|
|
func TestIncorrectCCCodegenMode(t *testing.T) {
|
|
for _, testData := range incorrectCCCodegenModeTestData {
|
|
testIncorrectCCCodegenModeHelper(t, testData.setting, testData.expectedErr)
|
|
}
|
|
}
|
|
|
|
func testIncorrectCCCodegenModeHelper(t *testing.T, bpMode string, err string) {
|
|
t.Helper()
|
|
android.GroupFixturePreparers(
|
|
PrepareForTestWithAconfigBuildComponents,
|
|
cc.PrepareForTestWithCcDefaultModules).
|
|
ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(err)).
|
|
RunTestWithBp(t, fmt.Sprintf(`
|
|
aconfig_declarations {
|
|
name: "my_aconfig_declarations",
|
|
package: "com.example.package",
|
|
srcs: ["foo.aconfig"],
|
|
}
|
|
|
|
cc_library {
|
|
name: "server_configurable_flags",
|
|
srcs: ["server_configurable_flags.cc"],
|
|
}
|
|
|
|
cc_aconfig_library {
|
|
name: "my_cc_aconfig_library",
|
|
aconfig_declarations: "my_aconfig_declarations",
|
|
%s
|
|
}
|
|
`, bpMode))
|
|
}
|
|
|
|
func TestAndroidMkCcLibrary(t *testing.T) {
|
|
bp := `
|
|
aconfig_declarations {
|
|
name: "my_aconfig_declarations_foo",
|
|
package: "com.example.package",
|
|
srcs: ["foo.aconfig"],
|
|
container: "vendor",
|
|
}
|
|
|
|
cc_aconfig_library {
|
|
name: "my_cc_aconfig_library_foo",
|
|
aconfig_declarations: "my_aconfig_declarations_foo",
|
|
vendor_available: true,
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "my_aconfig_declarations_bar",
|
|
package: "com.example.package",
|
|
srcs: ["bar.aconfig"],
|
|
}
|
|
|
|
cc_aconfig_library {
|
|
name: "my_cc_aconfig_library_bar",
|
|
aconfig_declarations: "my_aconfig_declarations_bar",
|
|
vendor_available: true,
|
|
}
|
|
|
|
cc_library {
|
|
name: "my_cc_library",
|
|
srcs: [
|
|
"src/foo.cc",
|
|
],
|
|
static_libs: [
|
|
"my_cc_aconfig_library_foo",
|
|
"my_cc_aconfig_library_bar",
|
|
],
|
|
vendor: true,
|
|
}
|
|
|
|
cc_library {
|
|
name: "server_configurable_flags",
|
|
srcs: ["server_configurable_flags.cc"],
|
|
vendor_available: true,
|
|
}
|
|
`
|
|
result := android.GroupFixturePreparers(
|
|
PrepareForTestWithAconfigBuildComponents,
|
|
cc.PrepareForTestWithCcDefaultModules).
|
|
ExtendWithErrorHandler(android.FixtureExpectsNoErrors).RunTestWithBp(t, bp)
|
|
|
|
module := result.ModuleForTests("my_cc_library", "android_vendor_arm64_armv8-a_shared").Module()
|
|
|
|
entry := android.AndroidMkEntriesForTest(t, result.TestContext, module)[0]
|
|
|
|
makeVar := entry.EntryMap["LOCAL_ACONFIG_FILES"]
|
|
android.AssertIntEquals(t, "len(LOCAL_ACONFIG_FILES)", 1, len(makeVar))
|
|
android.EnsureListContainsSuffix(t, makeVar, "my_aconfig_declarations_foo/intermediate.pb")
|
|
}
|