blob: 804c9319f0c695d78635c58f7623b743f8c2c320 [file] [log] [blame]
// This Blueprint file loosely follows the logic of cpu_features'
// CMakeLists.txt and test/CMakeLists.txt files.
cc_defaults {
name: "cpu_features-defaults",
host_supported: true,
local_include_dirs: [
"include",
"include/internal",
],
cflags: [
// Reserve 1024 bytes on the stack when reading from `/proc/cpuinfo`.
"-DSTACK_LINE_READER_BUFFER_SIZE=1024",
"-Wno-gnu-designator",
],
}
cc_library {
name: "libcpu_features-utils",
defaults: ["cpu_features-defaults"],
srcs: [
"src/filesystem.c",
"src/stack_line_reader.c",
"src/string_view.c",
],
}
cc_library {
name: "libcpu_features-unix_based_hardware_detection",
defaults: ["cpu_features-defaults"],
srcs: [
"src/hwcaps.c",
"src/unix_features_aggregator.c",
],
cflags: [
"-DHAVE_DLFCN_H",
],
target: {
bionic: {
cflags: [
"-DHAVE_STRONG_GETAUXVAL",
],
},
},
static_libs: [
"libcpu_features-utils",
],
}
cc_library {
name: "libcpu_features",
defaults: [
"cpu_features-defaults",
],
whole_static_libs: [
"libcpu_features-utils",
],
arch: {
arm: {
srcs: [
"src/cpuinfo_arm.c",
],
whole_static_libs: [
"libcpu_features-unix_based_hardware_detection",
],
},
arm64: {
srcs: [
"src/cpuinfo_aarch64.c",
],
whole_static_libs: [
"libcpu_features-unix_based_hardware_detection",
],
cflags: [
"-Wno-gnu-designator",
],
},
x86: {
srcs: [
"src/cpuinfo_x86.c",
],
cflags: [
"-Wno-unused-variable",
],
},
x86_64: {
srcs: [
"src/cpuinfo_x86.c",
],
cflags: [
"-Wno-unused-variable",
],
},
},
}
cc_binary {
name: "list_cpu_features",
defaults: [
"cpu_features-defaults",
],
srcs: [
"src/utils/list_cpu_features.c",
],
static_libs: [
"libcpu_features",
],
}
// Tests.
cc_defaults {
name: "cpu_features-test-defaults",
host_supported: true,
local_include_dirs: [
"include",
],
cflags: [
"-DCPU_FEATURES_TEST"
],
}
cc_test_library {
name: "libcpu_features-string_view",
defaults: ["cpu_features-test-defaults"],
srcs: [
"src/string_view.c",
],
}
cc_test_library {
name: "libcpu_features-filesystem_for_testing",
defaults: ["cpu_features-test-defaults"],
cflags: [
"-DCPU_FEATURES_MOCK_FILESYSTEM",
// TODO: Handle unused parameters in
// test/filesystem_for_testing.cc and remove this flag.
"-Wno-unused-parameter",
],
srcs: [
"test/filesystem_for_testing.cc",
],
}
cc_test_library {
name: "libcpu_features-hwcaps_for_testing",
defaults: ["cpu_features-test-defaults"],
cflags: [
"-DCPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL",
],
srcs: [
"test/hwcaps_for_testing.cc",
],
static_libs: [
"libcpu_features-string_view",
"libcpu_features-filesystem_for_testing",
],
}
cc_defaults {
name: "stack_line_reader-defaults",
cflags: [
"-DSTACK_LINE_READER_BUFFER_SIZE=1024",
],
}
cc_test_library {
name: "libcpu_features-stack_line_reader",
defaults: [
"cpu_features-test-defaults",
"stack_line_reader-defaults",
],
srcs: [
"src/stack_line_reader.c",
],
static_libs: [
"libcpu_features-filesystem_for_testing",
"libcpu_features-string_view",
],
}
cc_test_library {
name: "libcpu_features-stack_line_reader_for_test",
defaults: ["cpu_features-test-defaults"],
cflags: [
"-DSTACK_LINE_READER_BUFFER_SIZE=16",
],
srcs: [
"src/stack_line_reader.c",
],
whole_static_libs: [
"libcpu_features-filesystem_for_testing",
"libcpu_features-string_view",
],
}
cc_test_library {
name: "libcpu_features-all_libraries",
defaults: [
"cpu_features-test-defaults",
"stack_line_reader-defaults",
],
srcs: [
"src/unix_features_aggregator.c",
],
whole_static_libs: [
"libcpu_features-filesystem_for_testing",
"libcpu_features-hwcaps_for_testing",
"libcpu_features-stack_line_reader",
"libcpu_features-string_view",
],
}
cc_test {
name: "cpu_features-bit_utils_test",
defaults: ["cpu_features-test-defaults"],
srcs: [
"test/bit_utils_test.cc"
],
}
cc_test {
name: "cpu_features-string_view_test",
defaults: ["cpu_features-test-defaults"],
srcs: [
"test/string_view_test.cc",
"src/string_view.c",
],
static_libs: [
"libcpu_features-string_view",
],
}
cc_test {
name: "cpu_features-stack_line_reader_test",
defaults: [
"cpu_features-test-defaults",
"stack_line_reader-defaults",
],
cflags: [
// TODO: Handle unused funtions in
// test/stack_line_reader_test.cc and remove this flag.
"-Wno-unused-function",
],
srcs: [
"test/stack_line_reader_test.cc",
],
static_libs: [
"libcpu_features-stack_line_reader_for_test",
],
}
cc_test {
name: "cpu_features-unix_features_aggregator_test",
defaults: ["cpu_features-test-defaults"],
srcs: [
"test/unix_features_aggregator_test.cc",
],
static_libs: [
"libcpu_features-all_libraries",
],
}
cc_defaults {
name: "cpu_features-cpuinfo-test-defaults",
defaults: ["cpu_features-test-defaults"],
enabled: false,
static_libs: [
"libcpu_features-all_libraries",
],
}
cc_test {
name: "cpu_features-cpuinfo_x86_test",
defaults: ["cpu_features-cpuinfo-test-defaults"],
arch: {
x86: {
enabled: true,
},
x86_64: {
enabled: true,
},
},
target: {
windows: {
enabled: false,
},
},
cflags: [
"-DCPU_FEATURES_MOCK_CPUID_X86",
"-Wno-unused-variable",
],
srcs: [
"test/cpuinfo_x86_test.cc",
"src/cpuinfo_x86.c",
],
}
cc_test {
name: "cpu_features-cpuinfo_arm_test",
defaults: [
"cpu_features-cpuinfo-test-defaults",
"stack_line_reader-defaults",
],
arch: {
arm: {
enabled: true,
},
},
srcs: [
"test/cpuinfo_arm_test.cc",
"src/cpuinfo_arm.c",
],
}
cc_test {
name: "cpu_features-cpuinfo_aarch64_test",
defaults: [
"cpu_features-cpuinfo-test-defaults",
"stack_line_reader-defaults",
],
arch: {
arm64: {
enabled: true,
},
},
cflags: [
"-Wno-gnu-designator",
],
srcs: [
"test/cpuinfo_aarch64_test.cc",
"src/cpuinfo_aarch64.c",
],
}