Open Bug 1430094 Opened 6 years ago Updated 2 years ago

fir_filter_sse.cc being built on non-x86 platforms

Categories

(Core :: WebRTC, defect, P5)

defect

Tracking

()

People

(Reporter: dan, Unassigned)

References

Details

After recent (bug 1393119 ??) changes in webrtc code and/or build system the media/webrtc/trunk/webrtc/common_audio/fir_filter_sse.cc file is being compiled on non-x86 platforms (aarch64, ppc64, ppc64le) and the build fails with

...
/usr/bin/g++ -o Unified_cpp_common_audio_sse2_gn0.o -c -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/dist/system_wrappers -include /home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/config/gcc_hidden.h -DNDEBUG -DTRIMMED=1 -DWEBRTC_MOZILLA_BUILD -DV8_DEPRECATION_WARNINGS -DWEBRTC_RESTRICT_LOGGING -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DCHROMIUM_BUILD -DEXPAT_RELATIVE_PATH -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DNVALGRIND -D_FILE_OFFSET_BITS=64 -DUSE_NSS_CERTS=1 -DWEBRTC_POSIX -DWEBRTC_LINUX -DUSE_X11=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/ipc/ipdl/_ipdlheaders -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/ipc/chromium/src -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/ipc/glue -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/media/webrtc/trunk -I/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/dist/include -fPIC -DMOZILLA_CLIENT -include /home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/mozilla-config.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wformat -Wformat-overflow=2 -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O2 -fno-omit-frame-pointer  -MD -MP -MF .deps/Unified_cpp_common_audio_sse2_gn0.o.pp   /home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn/Unified_cpp_common_audio_sse2_gn0.cpp
In file included from /home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn/Unified_cpp_common_audio_sse2_gn0.cpp:2:0:
/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/media/webrtc/trunk/webrtc/common_audio/fir_filter_sse.cc:15:10: fatal error: xmmintrin.h: No such file or directory
 #include <xmmintrin.h>
          ^~~~~~~~~~~~~
compilation terminated.
gmake[4]: *** [/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/config/rules.mk:1042: Unified_cpp_common_audio_sse2_gn0.o] Error 1
gmake[4]: Leaving directory '/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/obj-aarch64-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn'
gmake[3]: *** [/home/jenkins/workspace/Firefox-default/label/aarch64/firefox-src/config/recurse.mk:73: media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn/target] Error 2
...
Blocks: 1393119
Rank: 15
Priority: -- → P2
Looks like a change from Friday fixed the problem, we've got a successful build on all arches.
Chris, this looks like it might be a moz.build code gen bug. The BUILD.gn file at [1] checks for current_cpu == "x86" or current_cpu == "x64" but the moz.build file at [2] appears to be including it for all Linux builds:

[1] https://searchfox.org/mozilla-central/rev/41925c0b6c6d58578690121de439d2a8d3d690f3/media/webrtc/trunk/webrtc/common_audio/BUILD.gn#204
[2] https://hg.mozilla.org/mozilla-central/file/eac997d73d67/media/webrtc/trunk/moz.build#l105
Flags: needinfo?(cmanchester)
(In reply to Dan Horák from comment #1)
> Looks like a change from Friday fixed the problem, we've got a successful
> build on all arches.

Dan, we plan to reland Bug 1393119 on January 23 when Nightly 60 opens up. We'll do our best to get this problem sorted out between now and then.
(In reply to Dan Minor [:dminor] from comment #3)
> (In reply to Dan Horák from comment #1)
> > Looks like a change from Friday fixed the problem, we've got a successful
> > build on all arches.
> 
> Dan, we plan to reland Bug 1393119 on January 23 when Nightly 60 opens up.
> We'll do our best to get this problem sorted out between now and then.

Ah, I see, thanks for info.
(In reply to Dan Minor [:dminor] from comment #2)
> Chris, this looks like it might be a moz.build code gen bug. The BUILD.gn
> file at [1] checks for current_cpu == "x86" or current_cpu == "x64" but the
> moz.build file at [2] appears to be including it for all Linux builds:
> 
> [1]
> https://searchfox.org/mozilla-central/rev/
> 41925c0b6c6d58578690121de439d2a8d3d690f3/media/webrtc/trunk/webrtc/
> common_audio/BUILD.gn#204
> [2]
> https://hg.mozilla.org/mozilla-central/file/eac997d73d67/media/webrtc/trunk/
> moz.build#l105

This is not an ideal failure mode, but as far as I can tell this is a case where we need to add additional json configs for these platforms. fir_filter_sse.cc is built in every linux config we have checked in, so the moz.build generator simplifies this condition. We could be more strict about this and reject platforms we don't have configs for, but the solution in any event is to add json configs for these platforms.
Flags: needinfo?(cmanchester)
Dan, it looks like you will have to follow the instructions at https://firefox-source-docs.mozilla.org/build/buildsystem/gn.html to generate json gn configs and moz.build files for your platforms.

If the only thing that is broken is SSE being enabled, you might be able to copy an existing json gn config, change the processor, and remove SSE.

The other alternative would be to build with webrtc disabled.

I'm sorry about this, I wish I could be more help, but I have no access to suitable machines to test with. If you do end up creating json config files, please attach them here and I'll roll them up into my reland of Bug 1393119.
Flags: needinfo?(dan)
Status: UNCONFIRMED → NEW
Rank: 15 → 45
Ever confirmed: true
Priority: P2 → P5
OK, I'm going to look into it, but it doesn't look straightforward to me :-)

Dan, send me an email if you want access to a ppc64 or ppc64le machine. It's not a problem.
Flags: needinfo?(dan)
I haven't had much success with GN yet, but I will try further.

The current failure looks like
....
/usr/bin/g++ -o Unified_cpp_common_audio_sse2_gn0.o -c -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/dist/system_wrappers -include /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/config/gcc_hidden.h -DNDEBUG -DTRIMMED=1 -DWEBRTC_MOZILLA_BUILD -DV8_DEPRECATION_WARNINGS -DWEBRTC_RESTRICT_LOGGING -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DCHROMIUM_BUILD -DEXPAT_RELATIVE_PATH -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DNVALGRIND -D_FILE_OFFSET_BITS=64 -DUSE_NSS_CERTS=1 -DWEBRTC_POSIX -DWEBRTC_LINUX -DUSE_X11=1 -DSTATIC_EXPORTABLE_JS_API -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/ipc/ipdl/_ipdlheaders -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/ipc/chromium/src -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/ipc/glue -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/media/webrtc/trunk -I/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/dist/include -fPIC -DMOZILLA_CLIENT -include /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/mozilla-config.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wformat -Wformat-overflow=2 -fno-sized-deallocation -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -pthread -pipe -g -freorder-blocks -O2 -fno-omit-frame-pointer -msse2  -MD -MP -MF .deps/Unified_cpp_common_audio_sse2_gn0.o.pp   /home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/obj-powerpc64le-unknown-linux-gnu/media/webrtc/trunk/webrtc/common_audio/common_audio_sse2_gn/Unified_cpp_common_audio_sse2_gn0.cpp
g++: error: unrecognized command line option ‘-msse2’; did you mean ‘-misel’?
gmake[4]: *** [/home/jenkins/workspace/Firefox-default/label/ppc64le/firefox-src/config/rules.mk:1049: Unified_cpp_common_audio_sse2_gn0.o] Error 1
See Also: → 1434589
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.