Upgrade cpu_features to v0.4.0
Test: None
Change-Id: I35bdb7ab9438c8de0b3c78d6207f89a0fd8400c9
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..804c931
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,335 @@
+// 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",
+ ],
+}
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..13983a6
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,18 @@
+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.4.0"
+ last_upgrade_date {
+ year: 2019
+ month: 7
+ day: 12
+ }
+}
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/NOTICE b/NOTICE
new file mode 120000
index 0000000..7a694c9
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
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
+*