aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp381
-rw-r--r--METADATA19
-rw-r--r--MODULE_LICENSE_APACHE20
-rw-r--r--OWNERS3
-rw-r--r--PREUPLOAD.cfg2
-rw-r--r--TEST_MAPPING30
6 files changed, 435 insertions, 0 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..57e3804
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,381 @@
+// 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/impl_arm_linux_or_android.c",
+ ],
+ whole_static_libs: [
+ "libcpu_features-hwcaps",
+ ],
+ },
+ arm64: {
+ srcs: [
+ "src/impl_aarch64_linux_or_android.c",
+ ],
+ whole_static_libs: [
+ "libcpu_features-hwcaps",
+ ],
+ cflags: [
+ "-Wno-gnu-designator",
+ ],
+ },
+ x86: {
+ srcs: [
+ "src/impl_x86_linux_or_android.c",
+ ],
+ cflags: [
+ "-Wno-unused-variable",
+ ],
+ },
+ x86_64: {
+ srcs: [
+ "src/impl_x86_linux_or_android.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",
+ ],
+ },
+ x86: {
+ cflags: [
+ "-Wno-deprecated-declarations",
+ ],
+ },
+ x86_64: {
+ cflags: [
+ "-Wno-deprecated-declarations",
+ ],
+ },
+ },
+}
+
+// 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",
+ "-Wno-deprecated-declarations",
+ ],
+ srcs: [
+ "test/cpuinfo_x86_test.cc",
+ "src/impl_x86_linux_or_android.c",
+ ],
+ },
+ x86_64: {
+ cflags: [
+ "-DCPU_FEATURES_MOCK_CPUID_X86",
+ "-Wno-unused-variable",
+ "-Wno-deprecated-declarations",
+ ],
+ srcs: [
+ "test/cpuinfo_x86_test.cc",
+ "src/impl_x86_linux_or_android.c",
+ ],
+ },
+ arm: {
+ srcs: [
+ "test/cpuinfo_arm_test.cc",
+ "src/impl_arm_linux_or_android.c",
+ ],
+ },
+ arm64: {
+ cflags: [
+ "-Wno-gnu-designator",
+ ],
+ srcs: [
+ "test/cpuinfo_aarch64_test.cc",
+ "src/impl_aarch64_linux_or_android.c",
+ ],
+ },
+ },
+}
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..ceb1712
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,19 @@
+name: "cpu_features"
+description: "A cross platform C99 library to get cpu features at runtime."
+third_party {
+ url {
+ type: HOMEPAGE
+ value: "https://github.com/google/cpu_features"
+ }
+ url {
+ type: GIT
+ value: "https://github.com/google/cpu_features.git"
+ }
+ version: "v0.9.0"
+ license_type: NOTICE
+ last_upgrade_date {
+ year: 2023
+ month: 9
+ day: 14
+ }
+}
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_APACHE2
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..dc4f25c
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,3 @@
+gchatelet@google.com
+rpl@google.com
+*
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..321bab6
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Builtin Hooks]
+bpfmt = true
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..7066870
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,30 @@
+{
+ "presubmit": [
+ {
+ "name": "cpu_features-bit_utils_test"
+ },
+ {
+ "name": "cpu_features-string_view_test"
+ },
+ {
+ "name": "cpu_features-stack_line_reader_test"
+ },
+ {
+ "name": "cpu_features-cpuinfo_test"
+ }
+ ],
+ "hwasan-postsubmit": [
+ {
+ "name": "cpu_features-bit_utils_test"
+ },
+ {
+ "name": "cpu_features-string_view_test"
+ },
+ {
+ "name": "cpu_features-stack_line_reader_test"
+ },
+ {
+ "name": "cpu_features-cpuinfo_test"
+ }
+ ]
+}