Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4a6ec4d authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "llndk-use-sdk-versioning" into main

* changes:
  Filter LLNDK ABI by SDK version
  LLNDK version maps to NDK version
parents 81e45629 d6aaadc3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ bootstrap_go_package {
        "testing.go",
        "util.go",
        "variable.go",
        "vendor_api_levels.go",
        "vintf_fragment.go",
        "vintf_data.go",
        "visibility.go",
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
			Platform_version_active_codenames:   []string{"S", "Tiramisu"},
			DeviceSystemSdkVersions:             []string{"29", "30", "S"},
			Platform_systemsdk_versions:         []string{"29", "30", "S", "Tiramisu"},
			VendorApiLevel:                      stringPtr("202404"),
			AAPTConfig:                          []string{"normal", "large", "xlarge", "hdpi", "xhdpi", "xxhdpi"},
			AAPTPreferredConfig:                 stringPtr("xhdpi"),
			AAPTCharacteristics:                 stringPtr("nosdcard"),
+49 −0
Original line number Diff line number Diff line
// Copyright 2024 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 android

import (
	"fmt"
	"strconv"
)

func getSdkVersionOfVendorApiLevel(apiLevel int) (int, bool) {
	ok := true
	sdkVersion := -1
	switch apiLevel {
	case 202404:
		sdkVersion = 35
	case 202504:
		sdkVersion = 36
	default:
		ok = false
	}
	return sdkVersion, ok
}

func GetSdkVersionForVendorApiLevel(vendorApiLevel string) (ApiLevel, error) {
	vendorApiLevelInt, err := strconv.Atoi(vendorApiLevel)
	if err != nil {
		return NoneApiLevel, fmt.Errorf("The vendor API level %q must be able to be parsed as an integer", vendorApiLevel)
	}
	if vendorApiLevelInt < 35 {
		return uncheckedFinalApiLevel(vendorApiLevelInt), nil
	}

	if sdkInt, ok := getSdkVersionOfVendorApiLevel(vendorApiLevelInt); ok {
		return uncheckedFinalApiLevel(sdkInt), nil
	}
	return NoneApiLevel, fmt.Errorf("Unknown vendor API level %q. Requires updating the map in vendor_api_level.go?", vendorApiLevel)
}
+17 −7
Original line number Diff line number Diff line
@@ -41,12 +41,25 @@ func MinApiForArch(ctx android.EarlyModuleContext,
	}
}

// Native API levels cannot be less than the MinApiLevelForArch. This function
// sets the lower bound of the API level with the MinApiLevelForArch.
func nativeClampedApiLevel(ctx android.BaseModuleContext,
	apiLevel android.ApiLevel) android.ApiLevel {

	min := MinApiForArch(ctx, ctx.Arch().ArchType)

	if apiLevel.LessThan(min) {
		return min
	}

	return apiLevel
}

func nativeApiLevelFromUser(ctx android.BaseModuleContext,
	raw string) (android.ApiLevel, error) {

	min := MinApiForArch(ctx, ctx.Arch().ArchType)
	if raw == "minimum" {
		return min, nil
		return MinApiForArch(ctx, ctx.Arch().ArchType), nil
	}

	value, err := android.ApiLevelFromUser(ctx, raw)
@@ -54,15 +67,12 @@ func nativeApiLevelFromUser(ctx android.BaseModuleContext,
		return android.NoneApiLevel, err
	}

	if value.LessThan(min) {
		return min, nil
	}

	return value, nil
	return nativeClampedApiLevel(ctx, value), nil
}

func nativeApiLevelOrPanic(ctx android.BaseModuleContext,
	raw string) android.ApiLevel {

	value, err := nativeApiLevelFromUser(ctx, raw)
	if err != nil {
		panic(err.Error())
+1 −4
Original line number Diff line number Diff line
@@ -945,7 +945,7 @@ func transformObjToDynamicBinary(ctx android.ModuleContext,
func transformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Paths, soFile android.Path,
	baseName string, exportedIncludeDirs []string, symbolFile android.OptionalPath,
	excludedSymbolVersions, excludedSymbolTags, includedSymbolTags []string,
	api string, isLlndk bool) android.Path {
	api string) android.Path {

	outputFile := android.PathForModuleOut(ctx, baseName+".lsdump")

@@ -966,9 +966,6 @@ func transformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Path
	for _, tag := range includedSymbolTags {
		symbolFilterStr += " --include-symbol-tag " + tag
	}
	if isLlndk {
		symbolFilterStr += " --symbol-tag-policy MatchTagOnly"
	}
	apiLevelsJson := android.GetApiLevelsJson(ctx)
	implicits = append(implicits, apiLevelsJson)
	symbolFilterStr += " --api-map " + apiLevelsJson.String()
Loading