// Copyright (C) 2021 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 {
    default_applicable_licenses: ["external_ruy_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "external_ruy_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "LICENSE",
    ],
}

cc_library_headers {
    name: "libruy_headers",
    export_include_dirs: ["."],
    host_supported: true,
    vendor_available: true,
    sdk_version: "current",
}

cc_defaults {
    name: "libruy_defaults",
    host_supported: true,
    vendor_available: true,
    srcs: [
        "ruy/allocator.cc",
        "ruy/apply_multiplier.cc",
        "ruy/block_map.cc",
        "ruy/blocking_counter.cc",
        "ruy/context.cc",
        "ruy/context_get_ctx.cc",
        "ruy/cpuinfo.cc",
        "ruy/ctx.cc",
        "ruy/frontend.cc",
        "ruy/have_built_path_for_avx.cc",
        "ruy/have_built_path_for_avx2_fma.cc",
        "ruy/have_built_path_for_avx512.cc",
        "ruy/kernel_arm32.cc",
        "ruy/kernel_arm64.cc",
        "ruy/kernel_avx.cc",
        "ruy/kernel_avx2_fma.cc",
        "ruy/kernel_avx512.cc",
        "ruy/pack_arm.cc",
        "ruy/pack_avx.cc",
        "ruy/pack_avx2_fma.cc",
        "ruy/pack_avx512.cc",
        "ruy/prepacked_cache.cc",
        "ruy/prepare_packed_matrices.cc",
        "ruy/system_aligned_alloc.cc",
        "ruy/thread_pool.cc",
        "ruy/trmul.cc",
        "ruy/tune.cc",
        "ruy/wait.cc",
    ],
    cflags: [
        "-Wno-inline-asm",
    ],
    export_include_dirs: ["."],
}

cc_library_shared {
    name: "libruy",
    defaults: ["libruy_defaults"],
    double_loadable: true,
}

cc_library_static {
    name: "libruy_static",
    defaults: ["libruy_defaults"],
    sdk_version: "current",
    stl: "libc++_static",
    apex_available: [
        "//apex_available:platform",
        "com.android.extservices",
        "com.android.neuralnetworks",
    ],
    min_sdk_version: "30",
}
