diff --git a/config/pkg/lib/libiconv-win.yml b/config/pkg/lib/libiconv-win.yml new file mode 100644 index 00000000..103acf2e --- /dev/null +++ b/config/pkg/lib/libiconv-win.yml @@ -0,0 +1,13 @@ +libiconv-win: + type: library + artifact: + source: + type: git + rev: master + url: 'https://github.com/static-php/libiconv-win.git' + metadata: + license-files: [source/COPYING] + license: GPL-3.0-or-later + static-libs@windows: + - libiconv.lib + - libiconv_a.lib diff --git a/src/Package/Library/libiconv_win.php b/src/Package/Library/libiconv_win.php new file mode 100644 index 00000000..6cd235e1 --- /dev/null +++ b/src/Package/Library/libiconv_win.php @@ -0,0 +1,43 @@ + '\MSVC17', + '16' => '\MSVC16', + default => throw new EnvironmentException("Current VS version {$ver} is not supported yet!"), + }; + ApplicationContext::set('vs_ver_dir', $vs_ver_dir); + } + + #[BuildFor('Windows')] + public function build(LibraryPackage $lib): void + { + $vs_ver_dir = ApplicationContext::get('vs_ver_dir'); + cmd()->cd("{$lib->getSourceDir()}{$vs_ver_dir}") + ->exec('msbuild libiconv.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64'); + FileSystem::createDir($lib->getLibDir()); + FileSystem::createDir($lib->getIncludeDir()); + FileSystem::copy("{$lib->getSourceDir()}{$vs_ver_dir}\\x64\\lib\\libiconv.lib", "{$lib->getLibDir()}\\libiconv.lib"); + FileSystem::copy("{$lib->getSourceDir()}{$vs_ver_dir}\\x64\\lib\\libiconv_a.lib", "{$lib->getLibDir()}\\libiconv_a.lib"); + FileSystem::copy("{$lib->getSourceDir()}\\source\\include\\iconv.h", "{$lib->getIncludeDir()}\\iconv.h"); + } +}