Files
android/libwvdrmengine/Android.bp
Edwin 28feb283f3 Add lazy service for Widevine AIDL HAL.
Merged from http://go/wvgerrit/147329

Test: atest VtsAidlHalDrmTargetTest
Test: atest GtsMediaTestCases

Bug: 221078453
Change-Id: I4345816f18c44de4187f03a087d58e890a6d6b01
2022-03-09 23:30:31 +00:00

547 lines
15 KiB
Plaintext

// Copyright (C) 2020 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.
// ----------------------------------------------------------------------------
// CDM top level makefile
//
// ----------------------------------------------------------------------------
// Copies move script to /system/bin.
//
// The move script is only needed for existing devices that
// are running Widevine DRM and are upgrading to Pi or later
// Android releases. New devices release with Pi and future
// Android releases do not need to run this script.
//
// To run this script, vendor must add the dependency to the
// corresponding device.mk file and build from ANDROID_ROOT.
//
// For example:
// PRODUCT_PACKAGES += \
// android.hardware.drm@1.0-impl \
// android.hardware.drm@1.0-service \
// android.hardware.drm@1.0-service.widevine \
// move_widevine_data.sh
//
// In addition, vendor needs to update device SELinux policy.
//
// The mv command preserves SELinux labels(i.e. media_data_file).
// We need to run restorecon to put the correct context after the move.
// However, restorecon is not implemented for /vendor/bin, so we put
// the script in /system/bin.
//
// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
// CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
// DEPENDING ON IT IN YOUR PROJECT. ***
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "vendor_widevine_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
// legacy_by_exception_only (by exception only)
default_applicable_licenses: ["vendor_widevine_license"],
}
sh_binary {
name: "move_widevine_data",
src: "move_widevine_data.sh",
owner: "widevine",
}
// ----------------------------------------------------------------------------
soong_config_module_type {
name: "common_widevine_service",
module_type: "cc_defaults",
config_namespace: "ANDROID",
bool_variables: ["TARGET_ENABLE_MEDIADRM_64"],
properties: ["compile_multilib"],
}
common_widevine_service {
name: "common_widevine_service-multilib-both",
compile_multilib: "prefer32",
soong_config_variables: {
TARGET_ENABLE_MEDIADRM_64: {
compile_multilib: "both",
},
},
}
common_widevine_service {
name: "common_widevine_service-multilib-first",
compile_multilib: "prefer32",
soong_config_variables: {
TARGET_ENABLE_MEDIADRM_64: {
compile_multilib: "first",
},
},
}
cc_defaults {
name: "common_widevine_service-multilib-defaults@1.3",
owner: "widevine",
proprietary: true,
relative_install_path: "hw",
include_dirs: [
"vendor/widevine/libwvdrmengine/include_hidl",
"vendor/widevine/libwvdrmengine/mediadrm/include_hidl",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
header_libs: ["libstagefright_foundation_headers"],
shared_libs: [
"android.hardware.drm@1.0",
"android.hardware.drm@1.1",
"android.hardware.drm@1.2",
"android.hardware.drm@1.3",
"libbase",
"libhidlbase",
"liblog",
"libutils",
"libbinder",
],
}
cc_defaults {
name: "common_widevine_service-multilib-defaults-aidl",
owner: "widevine",
proprietary: true,
relative_install_path: "hw",
include_dirs: [
"vendor/widevine/libwvdrmengine/aidl_include",
"vendor/widevine/libwvdrmengine/mediadrm/aidl_include",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
header_libs: ["libstagefright_foundation_headers"],
shared_libs: [
"android.hardware.drm-V1-ndk",
"libbase",
"libbinder_ndk",
"liblog",
"libhwbinder",
"libutils",
"libwvaidl",
],
}
cc_defaults {
name: "common_widevine_service-multilib-defaults",
defaults: [
"common_widevine_service-multilib-defaults@1.3",
],
shared_libs: [
"android.hardware.drm@1.4",
"libwvhidl",
],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.2-service.widevine
//
cc_binary {
name: "android.hardware.drm@1.2-service.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/service.cpp"],
init_rc: ["src_hidl/android.hardware.drm@1.2-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.2-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.2-service-lazy.widevine
//
cc_binary {
name: "android.hardware.drm@1.2-service-lazy.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/serviceLazy.cpp"],
overrides: ["android.hardware.drm@1.2-service.widevine"],
init_rc: ["src_hidl/android.hardware.drm@1.2-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.2-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.3-service.widevine
//
cc_binary {
name: "android.hardware.drm@1.3-service.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults@1.3",
],
srcs: ["src_hidl/service@1.3.cpp"],
shared_libs: ["libwvhidl@1.3"],
init_rc: ["src_hidl/android.hardware.drm@1.3-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.3-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.3-service-lazy.widevine
//
cc_binary {
name: "android.hardware.drm@1.3-service-lazy.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/serviceLazy.cpp"],
overrides: ["android.hardware.drm@1.3-service.widevine"],
init_rc: ["src_hidl/android.hardware.drm@1.3-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.4-service.widevine
//
cc_binary {
name: "android.hardware.drm@1.4-service.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/service.cpp"],
init_rc: ["src_hidl/android.hardware.drm@1.4-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm@1.4-service-lazy.widevine
//
cc_binary {
name: "android.hardware.drm@1.4-service-lazy.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults",
],
srcs: ["src_hidl/serviceLazy.cpp"],
overrides: ["android.hardware.drm@1.4-service.widevine"],
init_rc: ["src_hidl/android.hardware.drm@1.4-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm@1.4-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm-service.widevine
//
cc_binary {
name: "android.hardware.drm-service.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults-aidl",
],
srcs: ["aidl_src/service.cpp"],
shared_libs: ["libbinder"],
init_rc: ["aidl_src/android.hardware.drm-service.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds android.hardware.drm-service-lazy.widevine
//
cc_binary {
name: "android.hardware.drm-service-lazy.widevine",
defaults: [
"common_widevine_service-multilib-first",
"common_widevine_service-multilib-defaults-aidl",
],
srcs: ["aidl_src/serviceLazy.cpp"],
shared_libs: ["libbinder"],
init_rc: ["aidl_src/android.hardware.drm-service-lazy.widevine.rc"],
vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"],
}
// ----------------------------------------------------------------------------
// Builds libcdm_utils.a and libcdm_utils_hidl.a
//
cdm_util_src_files = [
"cdm/core/src/properties.cpp",
"cdm/src/properties_android.cpp",
"cdm/src/timer.cpp",
"cdm/util/src/cdm_random.cpp",
"cdm/util/src/clock.cpp",
"cdm/util/src/file_store.cpp",
"cdm/util/src/file_utils.cpp",
"cdm/util/src/log.cpp",
"cdm/util/src/platform.cpp",
"cdm/util/src/rw_lock.cpp",
"cdm/util/src/string_conversions.cpp",
]
cc_library_static {
name: "libcdm_utils_hidl",
proprietary: true,
include_dirs: [
"vendor/widevine/libwvdrmengine/cdm/core/include",
"vendor/widevine/libwvdrmengine/cdm/include",
"vendor/widevine/libwvdrmengine/cdm/util/include",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
header_libs: [
"libbase_headers",
"libutils_headers",
],
shared_libs: [
"libbinder",
"libcrypto",
"libhidlbase",
"liblog",
],
cflags: [
"-DCORE_UTIL_IMPLEMENTATION",
"-DIS_HIDL",
],
srcs: cdm_util_src_files,
}
cc_library_static {
name: "libcdm_utils",
proprietary: true,
include_dirs: [
"vendor/widevine/libwvdrmengine/cdm/core/include",
"vendor/widevine/libwvdrmengine/cdm/include",
"vendor/widevine/libwvdrmengine/cdm/util/include",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
header_libs: [
"libbase_headers",
"libutils_headers",
],
shared_libs: [
"libbinder",
"libcrypto",
"libhidlbase",
"liblog",
],
cflags: ["-DCORE_UTIL_IMPLEMENTATION"],
srcs: cdm_util_src_files,
}
// ----------------------------------------------------------------------------
// Builds libwvhidl.so
//
cc_library_shared {
name: "libwvhidl",
srcs: [
"src/WVCDMSingleton.cpp",
"src/WVUUID.cpp",
"src_hidl/wv_metrics.cpp",
"src_hidl/WVCreatePluginFactories.cpp",
"src_hidl/WVCryptoFactory.cpp",
"src_hidl/WVDrmFactory.cpp",
],
include_dirs: [
"frameworks/av/include",
"frameworks/native/include",
"vendor/widevine/libwvdrmengine/cdm/core/include",
"vendor/widevine/libwvdrmengine/cdm/metrics/include",
"vendor/widevine/libwvdrmengine/cdm/util/include",
"vendor/widevine/libwvdrmengine/cdm/include",
"vendor/widevine/libwvdrmengine/include",
"vendor/widevine/libwvdrmengine/include_hidl",
"vendor/widevine/libwvdrmengine/mediacrypto/include_hidl",
"vendor/widevine/libwvdrmengine/mediadrm/include_hidl",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
static_libs: [
"libcdm",
"libcdm_protos",
"libcdm_utils_hidl",
"libjsmn",
"libwvdrmcryptoplugin_hidl",
"libwvdrmdrmplugin_hidl",
"libwvlevel3",
"libwv_odk",
],
shared_libs: [
"android.hardware.drm@1.0",
"android.hardware.drm@1.1",
"android.hardware.drm@1.2",
"android.hardware.drm@1.3",
"android.hardware.drm@1.4",
"android.hidl.memory@1.0",
"libbase",
"libcrypto",
"libcutils",
"libdl",
"libhidlbase",
"libhidlmemory",
"liblog",
"libprotobuf-cpp-lite",
"libutils",
],
header_libs: ["libstagefright_foundation_headers"],
owner: "widevine",
proprietary: true,
}
cc_prebuilt_library_shared {
name: "libwvhidl@1.3",
target: {
android_arm: {
srcs: ["prebuilts_hidl/arm/libwvhidl@1.3.so"],
},
android_arm64: {
srcs: ["prebuilts_hidl/arm64/libwvhidl@1.3.so"],
},
android_x86: {
srcs: ["prebuilts_hidl/x86/libwvhidl@1.3.so"],
},
android_x86_64: {
srcs: ["prebuilts_hidl/x86_64/libwvhidl@1.3.so"],
},
},
shared_libs: [
"android.hardware.drm@1.0",
"android.hardware.drm@1.1",
"android.hardware.drm@1.2",
"android.hardware.drm@1.3",
"android.hidl.memory@1.0",
"libbase",
"libcrypto",
"libcutils",
"libdl",
"libhidlbase",
"libhidlmemory",
"liblog",
"libprotobuf-cpp-lite",
"libutils",
],
owner: "widevine",
proprietary: true,
}
// ----------------------------------------------------------------------------
// Builds libwvaidl.so
//
cc_library_shared {
name: "libwvaidl",
srcs: [
"src/WVCDMSingleton.cpp",
"src/WVUUID.cpp",
"aidl_src/wv_metrics.cpp",
"aidl_src/WVCreatePluginFactories.cpp",
"aidl_src/WVDrmFactory.cpp",
],
include_dirs: [
"frameworks/av/include",
"frameworks/native/include",
"vendor/widevine/libwvdrmengine/cdm/core/include",
"vendor/widevine/libwvdrmengine/cdm/metrics/include",
"vendor/widevine/libwvdrmengine/cdm/util/include",
"vendor/widevine/libwvdrmengine/cdm/include",
"vendor/widevine/libwvdrmengine/aidl_include",
"vendor/widevine/libwvdrmengine/include",
"vendor/widevine/libwvdrmengine/mediacrypto/aidl_include",
"vendor/widevine/libwvdrmengine/mediadrm/aidl_include",
"vendor/widevine/libwvdrmengine/oemcrypto/include",
],
static_libs: [
"android.hardware.common-V2-ndk",
"libaidlcommonsupport",
"libcdm",
"libcdm_protos",
"libcdm_utils",
"libjsmn",
"libwvdrmcryptoplugin_aidl",
"libwvdrmdrmplugin_aidl",
"libwvlevel3",
"libwv_odk",
],
shared_libs: [
"android.hardware.drm-V1-ndk",
"libbase",
"libbinder",
"libbinder_ndk",
"libcrypto",
"libcutils",
"libdl",
"liblog",
"libprotobuf-cpp-lite",
"libutils",
],
header_libs: ["libstagefright_foundation_headers"],
owner: "widevine",
proprietary: true,
}
phony {
name: "android.hardware.drm@latest-service.widevine",
required: [
"android.hardware.drm@1.4-service.widevine",
],
}