# cpuinfo, a library to detect information about the host CPU
package(default_visibility = ["//visibility:public"])

licenses(["notice"])

exports_files(["LICENSE"])

C99OPTS = [
    "-std=gnu99",  # gnu99, not c99, because dprintf is used
    "-Wno-vla",
    "-D_GNU_SOURCE=1",  # to use CPU_SETSIZE
    "-DCPUINFO_INTERNAL=",
    "-DCPUINFO_PRIVATE=",
]

# Source code common to all platforms.
COMMON_SRCS = [
    "src/api.c",
    "src/init.c",
    "src/cache.c",
]

# Architecture-specific sources and headers.
X86_SRCS = [
    "src/x86/cache/descriptor.c",
    "src/x86/cache/deterministic.c",
    "src/x86/cache/init.c",
    "src/x86/info.c",
    "src/x86/init.c",
    "src/x86/isa.c",
    "src/x86/name.c",
    "src/x86/topology.c",
    "src/x86/uarch.c",
    "src/x86/vendor.c",
]

ARM_SRCS = [
    "src/arm/cache.c",
    "src/arm/uarch.c",
]

# Platform-specific sources and headers
LINUX_SRCS = [
    "src/linux/cpulist.c",
    "src/linux/multiline.c",
    "src/linux/processors.c",
    "src/linux/smallfile.c",
]

MOCK_LINUX_SRCS = [
    "src/linux/mockfile.c",
]

MACH_SRCS = [
    "src/mach/topology.c",
]

EMSCRIPTEN_SRCS = [
    "src/emscripten/init.c",
]

LINUX_X86_SRCS = [
    "src/x86/linux/cpuinfo.c",
    "src/x86/linux/init.c",
]

LINUX_ARM_SRCS = [
    "src/arm/linux/chipset.c",
    "src/arm/linux/clusters.c",
    "src/arm/linux/cpuinfo.c",
    "src/arm/linux/hwcap.c",
    "src/arm/linux/init.c",
    "src/arm/linux/midr.c",
]

LINUX_ARM32_SRCS = LINUX_ARM_SRCS + ["src/arm/linux/aarch32-isa.c"]

LINUX_ARM64_SRCS = LINUX_ARM_SRCS + ["src/arm/linux/aarch64-isa.c"]

ANDROID_ARM_SRCS = [
    "src/arm/android/properties.c",
]

WINDOWS_X86_SRCS = [
    "src/x86/windows/init.c",
]

MACH_X86_SRCS = [
    "src/x86/mach/init.c",
]

MACH_ARM_SRCS = [
    "src/arm/mach/init.c",
]

cc_library(
    name = "cpuinfo_impl",
    srcs = select({
        ":linux_x86_64": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS,
        ":linux_arm": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS,
        ":linux_armeabi": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS,
        ":linux_armhf": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS,
        ":linux_armv7a": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS,
        ":linux_aarch64": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM64_SRCS,
        ":macos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":macos_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":windows_x86_64": COMMON_SRCS + X86_SRCS + WINDOWS_X86_SRCS,
        ":android_armv7": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM32_SRCS + ANDROID_ARM_SRCS,
        ":android_arm64": COMMON_SRCS + ARM_SRCS + LINUX_SRCS + LINUX_ARM64_SRCS + ANDROID_ARM_SRCS,
        ":android_x86": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS,
        ":android_x86_64": COMMON_SRCS + X86_SRCS + LINUX_SRCS + LINUX_X86_SRCS,
        ":ios_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":ios_x86": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":ios_armv7": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":ios_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":ios_arm64e": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":ios_sim_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":watchos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":watchos_x86": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":watchos_armv7k": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":watchos_arm64_32": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":tvos_x86_64": COMMON_SRCS + X86_SRCS + MACH_SRCS + MACH_X86_SRCS,
        ":tvos_arm64": COMMON_SRCS + MACH_SRCS + MACH_ARM_SRCS,
        ":emscripten": COMMON_SRCS + EMSCRIPTEN_SRCS,
    }),
    copts = select({
        ":windows_x86_64": [],
        "//conditions:default": C99OPTS,
    }) + [
        "-Iexternal/cpuinfo/include",
        "-Iexternal/cpuinfo/src",
    ],
    linkstatic = True,
    # Headers must be in textual_hdrs to allow us to set the standard to C99
    textual_hdrs = [
        "include/cpuinfo.h",
        "src/linux/api.h",
        "src/mach/api.h",
        "src/cpuinfo/common.h",
        "src/cpuinfo/internal-api.h",
        "src/cpuinfo/log.h",
        "src/cpuinfo/utils.h",
        "src/x86/api.h",
        "src/x86/cpuid.h",
        "src/x86/linux/api.h",
        "src/arm/android/api.h",
        "src/arm/linux/api.h",
        "src/arm/linux/cp.h",
        "src/arm/api.h",
        "src/arm/midr.h",
    ],
    deps = [
        "@clog",
    ],
)

