[FFmpeg-devel] [PATCH 3.4 2/2] configure: add LIBDRM to Libs.private introducing privatelibs_avutil

Giulio Benetti giulio.benetti at micronovasrl.com
Wed Oct 17 15:02:18 EEST 2018


When static linking programs using ffmpeg libraries, if linking against
libavutil, -ldrm is listed before -lavutil. This leads to linking
failure due to undefined reference of drmGetVersion() and
drmFreeVersion().
This is because when pkg-config creates libavutil.pc it doesn't append
-ldrm to Libs.private:.

- Create LIBDRM and add -ldrm to it in case libdrm is enabled.
- Add privatelibs_avutil variable for explicit private libraries to be
  appended to Libs.private: in pkgconfig_generate.sh.
- Add $LIBDRM to privatelibs_avutil.

Signed-off-by: Giulio Benetti <giulio.benetti at micronovasrl.com>
---
 configure                     | 3 ++-
 ffbuild/pkgconfig_generate.sh | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 7377046d0a..0996d8a85d 100755
--- a/configure
+++ b/configure
@@ -5919,7 +5919,7 @@ enabled libcelt           && require libcelt celt/celt.h celt_decode -lcelt0 &&
                                die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
 enabled libcaca           && require_pkg_config libcaca caca caca.h caca_create_canvas
 enabled libdc1394         && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
-enabled libdrm            && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
+enabled libdrm            && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion && LIBDRM="-ldrm"
 enabled libfdk_aac        && { use_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
                                { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
                                  warn "using libfdk without pkg-config"; } }
@@ -7097,6 +7097,7 @@ LIBPREF=${LIBPREF}
 LIBSUF=${LIBSUF}
 
 extralibs_avutil="$LIBRT $LIBM"
+privatelibs_avutil="$LIBDRM"
 extralibs_avcodec="$extralibs"
 extralibs_avformat="$extralibs"
 extralibs_avdevice="$extralibs"
diff --git a/ffbuild/pkgconfig_generate.sh b/ffbuild/pkgconfig_generate.sh
index e5de6716d2..b86486a107 100755
--- a/ffbuild/pkgconfig_generate.sh
+++ b/ffbuild/pkgconfig_generate.sh
@@ -13,6 +13,7 @@ name=lib${shortname}
 fullname=${name}${build_suffix}
 comment=$2
 libs=$(eval echo \$extralibs_${shortname})
+privatelibs=$(eval echo \$privatelibs_${shortname})
 deps=$(eval echo \$${shortname}_deps)
 
 for dep in $deps; do
@@ -39,7 +40,7 @@ Requires: $($shared || echo $requires)
 Requires.private: $($shared && echo $requires)
 Conflicts:
 Libs: -L\${libdir} $rpath -l${fullname#lib} $($shared || echo $libs)
-Libs.private: $($shared && echo $libs)
+Libs.private: $($shared && echo $libs) ${privatelibs}
 Cflags: -I\${includedir}
 EOF
 
-- 
2.17.1



More information about the ffmpeg-devel mailing list