blob: 17c64de154a636fd3c88fa4158054e2a35396834 [file] [log] [blame]
# cpu_features, a cross platform C89 library to get cpu features at runtime.
package(
default_copts = [
"-DDISABLE_GOOGLE_GLOBAL_USING_DECLARATIONS",
"-Wno-implicit-fallthrough",
"-Ithird_party/cpu_features/include",
],
default_visibility = ["//visibility:public"],
features = [
"-parse_headers", # disabled because tests (C++) depends on C target compiled with -std=gnu89.
"-layering_check", # disabled because it depends on parse_headers.
],
)
licenses(["notice"])
# MOE:begin_strip
filegroup(
name = "opensource_filegroup",
srcs = [
".clang-format",
"BUILD",
"CMakeLists.txt",
"CMakeLists.txt.in",
"CONTRIBUTING.md",
"LICENSE",
"OWNERS",
"README.md",
"WORKSPACE",
"include/cpu_features_macros.h",
"include/cpuinfo_aarch64.h",
"include/cpuinfo_arm.h",
"include/cpuinfo_mips.h",
"include/cpuinfo_x86.h",
"include/internal/bit_utils.h",
"include/internal/cpuid_x86.h",
"include/internal/filesystem.h",
"include/internal/hwcaps.h",
"include/internal/linux_features_aggregator.h",
"include/internal/stack_line_reader.h",
"include/internal/string_view.h",
"src/cpuid_x86_clang.c",
"src/cpuid_x86_gcc.c",
"src/cpuid_x86_msvc.c",
"src/cpuinfo_aarch64.c",
"src/cpuinfo_arm.c",
"src/cpuinfo_mips.c",
"src/cpuinfo_x86.c",
"src/filesystem.c",
"src/hwcaps.c",
"src/linux_features_aggregator.c",
"src/list_cpu_features.cc",
"src/stack_line_reader.c",
"src/string_view.c",
"test/CMakeLists.txt",
"test/bit_utils_test.cc",
"test/cpuinfo_aarch64_test.cc",
"test/cpuinfo_arm_test.cc",
"test/cpuinfo_mips_test.cc",
"test/cpuinfo_x86_test.cc",
"test/filesystem_for_testing.cc",
"test/filesystem_for_testing.h",
"test/hwcaps_for_testing.cc",
"test/hwcaps_for_testing.h",
"test/linux_features_aggregator_test.cc",
"test/stack_line_reader_test.cc",
"test/string_view_test.cc",
],
visibility = ["//third_party/cpu_features:__subpackages__"],
)
# MOE:end_strip
exports_files(["LICENSE"])
vardef(
"GNU89_FLAGS",
"-std=gnu89 " +
"-Wall " +
"-Wdeclaration-after-statement " +
"-Wextra " +
"-Wmissing-declarations " +
"-Wmissing-prototypes " +
"-Wold-style-definition " +
"-Wshadow " +
"-Wsign-compare " +
"-Wstrict-prototypes ",
)
cc_library(
name = "cpu_features_macros",
srcs = ["include/cpu_features_macros.h"],
copts = [varref("GNU89_FLAGS")],
)
cc_library(
name = "bit_utils",
srcs = ["include/internal/bit_utils.h"],
copts = [varref("GNU89_FLAGS")],
deps = [":cpu_features_macros"],
)
cc_test(
name = "bit_utils_test",
srcs = ["test/bit_utils_test.cc"],
deps = [
":bit_utils",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "string_view",
srcs = ["src/string_view.c"],
hdrs = ["include/internal/string_view.h"],
copts = [varref("GNU89_FLAGS")],
deps = [":cpu_features_macros"],
)
cc_test(
name = "string_view_test",
srcs = ["test/string_view_test.cc"],
deps = [
":string_view",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "filesystem",
srcs = [
"include/internal/filesystem.h",
"src/filesystem.c",
],
copts = [
varref("GNU89_FLAGS"),
],
deps = [":cpu_features_macros"],
)
cc_library(
name = "filesystem_for_testing",
testonly = 1,
srcs = [
"include/internal/filesystem.h",
"test/filesystem_for_testing.cc",
"test/filesystem_for_testing.h",
],
deps = [
":cpu_features_macros",
"//base",
],
)
cc_library(
name = "stack_line_reader",
srcs = [
"include/internal/stack_line_reader.h",
"src/stack_line_reader.c",
],
copts = [varref("GNU89_FLAGS")],
defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
deps = [
":cpu_features_macros",
":filesystem",
":string_view",
],
)
cc_library(
name = "stack_line_reader_for_testing",
testonly = 1,
srcs = [
"include/internal/stack_line_reader.h",
"src/stack_line_reader.c",
],
copts = [varref("GNU89_FLAGS")],
defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
deps = [
":cpu_features_macros",
":filesystem_for_testing",
":string_view",
],
)
cc_test(
name = "stack_line_reader_test",
srcs = [
"include/internal/stack_line_reader.h",
"src/stack_line_reader.c",
"test/stack_line_reader_test.cc",
],
defines = ["STACK_LINE_READER_BUFFER_SIZE=16"],
deps = [
":cpu_features_macros",
":filesystem_for_testing",
":string_view",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "hwcaps",
srcs = [
"include/internal/hwcaps.h",
"src/hwcaps.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [
":cpu_features_macros",
":filesystem",
],
)
cc_library(
name = "hwcaps_for_testing",
testonly = 1,
srcs = ["test/hwcaps_for_testing.cc"],
hdrs = [
"include/internal/hwcaps.h",
"test/hwcaps_for_testing.h",
],
deps = [":cpu_features_macros"],
)
cc_library(
name = "linux_features_aggregator",
srcs = [
"include/internal/linux_features_aggregator.h",
"src/linux_features_aggregator.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [
":hwcaps",
":string_view",
],
)
cc_test(
name = "linux_features_aggregator_test",
srcs = ["test/linux_features_aggregator_test.cc"],
deps = [
":linux_features_aggregator",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "cpuinfo_mips",
srcs = [
"include/cpuinfo_mips.h",
"src/cpuinfo_mips.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [
":linux_features_aggregator",
":stack_line_reader",
":string_view",
],
)
cc_test(
name = "cpuinfo_mips_test",
srcs = [
"include/cpuinfo_mips.h",
"src/cpuinfo_mips.c",
"test/cpuinfo_mips_test.cc",
],
deps = [
":filesystem_for_testing",
":hwcaps_for_testing",
":linux_features_aggregator",
":stack_line_reader",
":string_view",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "cpuinfo_aarch64",
srcs = [
"include/cpuinfo_aarch64.h",
"src/cpuinfo_aarch64.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [
":linux_features_aggregator",
":stack_line_reader",
":string_view",
],
)
cc_test(
name = "cpuinfo_aarch64_test",
srcs = [
"include/cpuinfo_aarch64.h",
"src/cpuinfo_aarch64.c",
"test/cpuinfo_aarch64_test.cc",
],
deps = [
":filesystem_for_testing",
":hwcaps_for_testing",
":linux_features_aggregator",
":stack_line_reader",
":string_view",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "cpuinfo_arm",
srcs = [
"include/cpuinfo_arm.h",
"src/cpuinfo_arm.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [
":bit_utils",
":linux_features_aggregator",
":stack_line_reader",
":string_view",
],
)
cc_test(
name = "cpuinfo_arm_test",
srcs = [
"include/cpuinfo_arm.h",
"src/cpuinfo_arm.c",
"test/cpuinfo_arm_test.cc",
],
deps = [
":bit_utils",
":filesystem_for_testing",
":hwcaps_for_testing",
":linux_features_aggregator",
":stack_line_reader",
":string_view",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "cpuid_x86",
srcs = [
"include/internal/cpuid_x86.h",
"src/cpuid_x86_clang.c",
"src/cpuid_x86_gcc.c",
"src/cpuid_x86_msvc.c",
],
copts = [varref("GNU89_FLAGS")],
deps = [":cpu_features_macros"],
)
cc_library(
name = "cpuinfo_x86",
srcs = ["src/cpuinfo_x86.c"],
hdrs = ["include/cpuinfo_x86.h"],
copts = [varref("GNU89_FLAGS")],
deps = [
":bit_utils",
":cpu_features_macros",
":cpuid_x86",
],
)
cc_test(
name = "cpuinfo_x86_test",
srcs = [
"include/cpuinfo_x86.h",
"src/cpuinfo_x86.c",
"test/cpuinfo_x86_test.cc",
],
defines = ["CPU_FEATURES_TEST"],
deps = [
":bit_utils",
":cpu_features_macros",
":cpuid_x86",
"@com_google_googletest//:gtest_main",
],
)
cc_binary(
name = "list_cpu_features",
srcs = ["src/list_cpu_features.cc"],
deps = [
":cpu_features_macros",
":cpuinfo_aarch64",
":cpuinfo_arm",
":cpuinfo_mips",
":cpuinfo_x86",
],
)