//
// Copyright (C) 2013 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "prebuilts_sdk_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    //   SPDX-license-identifier-BSD
    //   SPDX-license-identifier-MIT
    //   SPDX-license-identifier-NCSA
    default_applicable_licenses: ["prebuilts_sdk_license"],
}

cc_prebuilt_library_shared {
    name: "librsjni",
    sdk_version: "23",
    arch: {
        arm: {
            srcs: ["lib/arm/librsjni.so"],
        },
        arm64: {
            srcs: ["lib/arm64/librsjni.so"],
        },
        x86: {
            srcs: ["lib/x86/librsjni.so"],
        },
        x86_64: {
            srcs: ["lib/x86_64/librsjni.so"],
        },
    },
}

//#################################
cc_prebuilt_library_shared {
    name: "libRSSupport",
    sdk_version: "23",
    arch: {
        arm: {
            srcs: ["lib/arm/libRSSupport.so"],
        },
        arm64: {
            srcs: ["lib/arm64/libRSSupport.so"],
        },
        x86: {
            srcs: ["lib/x86/libRSSupport.so"],
        },
        x86_64: {
            srcs: ["lib/x86_64/libRSSupport.so"],
        },
    },
}

//#################################
cc_prebuilt_library_shared {
    name: "libRSSupportIO",
    sdk_version: "23",
    arch: {
        arm: {
            srcs: ["lib/arm/libRSSupportIO.so"],
        },
        arm64: {
            srcs: ["lib/arm64/libRSSupportIO.so"],
        },
        x86: {
            srcs: ["lib/x86/libRSSupportIO.so"],
        },
        x86_64: {
            srcs: ["lib/x86_64/libRSSupportIO.so"],
        },
    },
}

//#################################
java_import {
    name: "android-support-v8-renderscript",
    jars: ["lib/javalib.jar"],

    // 23 as specified at frameworks/rs/support/Android.mk
    sdk_version: "23",
}

//#################################
java_import {
    name: "android-support-v8-renderscript-legacy",
    jars: ["lib/javalib_legacy.jar"],

    // 23 as specified at frameworks/rs/support/Android.mk
    sdk_version: "23",
}

//#################################
genrule {
    name: "renderscript_sdk_prebuilts",
    visibility: ["//development/build"],
    tools: ["soong_zip", "zip2zip"],
    cmd: "echo $(in) >$(genDir)/list && " +
        "$(location soong_zip) -o $(out).unmapped -C prebuilts/sdk/renderscript/lib -l $(genDir)/list && " +
        "$(location zip2zip) -i $(out).unmapped -o $(out)" +
        " javalib.jar:renderscript/lib/androidx-rs.jar" +
        " javalib_legacy.jar:renderscript/lib/renderscript-v8.jar" +
        " arm/libc.so:renderscript/lib/intermediates/armeabi-v7a/libc.so" +
        " arm/libm.so:renderscript/lib/intermediates/armeabi-v7a/libm.so" +
        " arm/libcompiler_rt.a:renderscript/lib/intermediates/armeabi-v7a/libcompiler_rt.a" +
        " arm/libRSSupport.so:renderscript/lib/packaged/armeabi-v7a/libRSSupport.so" +
        " arm/librsjni.so:renderscript/lib/packaged/armeabi-v7a/librsjni.so" +
        " arm/librsjni_androidx.so:renderscript/lib/packaged/armeabi-v7a/librsjni_androidx.so" +
        " arm/libblasV8.so:renderscript/lib/blas/armeabi-v7a/libblasV8.so" +
        " arm/librsrt_arm.bc:renderscript/lib/bc/armeabi-v7a/libclcore.bc" +
        " x86/libc.so:renderscript/lib/intermediates/x86/libc.so" +
        " x86/libm.so:renderscript/lib/intermediates/x86/libm.so" +
        " x86/libcompiler_rt.a:renderscript/lib/intermediates/x86/libcompiler_rt.a" +
        " x86/libRSSupport.so:renderscript/lib/packaged/x86/libRSSupport.so" +
        " x86/librsjni.so:renderscript/lib/packaged/x86/librsjni.so" +
        " x86/librsjni_androidx.so:renderscript/lib/packaged/x86/librsjni_androidx.so" +
        " x86/libblasV8.so:renderscript/lib/blas/x86/libblasV8.so" +
        " x86/librsrt_x86.bc:renderscript/lib/bc/x86/libclcore.bc" +
        " arm64/libc.so:renderscript/lib/intermediates/arm64-v8a/libc.so" +
        " arm64/libm.so:renderscript/lib/intermediates/arm64-v8a/libm.so" +
        " arm64/libcompiler_rt.a:renderscript/lib/intermediates/arm64-v8a/libcompiler_rt.a" +
        " arm64/libRSSupport.so:renderscript/lib/packaged/arm64-v8a/libRSSupport.so" +
        " arm64/librsjni.so:renderscript/lib/packaged/arm64-v8a/librsjni.so" +
        " arm64/librsjni_androidx.so:renderscript/lib/packaged/arm64-v8a/librsjni_androidx.so" +
        " arm64/libblasV8.so:renderscript/lib/blas/arm64-v8a/libblasV8.so" +
        " arm64/librsrt_arm64.bc:renderscript/lib/bc/arm64-v8a/libclcore.bc" +
        " x86_64/libc.so:renderscript/lib/intermediates/x86_64/libc.so" +
        " x86_64/libm.so:renderscript/lib/intermediates/x86_64/libm.so" +
        " x86_64/libcompiler_rt.a:renderscript/lib/intermediates/x86_64/libcompiler_rt.a" +
        " x86_64/libRSSupport.so:renderscript/lib/packaged/x86_64/libRSSupport.so" +
        " x86_64/librsjni.so:renderscript/lib/packaged/x86_64/librsjni.so" +
        " x86_64/librsjni_androidx.so:renderscript/lib/packaged/x86_64/librsjni_androidx.so" +
        " x86_64/libblasV8.so:renderscript/lib/blas/x86_64/libblasV8.so" +
        " x86_64/librsrt_x86_64.bc:renderscript/lib/bc/x86_64/libclcore.bc",
    srcs: ["lib/**/*"],
    out: ["prebuilts.zip"],
}