New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 635180 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Aug 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 1
Type: Bug



Sign in to add a comment

libvpx: Does not compile for iOS arm using GN

Project Member Reported by tkchin@chromium.org, Aug 5 2016

Issue description

e.g.
gn gen out/ios32 --ide=xcode --args="target_cpu=\"arm\" target_os=\"ios\""
ninja -C out/ios32 libvpx

Errors like:
[12/41] ASM obj/third_party/libvpx/libvpx_assembly_arm/vp8_short_fdct4x4_armv6.o
FAILED: obj/third_party/libvpx/libvpx_assembly_arm/vp8_short_fdct4x4_armv6.o
../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF obj/third_party/libvpx/libvpx_assembly_arm/vp8_short_fdct4x4_armv6.o.d -DV8_DEPRECATION_WARNINGS -DNO_TCMALLOC -DDISABLE_NACL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=274369-1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -I../.. -Igen -I../../third_party/libvpx/source/config -I../../third_party/libvpx/source/config/linux/arm-neon -I../../third_party/libvpx/source/libvpx -Igen/third_party/libvpx -mfpu=neon -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fcolor-diagnostics -arch armv7 -gdwarf-2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -stdlib=libc++ -miphoneos-version-min=8.0 -fno-integrated-as -c gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S -o obj/third_party/libvpx/libvpx_assembly_arm/vp8_short_fdct4x4_armv6.o
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:3:Unknown pseudo-op: .equ
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:3:Rest of line ignored. 1st junk character valued 68 (D).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:14:Unknown pseudo-op: .global
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:14:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:15:Unknown pseudo-op: .type
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:15:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:18:Unknown pseudo-op: .eabi_attribute
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:18:Rest of line ignored. 1st junk character valued 50 (2).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:19:Unknown pseudo-op: .eabi_attribute
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:19:Rest of line ignored. 1st junk character valued 50 (2).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:248:Unknown pseudo-op: .size
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:248:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/vp8_short_fdct4x4_armv6.S:268:unknown section type: %progbits
clang: error: assembler command failed with exit code 1 (use -v to see invocation)


Blocks WebRTC migration to GN.
 
Owner: sdefresne@chromium.org

Comment 2 by pkl@chromium.org, Aug 8 2016

Cc: justincohen@chromium.org
Status: Assigned (was: Untriaged)
Cc: sdefresne@chromium.org
Owner: ----
Status: Available (was: Assigned)
Looks like it tries to compiled armv6 assembly language files for armv7 cpu (which may not work).

It also looks like it uses clang to do the compilation, which I'm not sure is supported. Looking at gyp (third_party/libvpx/libvpx.gyp), the compilation is done using yasm there, so I guess the gn rules should be changed to use yasm to compile those files using action instead of putting them in source_set.

There is a third_party/yasm/yasm_assemble.gni that I think should be used where the gyp code was using third_party/yasm/yasm_compile.gypi.

I won't have time to work on this before September, so returning to the pool.
Cc: tommi@chromium.org
Cc: johannkoenig@chromium.org
Zeke, since you filed this bug at crbug.com I assumed you tried this on Chromium - but this is from a WebRTC checkout, right? From a Chromium checkout I don't get any libvpx target, and after looking around at cs.chromium.org it seems libvpx not included in Chromium for iOS.

I also have to add ios_enable_code_signing=false to have it generate ninja files.

marpan/johannkoenig/others: can you assist getting the libvpx BUILD.gn to work for iOS?


The Chrome Remote Desktop iOS app will need this as well. It builds inside of chromium's repo and is an iOS app.
I filed at crbug because the relevant GN file changes need to be made in chromium repo iirc. But yes, this is from a WebRTC checkout.
Cc: jzern@chromium.org
Cc: tomfinegan@chromium.org
armv6 is gone from upstream libvpx [1], so it's probably not worth spending time on this. For reference, though, yasm is only used for x86 architectures. For arm targets we convert to gas and usually use the assembler directly.

[1] https://chromium-review.googlesource.com/#/c/364584/
When is the next libvpx pull into chromium?

Comment 12 by jzern@chromium.org, Aug 10 2016

Rolls are done fairly frequently, but can be done on demand for things like this [1]. It's pretty easy [2], so if something comes up in the future feel free to propose a change.

[1] https://codereview.chromium.org/2235663002/
[2] https://chromium.googlesource.com/chromium/src/+/master/third_party/libvpx/README.chromium

