How to get older version and compilation of webrtc for arm64

Can I use "fetch webrtc" to fetch an older version of webrtc (maybe with some flag / option) and then compile it for arm64?

I tried to pull the older version with help gclient sync --force -r 6881

but got a compile error.

I know this is an old option, but if possible I would like to compile it for arm64.

This is what I did:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH="$PATH":`pwd`/depot_tools
gclient config http://webrtc.googlecode.com/svn/trunk
echo "target_os = ['ios']" >> .gclient
export GYP_DEFINES="OS=ios"
gclient sync --force -r 6881

      

This will pull the correct trunk (run 'svn checkout http://webrtc.googlecode.com/svn/ trunk @ 6881 ... )

export GYP_CROSSCOMPILE=1
export GYP_DEFINES="build_with_libjingle=1 clang=1 component=static_library dcheck_always_on=1 fastbuild=0 OS=ios target_arch=arm64 target_subarch=arm64"
export GYP_GENERATOR_FLAGS="output_dir=out_ios64"
export GYP_GENERATORS="ninja"
cd trunk
gclient runhooks
ninja -C out_ios64/Release-iphoneos AppRTCDemo

      

i got this error:

Admins-Mac-mini:trunk admin$ ninja -C out_ios64/Release-iphoneos AppRTCDemo
ninja: Entering directory `out_ios64/Release-iphoneos'
[206/1912] CXX obj/third_party/libyuv/source/libyuv.scale_argb.o
FAILED: c++ -MMD -MF obj/third_party/libyuv/source/libyuv.scale_argb.o.d -DV8_DEPRECATION_WARNINGS -DBLINK_SCALE_FILTERS_AT_RECORD_TIME -DDISABLE_NACL -DCHROMIUM_BUILD -DCR_CLANG_REVISION=214024 -DUSE_LIBJPEG_TURBO=1 -DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY -DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DDCHECK_ALWAYS_ON=1 -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DNS_BLOCK_ASSERTIONS=1 -Igen -I../../third_party/libyuv/include -I../../third_party/libyuv -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -Os -gdwarf-2 -fvisibility=hidden -Wnewline-eof -miphoneos-version-min=6.0 -arch arm64 -Wendif-labels -Wno-unused-parameter -Wno-missing-field-initializers -Wno-selector-type-mismatch -Wno-unknown-warning-option -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -std=gnu++0x -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics -fno-slp-vectorize -fcolor-diagnostics  -c ../../third_party/libyuv/source/scale_argb.cc -o obj/third_party/libyuv/source/libyuv.scale_argb.o
../../third_party/libyuv/source/scale_argb.cc:150:26: error: assigning to 'void (*)(const uint8 *, ptrdiff_t, int, uint8 *, int)' from incompatible type 'void (const uint8 *, int, int, uint8 *, int)': type mismatch at 2nd parameter ('ptrdiff_t' (aka 'long') vs 'int')
    ScaleARGBRowDownEven = filtering ? ScaleARGBRowDownEvenBox_NEON :
                         ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[206/1912] LINK libvpx_obj_int_extract, POSTBUILDS
ninja: build stopped: subcommand failed.

      

I think I am missing some dependencies (maybe because this is an old trunk) but not sure.

Also for ios target_arch=armv7

it compiles fine.

Any help would be great,

thank

UPDATE:

Pulling a slightly newer version (r6915) didn't help:

There is still some bug in libvpx library

[58/1912] CXX obj/third_party/libyuv/source/libyuv.scale_argb.o
FAILED: c++ -MMD -MF obj/third_party/libyuv/source/libyuv.scale_argb.o.d -DV8_DEPRECATION_WARNINGS -DDISABLE_NACL -DCHROMIUM_BUILD -DCR_CLANG_REVISION=214024 -DUSE_LIBJPEG_TURBO=1 -DENABLE_CONFIGURATION_POLICY -DDISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY -DSYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE -DDCHECK_ALWAYS_ON=1 -DENABLE_EGLIMAGE=1 -DCLD_VERSION=1 -DENABLE_SPELLCHECK=1 -DDISABLE_FTP_SUPPORT=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DNS_BLOCK_ASSERTIONS=1 -Igen -I../../third_party/libyuv/include -I../../third_party/libyuv -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -Os -gdwarf-2 -fvisibility=hidden -Wnewline-eof -miphoneos-version-min=7.0 -arch arm64 -Wendif-labels -Wno-unused-parameter -Wno-missing-field-initializers -Wno-selector-type-mismatch -Wno-unknown-warning-option -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -std=gnu++0x -stdlib=libstdc++ -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics -fno-slp-vectorize -fcolor-diagnostics  -c ../../third_party/libyuv/source/scale_argb.cc -o obj/third_party/libyuv/source/libyuv.scale_argb.o
../../third_party/libyuv/source/scale_argb.cc:150:26: error: assigning to 'void (*)(const uint8 *, ptrdiff_t, int, uint8 *, int)' from incompatible type 'void (const uint8 *, int, int, uint8 *, int)': type mismatch at 2nd parameter ('ptrdiff_t' (aka 'long') vs 'int')
    ScaleARGBRowDownEven = filtering ? ScaleARGBRowDownEvenBox_NEON :
                         ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[58/1912] LINK libvpx_obj_int_extract, POSTBUILDS
ninja: build stopped: subcommand failed.

      

UPDATE 2:

As it turned out (now ) building arm64 is only possible for the following environment:

OS X Version 10.9.5

Xcode version: 6.1.1

So this morning I tried to pull and build the latest release (r8053 at the time) following the instructions http://www.webrtc.org/native-code/ios

and it seemed like it built OK except for two warnings:

1622/2019] CC obj/chromium/src/net/third_party/nss/ssl/libssl.sslmutex.o
../../chromium/src/net/third_party/nss/ssl/sslmutex.c:522:14: warning: 'sem_init' is deprecated [-Wdeprecated-declarations]
        rv = sem_init(&pMutex->u.sem, shared, 1);
             ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/include/sys/semaphore.h:55:5: note: 'sem_init' has been explicitly marked deprecated here
int sem_init(sem_t *, int, unsigned int) __deprecated;
    ^
../../chromium/src/net/third_party/nss/ssl/sslmutex.c:544:7: warning: 'sem_destroy' is deprecated [-Wdeprecated-declarations]
        rv = sem_destroy(&pMutex->u.sem);
             ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/include/sys/semaphore.h:53:5: note: 'sem_destroy' has been explicitly marked deprecated here
int sem_destroy(sem_t *) __deprecated;
    ^
2 warnings generated.
[2019/2019] STAMP AppRTCDemo.app

      

but for the old version it is still not possible to build arm64 libraries (some bug regarding libyuv on build)

so my questions are:

  • is it possible at all to create arm64 libraries for revisions from a few months ago, for example 6881.

  • How do I get an older revision using the new fetch method?

thank

+3


source to share





All Articles