From 730b00bd5d5c5744b460a0ff259b4629e8e07fc0 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
Date: Wed, 20 Jul 2022 10:16:56 -0400
Subject: [PATCH] libclient: Explicitly link to avutil when using libwrap.

Otherwise, when libjami is compiled as a shared library and
dynamically linked with all its dependencies (including ffmpeg), the
build would fail with:

  ld: src/libclient/liblibjamiclient.a(directrenderer.cpp.o):
  undefined reference to symbol 'av_frame_alloc@@LIBAVUTIL_56'
  ld: /gnu/store/...-ffmpeg-jami-4.4.2/lib/libavutil.so.56:
  error adding symbols: DSO missing from command line

* src/libclient/CMakeLists.txt: Call find_library for avutil, with
hints for contrib path on GNU/Linux and macOS.
[ENABLE_LIBWRAP]: Add target link to avutil if not on Windows.

Co-authored-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
Co-authored-by: Amin Bandali <amin.bandali@savoirfairelinux.com>
Change-Id: Id9681132b046fd828002cd3daa24afc8a6dd1eae
---
 src/libclient/CMakeLists.txt | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
index bfedfba41..260f80fe5 100644
--- a/src/libclient/CMakeLists.txt
+++ b/src/libclient/CMakeLists.txt
@@ -329,6 +329,10 @@ find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
   ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
   ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
 include_directories(${AVUTIL_INCLUDE_DIR})
+find_library(AVUTIL_LIBRARY avutil
+  HINTS
+  ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
+  ${LIBJAMI_CONTRIB_DIR}/x86_64-apple-darwin${CMAKE_HOST_SYSTEM_VERSION}/lib)
 
 if(ENABLE_LIBWRAP)
   list(APPEND LIBCLIENT_HEADERS directrenderer.h)
@@ -465,6 +469,9 @@ foreach(QT_LIB ${QT_LIBS})
 endforeach()
 if(ENABLE_LIBWRAP)
   target_link_libraries(${LIBCLIENT_NAME} qtwrapper ${LIBJAMI_LIB})
+  if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
+    target_link_libraries(${LIBCLIENT_NAME} ${AVUTIL_LIBRARY})
+  endif()
 endif()
 if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
   target_link_libraries(${LIBCLIENT_NAME} -lpthread)
-- 
GitLab