diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn index a03e9ab659..8f5ce83c68 100644 --- a/common_audio/BUILD.gn +++ b/common_audio/BUILD.gn @@ -54,6 +54,7 @@ rtc_library("common_audio") { "../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" ] @@ -184,6 +185,7 @@ rtc_library("common_audio_c") { "../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", ] @@ -230,7 +232,7 @@ rtc_library("fir_filter_factory") { "../rtc_base:checks", "../rtc_base:rtc_base_approved", "../rtc_base/system:arch", - "../system_wrappers", + "../system_wrappers:cpu_features_api", ] if (current_cpu == "x86" || current_cpu == "x64") { deps += [ ":common_audio_sse2" ] @@ -381,7 +383,7 @@ if (rtc_include_tests) { "../rtc_base:rtc_base_approved", "../rtc_base:rtc_base_tests_utils", "../rtc_base/system:arch", - "../system_wrappers", + "../system_wrappers:cpu_features_api", "../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 0cdf98e591..742f620044 100644 --- a/common_audio/third_party/ooura/BUILD.gn +++ b/common_audio/third_party/ooura/BUILD.gn @@ -16,7 +16,7 @@ rtc_library("fft_size_128") { ] deps = [ "../../../rtc_base/system:arch", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", ] cflags = [] diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn index 55795397fe..be9705138a 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -609,7 +609,7 @@ rtc_library("isac_fix_c") { "../../rtc_base:compile_assert_c", "../../rtc_base:rtc_base_approved", "../../rtc_base:sanitizer", - "../../system_wrappers", + "../../system_wrappers:cpu_features_api", "../third_party/fft", ] @@ -2067,6 +2067,7 @@ if (rtc_include_tests) { "../../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 83fdcef960..1510930640 100644 --- a/modules/audio_processing/BUILD.gn +++ b/modules/audio_processing/BUILD.gn @@ -189,7 +189,7 @@ rtc_library("audio_processing") { "../../rtc_base:sanitizer", "../../rtc_base/synchronization:mutex", "../../rtc_base/system:rtc_export", - "../../system_wrappers", + "../../system_wrappers:cpu_features_api", "../../system_wrappers:field_trial", "../../system_wrappers:metrics", "aec3", @@ -375,6 +375,7 @@ if (rtc_include_tests) { "../../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 6816d739e8..c312b0ebd2 100644 --- a/modules/audio_processing/aec3/BUILD.gn +++ b/modules/audio_processing/aec3/BUILD.gn @@ -142,7 +142,7 @@ rtc_library("aec3") { "../../../rtc_base:safe_minmax", "../../../rtc_base/experiments:field_trial_parser", "../../../rtc_base/system:arch", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", "../../../system_wrappers:field_trial", "../../../system_wrappers:metrics", "../utility:cascaded_biquad_filter", @@ -308,7 +308,7 @@ if (rtc_include_tests) { "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", "../../../rtc_base/system:arch", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", "../../../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 61e9affdea..6f1c33169a 100644 --- a/modules/audio_processing/aecm/BUILD.gn +++ b/modules/audio_processing/aecm/BUILD.gn @@ -21,7 +21,7 @@ rtc_library("aecm_core") { "../../../rtc_base:checks", "../../../rtc_base:rtc_base_approved", "../../../rtc_base:sanitizer", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", "../utility:legacy_delay_estimator", ] cflags = [] diff --git a/modules/audio_processing/agc/BUILD.gn b/modules/audio_processing/agc/BUILD.gn index e5b3980abe..9ed6399cbf 100644 --- a/modules/audio_processing/agc/BUILD.gn +++ b/modules/audio_processing/agc/BUILD.gn @@ -78,7 +78,7 @@ rtc_library("legacy_agc") { "../../../common_audio/third_party/ooura:fft_size_256", "../../../rtc_base:checks", "../../../rtc_base:rtc_base_approved", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", ] if (rtc_build_with_neon) { diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn index ca2db9771d..bfef2252c3 100644 --- a/modules/audio_processing/agc2/BUILD.gn +++ b/modules/audio_processing/agc2/BUILD.gn @@ -153,7 +153,7 @@ rtc_library("noise_level_estimator") { "../../../common_audio/third_party/ooura:fft_size_128", "../../../rtc_base:checks", "../../../rtc_base:macromagic", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", ] 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 3bdfdbcb39..99b4e82488 100644 --- a/modules/audio_processing/agc2/rnn_vad/BUILD.gn +++ b/modules/audio_processing/agc2/rnn_vad/BUILD.gn @@ -48,7 +48,7 @@ rtc_library("rnn_vad") { "../../../../rtc_base:checks", "../../../../rtc_base:rtc_base_approved", "../../../../rtc_base/system:arch", - "../../../../system_wrappers", + "../../../../system_wrappers:cpu_features_api", "../../utility:pffft_wrapper", "//third_party/rnnoise:rnn_vad", ] @@ -67,7 +67,7 @@ if (rtc_include_tests) { "../../../../api:scoped_refptr", "../../../../rtc_base:checks", "../../../../rtc_base/system:arch", - "../../../../system_wrappers", + "../../../../system_wrappers:cpu_features_api", "../../../../test:fileutils", "../../../../test:test_support", ] diff --git a/modules/audio_processing/ns/BUILD.gn b/modules/audio_processing/ns/BUILD.gn index f0842c505b..7197705c3d 100644 --- a/modules/audio_processing/ns/BUILD.gn +++ b/modules/audio_processing/ns/BUILD.gn @@ -60,7 +60,7 @@ rtc_static_library("ns") { "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", "../../../rtc_base/system:arch", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", "../../../system_wrappers:field_trial", "../../../system_wrappers:metrics", "../utility:cascaded_biquad_filter", @@ -87,7 +87,7 @@ if (rtc_include_tests) { "../../../rtc_base:rtc_base_approved", "../../../rtc_base:safe_minmax", "../../../rtc_base/system:arch", - "../../../system_wrappers", + "../../../system_wrappers:cpu_features_api", "../../../test:test_support", "../utility:cascaded_biquad_filter", ] diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 1cba946601..b40b7430f6 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -115,7 +115,7 @@ if (rtc_include_tests) { ":primitives", "../../rtc_base:checks", "../../rtc_base:rtc_base_approved", - "../../system_wrappers", + "../../system_wrappers:cpu_features_api", "../../test:test_support", ] if (rtc_desktop_capture_supported) { @@ -486,6 +486,7 @@ rtc_library("desktop_capture_generic") { "../../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 abc9f039ce..4354454111 100644 --- a/modules/video_processing/BUILD.gn +++ b/modules/video_processing/BUILD.gn @@ -37,7 +37,7 @@ rtc_library("video_processing") { "../../rtc_base:checks", "../../rtc_base:rtc_base_approved", "../../rtc_base/system:arch", - "../../system_wrappers", + "../../system_wrappers:cpu_features_api", "//third_party/libyuv", ] if (build_video_processing_sse2) { diff --git a/system_wrappers/BUILD.gn b/system_wrappers/BUILD.gn index 97c09f5850..2d50111be8 100644 --- a/system_wrappers/BUILD.gn +++ b/system_wrappers/BUILD.gn @@ -16,7 +16,6 @@ rtc_library("system_wrappers") { visibility = [ "*" ] sources = [ "include/clock.h", - "include/cpu_features_wrapper.h", "include/cpu_info.h", "include/ntp_time.h", "include/rtp_to_ntp_estimator.h", @@ -31,6 +30,7 @@ rtc_library("system_wrappers") { defines = [] libs = [] deps = [ + ":cpu_features_api", "../api:array_view", "../api/units:timestamp", "../modules:module_api_public", @@ -50,8 +50,7 @@ rtc_library("system_wrappers") { "/nsprpub/pr/include", ] } else { - sources += [ "source/cpu_features_android.cc" ] - deps += [ "//third_party/android_sdk:cpu_features" ] + deps += [ ":cpu_features_android" ] } libs += [ "log" ] @@ -59,7 +58,7 @@ rtc_library("system_wrappers") { if (is_linux) { if (!build_with_chromium) { - sources += [ "source/cpu_features_linux.cc" ] + deps += [ ":cpu_features_linux" ] } libs += [ "rt" ] @@ -79,6 +78,10 @@ rtc_library("system_wrappers") { ] } +rtc_source_set("cpu_features_api") { + sources = [ "include/cpu_features_wrapper.h" ] +} + rtc_library("field_trial") { visibility = [ "*" ] public = [ "include/field_trial.h" ] @@ -108,6 +111,24 @@ rtc_library("metrics") { ] } +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 f4b3fed2d3..02d54b4516 100644 --- a/system_wrappers/include/cpu_features_wrapper.h +++ b/system_wrappers/include/cpu_features_wrapper.h @@ -13,6 +13,10 @@ #include +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + // List of features in x86. typedef enum { kSSE2, kSSE3, kAVX2 } CPUFeature; @@ -37,4 +41,8 @@ extern WebRtc_CPUInfo WebRtc_GetCPUInfoNoASM; // 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.cc b/system_wrappers/source/cpu_features_android.c similarity index 100% rename from system_wrappers/source/cpu_features_android.cc rename to system_wrappers/source/cpu_features_android.c diff --git a/system_wrappers/source/cpu_features_linux.cc b/system_wrappers/source/cpu_features_linux.c similarity index 98% rename from system_wrappers/source/cpu_features_linux.cc rename to system_wrappers/source/cpu_features_linux.c index 05ff9b31b7..37739c12f6 100644 --- a/system_wrappers/source/cpu_features_linux.cc +++ b/system_wrappers/source/cpu_features_linux.c @@ -8,9 +8,9 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include #include #include +#include #ifdef __GLIBC_PREREQ #define WEBRTC_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b) @@ -21,10 +21,10 @@ #if WEBRTC_GLIBC_PREREQ(2, 16) #include #else -#include #include -#include #include +#include +#include #endif #include "rtc_base/system/arch.h" @@ -36,7 +36,7 @@ uint64_t WebRtc_GetCPUFeaturesARM(void) { uint64_t result = 0; int architecture = 0; - uint64_t hwcap = 0; + unsigned long hwcap = 0; const char* platform = NULL; #if WEBRTC_GLIBC_PREREQ(2, 16) hwcap = getauxval(AT_HWCAP);