From 9a206d9fc0cce362c70b31fe99d3aaebffe5671d Mon Sep 17 00:00:00 2001 From: Oleg Shparber Date: Wed, 29 Jan 2020 19:42:25 -0500 Subject: [freetype] Add feature support (#9706) This change makes bzip2, HarfBuzz and PNG support optional. --- ports/freetype/CONTROL | 17 +++++++++-- ports/freetype/portfile.cmake | 52 ++++++++++++++++++++------------ ports/freetype/vcpkg-cmake-wrapper.cmake | 33 +++++++++++++++++--- 3 files changed, 77 insertions(+), 25 deletions(-) diff --git a/ports/freetype/CONTROL b/ports/freetype/CONTROL index 05dbe5060..b5f5d0ef8 100644 --- a/ports/freetype/CONTROL +++ b/ports/freetype/CONTROL @@ -1,5 +1,18 @@ Source: freetype -Version: 2.10.1-2 -Build-Depends: zlib, bzip2, libpng +Version: 2.10.1-3 +Build-Depends: zlib Homepage: https://www.freetype.org/ Description: A library to render fonts. +Default-Features: bzip2, png + +Feature: bzip2 +Build-Depends: bzip2 +Description: Support bzip2 compressed fonts. + +Feature: harfbuzz +Build-Depends: harfbuzz +Description: Improve auto-hinting of OpenType fonts. + +Feature: png +Build-Depends: libpng +Description: Support PNG compressed OpenType embedded bitmaps. diff --git a/ports/freetype/portfile.cmake b/ports/freetype/portfile.cmake index f8f740eab..1b8756a75 100644 --- a/ports/freetype/portfile.cmake +++ b/ports/freetype/portfile.cmake @@ -1,5 +1,3 @@ -include(vcpkg_common_functions) - set(FT_VERSION 2.10.1) vcpkg_download_distfile(ARCHIVE URLS "https://download-mirror.savannah.gnu.org/releases/freetype/freetype-${FT_VERSION}.tar.xz" "https://downloads.sourceforge.net/project/freetype/freetype2/${FT_VERSION}/freetype-${FT_VERSION}.tar.xz" @@ -8,20 +6,31 @@ vcpkg_download_distfile(ARCHIVE ) vcpkg_extract_source_archive_ex( -OUT_SOURCE_PATH SOURCE_PATH -ARCHIVE ${ARCHIVE} -REF ${FT_VERSION} -PATCHES - 0001-Fix-install-command.patch - 0002-Add-CONFIG_INSTALL_PATH-option.patch - 0003-Fix-UWP.patch - 0005-Fix-DLL-EXPORTS.patch + OUT_SOURCE_PATH SOURCE_PATH + ARCHIVE ${ARCHIVE} + REF ${FT_VERSION} + PATCHES + 0001-Fix-install-command.patch + 0002-Add-CONFIG_INSTALL_PATH-option.patch + 0003-Fix-UWP.patch + 0005-Fix-DLL-EXPORTS.patch +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + bzip2 FT_WITH_BZIP2 + harfbuzz FT_WITH_HARFBUZZ + png FT_WITH_PNG + INVERTED_FEATURES + bzip2 CMAKE_DISABLE_FIND_PACKAGE_BZip2 + harfbuzz CMAKE_DISABLE_FIND_PACKAGE_HarfBuzz + png CMAKE_DISABLE_FIND_PACKAGE_PNG ) - + if(NOT ${VCPKG_LIBRARY_LINKAGE} STREQUAL "dynamic") - set(ENABLE_DLL_EXPORT OFF) + set(ENABLE_DLL_EXPORT OFF) else() - set(ENABLE_DLL_EXPORT ON) + set(ENABLE_DLL_EXPORT ON) endif() vcpkg_configure_cmake( @@ -29,11 +38,8 @@ vcpkg_configure_cmake( PREFER_NINJA OPTIONS -DCONFIG_INSTALL_PATH=share/freetype - -DFT_WITH_ZLIB=ON - -DFT_WITH_BZIP2=ON - -DFT_WITH_PNG=ON - -DFT_WITH_HARFBUZZ=OFF - -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE + -DFT_WITH_ZLIB=ON # Force system zlib. + ${FEATURE_OPTIONS} -DENABLE_DLL_EXPORT=${ENABLE_DLL_EXPORT} ) @@ -78,5 +84,13 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/share/freetype/LICENSE.TXT ${CURRENT_PACKAGE vcpkg_copy_pdbs() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/freetype) + if("bzip2" IN_LIST FEATURES) + set(USE_BZIP2 ON) + endif() + + if("png" IN_LIST FEATURES) + set(USE_PNG ON) + endif() + + configure_file(${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake ${CURRENT_PACKAGES_DIR}/share/freetype/vcpkg-cmake-wrapper.cmake @ONLY) endif() diff --git a/ports/freetype/vcpkg-cmake-wrapper.cmake b/ports/freetype/vcpkg-cmake-wrapper.cmake index c08499f2d..01da0b1dc 100644 --- a/ports/freetype/vcpkg-cmake-wrapper.cmake +++ b/ports/freetype/vcpkg-cmake-wrapper.cmake @@ -1,10 +1,35 @@ _find_package(${ARGS}) + find_package(ZLIB) -find_package(PNG) -find_package(BZip2) + +if(@USE_BZIP2@) + find_package(BZip2) +endif() + +if(@USE_PNG@) + find_package(PNG) +endif() + if(TARGET Freetype::Freetype) - set_property(TARGET Freetype::Freetype APPEND PROPERTY INTERFACE_LINK_LIBRARIES BZip2::BZip2 PNG::PNG ZLIB::ZLIB) + set_property(TARGET Freetype::Freetype APPEND PROPERTY INTERFACE_LINK_LIBRARIES ZLIB::ZLIB) + + if(@USE_BZIP2@) + set_property(TARGET Freetype::Freetype APPEND PROPERTY INTERFACE_LINK_LIBRARIES BZip2::BZip2) + endif() + + if(@USE_PNG@) + set_property(TARGET Freetype::Freetype APPEND PROPERTY INTERFACE_LINK_LIBRARIES PNG::PNG) + endif() endif() + if(FREETYPE_LIBRARIES) - list(APPEND FREETYPE_LIBRARIES ${BZIP2_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES}) + list(APPEND FREETYPE_LIBRARIES ${ZLIB_LIBRARIES}) + + if(@USE_BZIP2@) + list(APPEND FREETYPE_LIBRARIES ${BZIP2_LIBRARIES}) + endif() + + if(@USE_PNG@) + list(APPEND FREETYPE_LIBRARIES ${PNG_LIBRARIES}) + endif() endif() -- cgit v1.2.3