#
# Description:
#   gemmlowp is a small self-contained low-precision GEMM library.
#   https://github.com/google/gemmlowp

licenses(["notice"])  # Apache 2.0

exports_files(["LICENSE"])

config_setting(
    name = "windows",
    values = {
        "cpu": "x64_windows",
    },
)

config_setting(
    name = "android",
    values = {
        "crosstool_top": "//external:android/crosstool",
    },
)

load(":flags.bzl", "LIB_COPTS", "LIB_LINKOPTS", "BIN_LINKOPTS")

filegroup(
    name = "gemmlowp_private_headers",
    srcs = glob([
        "fixedpoint/*.h",
        "internal/*.h",
    ]),
    visibility = ["//visibility:private"],
)

filegroup(
    name = "gemmlowp_public_headers",
    srcs = glob([
        "meta/*.h",
        "public/*.h",
        "profiling/*.h",
    ]),
    visibility = ["//visibility:public"],
)

filegroup(
    name = "gemmlowp_headers",
    srcs = [
        ":gemmlowp_private_headers",
        ":gemmlowp_public_headers",
    ],
    visibility = ["//visibility:private"],
)

filegroup(
    name = "eight_bit_int_gemm_headers",
    srcs = glob(["eight_bit_int_gemm/*.h"]),
    visibility = ["//visibility:private"],
)

filegroup(
    name = "eight_bit_int_gemm_public_headers",
    srcs = [
        ":eight_bit_int_gemm_headers",
        ":gemmlowp_public_headers",
    ],
    visibility = ["//visibility:public"],
)

filegroup(
    name = "eight_bit_int_gemm_sources_with_no_headers",
    srcs = glob(["eight_bit_int_gemm/*.cc"]),
    visibility = ["//visibility:private"],
)

filegroup(
    name = "eight_bit_int_gemm_sources",
    srcs = [
        ":eight_bit_int_gemm_headers",
        ":eight_bit_int_gemm_sources_with_no_headers",
        ":gemmlowp_headers",
    ],
    visibility = ["//visibility:public"],
)

filegroup(
    name = "gemmlowp_test_headers",
    srcs = [":gemmlowp_headers"] + glob(["test/*.h"]),
    visibility = ["//visibility:private"],
)

filegroup(
    name = "fixedpoint_private_headers",
    srcs = glob([
        "fixedpoint/*.h",
    ]) + [
        "internal/common.h",
        "internal/detect_platform.h",
    ],
    visibility = ["//visibility:private"],
)

cc_library(
    name = "fixedpoint",
    srcs = [
        ":fixedpoint_private_headers",
    ],
    hdrs = [
        "fixedpoint/fixedpoint.h",
    ],
    # Blaze warning:
    # "setting 'linkstatic=1' is recommended if there are no object files."
    linkstatic = 1,
    visibility = ["//visibility:public"],
)

cc_library(
    name = "gemmlowp",
    hdrs = [":gemmlowp_headers"],
    linkopts = LIB_LINKOPTS,
    # Blaze warning:
    # "setting 'linkstatic=1' is recommended if there are no object files."
    linkstatic = 1,
    visibility = ["//visibility:public"],
    deps = [":fixedpoint"],
)

cc_library(
    name = "eight_bit_int_gemm",
    srcs = [":eight_bit_int_gemm_sources_with_no_headers"],
    hdrs = [
        ":eight_bit_int_gemm_headers",
        ":gemmlowp_private_headers",
        ":gemmlowp_public_headers",
    ],
    copts = LIB_COPTS,
    linkopts = LIB_LINKOPTS,
    visibility = ["//visibility:public"],
    deps = [":gemmlowp"],
)

cc_library(
    name = "profiler",
    hdrs = [
        "profiling/instrumentation.h",
        "profiling/profiler.h",
        "profiling/pthread_everywhere.h",
    ],
    visibility = ["//visibility:public"],
)

# The main gemmlowp unit test
cc_test(
    name = "test",
    size = "medium",
    srcs = [
        "test/test.cc",
        "test/test_data.cc",
        ":gemmlowp_test_headers",
    ],
    copts = ["-O3"],
    deps = [":eight_bit_int_gemm"],
)

# Math helpers test
cc_test(
    name = "test_math_helpers",
    size = "small",
    srcs = [
        "test/test_math_helpers.cc",
        ":gemmlowp_test_headers",
    ],
)

# BlockingCounter test
cc_test(
    name = "test_blocking_counter",
    size = "medium",
    srcs = [
        "test/test_blocking_counter.cc",
        ":gemmlowp_test_headers",
    ],
    linkopts = BIN_LINKOPTS,
)

# Allocator test
cc_test(
    name = "test_allocator",
    size = "small",
    srcs = [
        "test/test_allocator.cc",
        ":gemmlowp_test_headers",
    ],
)

# FixedPoint test
cc_test(
    name = "test_fixedpoint",
    size = "small",
    srcs = [
        "test/test_fixedpoint.cc",
        ":gemmlowp_test_headers",
    ],
)

# Benchmark
cc_binary(
    name = "benchmark",
    srcs = [
        "test/benchmark.cc",
        ":gemmlowp_test_headers",
    ],
    copts = [
        "-O3",
        "-DNDEBUG",
    ],
    linkopts = BIN_LINKOPTS,
)

# Benchmark
cc_binary(
    name = "benchmark_profile",
    srcs = [
        "test/benchmark.cc",
        ":gemmlowp_test_headers",
    ],
    copts = [
        "-O3",
        "-DNDEBUG",
        "-DGEMMLOWP_TEST_PROFILE",
    ],
    linkopts = BIN_LINKOPTS,
)