cc_library(
    name = "cpuinfo",
    hdrs = [
        "include/cpuinfo.h",
    ],
    strip_include_prefix = "include",
    deps = [
        ":cpuinfo_impl",
    ],
)

############################# Build configurations #############################

config_setting(
    name = "linux_x86_64",
    values = {"cpu": "k8"},
)

config_setting(
    name = "linux_arm",
    values = {"cpu": "arm"},
)

config_setting(
    name = "linux_armeabi",
    values = {"cpu": "armeabi"},
)

config_setting(
    name = "linux_armhf",
    values = {"cpu": "armhf"},
)

config_setting(
    name = "linux_armv7a",
    values = {"cpu": "armv7a"},
)

config_setting(
    name = "linux_aarch64",
    values = {"cpu": "aarch64"},
)

config_setting(
    name = "macos_x86_64",
    values = {
        "apple_platform_type": "macos",
        "cpu": "darwin",
    },
)

config_setting(
    name = "macos_arm64",
    values = {
        "apple_platform_type": "macos",
        "cpu": "darwin_arm64",
    },
)

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

config_setting(
    name = "android_armv7",
    values = {
        "crosstool_top": "//external:android/crosstool",
        "cpu": "armeabi-v7a",
    },
    visibility = ["//visibility:public"],
)

config_setting(
    name = "android_arm64",
    values = {
        "crosstool_top": "//external:android/crosstool",
        "cpu": "arm64-v8a",
    },
    visibility = ["//visibility:public"],
)

config_setting(
    name = "android_x86",
    values = {
        "crosstool_top": "//external:android/crosstool",
        "cpu": "x86",
    },
    visibility = ["//visibility:public"],
)

config_setting(
    name = "android_x86_64",
    values = {
        "crosstool_top": "//external:android/crosstool",
        "cpu": "x86_64",
    },
    visibility = ["//visibility:public"],
)

config_setting(
    name = "ios_armv7",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_armv7",
    },
)

config_setting(
    name = "ios_arm64",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_arm64",
    },
)

config_setting(
    name = "ios_arm64e",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_arm64e",
    },
)

config_setting(
    name = "ios_sim_arm64",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_sim_arm64",
    },
)

config_setting(
    name = "ios_x86",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_i386",
    },
)

config_setting(
    name = "ios_x86_64",
    values = {
        "apple_platform_type": "ios",
        "cpu": "ios_x86_64",
    },
)

config_setting(
    name = "watchos_armv7k",
    values = {
        "apple_platform_type": "watchos",
        "cpu": "watchos_armv7k",
    },
)

config_setting(
    name = "watchos_arm64_32",
    values = {
        "apple_platform_type": "watchos",
        "cpu": "watchos_arm64_32",
    },
)

config_setting(
    name = "watchos_x86",
    values = {
        "apple_platform_type": "watchos",
        "cpu": "watchos_i386",
    },
)

config_setting(
    name = "watchos_x86_64",
    values = {
        "apple_platform_type": "watchos",
        "cpu": "watchos_x86_64",
    },
)

config_setting(
    name = "tvos_arm64",
    values = {
        "apple_platform_type": "tvos",
        "cpu": "tvos_arm64",
    },
)

config_setting(
    name = "tvos_x86_64",
    values = {
        "apple_platform_type": "tvos",
        "cpu": "tvos_x86_64",
    },
)

config_setting(
    name = "emscripten",
    values = {"crosstool_top": "//toolchain:emscripten"},
)
