From 9182cf1e348e01408019a220cdc4d10f781ef67d Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Wed, 8 Apr 2026 22:14:37 +0800 Subject: [PATCH] Add ext-glfw support for Windows --- config/pkg/lib/glfw.yml | 5 +++++ src/Package/Extension/glfw.php | 1 + src/Package/Library/glfw.php | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/config/pkg/lib/glfw.yml b/config/pkg/lib/glfw.yml index 13fba596..f7d01549 100644 --- a/config/pkg/lib/glfw.yml +++ b/config/pkg/lib/glfw.yml @@ -1,6 +1,11 @@ glfw: type: library artifact: glfw + headers: + - GLFW/glfw3.h + - GLFW/glfw3native.h lang: cpp static-libs@unix: - libglfw3.a + static-libs@windows: + - glfw3.lib diff --git a/src/Package/Extension/glfw.php b/src/Package/Extension/glfw.php index 2a9c7ee5..8c73cb48 100644 --- a/src/Package/Extension/glfw.php +++ b/src/Package/Extension/glfw.php @@ -16,6 +16,7 @@ use StaticPHP\Util\FileSystem; class glfw extends PhpExtensionPackage { #[BeforeStage('php', [php::class, 'buildconfForUnix'], 'ext-glfw')] + #[BeforeStage('php', [php::class, 'buildconfForWindows'], 'ext-glfw')] #[PatchDescription('Patch glfw extension before buildconf')] public function patchBeforeBuildconf(): void { diff --git a/src/Package/Library/glfw.php b/src/Package/Library/glfw.php index 9348489c..f4a26149 100644 --- a/src/Package/Library/glfw.php +++ b/src/Package/Library/glfw.php @@ -11,6 +11,7 @@ use StaticPHP\Exception\BuildFailureException; use StaticPHP\Exception\ValidationException; use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixCMakeExecutor; +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; use StaticPHP\Runtime\SystemTarget; use StaticPHP\Toolchain\Interface\ToolchainInterface; @@ -97,4 +98,19 @@ class glfw // patch pkgconf $lib->patchPkgconfPrefix(['glfw3.pc']); } + + #[BuildFor('Windows')] + public function buildForWin(LibraryPackage $lib): void + { + WindowsCMakeExecutor::create($lib) + ->setWorkingDir("{$lib->getSourceDir()}/vendor/glfw") + ->setBuildDir("{$lib->getSourceDir()}/vendor/glfw") + ->setReset(false) + ->addConfigureArgs( + '-DGLFW_BUILD_EXAMPLES=OFF', + '-DGLFW_BUILD_TESTS=OFF', + '-DGLFW_BUILD_DOCS=OFF', + ) + ->build(); + } }