diff --git a/libwvdrmengine/Android.bp b/libwvdrmengine/Android.bp index 4e21fc5f..1f58ec20 100644 --- a/libwvdrmengine/Android.bp +++ b/libwvdrmengine/Android.bp @@ -220,6 +220,7 @@ cc_library_static { ], header_libs: [ + "jni_headers", "libbase_headers", "libutils_headers", ], @@ -252,6 +253,82 @@ filegroup { ], } +genrule { + name: "libscp_runtime_genrule_x86", + + srcs: [ + "copy_scp_runtime.sh", + ], + out: [ + "libscp_runtime_x86.a", + ], + cmd: "$(in) libscp_runtime_x86.a $(out)", +} + +genrule { + name: "libscp_runtime_genrule_x64", + + srcs: [ + "copy_scp_runtime.sh", + ], + out: [ + "libscp_runtime_x64.a", + ], + cmd: "$(in) libscp_runtime_x86_64.a $(out)", +} + +genrule { + name: "libscp_runtime_genrule_arm", + + srcs: [ + "copy_scp_runtime.sh", + ], + out: [ + "libscp_runtime_arm.a", + ], + cmd: "$(in) libscp_runtime_armeabi-v7a.a $(out)", +} + +genrule { + name: "libscp_runtime_genrule_arm64", + + srcs: [ + "copy_scp_runtime.sh", + ], + out: [ + "libscp_runtime_arm64.a", + ], + cmd: "$(in) libscp_runtime_arm64-v8a.a $(out)", +} + +cc_prebuilt_library_static { + name: "libscp_runtime", + + vendor_available: true, + arch: { + x86: { + srcs: [ + ":libscp_runtime_genrule_x86", + ], + }, + x86_64: { + srcs: [ + ":libscp_runtime_genrule_x64", + ], + }, + arm: { + srcs: [ + ":libscp_runtime_genrule_arm", + ], + }, + arm64: { + srcs: [ + ":libscp_runtime_genrule_arm64", + ], + }, + }, +} + // ---------------------------------------------------------------------------- // Builds libwvaidl.so // @@ -293,6 +370,7 @@ cc_library { "libprotobuf-cpp-lite", "libutils", "libwv_odk", + "libscp_runtime", "libwvdrmcryptoplugin_aidl", "libwvdrmdrmplugin_aidl", "libwvlevel3", @@ -309,7 +387,10 @@ cc_library { "wv_media_drm_flags_c_lib", ], - header_libs: ["libstagefright_foundation_headers"], + header_libs: [ + "jni_headers", + "libstagefright_foundation_headers", + ], owner: "widevine", diff --git a/libwvdrmengine/cdm/Android.bp b/libwvdrmengine/cdm/Android.bp index 2e6d1c1c..3aa28d58 100644 --- a/libwvdrmengine/cdm/Android.bp +++ b/libwvdrmengine/cdm/Android.bp @@ -38,7 +38,10 @@ cc_library_static { "external/protobuf/src", ], - header_libs: ["libutils_headers"], + header_libs: [ + "jni_headers", + "libutils_headers", + ], static_libs: ["libcdm_protos"], shared_libs: ["libcrypto"], diff --git a/libwvdrmengine/copy_scp_runtime.sh b/libwvdrmengine/copy_scp_runtime.sh new file mode 100755 index 00000000..36228ea4 --- /dev/null +++ b/libwvdrmengine/copy_scp_runtime.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# During the protection step, there will be a "libscp_runtime*.a" file in the +# root directory; link it to a different folder so it can be loaded with +# cc_prebuilt_library_static. During the analysis step, it doesn't exist, so +# create a placeholder archive. + +if [[ ! -e $1 ]]; then + printf '!\n' >"$1" +fi +cp "$1" "$2" diff --git a/libwvdrmengine/level3/Android.bp b/libwvdrmengine/level3/Android.bp index 272763bf..2ac99a52 100644 --- a/libwvdrmengine/level3/Android.bp +++ b/libwvdrmengine/level3/Android.bp @@ -44,6 +44,9 @@ cc_library_static { "vendor/widevine/libwvdrmengine/oemcrypto/odk/include", "vendor/widevine/libwvdrmengine/oemcrypto/odk/src", ], + header_libs: [ + "jni_headers", + ], srcs: [ "src/generate_entropy_android.cpp",