Reland "Merge cpu_features build targets into //system_wrappers."
This is a reland of 2b242d8fba59ccf67e4c5bcf5a1ea80917a23e1c
Original change's description:
> Merge cpu_features build targets into //system_wrappers.
>
> Before this CL, functions declared in cpu_features_wrapper.h where
> not defined in the same build target, causing brittle builds that
> might fail at link time if the binary was not depending on
> //system_wrappers (the target with the definitions), violating [1].
>
> This CL moves everything into //system_wrappers and also moves
> cpu_features_wrapper.h definitions from C to C++ (in order to be able
> to add the definitions to a C++ build target like //system_wrappers).
>
> [1] - https://webrtc.googlesource.com/src/+/refs/heads/master/style-guide.md#h-cc-pairs
>
> Bug: None
> Change-Id: I5a0009cddb17206b19f2a71eeba722faacc4bcae
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/183380
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#32039}
TBR=kwiberg@webrtc.org
Bug: None
Change-Id: I1695b9a34d3ec20c50c1202a745f64fac58edef0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/183444
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32042}
diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn
index 8f5ce83..a03e9ab 100644
--- a/common_audio/BUILD.gn
+++ b/common_audio/BUILD.gn
@@ -54,7 +54,6 @@
"../rtc_base/system:arch",
"../rtc_base/system:file_wrapper",
"../system_wrappers",
- "../system_wrappers:cpu_features_api",
"third_party/ooura:fft_size_256",
]
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
@@ -185,7 +184,6 @@
"../rtc_base:sanitizer",
"../rtc_base/system:arch",
"../system_wrappers",
- "../system_wrappers:cpu_features_api",
"third_party/ooura:fft_size_256",
"third_party/spl_sqrt_floor",
]
@@ -232,7 +230,7 @@
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base/system:arch",
- "../system_wrappers:cpu_features_api",
+ "../system_wrappers",
]
if (current_cpu == "x86" || current_cpu == "x64") {
deps += [ ":common_audio_sse2" ]
@@ -383,7 +381,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
"../rtc_base/system:arch",
- "../system_wrappers:cpu_features_api",
+ "../system_wrappers",
"../test:fileutils",
"../test:rtc_expect_death",
"../test:test_main",
diff --git a/common_audio/third_party/ooura/BUILD.gn b/common_audio/third_party/ooura/BUILD.gn
index 742f620..0cdf98e 100644
--- a/common_audio/third_party/ooura/BUILD.gn
+++ b/common_audio/third_party/ooura/BUILD.gn
@@ -16,7 +16,7 @@
]
deps = [
"../../../rtc_base/system:arch",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
]
cflags = []
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index be97051..5579539 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -609,7 +609,7 @@
"../../rtc_base:compile_assert_c",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:sanitizer",
- "../../system_wrappers:cpu_features_api",
+ "../../system_wrappers",
"../third_party/fft",
]
@@ -2067,7 +2067,6 @@
"../../rtc_base/synchronization:mutex",
"../../rtc_base/system:arch",
"../../system_wrappers",
- "../../system_wrappers:cpu_features_api",
"../../test:audio_codec_mocks",
"../../test:field_trial",
"../../test:fileutils",
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index 1510930..83fdcef 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -189,7 +189,7 @@
"../../rtc_base:sanitizer",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/system:rtc_export",
- "../../system_wrappers:cpu_features_api",
+ "../../system_wrappers",
"../../system_wrappers:field_trial",
"../../system_wrappers:metrics",
"aec3",
@@ -375,7 +375,6 @@
"../../rtc_base/system:arch",
"../../rtc_base/system:file_wrapper",
"../../system_wrappers",
- "../../system_wrappers:cpu_features_api",
"../../test:fileutils",
"../../test:rtc_expect_death",
"../../test:test_support",
diff --git a/modules/audio_processing/aec3/BUILD.gn b/modules/audio_processing/aec3/BUILD.gn
index c312b0e..6816d73 100644
--- a/modules/audio_processing/aec3/BUILD.gn
+++ b/modules/audio_processing/aec3/BUILD.gn
@@ -142,7 +142,7 @@
"../../../rtc_base:safe_minmax",
"../../../rtc_base/experiments:field_trial_parser",
"../../../rtc_base/system:arch",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
"../../../system_wrappers:field_trial",
"../../../system_wrappers:metrics",
"../utility:cascaded_biquad_filter",
@@ -308,7 +308,7 @@
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:safe_minmax",
"../../../rtc_base/system:arch",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
"../../../test:field_trial",
"../../../test:test_support",
"../utility:cascaded_biquad_filter",
diff --git a/modules/audio_processing/aecm/BUILD.gn b/modules/audio_processing/aecm/BUILD.gn
index 6f1c331..61e9aff 100644
--- a/modules/audio_processing/aecm/BUILD.gn
+++ b/modules/audio_processing/aecm/BUILD.gn
@@ -21,7 +21,7 @@
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:sanitizer",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
"../utility:legacy_delay_estimator",
]
cflags = []
diff --git a/modules/audio_processing/agc/BUILD.gn b/modules/audio_processing/agc/BUILD.gn
index 9ed6399..e5b3980 100644
--- a/modules/audio_processing/agc/BUILD.gn
+++ b/modules/audio_processing/agc/BUILD.gn
@@ -78,7 +78,7 @@
"../../../common_audio/third_party/ooura:fft_size_256",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
]
if (rtc_build_with_neon) {
diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn
index bfef225..ca2db97 100644
--- a/modules/audio_processing/agc2/BUILD.gn
+++ b/modules/audio_processing/agc2/BUILD.gn
@@ -153,7 +153,7 @@
"../../../common_audio/third_party/ooura:fft_size_128",
"../../../rtc_base:checks",
"../../../rtc_base:macromagic",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
]
configs += [ "..:apm_debug_dump" ]
diff --git a/modules/audio_processing/agc2/rnn_vad/BUILD.gn b/modules/audio_processing/agc2/rnn_vad/BUILD.gn
index 99b4e82..3bdfdbc 100644
--- a/modules/audio_processing/agc2/rnn_vad/BUILD.gn
+++ b/modules/audio_processing/agc2/rnn_vad/BUILD.gn
@@ -48,7 +48,7 @@
"../../../../rtc_base:checks",
"../../../../rtc_base:rtc_base_approved",
"../../../../rtc_base/system:arch",
- "../../../../system_wrappers:cpu_features_api",
+ "../../../../system_wrappers",
"../../utility:pffft_wrapper",
"//third_party/rnnoise:rnn_vad",
]
@@ -67,7 +67,7 @@
"../../../../api:scoped_refptr",
"../../../../rtc_base:checks",
"../../../../rtc_base/system:arch",
- "../../../../system_wrappers:cpu_features_api",
+ "../../../../system_wrappers",
"../../../../test:fileutils",
"../../../../test:test_support",
]
diff --git a/modules/audio_processing/ns/BUILD.gn b/modules/audio_processing/ns/BUILD.gn
index 7197705..f0842c5 100644
--- a/modules/audio_processing/ns/BUILD.gn
+++ b/modules/audio_processing/ns/BUILD.gn
@@ -60,7 +60,7 @@
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:safe_minmax",
"../../../rtc_base/system:arch",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
"../../../system_wrappers:field_trial",
"../../../system_wrappers:metrics",
"../utility:cascaded_biquad_filter",
@@ -87,7 +87,7 @@
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:safe_minmax",
"../../../rtc_base/system:arch",
- "../../../system_wrappers:cpu_features_api",
+ "../../../system_wrappers",
"../../../test:test_support",
"../utility:cascaded_biquad_filter",
]
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index b40b743..1cba946 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -115,7 +115,7 @@
":primitives",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
- "../../system_wrappers:cpu_features_api",
+ "../../system_wrappers",
"../../test:test_support",
]
if (rtc_desktop_capture_supported) {
@@ -486,7 +486,6 @@
"../../rtc_base/system:arch",
"../../rtc_base/system:rtc_export",
"../../system_wrappers",
- "../../system_wrappers:cpu_features_api",
"../../system_wrappers:metrics",
]
absl_deps = [
diff --git a/modules/video_processing/BUILD.gn b/modules/video_processing/BUILD.gn
index 4354454..abc9f03 100644
--- a/modules/video_processing/BUILD.gn
+++ b/modules/video_processing/BUILD.gn
@@ -37,7 +37,7 @@
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"../../rtc_base/system:arch",
- "../../system_wrappers:cpu_features_api",
+ "../../system_wrappers",
"//third_party/libyuv",
]
if (build_video_processing_sse2) {
diff --git a/system_wrappers/BUILD.gn b/system_wrappers/BUILD.gn
index 2d50111..97c09f5 100644
--- a/system_wrappers/BUILD.gn
+++ b/system_wrappers/BUILD.gn
@@ -16,6 +16,7 @@
visibility = [ "*" ]
sources = [
"include/clock.h",
+ "include/cpu_features_wrapper.h",
"include/cpu_info.h",
"include/ntp_time.h",
"include/rtp_to_ntp_estimator.h",
@@ -30,7 +31,6 @@
defines = []
libs = []
deps = [
- ":cpu_features_api",
"../api:array_view",
"../api/units:timestamp",
"../modules:module_api_public",
@@ -50,7 +50,8 @@
"/nsprpub/pr/include",
]
} else {
- deps += [ ":cpu_features_android" ]
+ sources += [ "source/cpu_features_android.cc" ]
+ deps += [ "//third_party/android_sdk:cpu_features" ]
}
libs += [ "log" ]
@@ -58,7 +59,7 @@
if (is_linux) {
if (!build_with_chromium) {
- deps += [ ":cpu_features_linux" ]
+ sources += [ "source/cpu_features_linux.cc" ]
}
libs += [ "rt" ]
@@ -78,10 +79,6 @@
]
}
-rtc_source_set("cpu_features_api") {
- sources = [ "include/cpu_features_wrapper.h" ]
-}
-
rtc_library("field_trial") {
visibility = [ "*" ]
public = [ "include/field_trial.h" ]
@@ -111,24 +108,6 @@
]
}
-if (is_android && !build_with_mozilla) {
- rtc_library("cpu_features_android") {
- sources = [ "source/cpu_features_android.c" ]
-
- deps = [ "//third_party/android_sdk:cpu_features" ]
- }
-}
-
-if (is_linux) {
- rtc_library("cpu_features_linux") {
- sources = [ "source/cpu_features_linux.c" ]
- deps = [
- ":cpu_features_api",
- "../rtc_base/system:arch",
- ]
- }
-}
-
if (rtc_include_tests) {
rtc_test("system_wrappers_unittests") {
testonly = true
diff --git a/system_wrappers/include/cpu_features_wrapper.h b/system_wrappers/include/cpu_features_wrapper.h
index 02d54b4..f4b3fed 100644
--- a/system_wrappers/include/cpu_features_wrapper.h
+++ b/system_wrappers/include/cpu_features_wrapper.h
@@ -13,10 +13,6 @@
#include <stdint.h>
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
// List of features in x86.
typedef enum { kSSE2, kSSE3, kAVX2 } CPUFeature;
@@ -41,8 +37,4 @@
// values in the above enum definition as a bitmask.
extern uint64_t WebRtc_GetCPUFeaturesARM(void);
-#if defined(__cplusplus) || defined(c_plusplus)
-} // extern "C"
-#endif
-
#endif // SYSTEM_WRAPPERS_INCLUDE_CPU_FEATURES_WRAPPER_H_
diff --git a/system_wrappers/source/cpu_features_android.c b/system_wrappers/source/cpu_features_android.cc
similarity index 100%
rename from system_wrappers/source/cpu_features_android.c
rename to system_wrappers/source/cpu_features_android.cc
diff --git a/system_wrappers/source/cpu_features_linux.c b/system_wrappers/source/cpu_features_linux.cc
similarity index 98%
rename from system_wrappers/source/cpu_features_linux.c
rename to system_wrappers/source/cpu_features_linux.cc
index 37739c1..05ff9b3 100644
--- a/system_wrappers/source/cpu_features_linux.c
+++ b/system_wrappers/source/cpu_features_linux.cc
@@ -8,9 +8,9 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <features.h>
#include <stdlib.h>
#include <string.h>
-#include <features.h>
#ifdef __GLIBC_PREREQ
#define WEBRTC_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
@@ -21,10 +21,10 @@
#if WEBRTC_GLIBC_PREREQ(2, 16)
#include <sys/auxv.h>
#else
-#include <fcntl.h>
-#include <unistd.h>
#include <errno.h>
+#include <fcntl.h>
#include <link.h>
+#include <unistd.h>
#endif
#include "rtc_base/system/arch.h"
@@ -36,7 +36,7 @@
uint64_t WebRtc_GetCPUFeaturesARM(void) {
uint64_t result = 0;
int architecture = 0;
- unsigned long hwcap = 0;
+ uint64_t hwcap = 0;
const char* platform = NULL;
#if WEBRTC_GLIBC_PREREQ(2, 16)
hwcap = getauxval(AT_HWCAP);