Message ID | 1467477991-13051-1-git-send-email-bernd.kuhls@t-online.de |
---|---|
State | Accepted |
Headers | show |
Hello, On Sat, 2 Jul 2016 18:46:31 +0200, Bernd Kuhls wrote: > Also propagate as reverse dependency to libplayer & tovid. > > Fixes > http://autobuild.buildroot.net/results/630/6306757da3be9bb7e3cdcbfc8abb4e64a3fb7913/ According to this build failure: ffmpeg/libavcodec/libavcodec.a(utils.o): In function `default_lockmgr_cb': utils.c:(.text+0x3f8): undefined reference to `__sync_val_compare_and_swap_4' utils.c:(.text+0x48c): undefined reference to `__sync_val_compare_and_swap_4' So it's the internal copy of ffmpeg that mplayer carries that uses those atomic operations. In this case, why doesn't the standalone ffmpeg package also use atomic operations ? Is the ffmpeg code base different ? Thomas
Hi Thomas, [posted and mailed] Thomas Petazzoni <thomas.petazzoni- wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> wrote in news:20160702185004.34235606@free-electrons.com: > So it's the internal copy of ffmpeg that mplayer carries that uses > those atomic operations. > > In this case, why doesn't the standalone ffmpeg package also use atomic > operations ? Is the ffmpeg code base different ? no, but the build system is different. While ffmpeg uses its own configure script to determine the capabilities of the arch target used for compilation mplayer provides a hard-coded config.h file... The difference on sparc, the arch I am trying to fix, looks like this: ffmpeg-2.8.7$ grep "ATOMIC\|_SYNC" config.h #define HAVE_ATOMICS_GCC 0 #define HAVE_ATOMICS_SUNCC 0 #define HAVE_ATOMICS_WIN32 0 #define HAVE_ATOMIC_CAS_PTR 0 #define HAVE_ATOMIC_COMPARE_EXCHANGE 0 #define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0 #define HAVE_ATOMICS_NATIVE 0 mplayer-1.3.0$ grep "ATOMIC\|_SYNC" config.h #define HAVE_ATOMICS_GCC 1 #define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1 #define HAVE_ATOMICS_NATIVE 1 #define HAVE_SYNC_SYNCHRONIZE 1 Have a look at mplayer configure script at line 9260 for details. Of course we could try to use sed to change config.h in a _POST_CONFIGURE_HOOK, but getting the details right could result in a pita, I tried already and gave up after ~30 minutes. Unless someone comes up with a better solution my patch should be applied as obviously the mplayer build system has no support for archs lacking _sync4. Regards, Bernd
Hello, On Sat, 2 Jul 2016 18:46:31 +0200, Bernd Kuhls wrote: > Also propagate as reverse dependency to libplayer & tovid. > > Fixes > http://autobuild.buildroot.net/results/630/6306757da3be9bb7e3cdcbfc8abb4e64a3fb7913/ > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > package/libplayer/Config.in | 1 + > package/mplayer/Config.in | 2 ++ > package/tovid/Config.in | 2 ++ > 3 files changed, 5 insertions(+) Applied with an improved commit log, using the explanations you have provided in our discussion. Thanks! Thomas
diff --git a/package/libplayer/Config.in b/package/libplayer/Config.in index 665b947..37fbb26 100644 --- a/package/libplayer/Config.in +++ b/package/libplayer/Config.in @@ -12,6 +12,7 @@ if BR2_PACKAGE_LIBPLAYER config BR2_PACKAGE_LIBPLAYER_MPLAYER bool "mplayer backend" depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer select BR2_PACKAGE_MPLAYER config BR2_PACKAGE_LIBPLAYER_GSTREAMER diff --git a/package/mplayer/Config.in b/package/mplayer/Config.in index 97b1f38..76bb6f0 100644 --- a/package/mplayer/Config.in +++ b/package/mplayer/Config.in @@ -10,6 +10,7 @@ config BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS config BR2_PACKAGE_MPLAYER bool "mplayer" depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on BR2_TOOLCHAIN_HAS_THREADS help MPlayer is a movie player which runs on many systems and supports @@ -19,6 +20,7 @@ config BR2_PACKAGE_MPLAYER comment "mplayer needs a toolchain w/ threads" depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_TOOLCHAIN_HAS_THREADS if BR2_PACKAGE_MPLAYER diff --git a/package/tovid/Config.in b/package/tovid/Config.in index 1288f84..d8052ea 100644 --- a/package/tovid/Config.in +++ b/package/tovid/Config.in @@ -7,6 +7,7 @@ config BR2_PACKAGE_TOVID depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer # The below dependencies are runtime dependencies only select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps_ng select BR2_PACKAGE_DVDAUTHOR @@ -30,6 +31,7 @@ comment "tovid needs a toolchain w/ threads, C++, wchar" depends on BR2_USE_MMU depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 depends on !BR2_TOOLCHAIN_HAS_THREADS \ || !BR2_INSTALL_LIBSTDCPP \ || !BR2_USE_WCHAR
Also propagate as reverse dependency to libplayer & tovid. Fixes http://autobuild.buildroot.net/results/630/6306757da3be9bb7e3cdcbfc8abb4e64a3fb7913/ Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- package/libplayer/Config.in | 1 + package/mplayer/Config.in | 2 ++ package/tovid/Config.in | 2 ++ 3 files changed, 5 insertions(+)