blob: 7f70060955ce01ad37f5c719eecbffd7d80e1f35 [file] [log] [blame]
// This Blueprint file loosely follows the logic of cpu_features'
// CMakeLists.txt and test/CMakeLists.txt files.
package {
default_applicable_licenses: ["external_cpu_features_license"],
}
// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
name: "external_cpu_features_license",
visibility: [":__subpackages__"],
license_kinds: [
"SPDX-license-identifier-Apache-2.0",
"SPDX-license-identifier-BSD",
],
license_text: [
"LICENSE",
],
}
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",
],
min_sdk_version: "S",
}
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",
],
},
},
}