(This is a merge of go/wvgerrit/23686) This patch removes the makefile lines that previously prevented the Widevine DRM Plugin from being built as 64-bit on Android. 64-bit builds are now fully supported. Only one piece of CDM code has had to change. Due to a bug in libprotobuf before v3.0, int64 values from protobufs are technically a different type from int64_t values in code on some 64-bit architectures. Both have the same in-memory representation at runtime but are seen as distinct types by the compiler. The compiler will automatically convert in most places, but template instantiation is not one of them, so a few places that passed a Protobuf int64 directly into a template had to be modified. Please note that tweaks to the mediadrmserver (not covered by this patch) are needed in order for it to run as 64-bit and load 64-bit DRM Plugins. Please also note that, as we have no 64-bit L1 OEMCrypto on any devices, using the 64-bit mediadrmserver and Widevine library will make your device fall back to L3 for the time being. Bug: 18949752 Test: OEMCrypto unit tests Test: Widevine unit tests Test: Google Play (on Marlin) Test: Widevine GTS Tests (on Marlin) Change-Id: Ib6cdf2dd1ff75a1c473cacdc5e22397caa0a656c
122 lines
3.3 KiB
Makefile
122 lines
3.3 KiB
Makefile
# -----------------------------------------------------------------------------
|
|
# CDM top level makefile
|
|
#
|
|
LOCAL_PATH := $(call my-dir)
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Builds libcdm_utils.a
|
|
#
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := libcdm_utils
|
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
|
|
|
LOCAL_STATIC_LIBRARIES := libcrypto_static
|
|
|
|
LOCAL_C_INCLUDES := \
|
|
vendor/widevine/libwvdrmengine/cdm/core/include \
|
|
vendor/widevine/libwvdrmengine/cdm/include \
|
|
vendor/widevine/libwvdrmengine/oemcrypto/include \
|
|
vendor/widevine/libwvdrmengine/third_party/stringencoders/src
|
|
|
|
SRC_DIR := cdm/src
|
|
CORE_SRC_DIR := cdm/core/src
|
|
LOCAL_SRC_FILES := \
|
|
third_party/stringencoders/src/modp_b64.cpp \
|
|
third_party/stringencoders/src/modp_b64w.cpp \
|
|
$(CORE_SRC_DIR)/properties.cpp \
|
|
$(CORE_SRC_DIR)/string_conversions.cpp \
|
|
$(SRC_DIR)/clock.cpp \
|
|
$(SRC_DIR)/file_store.cpp \
|
|
$(SRC_DIR)/file_utils.cpp \
|
|
$(SRC_DIR)/lock.cpp \
|
|
$(SRC_DIR)/log.cpp \
|
|
$(SRC_DIR)/properties_android.cpp \
|
|
$(SRC_DIR)/timer.cpp \
|
|
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Builds libcdm_protos.a
|
|
# Generates *.a, *.pb.h and *.pb.cc for *.proto files.
|
|
#
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := libcdm_protos
|
|
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
|
|
|
LOCAL_SRC_FILES := $(call all-proto-files-under, cdm/core/src)
|
|
|
|
generated_sources_dir := $(call local-generated-sources-dir)
|
|
|
|
# $(generated_sources_dir)/proto/$(LOCAL_PATH)/cdm/core/src is used
|
|
# to locate *.pb.h by cdm source
|
|
# $(generated_sources_dir)/proto is used to locate *.pb.h included
|
|
# by *.pb.cc
|
|
# The module that depends on this library will have LOCAL_C_INCLUDES prepended
|
|
# with this path.
|
|
LOCAL_EXPORT_C_INCLUDE_DIRS := \
|
|
$(generated_sources_dir)/proto \
|
|
$(generated_sources_dir)/proto/$(LOCAL_PATH)/cdm/core/src
|
|
|
|
include $(BUILD_STATIC_LIBRARY)
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Builds libwvdrmengine.so
|
|
#
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_SRC_FILES := \
|
|
src/WVCDMSingleton.cpp \
|
|
src/WVCreatePluginFactories.cpp \
|
|
src/WVCryptoFactory.cpp \
|
|
src/WVDrmFactory.cpp \
|
|
src/WVUUID.cpp
|
|
|
|
LOCAL_C_INCLUDES := \
|
|
frameworks/av/include \
|
|
frameworks/native/include \
|
|
vendor/widevine/libwvdrmengine/cdm/core/include \
|
|
vendor/widevine/libwvdrmengine/cdm/metrics/include \
|
|
vendor/widevine/libwvdrmengine/cdm/include \
|
|
vendor/widevine/libwvdrmengine/include \
|
|
vendor/widevine/libwvdrmengine/mediacrypto/include \
|
|
vendor/widevine/libwvdrmengine/mediadrm/include \
|
|
vendor/widevine/libwvdrmengine/oemcrypto/include \
|
|
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libcdm \
|
|
libcdm_protos \
|
|
libcdm_utils \
|
|
libcrypto_static \
|
|
libjsmn \
|
|
libwvlevel3 \
|
|
libwvdrmcryptoplugin \
|
|
libwvdrmdrmplugin \
|
|
|
|
LOCAL_SHARED_LIBRARIES := \
|
|
libcutils \
|
|
libdl \
|
|
liblog \
|
|
libmedia \
|
|
libprotobuf-cpp-lite \
|
|
libstagefright_foundation \
|
|
libutils \
|
|
|
|
LOCAL_MODULE := libwvdrmengine
|
|
|
|
LOCAL_MODULE_RELATIVE_PATH := mediadrm
|
|
|
|
LOCAL_MODULE_TAGS := optional
|
|
|
|
LOCAL_MODULE_OWNER := widevine
|
|
|
|
LOCAL_PROPRIETARY_MODULE := true
|
|
|
|
include $(BUILD_SHARED_LIBRARY)
|
|
|
|
include vendor/widevine/libwvdrmengine/cdm/Android.mk
|
|
include vendor/widevine/libwvdrmengine/level3/Android.mk
|
|
include vendor/widevine/libwvdrmengine/mediacrypto/Android.mk
|
|
include vendor/widevine/libwvdrmengine/mediadrm/Android.mk
|