[FFmpeg-devel] tests/checkasm/Makefile: fix 'make fate' error when enable vaapi

Submitted by Zachary Zhou on Oct. 24, 2018, 5:15 a.m.

Details

Message ID 20181024051556.28539-1-zachary.zhou@intel.com
State New
Headers show

Commit Message

Zachary Zhou Oct. 24, 2018, 5:15 a.m.
Reproduce the issue:

$ ./configure --enable-libmfx --enable-vaapi --enable-shared --samples=fate-suite/
$ make fate
LD	tests/checkasm/checkasm
/usr/bin/x86_64-linux-gnu-ld: libavutil/libavutil.a(hwcontext_vaapi.o): undefined reference to symbol 'XDisplayName'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
tests/checkasm/Makefile:71: recipe for target 'tests/checkasm/checkasm' failed
make: *** [tests/checkasm/checkasm] Error 1
---
 configure | 1 +
 1 file changed, 1 insertion(+)

Comments

Mark Thompson Oct. 24, 2018, 11:02 p.m.
On 24/10/18 06:15, Zachary Zhou wrote:
> Reproduce the issue:
> 
> $ ./configure --enable-libmfx --enable-vaapi --enable-shared --samples=fate-suite/
> $ make fate
> LD	tests/checkasm/checkasm
> /usr/bin/x86_64-linux-gnu-ld: libavutil/libavutil.a(hwcontext_vaapi.o): undefined reference to symbol 'XDisplayName'
> //usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
> collect2: error: ld returned 1 exit status
> tests/checkasm/Makefile:71: recipe for target 'tests/checkasm/checkasm' failed
> make: *** [tests/checkasm/checkasm] Error 1
> ---
>  configure | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/configure b/configure
> index 85d5dd5962..f3e27cea10 100755
> --- a/configure
> +++ b/configure
> @@ -6387,6 +6387,7 @@ if enabled vaapi; then
>  
>      if enabled xlib; then
>          check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h" vaGetDisplay
> +        check_pkg_config vaapi_x11 "libX11" "X11/Xlib.h" XDisplayName
>      fi
>  
>      check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"
> 

This seems wrong - since xlib is enabled when you get here the xlib check on line 5891 should already have included the relevant X library options.

I think your build setup is incorrect somehow - note that to test a build with --enable-shared you need to either run the install (+ ldconfig) or pass a suitable LD_LIBRARY_PATH option.

Thanks,

- Mark
Zachary Zhou Oct. 25, 2018, 1:15 a.m.
> -----Original Message-----

> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces@ffmpeg.org] On Behalf Of

> Mark Thompson

> Sent: Thursday, October 25, 2018 7:03 AM

> To: ffmpeg-devel@ffmpeg.org

> Subject: Re: [FFmpeg-devel] [PATCH] tests/checkasm/Makefile: fix 'make fate'

> error when enable vaapi

> 

> On 24/10/18 06:15, Zachary Zhou wrote:

> > Reproduce the issue:

> >

> > $ ./configure --enable-libmfx --enable-vaapi --enable-shared

> > --samples=fate-suite/ $ make fate

> > LD	tests/checkasm/checkasm

> > /usr/bin/x86_64-linux-gnu-ld: libavutil/libavutil.a(hwcontext_vaapi.o):

> undefined reference to symbol 'XDisplayName'

> > //usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO

> > missing from command line

> > collect2: error: ld returned 1 exit status

> > tests/checkasm/Makefile:71: recipe for target

> > 'tests/checkasm/checkasm' failed

> > make: *** [tests/checkasm/checkasm] Error 1

> > ---

> >  configure | 1 +

> >  1 file changed, 1 insertion(+)

> >

> > diff --git a/configure b/configure

> > index 85d5dd5962..f3e27cea10 100755

> > --- a/configure

> > +++ b/configure

> > @@ -6387,6 +6387,7 @@ if enabled vaapi; then

> >

> >      if enabled xlib; then

> >          check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h"

> > vaGetDisplay

> > +        check_pkg_config vaapi_x11 "libX11" "X11/Xlib.h" XDisplayName

> >      fi

> >

> >      check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"

> >

> 

> This seems wrong - since xlib is enabled when you get here the xlib check on

> line 5891 should already have included the relevant X library options.

