Add ext-mongodb for Windows

This commit is contained in:
crazywhalecc
2026-04-11 00:39:30 +08:00
parent e83a997d0c
commit 25891a8648
2 changed files with 18 additions and 2 deletions

View File

@@ -9,7 +9,9 @@ ext-mongodb:
metadata: metadata:
license-files: [LICENSE] license-files: [LICENSE]
license: PHP-3.01 license: PHP-3.01
suggests: depends@windows:
- ext-openssl
suggests@unix:
- icu - icu
- openssl - openssl
- zstd - zstd
@@ -18,4 +20,5 @@ ext-mongodb:
- CoreFoundation - CoreFoundation
- Security - Security
php-extension: php-extension:
arg-type: custom arg-type@unix: custom
arg-type@windows: '--enable-mongodb --with-mongodb-client-side-encryption'

View File

@@ -4,14 +4,27 @@ declare(strict_types=1);
namespace Package\Extension; namespace Package\Extension;
use Package\Target\php;
use StaticPHP\Attribute\Package\BeforeStage;
use StaticPHP\Attribute\Package\CustomPhpConfigureArg; use StaticPHP\Attribute\Package\CustomPhpConfigureArg;
use StaticPHP\Attribute\Package\Extension; use StaticPHP\Attribute\Package\Extension;
use StaticPHP\Package\PackageInstaller; use StaticPHP\Package\PackageInstaller;
use StaticPHP\Package\PhpExtensionPackage; use StaticPHP\Package\PhpExtensionPackage;
use StaticPHP\Util\FileSystem;
#[Extension('mongodb')] #[Extension('mongodb')]
class mongodb extends PhpExtensionPackage class mongodb extends PhpExtensionPackage
{ {
#[BeforeStage('php', [php::class, 'buildconfForWindows'], 'ext-mongodb')]
public function patchBeforeBuild(): void
{
FileSystem::replaceFileStr(
"{$this->getSourceDir()}/config.w32",
'ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MESSAGE_LITTLE_ENDIAN=1 /D MONGOCRYPT_LITTLE_ENDIAN=1 /D MLIB_USER=1");',
'ADD_FLAG("CFLAGS_MONGODB", "/D KMS_MESSAGE_LITTLE_ENDIAN=1 /D MONGOCRYPT_LITTLE_ENDIAN=1 /D MLIB_USER=1");' . "\n ADD_FLAG(\"CFLAGS_MONGODB\", \"/utf-8\");",
);
}
#[CustomPhpConfigureArg('Darwin')] #[CustomPhpConfigureArg('Darwin')]
#[CustomPhpConfigureArg('Linux')] #[CustomPhpConfigureArg('Linux')]
public function getUnixConfigureArg(bool $shared, PackageInstaller $installer): string public function getUnixConfigureArg(bool $shared, PackageInstaller $installer): string