Comment 13 by jzern@chromium.org, Aug 10 2016

Marco sent a roll that picks up a few more changes:

https://codereview.chromium.org/2221193003/

Comment 14 by tkchin@webrtc.org, Aug 10 2016

Awesome, thanks. I'll try building once the changes in and update this bug.
Cool, our rolling of chromium_revision in WebRTC DEPS is currently blocked on https://bugs.chromium.org/p/webrtc/issues/detail?id=6200 but I believe it's being worked on today so we might be able to roll again soon.
The libvpx roll in #13 has been committed.
Still not working sadly. Think we need to use the same compiler as what gyp is using.

[201/214] ASM obj/third_party/libvpx/libvpx_assembly_arm/loopfilter_16_neon.o
FAILED: obj/third_party/libvpx/libvpx_assembly_arm/loopfilter_16_neon.o
../../third_party/llvm-build/Release+Asserts/bin/clang -MMD -MF obj/third_party/libvpx/libvpx_assembly_arm/loopfilter_16_neon.o.d -DV8_DEPRECATION_WARNINGS -DNO_TCMALLOC -DDISABLE_NACL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=277962-1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -I../.. -Igen -I../../third_party/libvpx/source/config -I../../third_party/libvpx/source/config/linux/arm-neon -I../../third_party/libvpx/source/libvpx -Igen/third_party/libvpx -mfpu=neon -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fcolor-diagnostics -arch armv7 -gdwarf-2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -stdlib=libc++ -miphoneos-version-min=8.0 -fno-integrated-as -c gen/third_party/libvpx/loopfilter_16_neon.S -o obj/third_party/libvpx/libvpx_assembly_arm/loopfilter_16_neon.o
gen/third_party/libvpx/loopfilter_16_neon.S:3:Unknown pseudo-op: .equ
gen/third_party/libvpx/loopfilter_16_neon.S:3:Rest of line ignored. 1st junk character valued 68 (D).
gen/third_party/libvpx/loopfilter_16_neon.S:14:Unknown pseudo-op: .global
gen/third_party/libvpx/loopfilter_16_neon.S:14:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/loopfilter_16_neon.S:15:Unknown pseudo-op: .type
gen/third_party/libvpx/loopfilter_16_neon.S:15:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/loopfilter_16_neon.S:85:Unknown pseudo-op: .size
gen/third_party/libvpx/loopfilter_16_neon.S:85:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/loopfilter_16_neon.S:204:Unknown pseudo-op: .size
gen/third_party/libvpx/loopfilter_16_neon.S:204:Rest of line ignored. 1st junk character valued 118 (v).
gen/third_party/libvpx/loopfilter_16_neon.S:206:unknown section type: %progbits
clang: error: assembler command failed with exit code 1 (use -v to see invocation)
[202/214] ASM obj/third_party/libvpx/libvpx_assembly_arm/intrapred_neon_asm.o
Anyone know what this does? GYP builds seem to be applying it
https://cs.chromium.org/chromium/src/third_party/libvpx/ads2gas.gypi?q=convert_asm&sq=package:chromium&l=36

Comment 19 by jzern@chromium.org, Aug 12 2016

it converts between assembly formats, ADS (arm assembly) -> GAS (gnu as). You're using the GAS files already:

https://cs.chromium.org/chromium/src/third_party/libvpx/BUILD.gn?rcl=0&l=228

Comment 20 by tkchin@webrtc.org, Aug 12 2016

That seems to be the issue then? It seems to not be using ads2gas_apple.pl

Comment 21 by jzern@chromium.org, Aug 12 2016

Sounds right. I forgot there was a separate version.
Owner: tkchin@chromium.org
https://codereview.chromium.org/2250833002/
Project Member

Comment 23 by bugdroid1@chromium.org, Aug 17 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/de6fea2617b6baab0433af673d4fb7e2dde830ce

commit de6fea2617b6baab0433af673d4fb7e2dde830ce
Author: tkchin <tkchin@chromium.org>
Date: Wed Aug 17 21:33:21 2016

Fix libvpx iOS ARM GN build.

BUG= 635180 

Review-Url: https://codereview.chromium.org/2250833002
Cr-Commit-Position: refs/heads/master@{#412649}

[modify] https://crrev.com/de6fea2617b6baab0433af673d4fb7e2dde830ce/third_party/libvpx/BUILD.gn

Status: Fixed (was: Available)

Sign in to add a comment