Make it possible to build webrtc for arm64.

- Bump revision of protobuf lib
- Remove -Wextra for arm64 gcc targets (warnings in stlport)
- Add MemoryBarrier implementation in single_rw_fifo.cc.
- [pending 15619004]: Bump revision of /deps/tools/android to get md5sum_bin for arm64.

BUG=chromium:354405,chromium:354539
R=andrew@webrtc.org, fischman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/15629004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6330 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
solenberg@webrtc.org 2014-06-04 17:15:42 +00:00
parent 6f237769b3
commit c6db88b0cf
3 changed files with 28 additions and 16 deletions

4
DEPS
View File

@ -108,7 +108,7 @@ deps = {
Var("chromium_trunk") + "/deps/third_party/opus@256783",
"third_party/protobuf":
Var("chromium_trunk") + "/src/third_party/protobuf@251211",
Var("chromium_trunk") + "/src/third_party/protobuf@" + Var("chromium_revision"),
"third_party/sqlite/":
Var("chromium_trunk") + "/src/third_party/sqlite@" + Var("chromium_revision"),
@ -205,7 +205,7 @@ deps_os = {
# Precompiled tools needed for Android test execution. Needed since we can't
# compile them from source in WebRTC since they depend on Chromium's base.
"tools/android":
(Var("googlecode_url") % "webrtc") + "/deps/tools/android@4258",
(Var("googlecode_url") % "webrtc") + "/deps/tools/android@6306",
"third_party/android_tools":
From("chromium_deps", "src/third_party/android_tools"),

View File

@ -189,14 +189,24 @@
}, {
'conditions': [
['os_posix==1', {
'conditions': [
# -Wextra is currently disabled in Chromium's common.gypi. Enable
# for targets that can handle it. For Android/arm64 right now
# there will be an 'enumeral and non-enumeral type in conditional
# expression' warning in android_tools/ndk_experimental's version
# of stlport.
# See: https://code.google.com/p/chromium/issues/detail?id=379699
['target_arch!="arm64" or OS!="android"', {
'cflags': [
'-Wextra',
# We need to repeat some flags from Chromium's common.gypi here
# that get overridden by -Wextra.
# We need to repeat some flags from Chromium's common.gypi
# here that get overridden by -Wextra.
'-Wno-unused-parameter',
'-Wno-missing-field-initializers',
'-Wno-strict-overflow',
],
}],
],
'cflags_cc': [
'-Wnon-virtual-dtor',
# This is enabled for clang; enable for gcc as well.

View File

@ -20,14 +20,16 @@ namespace webrtc {
namespace subtle {
#if defined(__ARMEL__)
// From http://src.chromium.org/viewvc/chrome/trunk/src/base/atomicops_internals_arm_gcc.h
// Note that it is only the MemoryBarrier function that makes this class arm
// specific. Borrowing other MemoryBarrier implementations, this class could
// be extended to more platforms.
#if defined(__aarch64__)
// From http://http://src.chromium.org/viewvc/chrome/trunk/src/base/atomicops_internals_arm64_gcc.h
inline void MemoryBarrier() {
// Note: This is a function call, which is also an implicit compiler
// barrier.
__asm__ __volatile__ ("dmb ish" ::: "memory");
}
#elif defined(__ARMEL__)
// From http://src.chromium.org/viewvc/chrome/trunk/src/base/atomicops_internals_arm_gcc.h
inline void MemoryBarrier() {
// Note: This is a function call, which is also an implicit compiler barrier.
typedef void (*KernelMemoryBarrierFunc)();
((KernelMemoryBarrierFunc)0xffff0fa0)();
}