/*
 * Copyright 2017 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 {
    // Inherits all licenses from parent to get Apache 2.0 and package name
    default_applicable_licenses: [
        "packages_modules_NeuralNetworks_license",
    ],
}

cc_library_static {
    name: "neuralnetworks_canonical_sample_driver",
    defaults: ["neuralnetworks_defaults"],
    host_supported: true,
    vendor_available: true,
    // b/109953668, disable OpenMP
    // openmp: true,
    srcs: [
        "Canonical*.cpp",
        "LimitedSupportDevice.cpp",
    ],
    header_libs: ["libneuralnetworks_headers"],
    export_include_dirs: ["."],
    static_libs: ["libneuralnetworks_common"],
    shared_libs: [
        "libbase",
    ],
    target: {
        android: {
            shared_libs: [
                "libnativewindow",
            ],
        },
        host: {
            cflags: [
                "-D__INTRODUCED_IN(n)=",
            ],
        },
    },
}

cc_library_static {
    name: "neuralnetworks_canonical_sample_driver_cl",
    defaults: ["neuralnetworks_cl_defaults"],
    // b/109953668, disable OpenMP
    // openmp: true,
    srcs: [
        "Canonical*.cpp",
        "LimitedSupportDevice.cpp",
    ],
    header_libs: ["libneuralnetworks_headers_ndk"],
    export_include_dirs: ["."],
    static_libs: [
        "libbase_ndk",
        "libneuralnetworks_common_cl",
        "neuralnetworks_types_cl",
    ],
    shared_libs: [
        "libnativewindow",
    ],
}

// neuralnetworks_sample_sl_driver is an example NNAPI Support Library object.
// In general, the SL should be built against the _cl variants, including:
// * neuralnetworks_types_cl
// * libneuralnetworks_common_cl
// * libneuralnetworks_cl
//
// neuralnetworks_sample_sl_driver is not vendor_available, so it is not able
// to be used directly by the build system for a vendor service. This SL object
// is used as a prebuilt in packages/modules/NeuralNetworks/driver/sample_shim/.
//
// To see an example where the driver code is available as a vendor service
// directly in the build system, refer to how the sAIDL adapter is used in
// android.hardware.neuralnetworks-service-sample-limited in the file
// packages/modules/NeuralNetworks/driver/sample_aidl/Android.bp.
cc_library_shared {
    name: "neuralnetworks_sample_sl_driver",
    defaults: ["neuralnetworks_cl_defaults"],
    srcs: ["SampleDriverSL.cpp"],
    shared_libs: [
        "liblog",
        "libnativewindow",
    ],
    // Change the soname, this library will be added as cc_prebuilt_library_shared
    // with different name to android.hardware.neuralnetworks-shim-service-sample
    ldflags: [
        "-Wl,-soname,neuralnetworks_sample_sl_driver_prebuilt.so",
    ],
    static_libs: [
        "libbase_ndk",
        "libcrypto_static",
        "libneuralnetworks_common_cl_cpu",
        "libtflite_static",
        "neuralnetworks_canonical_sample_driver_cl",
        "neuralnetworks_types_cl",
    ],
    whole_static_libs: [
        "libneuralnetworks_cl",
    ],
}
