From 5ff973e446920cdfb5f28244a841b23527a27724 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 21 Mar 2026 11:12:24 +0800 Subject: [PATCH] Add freetype --- config/pkg/lib/freetype.yml | 1 + src/Package/Library/freetype.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/config/pkg/lib/freetype.yml b/config/pkg/lib/freetype.yml index c101a174..df7dc22a 100644 --- a/config/pkg/lib/freetype.yml +++ b/config/pkg/lib/freetype.yml @@ -11,6 +11,7 @@ freetype: depends: - zlib suggests: + - libpng - bzip2 - brotli headers@unix: diff --git a/src/Package/Library/freetype.php b/src/Package/Library/freetype.php index 6cb05a90..8a83eb5e 100644 --- a/src/Package/Library/freetype.php +++ b/src/Package/Library/freetype.php @@ -8,6 +8,7 @@ use StaticPHP\Attribute\Package\BuildFor; use StaticPHP\Attribute\Package\Library; use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixCMakeExecutor; +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; use StaticPHP\Util\FileSystem; #[Library('freetype')] @@ -33,4 +34,18 @@ class freetype $lib->patchPkgconfPrefix(['freetype2.pc']); FileSystem::replaceFileStr("{$lib->getBuildRootPath()}/lib/pkgconfig/freetype2.pc", ' -L/lib ', " -L{$lib->getBuildRootPath()}/lib "); } + + #[BuildFor('Windows')] + public function buildWin(LibraryPackage $lib): void + { + WindowsCMakeExecutor::create($lib) + ->optionalPackage('libpng', ...cmake_boolean_args('FT_DISABLE_PNG', true)) + ->optionalPackage('bzip2', ...cmake_boolean_args('FT_DISABLE_BZIP2', true)) + ->optionalPackage('brotli', ...cmake_boolean_args('FT_DISABLE_BROTLI', true)) + ->addConfigureArgs('-DFT_DISABLE_HARFBUZZ=ON') + ->build(); + + // freetype.lib to libfreetype_a.lib + FileSystem::copy("{$lib->getLibDir()}\\freetype.lib", "{$lib->getLibDir()}\\libfreetype_a.lib"); + } }