//
// Copyright (C) 2010 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.
//

java_defaults {
    name: "bouncycastle-errorprone-defaults",
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF",  // Ignore missing @Override.
        ],
    },
}

// These cannot build in the PDK, because the PDK requires all libraries
// compile against SDK versions.
java_defaults {
    name: "bouncycastle-defaults",
    defaults: [
        "bouncycastle-errorprone-defaults",
    ],
    hostdex: true,
    target: {
        android: {
            product_variables: {
                pdk: {
                    enabled: false,
                },
            },
        },
    },
}

// A bouncycastle library in the original org.bouncycastle package for use
// outside of the platform. e.g. for host or in unbundled apps.
java_library_static {
    name: "bouncycastle-unbundled",
    defaults: ["bouncycastle-defaults"],
    host_supported: true,

    srcs: ["bcprov/src/main/java/**/*.java"],
    exclude_srcs: [
        "bcprov/src/main/java/org/bouncycastle/asn1/ocsp/**/*.java",
    ],

    sdk_version: "9",
    java_version: "1.7",
}

// The src files for bouncycastle, used to generate core platform / intra-core
// API stubs.
filegroup {
    name: "bouncycastle_java_files",
    srcs: ["android_bcprov/src/main/java/**/*.java"],
    exclude_srcs: [
        "android_bcprov/src/main/java/org/bouncycastle/asn1/ocsp/**/*.java",
    ],
}

// A bouncycastle library repackaged in com.android.org.bouncycastle for use
// in the Android platform where it is important not to conflict with the
// original org.bouncycastle package.
java_library {
    name: "bouncycastle",
    defaults: ["bouncycastle-defaults"],
    installable: true,

    srcs: [":bouncycastle_java_files"],

    no_framework_libs: true,
    java_version: "1.7",
}

// A guaranteed unstripped version of bouncycastle.
// The build system may or may not strip the bouncycastle jar, but this one will
// not be stripped. See b/24535627.
java_library {
    name: "bouncycastle-testdex",
    defaults: ["bouncycastle-defaults"],
    installable: true,

    srcs: [":bouncycastle_java_files"],

    no_framework_libs: true,
    java_version: "1.7",
}

// Bouncycastle PKIX classes repackaged in com.android.org.bouncycastle and used
// for testing.
java_library_static {
    name: "bouncycastle-bcpkix",
    defaults: ["bouncycastle-defaults"],

    srcs: ["android_bcpkix/src/main/java/**/*.java"],
    exclude_srcs: ["android_bcpkix/src/main/java/org/bouncycastle/cert/ocsp/**/*.java"],
    libs: ["bouncycastle"],

    no_framework_libs: true,
    java_version: "1.7",
}

// Bouncycastle PKIX classes in the original org.bouncycastle package for use
// outside of the platform. e.g. for host or in unbundled apps.
java_library_static {
    name: "bouncycastle-bcpkix-unbundled",
    defaults: ["bouncycastle-defaults"],
    host_supported: true,

    srcs: ["bcpkix/src/main/java/**/*.java"],
    exclude_srcs: ["bcpkix/src/main/java/org/bouncycastle/cert/ocsp/**/*.java"],
    libs: ["bouncycastle-unbundled"],

    sdk_version: "9",
}


// Bouncycastle OCSP classes repackaged in com.android.org.bouncycastle and
// used for testing.
java_library_static {
    name: "bouncycastle-ocsp",
    defaults: ["bouncycastle-defaults"],

    srcs: [
        "android_bcpkix/src/main/java/org/bouncycastle/cert/ocsp/**/*.java",
        "android_bcprov/src/main/java/org/bouncycastle/asn1/ocsp/**/*.java",
    ],

    no_framework_libs: true,
    java_version: "1.7",
}

// Bouncycastle OCSP classes in the original org.bouncycastle package for use
// outside of the platform. e.g. for host or in unbundled apps.
java_library_static {
    name: "bouncycastle-ocsp-unbundled",
    defaults: ["bouncycastle-defaults"],
    host_supported: true,

    srcs: [
        "bcpkix/src/main/java/org/bouncycastle/cert/ocsp/**/*.java",
        "bcprov/src/main/java/org/bouncycastle/asn1/ocsp/**/*.java",
    ],
    libs: [ "bouncycastle-unbundled",
            "bouncycastle-bcpkix-unbundled"
    ],

    sdk_version: "9",
}

// For compatibility with old bouncycastle-host name.
java_library_host {
    name: "bouncycastle-host",
    static_libs: ["bouncycastle-unbundled"],
}

// For compatibility with old bouncycastle-bcpkix-host name.
java_library_host {
    name: "bouncycastle-bcpkix-host",
    static_libs: ["bouncycastle-bcpkix-unbundled"],
}
