# ----------------------------------------------------------------------------- # CDM top level makefile # LOCAL_PATH := $(call my-dir) # ----------------------------------------------------------------------------- # 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. # include $(CLEAR_VARS) LOCAL_SRC_FILES := move_widevine_data.sh LOCAL_MODULE_CLASS := EXECUTABLES LOCAL_MODULE := $(LOCAL_SRC_FILES) LOCAL_MODULE_TAGS := optional LOCAL_MODULE_OWNER := widevine include $(BUILD_PREBUILT) # ----------------------------------------------------------------------------- # Builds android.hardware.drm@1.1-service.widevine # include $(CLEAR_VARS) LOCAL_SRC_FILES := src_hidl/service.cpp LOCAL_C_INCLUDES := \ vendor/widevine/libwvdrmengine/include_hidl \ vendor/widevine/libwvdrmengine/mediadrm/include \ vendor/widevine/libwvdrmengine/oemcrypto/include \ LOCAL_SHARED_LIBRARIES := \ android.hardware.drm@1.0 \ android.hardware.drm@1.1 \ libbase \ libhidltransport \ libhwbinder \ liblog \ libutils \ libwvhidl \ libbinder \ LOCAL_HEADER_LIBRARIES := \ libstagefright_foundation_headers LOCAL_MODULE := android.hardware.drm@1.1-service.widevine LOCAL_INIT_RC := src_hidl/android.hardware.drm@1.1-service.widevine.rc LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/bin/hw LOCAL_PROPRIETARY_MODULE := true LOCAL_MODULE_OWNER := widevine ifneq ($(TARGET_ENABLE_MEDIADRM_64), true) LOCAL_MODULE_TARGET_ARCH := arm x86 mips endif include $(BUILD_EXECUTABLE) # ----------------------------------------------------------------------------- # Builds libcdm_utils.a # include $(CLEAR_VARS) LOCAL_MODULE := libcdm_utils LOCAL_MODULE_CLASS := STATIC_LIBRARIES LOCAL_PROPRIETARY_MODULE := true LOCAL_STATIC_LIBRARIES := libcrypto LOCAL_C_INCLUDES := \ vendor/widevine/libwvdrmengine/cdm/core/include \ vendor/widevine/libwvdrmengine/cdm/include \ vendor/widevine/libwvdrmengine/cdm/util/include \ vendor/widevine/libwvdrmengine/oemcrypto/include \ LOCAL_HEADER_LIBRARIES := \ libutils_headers \ LOCAL_SHARED_LIBRARIES := \ liblog SRC_DIR := cdm/src UTIL_SRC_DIR := cdm/util/src CORE_SRC_DIR := cdm/core/src LOCAL_SRC_FILES := \ $(CORE_SRC_DIR)/properties.cpp \ $(UTIL_SRC_DIR)/string_conversions.cpp \ $(UTIL_SRC_DIR)/clock.cpp \ $(UTIL_SRC_DIR)/file_store.cpp \ $(UTIL_SRC_DIR)/file_utils.cpp \ $(UTIL_SRC_DIR)/lock.cpp \ $(UTIL_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_PROPRIETARY_MODULE := true CORE_PROTO_SRC_FILES := $(call all-proto-files-under, cdm/core/src) METRICS_PROTO_SRC_FILES := $(call all-proto-files-under, cdm/metrics/src) LOCAL_SRC_FILES := $(CORE_PROTO_SRC_FILES) $(METRICS_PROTO_SRC_FILES) 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 \ $(generated_sources_dir)/proto/$(LOCAL_PATH)/cdm/metrics/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/util/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 \ libjsmn \ libwvdrmcryptoplugin \ libwvdrmdrmplugin \ libwvlevel3 \ LOCAL_SHARED_LIBRARIES := \ libcutils \ libdl \ liblog \ libprotobuf-cpp-lite \ libstagefright_foundation \ libutils \ LOCAL_HEADER_LIBRARIES := \ libutils_headers \ libstagefright_headers LOCAL_MODULE := libwvdrmengine LOCAL_MODULE_RELATIVE_PATH := mediadrm LOCAL_MODULE_TAGS := optional LOCAL_MODULE_OWNER := widevine LOCAL_PROPRIETARY_MODULE := true include $(BUILD_SHARED_LIBRARY) # ----------------------------------------------------------------------------- # Builds libwvhidl.so # include $(CLEAR_VARS) LOCAL_SRC_FILES := \ src/WVCDMSingleton.cpp \ src/WVUUID.cpp \ src_hidl/WVCreatePluginFactories.cpp \ src_hidl/WVCryptoFactory.cpp \ src_hidl/WVDrmFactory.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/util/include \ vendor/widevine/libwvdrmengine/cdm/include \ vendor/widevine/libwvdrmengine/include_hidl \ vendor/widevine/libwvdrmengine/include \ vendor/widevine/libwvdrmengine/mediacrypto/include_hidl \ vendor/widevine/libwvdrmengine/mediacrypto/include \ vendor/widevine/libwvdrmengine/mediadrm/include_hidl \ vendor/widevine/libwvdrmengine/mediadrm/include \ vendor/widevine/libwvdrmengine/oemcrypto/include \ LOCAL_STATIC_LIBRARIES := \ libcdm \ libcdm_protos \ libcdm_utils \ libcrypto \ libjsmn \ libwvdrmcryptoplugin_hidl \ libwvdrmdrmplugin_hidl \ libwvlevel3 \ LOCAL_SHARED_LIBRARIES := \ android.hardware.drm@1.0 \ android.hardware.drm@1.1 \ android.hidl.memory@1.0 \ libcutils \ libdl \ libhidlbase \ libhidlmemory \ libhidltransport \ libhwbinder \ liblog \ libprotobuf-cpp-lite \ libutils \ LOCAL_MODULE := libwvhidl 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 include vendor/widevine/libwvdrmengine/vts/vendor_module/Android.mk