diff --git a/config/pkg/ext/builtin-extensions.yml b/config/pkg/ext/builtin-extensions.yml index 6b37a7d8..0709e27f 100644 --- a/config/pkg/ext/builtin-extensions.yml +++ b/config/pkg/ext/builtin-extensions.yml @@ -82,10 +82,13 @@ ext-gettext: arg-type: with-path ext-gmp: type: php-extension - depends: + depends@unix: - gmp + depends@windows: + - mpir php-extension: arg-type: with-path + arg-type@windows: with ext-iconv: type: php-extension depends@unix: diff --git a/config/pkg/lib/mpir.yml b/config/pkg/lib/mpir.yml new file mode 100644 index 00000000..6fc8012f --- /dev/null +++ b/config/pkg/lib/mpir.yml @@ -0,0 +1,9 @@ +mpir: + type: library + artifact: + source: + type: git + url: 'https://github.com/winlibs/mpir.git' + rev: master + static-libs@windows: + - mpir_a.lib diff --git a/src/Package/Library/mpir.php b/src/Package/Library/mpir.php new file mode 100644 index 00000000..951d218a --- /dev/null +++ b/src/Package/Library/mpir.php @@ -0,0 +1,44 @@ + '\build.vc17', + '16' => '\build.vc16', + default => throw new EnvironmentException("Current VS version {$ver['major_version']} is not supported yet!"), + }; + ApplicationContext::set('mpir_vs_ver_dir', $vs_ver_dir); + } + + #[BuildFor('Windows')] + public function build(LibraryPackage $lib): void + { + $vs_ver_dir = ApplicationContext::get('mpir_vs_ver_dir'); + cmd()->cd("{$lib->getSourceDir()}{$vs_ver_dir}\\lib_mpir_gc") + ->exec('msbuild lib_mpir_gc.vcxproj /t:Rebuild /p:Configuration=Release /p:Platform=x64'); + FileSystem::createDir($lib->getLibDir()); + FileSystem::createDir($lib->getIncludeDir()); + FileSystem::copy("{$lib->getSourceDir()}{$vs_ver_dir}\\lib_mpir_gc\\x64\\Release\\mpir_a.lib", "{$lib->getLibDir()}\\mpir_a.lib"); + // mpir.h and gmp.h are generated by the prebuild step into the source root + FileSystem::copy("{$lib->getSourceDir()}\\mpir.h", "{$lib->getIncludeDir()}\\mpir.h"); + FileSystem::copy("{$lib->getSourceDir()}\\gmp.h", "{$lib->getIncludeDir()}\\gmp.h"); + } +}