diff options
| author | Jesse Towner <jwtowner@users.noreply.github.com> | 2021-04-07 14:22:28 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-07 14:22:28 -0700 |
| commit | 9d807041270262cc108b8deda60550a2cd95db1a (patch) | |
| tree | d69984c88d64d54b3217fa1fa1015fb29fa95fcc | |
| parent | e1f1938cb8fc646749a900c2cf82b8cc42ba0541 (diff) | |
| download | vcpkg-9d807041270262cc108b8deda60550a2cd95db1a.tar.gz vcpkg-9d807041270262cc108b8deda60550a2cd95db1a.zip | |
[woff2] fix for static linking and alternative compiler toolchains (#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>
| -rw-r--r-- | ports/woff2/0001-unofficial-brotli.patch | 90 | ||||
| -rw-r--r-- | ports/woff2/CONTROL | 1 | ||||
| -rw-r--r-- | ports/woff2/portfile.cmake | 4 | ||||
| -rw-r--r-- | scripts/ci.baseline.txt | 4 | ||||
| -rw-r--r-- | versions/baseline.json | 2 | ||||
| -rw-r--r-- | versions/w-/woff2.json | 5 |
6 files changed, 101 insertions, 5 deletions
diff --git a/ports/woff2/0001-unofficial-brotli.patch b/ports/woff2/0001-unofficial-brotli.patch new file mode 100644 index 000000000..a0163a02c --- /dev/null +++ b/ports/woff2/0001-unofficial-brotli.patch @@ -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() + diff --git a/ports/woff2/CONTROL b/ports/woff2/CONTROL index e4e6511ca..69a5c0ce2 100644 --- a/ports/woff2/CONTROL +++ b/ports/woff2/CONTROL @@ -1,4 +1,5 @@ Source: woff2
Version: 1.0.2
Build-Depends: brotli
+Port-Version: 1
Description: font compression reference code
diff --git a/ports/woff2/portfile.cmake b/ports/woff2/portfile.cmake index 9ec3e55cd..7e71859bf 100644 --- a/ports/woff2/portfile.cmake +++ b/ports/woff2/portfile.cmake @@ -8,11 +8,15 @@ vcpkg_from_github( REF v1.0.2
SHA512 c788bba1530aec463e755e901f9342f4b599e3a07f54645fef1dc388ab5d5c30625535e5dd38e9e792e04a640574baa50eeefb6b7338ab403755f4a4e0c3044d
HEAD_REF master
+ PATCHES
+ 0001-unofficial-brotli.patch
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
+ OPTIONS
+ -DCANONICAL_PREFIXES=ON
)
vcpkg_install_cmake()
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 91c098efc..f1668ba7d 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1702,10 +1702,6 @@ wintoast:arm-uwp=fail wintoast:x64-linux=fail wintoast:x64-osx=fail wintoast:x64-uwp=fail -woff2:x64-linux=fail -woff2:x64-osx=fail -woff2:x64-windows-static=fail -woff2:x64-windows-static-md=fail wpilib:arm64-windows=fail wpilib:x64-osx=fail wxchartdir:x64-osx=fail diff --git a/versions/baseline.json b/versions/baseline.json index b094f0062..70c9c5744 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -6394,7 +6394,7 @@ }, "woff2": { "baseline": "1.0.2", - "port-version": 0 + "port-version": 1 }, "wordnet": { "baseline": "3.0", diff --git a/versions/w-/woff2.json b/versions/w-/woff2.json index b6bdca1a0..1cbece83e 100644 --- a/versions/w-/woff2.json +++ b/versions/w-/woff2.json @@ -1,6 +1,11 @@ { "versions": [ { + "git-tree": "1a8e802f8168798c4171f8384cd2e50b97af3a9b", + "version-string": "1.0.2", + "port-version": 1 + }, + { "git-tree": "c39668ee425b3e9bb5ead506876f144656acf359", "version-string": "1.0.2", "port-version": 0 |
