blob: 9f3a64d15f6ff3b46882600b788f7d4729ffe4e0 [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",
],
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",
],
target: {
windows: {
enabled: true,
},
},
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}
cc_library {
name: "libcpu_features-hwcaps",
defaults: ["cpu_features-defaults"],
srcs: [
"src/hwcaps.c",
],
cflags: [
"-DHAVE_DLFCN_H",
],
target: {
bionic: {
cflags: [
"-DHAVE_STRONG_GETAUXVAL",
],
},
},
static_libs: [
"libcpu_features-utils",
],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}
cc_library {
name: "libcpu_features",
defaults: [
"cpu_features-defaults",
],
export_include_dirs: ["include"],
whole_static_libs: [
"libcpu_features-utils",
],
arch: {
arm: {
srcs: [
"src/cpuinfo_arm.c",
],
whole_static_libs: [
"libcpu_features-hwcaps",
],
},
arm64: {
srcs: [
"src/cpuinfo_aarch64.c",
],
whole_static_libs: [
"libcpu_features-hwcaps",
],
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",
],
},
},
target: {
windows: {
enabled: true,
},
},
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}
cc_binary {
name: "list_cpu_features",
defaults: [
"cpu_features-defaults",
],
srcs: [
"src/utils/list_cpu_features.c",
],
static_libs: [
"libcpu_features",
],
arch: {
// Function `AddCacheInfo` in `src/utils/list_cpu_features.c` is only used on x86/x86_64 and
// triggers an error with `-Werror and `-Wunused-function` on other architectures; disable
// the latter flag to avoid compilation errors on those architectures.
arm: {
cflags: [
"-Wno-unused-function",
],
},
arm64: {
cflags: [
"-Wno-unused-function",
],
},
},
}
// Tests.
cc_defaults {
name: "cpu_features-test-defaults",
test_suites: ["device-tests"],
host_supported: true,
compile_multilib: "both",
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",
"-DCPU_FEATURES_TEST",
],
srcs: [
"src/hwcaps.c",
"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",
],
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-cpuinfo_test",
defaults: [
"cpu_features-test-defaults",
],
static_libs: [
"libcpu_features-all_libraries",
],
cflags: [
"-DSTACK_LINE_READER_BUFFER_SIZE=1024",
],
arch: {
x86: {
cflags: [
"-DCPU_FEATURES_MOCK_CPUID_X86",
"-Wno-unused-variable",
],
srcs: [
"test/cpuinfo_x86_test.cc",
"src/cpuinfo_x86.c",
],
},
x86_64: {
cflags: [
"-DCPU_FEATURES_MOCK_CPUID_X86",
"-Wno-unused-variable",
],
srcs: [
"test/cpuinfo_x86_test.cc",
"src/cpuinfo_x86.c",
],
},
arm: {
srcs: [
"test/cpuinfo_arm_test.cc",
"src/cpuinfo_arm.c",
],
},
arm64: {
cflags: [
"-Wno-gnu-designator",
],
srcs: [
"test/cpuinfo_aarch64_test.cc",
"src/cpuinfo_aarch64.c",
],
},
},
}