/* * Copyright (C) 2021 The Android Open Source Project * * 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 java import ( "android/soong/android" ) // Build rules and utilities to generate individual packages/modules/SdkExtensions/proto/classpaths.proto // config files based on build configuration to embed into /system and /apex on a device. // // See `derive_classpath` service that reads the configs at runtime and defines *CLASSPATH variables // on the device. type classpathType int const ( // Matches definition in packages/modules/SdkExtensions/proto/classpaths.proto BOOTCLASSPATH classpathType = iota DEX2OATBOOTCLASSPATH SYSTEMSERVERCLASSPATH ) func (c classpathType) String() string { return [...]string{"BOOTCLASSPATH", "DEX2OATBOOTCLASSPATH", "SYSTEMSERVERCLASSPATH"}[c] } type classpathFragmentProperties struct { } // classpathFragment interface is implemented by a module that contributes jars to a *CLASSPATH // variables at runtime. type classpathFragment interface { android.Module classpathFragmentBase() *classpathFragmentBase } // classpathFragmentBase is meant to be embedded in any module types that implement classpathFragment; // such modules are expected to call initClasspathFragment(). type classpathFragmentBase struct { properties classpathFragmentProperties classpathType classpathType outputFilepath android.OutputPath } // Initializes classpathFragmentBase struct. Must be called by all modules that include classpathFragmentBase. func initClasspathFragment(c classpathFragment) { base := c.classpathFragmentBase() c.AddProperties(&base.properties) }