forked from microsoft/vcpkg
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[woff2] fix for static linking and alternative compiler toolchains (m…
…icrosoft#16392) * [woff2] fix static linking and alternate toolchain First, this change teaches the woff2 CMake configuration to understand the vcpkg's custom unofficial-brotli pkg-config configuration in order to support static linking. This fixes a build failure on x64-linux or other triplets when VCPKG_LIBRARY_LINKAGE is set to static. Secondly, the CANONICAL_PREFIXES option for the woff2 CMake configuration has been changed to be on by default, otherwise custom triplets or toolchains using alternate compilers such as Clang/LLVM or other versions of GCC will fail. Leaving CANONICAL_PREFIXES set to OFF causes -no-canonical-prefixes to be passed to the compiler, which prevents symlinked compiler toolchains from working correctly. If a user does actually need non-canonical prefixes, chances are they will have a custom triplet or toolchain file that passes in -no-canonical-prefixes as a CFLAG for every port, and so setting it to ON here is a better default for vcpkg. * [woff2] update versions * [woff2] update control file * [woff2] update versions * [woff2] update ci.baseline.txt * Update ports/woff2/0001-unofficial-brotli.patch Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> * [woff2] regenerate 0001-unofficial-brotli.patch file * [woff2] update versions * [woff2] regenerate 0001-unofficial-brotli.patch file attempt #2 * [woff2] update versions Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
- Loading branch information
Showing
6 changed files
with
101 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index ecfbb83..7fb7a15 100644 | ||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -34,13 +34,23 @@ endif() | ||
# Find Brotli dependencies | ||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | ||
find_package(BrotliDec) | ||
-if (NOT BROTLIDEC_FOUND) | ||
- message(FATAL_ERROR "librotlidec is needed to build woff2.") | ||
-endif () | ||
find_package(BrotliEnc) | ||
-if (NOT BROTLIENC_FOUND) | ||
- message(FATAL_ERROR "librotlienc is needed to build woff2.") | ||
-endif () | ||
+if(BROTLIDEC_FOUND AND BROTLIENC_FOUND) | ||
+ include_directories("${BROTLIDEC_INCLUDE_DIRS}" "${BROTLIENC_INCLUDE_DIRS}") | ||
+ set(WOFF2_BROTLIDEC libbrotlidec) | ||
+ set(WOFF2_BROTLIENC libbrotlienc) | ||
+ set(WOFF2_BORTLIDEC_LIBRARIES "${BROTLIDEC_LIBRARIES}") | ||
+ set(WOFF2_BORTLIENC_LIBRARIES "${BROTLIENC_LIBRARIES}") | ||
+else() | ||
+ find_package(unofficial-brotli REQUIRED) | ||
+ if(TARGET unofficial::brotli::brotlidec-static) | ||
+ set(BROTLI_LINKAGE -static) | ||
+ endif() | ||
+ set(WOFF2_BROTLIDEC unofficial::brotli::brotlidec${BROTLI_LINKAGE}) | ||
+ set(WOFF2_BROTLIENC unofficial::brotli::brotlienc${BROTLI_LINKAGE}) | ||
+ set(WOFF2_BORTLIDEC_LIBRARIES unofficial::brotli::brotlidec${BROTLI_LINKAGE} unofficial::brotli::brotlicommon${BROTLI_LINKAGE}) | ||
+ set(WOFF2_BORTLIENC_LIBRARIES unofficial::brotli::brotlienc${BROTLI_LINKAGE} unofficial::brotli::brotlicommon${BROTLI_LINKAGE}) | ||
+endif() | ||
|
||
# Set compiler flags | ||
if (NOT CANONICAL_PREFIXES) | ||
@@ -63,9 +73,8 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAG}") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAG}") | ||
set(CMAKE_CXX_STANDARD 11) | ||
|
||
-# Set search path for our private/public headers as well as Brotli headers | ||
-include_directories("src" "include" | ||
- "${BROTLIDEC_INCLUDE_DIRS}" "${BROTLIENC_INCLUDE_DIRS}") | ||
+# Set search path for our private/public headers | ||
+include_directories("src" "include") | ||
|
||
# Common part used by decoder and encoder | ||
add_library(woff2common | ||
@@ -77,7 +86,7 @@ add_library(woff2common | ||
add_library(woff2dec | ||
src/woff2_dec.cc | ||
src/woff2_out.cc) | ||
-target_link_libraries(woff2dec woff2common "${BROTLIDEC_LIBRARIES}") | ||
+target_link_libraries(woff2dec woff2common ${WOFF2_BORTLIDEC_LIBRARIES}) | ||
add_executable(woff2_decompress src/woff2_decompress.cc) | ||
target_link_libraries(woff2_decompress woff2dec) | ||
|
||
@@ -88,7 +97,7 @@ add_library(woff2enc | ||
src/normalize.cc | ||
src/transform.cc | ||
src/woff2_enc.cc) | ||
-target_link_libraries(woff2enc woff2common "${BROTLIENC_LIBRARIES}") | ||
+target_link_libraries(woff2enc woff2common ${WOFF2_BORTLIENC_LIBRARIES}) | ||
add_executable(woff2_compress src/woff2_compress.cc) | ||
target_link_libraries(woff2_compress woff2enc) | ||
|
||
@@ -246,7 +255,7 @@ generate_pkg_config ("${CMAKE_CURRENT_BINARY_DIR}/libwoff2dec.pc" | ||
DESCRIPTION "WOFF2 decoder library" | ||
URL "https://github.com/google/woff2" | ||
VERSION "${WOFF2_VERSION}" | ||
- DEPENDS libbrotlidec | ||
+ DEPENDS ${WOFF2_BROTLIDEC} | ||
DEPENDS_PRIVATE libwoff2common | ||
LIBRARIES woff2dec) | ||
|
||
@@ -255,7 +264,7 @@ generate_pkg_config ("${CMAKE_CURRENT_BINARY_DIR}/libwoff2enc.pc" | ||
DESCRIPTION "WOFF2 encoder library" | ||
URL "https://github.com/google/woff2" | ||
VERSION "${WOFF2_VERSION}" | ||
- DEPENDS libbrotlienc | ||
+ DEPENDS ${WOFF2_BROTLIENC} | ||
DEPENDS_PRIVATE libwoff2common | ||
LIBRARIES woff2enc) | ||
|
||
@@ -264,6 +273,7 @@ if (NOT BUILD_SHARED_LIBS) | ||
install( | ||
TARGETS woff2_decompress woff2_compress woff2_info | ||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" | ||
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}" | ||
) | ||
endif() | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
Source: woff2 | ||
Version: 1.0.2 | ||
Build-Depends: brotli | ||
Port-Version: 1 | ||
Description: font compression reference code |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters