gstreamer-full: Fix link with x264

If a static build is requested and x264 plugin has been enabled
the full link fails with:

/usr/bin/ld: subprojects/x264/libx264.a(cabac-a.o): relocation
R_X86_64_PC32 against symbol `x264_cabac_range_lps' can not be used when
making a shared object; recompile with -fPIC

Fixes #108

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/169>
This commit is contained in:
Stéphane Cerveau 2020-07-07 11:13:49 +02:00
parent 9fa22f5873
commit e236d4f71a

View file

@ -246,6 +246,14 @@ if get_option('default_library') == 'static'
) )
install_headers('gstinitstaticplugins.h', subdir : 'gstreamer-1.0/gst') install_headers('gstinitstaticplugins.h', subdir : 'gstreamer-1.0/gst')
# Avoid a x264 link issue described here: https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/108
# Similar issue has been found with VLC: https://mailman.videolan.org/pipermail/vlc-devel/2009-March/057640.html
gstfull_link_args = []
if cc.has_link_argument('-Wl,-Bsymbolic')
gstfull_link_args += ['-Wl,-Bsymbolic']
endif
gst_dep = subproject('gstreamer').get_variable('gst_dep') gst_dep = subproject('gstreamer').get_variable('gst_dep')
# Get a list of libraries that needs to be exposed in the ABI. # Get a list of libraries that needs to be exposed in the ABI.
@ -272,6 +280,7 @@ if get_option('default_library') == 'static'
gstfull = both_libraries('gstreamer-full-1.0', gstfull = both_libraries('gstreamer-full-1.0',
init_static_plugins_c, init_static_plugins_c,
link_with : all_plugins, link_with : all_plugins,
link_args: gstfull_link_args,
link_whole : exposed_libs, link_whole : exposed_libs,
dependencies : gst_dep, dependencies : gst_dep,
install : true, install : true,