|
@@ -0,0 +1,80 @@
|
|
|
|
+From 9a6d50b3f355c1e4d72a235aa0bac4856dff1785 Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Adrian Perez de Castro <aperez@igalia.com>
|
|
|
|
+Date: Tue, 27 Mar 2018 19:59:23 +0100
|
|
|
|
+Subject: [PATCH] CMake: Handle multiple libraries being returned for Brotli
|
|
|
|
+
|
|
|
|
+Brotli is built as three libraries: libbrotlienc, libbrotlidec, and
|
|
|
|
+libbrotlicommon. When requesting the linker flags using pkg-config for
|
|
|
|
+e.g. libbrotlidec, it will return both libbrotlidec and libbrotlicommon.
|
|
|
|
+The FindBrotli*.cmake files ignore the names of the libraries returned
|
|
|
|
+by pkg-config, and hardcode only the libbrotli{enc,dec} names. While
|
|
|
|
+this is fine when using shared libraries (they contain an entry for
|
|
|
|
+libbrotlicommon as required library in their headers), it will cause
|
|
|
|
+linker errors when Brotli has been built as static libraries, due to
|
|
|
|
+the missing symbols from libbrotlicommon being unknown to the linker.
|
|
|
|
+
|
|
|
|
+This fixes FindBrotli*.cmake files by using the library names reported
|
|
|
|
+by pkg-config (instead of hardcoding them), and applying find_library()
|
|
|
|
+to each of the libraries to find their absolute paths. If any of the
|
|
|
|
+libraries is missing, the corresponding BROTLI{ENC,DEC}_LIBRARIES is
|
|
|
|
+unset to let find_package_handle_standard_args() report an error.
|
|
|
|
+---
|
|
|
|
+ cmake/FindBrotliDec.cmake | 13 +++++++++----
|
|
|
|
+ cmake/FindBrotliEnc.cmake | 14 ++++++++++----
|
|
|
|
+ 2 files changed, 19 insertions(+), 8 deletions(-)
|
|
|
|
+
|
|
|
|
+Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
|
|
|
|
+Upstream-Status: Submitted [https://github.com/google/woff2/pull/112]
|
|
|
|
+
|
|
|
|
+diff --git a/cmake/FindBrotliDec.cmake b/cmake/FindBrotliDec.cmake
|
|
|
|
+index abb06f4..9cbb415 100644
|
|
|
|
+--- a/cmake/FindBrotliDec.cmake
|
|
|
|
++++ b/cmake/FindBrotliDec.cmake
|
|
|
|
+@@ -18,10 +18,15 @@ find_path(BROTLIDEC_INCLUDE_DIRS
|
|
|
|
+ HINTS ${PC_BROTLIDEC_INCLUDEDIR}
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+-find_library(BROTLIDEC_LIBRARIES
|
|
|
|
+- NAMES brotlidec
|
|
|
|
+- HINTS ${PC_BROTLIDEC_LIBDIR}
|
|
|
|
+-)
|
|
|
|
++set(BROTLIDEC_LIBRARIES "")
|
|
|
|
++foreach(_lib ${PC_BROTLIDEC_LIBRARIES})
|
|
|
|
++ find_library(PC_BROTLIDEC_PATH_${_lib} ${_lib} HINTS ${PC_BROTLIDEC_LIBRARY_DIRS})
|
|
|
|
++ if(NOT PC_BROTLIDEC_PATH_${_lib})
|
|
|
|
++ unset(BROTLIDEC_LIBRARIES)
|
|
|
|
++ break()
|
|
|
|
++ endif()
|
|
|
|
++ list(APPEND BROTLIDEC_LIBRARIES "${PC_BROTLIDEC_PATH_${_lib}}")
|
|
|
|
++endforeach()
|
|
|
|
+
|
|
|
|
+ include(FindPackageHandleStandardArgs)
|
|
|
|
+ find_package_handle_standard_args(BrotliDec
|
|
|
|
+diff --git a/cmake/FindBrotliEnc.cmake b/cmake/FindBrotliEnc.cmake
|
|
|
|
+index 4be347d..55f3932 100644
|
|
|
|
+--- a/cmake/FindBrotliEnc.cmake
|
|
|
|
++++ b/cmake/FindBrotliEnc.cmake
|
|
|
|
+@@ -18,10 +18,16 @@ find_path(BROTLIENC_INCLUDE_DIRS
|
|
|
|
+ HINTS ${PC_BROTLIENC_INCLUDEDIR}
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+-find_library(BROTLIENC_LIBRARIES
|
|
|
|
+- NAMES brotlienc
|
|
|
|
+- HINTS ${PC_BROTLIENC_LIBDIR}
|
|
|
|
+-)
|
|
|
|
++set(BROTLIENC_LIBRARIES "")
|
|
|
|
++foreach(_lib ${PC_BROTLIENC_LIBRARIES})
|
|
|
|
++ find_library(PC_BROTLIENC_PATH_${_lib} ${_lib}
|
|
|
|
++ HINTS ${PC_BROTLIENC_LIBRARY_DIRS})
|
|
|
|
++ if(NOT PC_BROTLIENC_PATH_${_lib})
|
|
|
|
++ unset(BROTLIENC_LIBRARIES)
|
|
|
|
++ break()
|
|
|
|
++ endif()
|
|
|
|
++ list(APPEND BROTLIENC_LIBRARIES "${PC_BROTLIENC_PATH_${_lib}}")
|
|
|
|
++endforeach()
|
|
|
|
+
|
|
|
|
+ include(FindPackageHandleStandardArgs)
|
|
|
|
+ find_package_handle_standard_args(BrotliEnc
|
|
|
|
+--
|
|
|
|
+2.16.3
|
|
|
|
+
|