From mboxrd@z Thu Jan 1 00:00:00 1970 From: Giulio Benetti Date: Thu, 13 Sep 2018 10:15:35 +0200 Subject: [Buildroot] [PATCH] ffmpeg: fix static linking build failure when using libavutil In-Reply-To: <0adc085b-e962-2d27-f3a8-554f568d2330@micronovasrl.com> References: <20180911204230.15890-1-giulio.benetti@micronovasrl.com> <0adc085b-e962-2d27-f3a8-554f568d2330@micronovasrl.com> Message-ID: <9b26aef7-bf33-87d1-c6d2-3e98dad32d0f@micronovasrl.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Il 11/09/2018 23:47, Giulio Benetti ha scritto: > Hello, > > Il 11/09/2018 22:42, Giulio Benetti ha scritto: >> 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 why when pkg-config generates libavutil.pc doesn't append -ldrm >> after -lavutil. >> Subsequentely if a package uses pkg-config and ffmpeg it will load >> library dependencies from libavutil.pc without placing -ldrm at the tail. >> Without this fix the only way is to workaround the problem directly in >> the single package, like this: >> https://github.com/buildroot/buildroot/commit/daf7dd87f4d93923df5e757fd43b3ad214a4a2ae >> >> >> Add patch to assure -ldrm comes after -lavutil when static linking. >> >> Fixes: >> http://autobuild.buildroot.net/results/515/5152dcca58944cf732d09fba6e6c9af8a9243c75// >> >> http://autobuild.buildroot.net/results/395/395be1a9cab824b82ef34c2ebd84d54243029b33// >> >> >> Signed-off-by: Giulio Benetti >> --- >> ? ...igure-add-LIBDRM-to-extralibs_avutil.patch | 44 +++++++++++++++++++ >> ? 1 file changed, 44 insertions(+) >> ? create mode 100644 >> package/ffmpeg/0002-configure-add-LIBDRM-to-extralibs_avutil.patch >> >> diff --git >> a/package/ffmpeg/0002-configure-add-LIBDRM-to-extralibs_avutil.patch >> b/package/ffmpeg/0002-configure-add-LIBDRM-to-extralibs_avutil.patch >> new file mode 100644 >> index 0000000000..ae1f3423ae >> --- /dev/null >> +++ b/package/ffmpeg/0002-configure-add-LIBDRM-to-extralibs_avutil.patch >> @@ -0,0 +1,44 @@ >> +From f4c9a7f55229d5275edb89c29ac9b18a737faf65 Mon Sep 17 00:00:00 2001 >> +From: Giulio Benetti >> +Date: Tue, 11 Sep 2018 19:22:27 +0200 >> +Subject: [PATCH] configure: add LIBDRM to extralibs_avutil >> + >> +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 why when pkg-config create libavutil.pc doesn't append -ldrm >> +after -lavutil. >> + >> +Add -ldrm to LIBDRM in case libdrm is enabled and add $LIBDRM to >> +extralibs_avutil. >> + >> +Signed-off-by: Giulio Benetti >> +--- >> + configure | 4 ++-- >> + 1 file changed, 2 insertions(+), 2 deletions(-) >> + >> +diff --git a/configure b/configure >> +index 7377046d0a..7599fcc2bd 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"; } } >> +@@ -7096,7 +7096,7 @@ source_path=${source_path} >> + LIBPREF=${LIBPREF} >> + LIBSUF=${LIBSUF} >> + >> +-extralibs_avutil="$LIBRT $LIBM" >> ++extralibs_avutil="$LIBDRM $LIBRT $LIBM" >> + extralibs_avcodec="$extralibs" >> + extralibs_avformat="$extralibs" >> + extralibs_avdevice="$extralibs" >> +-- >> +2.17.1 >> + >> > > The patch above has been upstreamed: > https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/c50dc77ac708e98d02da7c422a6b9cbf9f565aa5 > > For completeness I point that the "Fixes:" are for "Motion" package. Best regards -- Giulio Benetti CTO MICRONOVA SRL Sede: Via A. Niedda 3 - 35010 Vigonza (PD) Tel. 049/8931563 - Fax 049/8931346 Cod.Fiscale - P.IVA 02663420285 Capitale Sociale ? 26.000 i.v. Iscritta al Reg. Imprese di Padova N. 02663420285 Numero R.E.A. 258642