[MPlayer-users] Compiles failing

Eli the Bearded mplayer at eli.users.panix.com
Fri Oct 23 23:39:18 CEST 2015


I've got an old version of mplayer, which seems to have a bug, so I
wanted to build the latest to see if it has been fixed, but it's not
working in ways that make me suspect build environment issues.

My system is Ubuntu 12.04:

$ gcc --version
gcc-4.6.real (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

$ yasm --version
yasm 1.1.0.2352
Compiled on Jun 10 2011.
Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
Run yasm --license for licensing overview and summary.

For the record, I tried, with *identical* results, the
MPlayer-1.2.tar.xz package and today's (2015-10-23)
mplayer-checkout-snapshot.tar.bz2. Since I want to check on a bugfix,
I'd prefer to use the snapshot source.

"./configure --prefix=$HOME/lib" works and runs to completion, but the
compile fails on the first file with:

cc -MMD -MP -Wundef -Wall -Wno-switch -Wno-parentheses -Wpointer-arith
  -Wredundant-decls -Werror=format-security -Wstrict-prototypes
  -Wmissing-prototypes -Wdisabled-optimization -Wno-pointer-sign
  -Wdeclaration-after-statement -std=gnu99
  -Werror-implicit-function-declaration -D_POSIX_C_SOURCE=200112
  -D_XOPEN_SOURCE=600 -D_ISOC99_SOURCE -I. -Iffmpeg -O4 -march=native
  -mtune=native -pipe -ffast-math -fomit-frame-pointer -fno-tree-vectorize
  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE  -fpie
  -DPIC -D_REENTRANT -I/usr/include/p11-kit-1
  -I/home/username/lib/include   -I/usr/include/freetype2 -DZLIB_CONST
  -I/home/username/lib/include   -c -o command.o command.c
{standard input}: Assembler messages:
{standard input}:3249: Error: no such instruction: `vfmadd312ss 12(%rsp),%xmm1,%xmm0'
make: *** [command.o] Error 1

Checking the usual sources, I find that errors of that format usualy
come from bad options for -march / -mtune. I tried replacing "native"
with the option gcc emits:

$ gcc -march=native -Q --help=target | grep march
  -march=                               corei7-avx

So "-march=corei7-avx -mtune=corei7-avx". That works for a long time,
but then I hit another assembly issue:

YASM    libavcodec/x86/hevc_idct.o
libavcodec/x86/hevc_idct.asm:88: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:89: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:89: error: redefinition of `vpbroadcastw.loop'
libavcodec/x86/hevc_idct.asm:88: error: `vpbroadcastw.loop' previously defined here
libavcodec/x86/hevc_idct.asm:104: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:104: error: redefinition of `vpbroadcastw.loop'
libavcodec/x86/hevc_idct.asm:88: error: `vpbroadcastw.loop' previously defined here
libavcodec/x86/hevc_idct.asm:105: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:105: error: redefinition of `vpbroadcastw.loop'
libavcodec/x86/hevc_idct.asm:88: error: `vpbroadcastw.loop' previously defined here
libavcodec/x86/hevc_idct.asm:120: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:120: error: redefinition of `vpbroadcastw.loop'
libavcodec/x86/hevc_idct.asm:88: error: `vpbroadcastw.loop' previously defined here
libavcodec/x86/hevc_idct.asm:121: error: instruction expected after label
libavcodec/x86/hevc_idct.asm:121: error: redefinition of `vpbroadcastw.loop'
libavcodec/x86/hevc_idct.asm:88: error: `vpbroadcastw.loop' previously defined here
make[1]: *** [libavcodec/x86/hevc_idct.o] Error 1

All of those are from lines similar to:

  %if HAVE_AVX2_EXTERNAL
  INIT_YMM avx2
  IDCT_DC    16,  2, 10
  IDCT_DC    32,  8, 10
  %endif ;HAVE_AVX2_EXTERNAL

Should I just go ahead and define HAVE_AVX2_EXTERNAL to 0 in
ffmpeg/config.asm ? (/proc/cpuinfo *does* show an "avx2" flag)

Thanks for any tips,

Elijah


More information about the MPlayer-users mailing list