aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Towner <jwtowner@users.noreply.github.com>2021-04-07 14:22:28 -0700
committerGitHub <noreply@github.com>2021-04-07 14:22:28 -0700
commit9d807041270262cc108b8deda60550a2cd95db1a (patch)
treed69984c88d64d54b3217fa1fa1015fb29fa95fcc
parente1f1938cb8fc646749a900c2cf82b8cc42ba0541 (diff)
downloadvcpkg-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.patch90
-rw-r--r--ports/woff2/CONTROL1
-rw-r--r--ports/woff2/portfile.cmake4
-rw-r--r--scripts/ci.baseline.txt4
-rw-r--r--versions/baseline.json2
-rw-r--r--versions/w-/woff2.json5
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