diff --git a/config/ext.json b/config/ext.json index 323443e8..4d6044b3 100644 --- a/config/ext.json +++ b/config/ext.json @@ -674,7 +674,6 @@ }, "sodium": { "support": { - "Windows": "wip", "BSD": "wip" }, "type": "builtin", diff --git a/config/lib.json b/config/lib.json index 7f0b3010..33841c7b 100644 --- a/config/lib.json +++ b/config/lib.json @@ -442,6 +442,9 @@ "source": "libsodium", "static-libs-unix": [ "libsodium.a" + ], + "static-libs-windows": [ + "libsodium.lib" ] }, "libssh2": { diff --git a/src/SPC/builder/windows/library/libsodium.php b/src/SPC/builder/windows/library/libsodium.php new file mode 100644 index 00000000..95c35945 --- /dev/null +++ b/src/SPC/builder/windows/library/libsodium.php @@ -0,0 +1,52 @@ +source_dir . '\src\libsodium\include\sodium\export.h', '#ifdef SODIUM_STATIC', '#if 1'); + $vs_ver_dir = match (SystemUtil::findVisualStudio()['version']) { + 'vs17' => '\vs2022', + 'vs16' => '\vs2019', + default => throw new RuntimeException('Current VS version is not supported yet!'), + }; + + // start build + cmd()->cd($this->source_dir . '\builds\msvc\\' . $vs_ver_dir) + ->execWithWrapper( + $this->builder->makeSimpleWrapper('msbuild'), + 'libsodium.sln /t:Rebuild /p:Configuration=StaticRelease /p:Platform=x64 /p:PreprocessorDefinitions="SODIUM_STATIC=1"' + ); + FileSystem::createDir(BUILD_LIB_PATH); + FileSystem::createDir(BUILD_INCLUDE_PATH); + + // copy include + FileSystem::copyDir($this->source_dir . '\src\libsodium\include\sodium', BUILD_INCLUDE_PATH . '\sodium'); + copy($this->source_dir . '\src\libsodium\include\sodium.h', BUILD_INCLUDE_PATH . '\sodium.h'); + // copy lib + $ls = FileSystem::scanDirFiles($this->source_dir . '\bin'); + $find = false; + foreach ($ls as $file) { + if (str_ends_with($file, 'libsodium.lib')) { + copy($file, BUILD_LIB_PATH . '\libsodium.lib'); + $find = true; + } + if (str_ends_with($file, 'libsodium.pdb')) { + copy($file, BUILD_LIB_PATH . '\libsodium.pdb'); + } + } + if (!$find) { + throw new RuntimeException('libsodium.lib not found'); + } + } +} diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index d63b4604..ee5911d7 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -14,18 +14,17 @@ declare(strict_types=1); // test php version $test_php_version = [ '8.1', - // '8.2', - // '8.3', + '8.2', + '8.3', '8.4', ]; // test os (macos-13, macos-14, ubuntu-latest, windows-latest are available) $test_os = [ - // 'macos-13', - // 'macos-14', - // 'ubuntu-latest', - 'windows-2019', - 'windows-latest', + 'macos-13', + 'macos-14', + 'ubuntu-latest', + // 'windows-latest', ]; // whether enable thread safe @@ -42,13 +41,13 @@ $prefer_pre_built = false; // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). $extensions = match (PHP_OS_FAMILY) { 'Linux', 'Darwin' => 'gettext', - 'Windows' => 'gd', + 'Windows' => 'bcmath', }; // If you want to test lib-suggests feature with extension, add them below (comma separated, example `libwebp,libavif`). $with_libs = match (PHP_OS_FAMILY) { 'Linux', 'Darwin' => '', - 'Windows' => 'libavif', + 'Windows' => '', }; // Please change your test base combination. We recommend testing with `common`.