> 

> I think your build setup is incorrect somehow - note that to test a build with --

> enable-shared you need to either run the install (+ ldconfig) or pass a suitable

> LD_LIBRARY_PATH option.


I tried three PCs, and got the same build error, I also think EXTRALIBS-avutil should be a good place to add "-lX11". But after run build script configure, "-lX11" cannot be found in EXTRALIBS-avutil.

Yes, I read the line 5891, it is including "-lX11", but I think it is worked for run "make", not work for "make fate" in my test, I try to fix it, but looks like the script configure is a little complex.  

 It looks like in compile time mostly depend on LDFLAGS, not LD_LIBRARY_PATH. 
LD_LIBRARY_PATH is for the runtime.


> 

> Thanks,

> 

> - Mark

> _______________________________________________

> ffmpeg-devel mailing list

> ffmpeg-devel@ffmpeg.org

> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
mypopy@gmail.com Oct. 25, 2018, 1:45 a.m.
On Thu, Oct 25, 2018 at 9:16 AM Zhou, Zachary <zachary.zhou@intel.com> wrote:
>
>
>
> > -----Original Message-----
> > From: ffmpeg-devel [mailto:ffmpeg-devel-bounces@ffmpeg.org] On Behalf Of
> > Mark Thompson
> > Sent: Thursday, October 25, 2018 7:03 AM
> > To: ffmpeg-devel@ffmpeg.org
> > Subject: Re: [FFmpeg-devel] [PATCH] tests/checkasm/Makefile: fix 'make fate'
> > error when enable vaapi
> >
> > On 24/10/18 06:15, Zachary Zhou wrote:
> > > Reproduce the issue:
> > >
> > > $ ./configure --enable-libmfx --enable-vaapi --enable-shared
> > > --samples=fate-suite/ $ make fate
> > > LD  tests/checkasm/checkasm
> > > /usr/bin/x86_64-linux-gnu-ld: libavutil/libavutil.a(hwcontext_vaapi.o):
> > undefined reference to symbol 'XDisplayName'
> > > //usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO
> > > missing from command line
> > > collect2: error: ld returned 1 exit status
> > > tests/checkasm/Makefile:71: recipe for target
> > > 'tests/checkasm/checkasm' failed
> > > make: *** [tests/checkasm/checkasm] Error 1
> > > ---
> > >  configure | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/configure b/configure
> > > index 85d5dd5962..f3e27cea10 100755
> > > --- a/configure
> > > +++ b/configure
> > > @@ -6387,6 +6387,7 @@ if enabled vaapi; then
> > >
> > >      if enabled xlib; then
> > >          check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h"
> > > vaGetDisplay
> > > +        check_pkg_config vaapi_x11 "libX11" "X11/Xlib.h" XDisplayName
> > >      fi
> > >
> > >      check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"
> > >
> >
> > This seems wrong - since xlib is enabled when you get here the xlib check on
> > line 5891 should already have included the relevant X library options.
> >
> > I think your build setup is incorrect somehow - note that to test a build with --
> > enable-shared you need to either run the install (+ ldconfig) or pass a suitable
> > LD_LIBRARY_PATH option.
>
> I tried three PCs, and got the same build error, I also think EXTRALIBS-avutil should be a good place to add "-lX11". But after run build script configure, "-lX11" cannot be found in EXTRALIBS-avutil.
>
> Yes, I read the line 5891, it is including "-lX11", but I think it is worked for run "make", not work for "make fate" in my test, I try to fix it, but looks like the script configure is a little complex.
>
>  It looks like in compile time mostly depend on LDFLAGS, not LD_LIBRARY_PATH.
> LD_LIBRARY_PATH is for the runtime.
>
>
In fact, I can't reproduce this build issue, this is my build step
(https://github.com/mypopydev/ffmpeg_build)

Patch hide | download patch | download mbox

diff --git a/configure b/configure
index 85d5dd5962..f3e27cea10 100755
--- a/configure
+++ b/configure
@@ -6387,6 +6387,7 @@  if enabled vaapi; then
 
     if enabled xlib; then
         check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h" vaGetDisplay
+        check_pkg_config vaapi_x11 "libX11" "X11/Xlib.h" XDisplayName
     fi
 
     check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"