mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-02 14:25:41 +08:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d411fac9a1 | ||
|
|
ddb9e3e7e4 | ||
|
|
fef361225a | ||
|
|
0b2b1d51e1 | ||
|
|
820d77b8b2 | ||
|
|
cd3eb3d41d | ||
|
|
fb8f8d4ef8 | ||
|
|
1a476d0e80 | ||
|
|
e5ad72214c | ||
|
|
c339b900f8 | ||
|
|
3ded9881e1 | ||
|
|
08a6bf38a4 | ||
|
|
cae668a947 | ||
|
|
e592488d7a | ||
|
|
a7184d0411 | ||
|
|
d535e4f102 | ||
|
|
5a5f54bdcd | ||
|
|
8f7897e13b | ||
|
|
daae5f2a7c | ||
|
|
766f7fa34f | ||
|
|
ecf712b2b7 | ||
|
|
d35cbd7bf8 | ||
|
|
d076df6b04 | ||
|
|
a99b6bebae | ||
|
|
864678ab46 | ||
|
|
c03508a84b | ||
|
|
963e2a084a |
@@ -63,7 +63,8 @@
|
||||
],
|
||||
"ext-depends-windows": [
|
||||
"zlib",
|
||||
"openssl"
|
||||
"openssl",
|
||||
"brotli"
|
||||
]
|
||||
},
|
||||
"dba": {
|
||||
|
||||
@@ -109,8 +109,7 @@
|
||||
"krb5"
|
||||
],
|
||||
"lib-suggests-windows": [
|
||||
"brotli",
|
||||
"zstd"
|
||||
"brotli"
|
||||
],
|
||||
"frameworks": [
|
||||
"CoreFoundation",
|
||||
@@ -143,9 +142,7 @@
|
||||
"zlib"
|
||||
],
|
||||
"lib-suggests": [
|
||||
"libpng",
|
||||
"bzip2",
|
||||
"brotli"
|
||||
"libpng"
|
||||
]
|
||||
},
|
||||
"gettext": {
|
||||
@@ -355,6 +352,9 @@
|
||||
"static-libs-unix": [
|
||||
"libaom.a"
|
||||
],
|
||||
"static-libs-windows": [
|
||||
"aom.lib"
|
||||
],
|
||||
"cpp-library": true
|
||||
},
|
||||
"libargon2": {
|
||||
@@ -493,7 +493,7 @@
|
||||
"static-libs-windows": [
|
||||
"libjpeg_a.lib"
|
||||
],
|
||||
"lib-suggests-windows": [
|
||||
"lib-depends": [
|
||||
"zlib"
|
||||
]
|
||||
},
|
||||
@@ -762,7 +762,6 @@
|
||||
"xz"
|
||||
],
|
||||
"lib-suggests-windows": [
|
||||
"zstd",
|
||||
"openssl"
|
||||
]
|
||||
},
|
||||
@@ -999,6 +998,9 @@
|
||||
],
|
||||
"headers": [
|
||||
"wtr/watcher-c.h"
|
||||
],
|
||||
"frameworks": [
|
||||
"CoreServices"
|
||||
]
|
||||
},
|
||||
"xz": {
|
||||
|
||||
@@ -641,6 +641,7 @@
|
||||
"libjpeg": {
|
||||
"type": "ghtar",
|
||||
"repo": "libjpeg-turbo/libjpeg-turbo",
|
||||
"prefer-stable": true,
|
||||
"license": {
|
||||
"type": "file",
|
||||
"path": "LICENSE.md"
|
||||
@@ -1054,7 +1055,7 @@
|
||||
},
|
||||
"protobuf": {
|
||||
"type": "url",
|
||||
"url": "https://pecl.php.net/get/protobuf",
|
||||
"url": "https://pecl.php.net/get/protobuf-5.34.1.tgz",
|
||||
"path": "php-src/ext/protobuf",
|
||||
"filename": "protobuf.tgz",
|
||||
"license": {
|
||||
|
||||
@@ -34,7 +34,7 @@ use Symfony\Component\Console\Application;
|
||||
*/
|
||||
final class ConsoleApplication extends Application
|
||||
{
|
||||
public const string VERSION = '2.8.3';
|
||||
public const string VERSION = '2.8.4';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
@@ -33,4 +33,14 @@ class sqlsrv extends Extension
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function patchBeforeMake(): bool
|
||||
{
|
||||
$makefile = SOURCE_PATH . '/php-src/Makefile';
|
||||
$makeContent = file_get_contents($makefile);
|
||||
$makeContent = preg_replace('/^(CFLAGS_(?:PDO_)?SQLSRV=.*?)\s+\/W4\b/m', '$1', $makeContent);
|
||||
$makeContent = preg_replace('/^(CFLAGS_(?:PDO_)?SQLSRV=.*?)\s+\/WX\b/m', '$1', $makeContent);
|
||||
file_put_contents($makefile, $makeContent);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ trait freetype
|
||||
{
|
||||
$cmake = UnixCMakeExecutor::create($this)
|
||||
->optionalLib('libpng', ...cmake_boolean_args('FT_DISABLE_PNG', true))
|
||||
->optionalLib('bzip2', ...cmake_boolean_args('FT_DISABLE_BZIP2', true))
|
||||
->optionalLib('brotli', ...cmake_boolean_args('FT_DISABLE_BROTLI', true))
|
||||
->addConfigureArgs('-DFT_DISABLE_BZIP2=ON')
|
||||
->addConfigureArgs('-DFT_DISABLE_BROTLI=ON')
|
||||
->addConfigureArgs('-DFT_DISABLE_HARFBUZZ=ON');
|
||||
|
||||
// fix cmake 4.0 compatibility
|
||||
|
||||
@@ -14,6 +14,7 @@ trait libjpeg
|
||||
->addConfigureArgs(
|
||||
'-DENABLE_STATIC=ON',
|
||||
'-DENABLE_SHARED=OFF',
|
||||
'-DWITH_SYSTEM_ZLIB=ON'
|
||||
)
|
||||
->build();
|
||||
// patch pkgconfig
|
||||
|
||||
36
src/SPC/builder/windows/library/brotli.php
Normal file
36
src/SPC/builder/windows/library/brotli.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace SPC\builder\windows\library;
|
||||
|
||||
use SPC\store\FileSystem;
|
||||
|
||||
class brotli extends WindowsLibraryBase
|
||||
{
|
||||
public const NAME = 'brotli';
|
||||
|
||||
protected function build(): void
|
||||
{
|
||||
// reset cmake
|
||||
FileSystem::resetDir($this->source_dir . '\build');
|
||||
|
||||
// start build
|
||||
cmd()->cd($this->source_dir)
|
||||
->execWithWrapper(
|
||||
$this->builder->makeSimpleWrapper('cmake'),
|
||||
'-B build ' .
|
||||
'-A x64 ' .
|
||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||
'-DBROTLI_BUILD_TOOLS=OFF ' .
|
||||
'-DBROTLI_BUNDLED_MODE=OFF ' .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||
)
|
||||
->execWithWrapper(
|
||||
$this->builder->makeSimpleWrapper('cmake'),
|
||||
"--build build --config Release --target install -j{$this->builder->concurrency}"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@ class freetype extends WindowsLibraryBase
|
||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||
'-DFT_DISABLE_BROTLI=TRUE ' .
|
||||
'-DFT_DISABLE_BZIP2=TRUE ' .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||
)
|
||||
->execWithWrapper(
|
||||
|
||||
41
src/SPC/builder/windows/library/libaom.php
Normal file
41
src/SPC/builder/windows/library/libaom.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace SPC\builder\windows\library;
|
||||
|
||||
use SPC\store\FileSystem;
|
||||
|
||||
class libaom extends WindowsLibraryBase
|
||||
{
|
||||
public const NAME = 'libaom';
|
||||
|
||||
protected function build(): void
|
||||
{
|
||||
// libaom source tree contains a build/cmake/ directory with its own
|
||||
// cmake modules, so we must use a different name for the build dir.
|
||||
FileSystem::resetDir($this->source_dir . '\builddir');
|
||||
|
||||
// start build
|
||||
cmd()->cd($this->source_dir)
|
||||
->execWithWrapper(
|
||||
$this->builder->makeSimpleWrapper('cmake'),
|
||||
'-S . -B builddir ' .
|
||||
'-A x64 ' .
|
||||
"-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " .
|
||||
'-DCMAKE_BUILD_TYPE=Release ' .
|
||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||
'-DAOM_TARGET_CPU=generic ' .
|
||||
'-DENABLE_DOCS=OFF ' .
|
||||
'-DENABLE_EXAMPLES=OFF ' .
|
||||
'-DENABLE_TESTDATA=OFF ' .
|
||||
'-DENABLE_TESTS=OFF ' .
|
||||
'-DENABLE_TOOLS=OFF ' .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||
)
|
||||
->execWithWrapper(
|
||||
$this->builder->makeSimpleWrapper('cmake'),
|
||||
"--build builddir --config Release --target install -j{$this->builder->concurrency}"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ class libjpeg extends WindowsLibraryBase
|
||||
'-DENABLE_STATIC=ON ' .
|
||||
'-DBUILD_TESTING=OFF ' .
|
||||
'-DWITH_JAVA=OFF ' .
|
||||
'-DWITH_SIMD=OFF ' .
|
||||
'-DWITH_CRT_DLL=OFF ' .
|
||||
"-DENABLE_ZLIB_COMPRESSION={$zlib} " .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||
|
||||
@@ -29,6 +29,7 @@ class ngtcp2 extends WindowsLibraryBase
|
||||
'-DBUILD_SHARED_LIBS=OFF ' .
|
||||
'-DENABLE_STATIC_CRT=ON ' .
|
||||
'-DENABLE_LIB_ONLY=ON ' .
|
||||
'-DENABLE_OPENSSL=OFF ' .
|
||||
'-DCMAKE_INSTALL_PREFIX=' . BUILD_ROOT_PATH . ' '
|
||||
)
|
||||
->execWithWrapper(
|
||||
|
||||
@@ -35,6 +35,7 @@ class zlib extends WindowsLibraryBase
|
||||
'zlibstatic.lib',
|
||||
'zs.lib',
|
||||
'libzs.lib',
|
||||
'libz.lib',
|
||||
];
|
||||
foreach ($detect_list as $item) {
|
||||
if (file_exists(BUILD_LIB_PATH . '\\' . $item)) {
|
||||
|
||||
@@ -152,7 +152,7 @@ class FileSystem
|
||||
$src_path = FileSystem::convertPath($from);
|
||||
switch (PHP_OS_FAMILY) {
|
||||
case 'Windows':
|
||||
f_passthru('xcopy "' . $src_path . '" "' . $dst_path . '" /s/e/v/y/i');
|
||||
f_passthru('xcopy "' . $src_path . '" "' . $dst_path . '" /s/e/y/i');
|
||||
break;
|
||||
case 'Linux':
|
||||
case 'Darwin':
|
||||
|
||||
@@ -31,6 +31,6 @@ if (file_exists('/etc/ssl/openssl.cnf')) {
|
||||
}
|
||||
assert($valid);
|
||||
}
|
||||
if (PHP_VERSION_ID >= 80500 && defined('OPENSSL_VERSION_NUMBER') && OPENSSL_VERSION_NUMBER >= 0x30200000) {
|
||||
if (PHP_VERSION_ID >= 80500 && (!PHP_ZTS || PHP_OS_FAMILY !== 'Windows') && defined('OPENSSL_VERSION_NUMBER') && OPENSSL_VERSION_NUMBER >= 0x30200000) {
|
||||
assert(function_exists('openssl_password_hash'));
|
||||
}
|
||||
|
||||
@@ -13,25 +13,25 @@ declare(strict_types=1);
|
||||
|
||||
// test php version (8.1 ~ 8.4 available, multiple for matrix)
|
||||
$test_php_version = [
|
||||
'8.1',
|
||||
// '8.1',
|
||||
// '8.2',
|
||||
// '8.3',
|
||||
'8.4',
|
||||
// '8.4',
|
||||
'8.5',
|
||||
// 'git',
|
||||
];
|
||||
|
||||
// test os (macos-15-intel, macos-15, ubuntu-latest, windows-latest are available)
|
||||
$test_os = [
|
||||
// 'macos-15-intel', // bin/spc for x86_64
|
||||
// 'macos-15', // bin/spc for arm64
|
||||
'macos-15-intel', // bin/spc for x86_64
|
||||
'macos-15', // bin/spc for arm64
|
||||
// 'ubuntu-latest', // bin/spc-alpine-docker for x86_64
|
||||
// 'ubuntu-22.04', // bin/spc-gnu-docker for x86_64
|
||||
// 'ubuntu-24.04', // bin/spc for x86_64
|
||||
// 'ubuntu-22.04-arm', // bin/spc-gnu-docker for arm64
|
||||
// 'ubuntu-24.04-arm', // bin/spc for arm64
|
||||
// 'windows-2022', // .\bin\spc.ps1
|
||||
'windows-2025',
|
||||
// 'windows-2025',
|
||||
];
|
||||
|
||||
// whether enable thread safe
|
||||
@@ -42,16 +42,16 @@ $no_strip = false;
|
||||
// compress with upx
|
||||
$upx = false;
|
||||
|
||||
// whether to test frankenphp build, only available for macos and linux
|
||||
$frankenphp = false;
|
||||
// whether to test frankenphp build, only available for macOS and linux
|
||||
$frankenphp = true;
|
||||
|
||||
// prefer downloading pre-built packages to speed up the build process
|
||||
$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' => 'pgsql',
|
||||
'Windows' => 'gd,zlib,mbstring,filter',
|
||||
'Linux', 'Darwin' => 'sqlsrv,pdo_sqlsrv',
|
||||
'Windows' => 'amqp,apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,ds,exif,ffi,fileinfo,filter,ftp,gd,iconv,igbinary,libxml,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pdo,pdo_mysql,pdo_sqlite,pdo_sqlsrv,phar,rar,redis,session,shmop,simdjson,simplexml,soap,sockets,sqlite3,sqlsrv,ssh2,sysvshm,tokenizer,xml,xmlreader,xmlwriter,yac,yaml,zip,zlib',
|
||||
};
|
||||
|
||||
// If you want to test shared extensions, add them below (comma separated, example `bcmath,openssl`).
|
||||
|
||||
Reference in New Issue
Block a user