From 48f257f85ab0e365b469355a5030391cadb4b843 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Thu, 27 Mar 2025 11:12:19 +0700 Subject: [PATCH] unixconfigurearg needs to know if currently building shared or static --- config/env.ini | 2 +- config/ext.json | 8 ++++++++ src/SPC/builder/BuilderBase.php | 2 +- src/SPC/builder/Extension.php | 18 ++++++++++++------ src/SPC/builder/extension/amqp.php | 2 +- src/SPC/builder/extension/dba.php | 2 +- src/SPC/builder/extension/enchant.php | 2 +- src/SPC/builder/extension/event.php | 2 +- src/SPC/builder/extension/ffi.php | 2 +- src/SPC/builder/extension/gd.php | 2 +- src/SPC/builder/extension/glfw.php | 2 +- src/SPC/builder/extension/grpc.php | 2 +- src/SPC/builder/extension/imagick.php | 2 +- src/SPC/builder/extension/imap.php | 2 +- src/SPC/builder/extension/memcache.php | 2 +- src/SPC/builder/extension/memcached.php | 2 +- src/SPC/builder/extension/mongodb.php | 2 +- src/SPC/builder/extension/odbc.php | 2 +- src/SPC/builder/extension/opcache.php | 2 +- src/SPC/builder/extension/openssl.php | 2 +- src/SPC/builder/extension/pdo_odbc.php | 2 +- src/SPC/builder/extension/pgsql.php | 2 +- src/SPC/builder/extension/redis.php | 2 +- src/SPC/builder/extension/snappy.php | 2 +- src/SPC/builder/extension/spx.php | 2 +- src/SPC/builder/extension/swoole.php | 6 ++++-- .../builder/extension/swoole_hook_mysql.php | 2 +- .../builder/extension/swoole_hook_pgsql.php | 2 +- .../builder/extension/swoole_hook_sqlite.php | 2 +- src/SPC/builder/extension/xdebug.php | 2 +- src/SPC/builder/extension/xlswriter.php | 2 +- src/SPC/builder/extension/xml.php | 2 +- src/SPC/builder/extension/yac.php | 2 +- src/SPC/builder/extension/zlib.php | 2 +- src/SPC/builder/extension/zstd.php | 2 +- src/SPC/command/BuildPHPCommand.php | 2 +- src/SPC/store/Config.php | 2 +- src/SPC/util/SPCConfigUtil.php | 6 +++--- 38 files changed, 61 insertions(+), 45 deletions(-) diff --git a/config/env.ini b/config/env.ini index 3ef5ba0f..131fa07e 100644 --- a/config/env.ini +++ b/config/env.ini @@ -99,7 +99,7 @@ SPC_CMD_VAR_PHP_CONFIGURE_LIBS="-ldl -lpthread -lm" ; EXTRA_CFLAGS for `make` php SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fpic -fpie -Os -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-ident -fPIE -fPIC" ; EXTRA_LIBS for `make` php -SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="" +SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm" ; EXTRA_LDFLAGS_PROGRAM for `make` php SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM="-all-static -Wl,-O1 -pie" diff --git a/config/ext.json b/config/ext.json index e0caba22..3d99350c 100644 --- a/config/ext.json +++ b/config/ext.json @@ -771,6 +771,10 @@ "Windows": "no", "BSD": "wip" }, + "target": [ + "static", + "shared" + ], "notes": true, "type": "external", "source": "swoole", @@ -1043,6 +1047,10 @@ "support": { "BSD": "wip" }, + "target": [ + "static", + "shared" + ], "type": "builtin", "arg-type": "with-prefix", "arg-type-windows": "enable", diff --git a/src/SPC/builder/BuilderBase.php b/src/SPC/builder/BuilderBase.php index 865139bb..429d950a 100644 --- a/src/SPC/builder/BuilderBase.php +++ b/src/SPC/builder/BuilderBase.php @@ -198,7 +198,7 @@ abstract class BuilderBase $this->emitPatchPoint('after-micro-extract'); } $this->emitPatchPoint('before-exts-extract'); - SourceManager::initSource(exts: $static_extensions); + SourceManager::initSource(exts: [...$static_extensions, ...$shared_extensions]); $this->emitPatchPoint('after-exts-extract'); foreach ([...$static_extensions, ...$shared_extensions] as $extension) { $class = CustomExt::getExtClass($extension); diff --git a/src/SPC/builder/Extension.php b/src/SPC/builder/Extension.php index b1943c40..6ada640a 100644 --- a/src/SPC/builder/Extension.php +++ b/src/SPC/builder/Extension.php @@ -150,7 +150,7 @@ class Extension // Windows is not supported yet } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return ''; } @@ -188,7 +188,13 @@ class Extension /** * Run shared extension check when cli is enabled */ - public function runSharedExtensionCheckUnix(): void {} + public function runSharedExtensionCheckUnix(): void + { + [$ret] = shell()->execWithResult(BUILD_BIN_PATH . '/php -n -d "extension=' . BUILD_LIB_PATH . '/' . $this->getName() . '.so" --ri ' . $this->getName()); + if ($ret !== 0) { + throw new RuntimeException($this->getName() . '.so failed to load'); + } + } /** * @throws RuntimeException @@ -279,7 +285,7 @@ class Extension shell()->cd($this->source_dir) ->setEnv(['CFLAGS' => $this->builder->arch_c_flags ?? '']) ->execWithEnv(BUILD_BIN_PATH . '/phpize') - ->execWithEnv('./configure ' . $this->getUnixConfigureArg() . ' --with-php-config=' . BUILD_BIN_PATH . '/php-config --enable-shared --disable-static') + ->execWithEnv('./configure ' . $this->getUnixConfigureArg(true) . ' --with-php-config=' . BUILD_BIN_PATH . '/php-config --enable-shared --disable-static') ->execWithEnv('make clean') ->execWithEnv('make -j' . $this->builder->concurrency); @@ -304,15 +310,15 @@ class Extension public function setBuildStatic(): void { if (!in_array('static', Config::getExtTarget($this->name))) { - throw new WrongUsageException("Extension [{$this->name}] does not support static build !"); + throw new WrongUsageException("Extension [{$this->name}] does not support static build!"); } $this->build_static = true; } public function setBuildShared(): void { - if (!in_array('shared', Config::getExtTarget($this->name)) || Config::getExt($this->name, 'type') === 'builtin') { - throw new WrongUsageException("Extension [{$this->name}] does not support shared build !"); + if (!in_array('shared', Config::getExtTarget($this->name))) { + throw new WrongUsageException("Extension [{$this->name}] does not support shared build!"); } $this->build_shared = true; } diff --git a/src/SPC/builder/extension/amqp.php b/src/SPC/builder/extension/amqp.php index d795f47d..8fbfea24 100644 --- a/src/SPC/builder/extension/amqp.php +++ b/src/SPC/builder/extension/amqp.php @@ -23,7 +23,7 @@ class amqp extends Extension return false; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--with-amqp --with-librabbitmq-dir=' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/dba.php b/src/SPC/builder/extension/dba.php index 011e4746..bd7388f3 100644 --- a/src/SPC/builder/extension/dba.php +++ b/src/SPC/builder/extension/dba.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('dba')] class dba extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $qdbm = $this->builder->getLib('qdbm') ? (' --with-qdbm=' . BUILD_ROOT_PATH) : ''; return '--enable-dba' . $qdbm; diff --git a/src/SPC/builder/extension/enchant.php b/src/SPC/builder/extension/enchant.php index 26578519..c3046409 100644 --- a/src/SPC/builder/extension/enchant.php +++ b/src/SPC/builder/extension/enchant.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('enchant')] class enchant extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $glibs = [ '/Users/jerry/project/git-project/static-php-cli/buildroot/lib/libgio-2.0.a', diff --git a/src/SPC/builder/extension/event.php b/src/SPC/builder/extension/event.php index a1cc7bcc..95d9aba6 100644 --- a/src/SPC/builder/extension/event.php +++ b/src/SPC/builder/extension/event.php @@ -13,7 +13,7 @@ use SPC\util\CustomExt; #[CustomExt('event')] class event extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--with-event-core --with-event-extra --with-event-libevent-dir=' . BUILD_ROOT_PATH; if ($this->builder->getLib('openssl')) { diff --git a/src/SPC/builder/extension/ffi.php b/src/SPC/builder/extension/ffi.php index 6f294481..51c3efac 100644 --- a/src/SPC/builder/extension/ffi.php +++ b/src/SPC/builder/extension/ffi.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('ffi')] class ffi extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--with-ffi --enable-zend-signals'; } diff --git a/src/SPC/builder/extension/gd.php b/src/SPC/builder/extension/gd.php index 707a898f..f872733b 100644 --- a/src/SPC/builder/extension/gd.php +++ b/src/SPC/builder/extension/gd.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('gd')] class gd extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--enable-gd'; $arg .= $this->builder->getLib('freetype') ? ' --with-freetype' : ''; diff --git a/src/SPC/builder/extension/glfw.php b/src/SPC/builder/extension/glfw.php index c9d0c4f7..444b5d93 100644 --- a/src/SPC/builder/extension/glfw.php +++ b/src/SPC/builder/extension/glfw.php @@ -30,7 +30,7 @@ class glfw extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-glfw --with-glfw-dir=' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/grpc.php b/src/SPC/builder/extension/grpc.php index a63bad9d..852f2933 100644 --- a/src/SPC/builder/extension/grpc.php +++ b/src/SPC/builder/extension/grpc.php @@ -44,7 +44,7 @@ class grpc extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-grpc=' . BUILD_ROOT_PATH . '/grpc GRPC_LIB_SUBDIR=' . BUILD_LIB_PATH; } diff --git a/src/SPC/builder/extension/imagick.php b/src/SPC/builder/extension/imagick.php index 7becb143..c73a5f29 100644 --- a/src/SPC/builder/extension/imagick.php +++ b/src/SPC/builder/extension/imagick.php @@ -22,7 +22,7 @@ class imagick extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--with-imagick=' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/imap.php b/src/SPC/builder/extension/imap.php index 3aa2c284..9cc9a87f 100644 --- a/src/SPC/builder/extension/imap.php +++ b/src/SPC/builder/extension/imap.php @@ -33,7 +33,7 @@ class imap extends Extension } } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--with-imap=' . BUILD_ROOT_PATH; if ($this->builder->getLib('openssl') !== null) { diff --git a/src/SPC/builder/extension/memcache.php b/src/SPC/builder/extension/memcache.php index eb3e2969..4625cae2 100644 --- a/src/SPC/builder/extension/memcache.php +++ b/src/SPC/builder/extension/memcache.php @@ -12,7 +12,7 @@ use SPC\util\CustomExt; #[CustomExt('memcache')] class memcache extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-memcache --with-zlib-dir=' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/memcached.php b/src/SPC/builder/extension/memcached.php index 1ef679d9..9c433954 100644 --- a/src/SPC/builder/extension/memcached.php +++ b/src/SPC/builder/extension/memcached.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('memcached')] class memcached extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $rootdir = BUILD_ROOT_PATH; $zlib_dir = $this->builder->getPHPVersionID() >= 80400 ? '' : "--with-zlib-dir={$rootdir}"; diff --git a/src/SPC/builder/extension/mongodb.php b/src/SPC/builder/extension/mongodb.php index 2096de05..7ba1ea33 100644 --- a/src/SPC/builder/extension/mongodb.php +++ b/src/SPC/builder/extension/mongodb.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('mongodb')] class mongodb extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = ' --enable-mongodb '; $arg .= ' --with-mongodb-system-libs=no --with-mongodb-client-side-encryption=no '; diff --git a/src/SPC/builder/extension/odbc.php b/src/SPC/builder/extension/odbc.php index 6234f4e8..ac5c3e8f 100644 --- a/src/SPC/builder/extension/odbc.php +++ b/src/SPC/builder/extension/odbc.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('odbc')] class odbc extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--with-unixODBC=' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/opcache.php b/src/SPC/builder/extension/opcache.php index 5276261a..5d9dda0a 100644 --- a/src/SPC/builder/extension/opcache.php +++ b/src/SPC/builder/extension/opcache.php @@ -42,7 +42,7 @@ class opcache extends Extension return file_put_contents(SOURCE_PATH . '/php-src/.opcache_patched', '1') !== false; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-opcache'; } diff --git a/src/SPC/builder/extension/openssl.php b/src/SPC/builder/extension/openssl.php index 2576b0b2..add1aede 100644 --- a/src/SPC/builder/extension/openssl.php +++ b/src/SPC/builder/extension/openssl.php @@ -23,7 +23,7 @@ class openssl extends Extension return false; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $openssl_dir = $this->builder->getPHPVersionID() >= 80400 ? '' : ' --with-openssl-dir=' . BUILD_ROOT_PATH; return '--with-openssl=' . BUILD_ROOT_PATH . $openssl_dir; diff --git a/src/SPC/builder/extension/pdo_odbc.php b/src/SPC/builder/extension/pdo_odbc.php index 4ab45904..e436f381 100644 --- a/src/SPC/builder/extension/pdo_odbc.php +++ b/src/SPC/builder/extension/pdo_odbc.php @@ -17,7 +17,7 @@ class pdo_odbc extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--with-pdo-odbc=unixODBC,' . BUILD_ROOT_PATH; } diff --git a/src/SPC/builder/extension/pgsql.php b/src/SPC/builder/extension/pgsql.php index 74085b21..1c63f163 100644 --- a/src/SPC/builder/extension/pgsql.php +++ b/src/SPC/builder/extension/pgsql.php @@ -33,7 +33,7 @@ class pgsql extends Extension * @throws WrongUsageException * @throws RuntimeException */ - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { if ($this->builder->getPHPVersionID() >= 80400) { return '--with-pgsql PGSQL_CFLAGS=-I' . BUILD_INCLUDE_PATH . ' PGSQL_LIBS="-L' . BUILD_LIB_PATH . ' -lpq -lpgport -lpgcommon"'; diff --git a/src/SPC/builder/extension/redis.php b/src/SPC/builder/extension/redis.php index bffc768e..0b60075c 100644 --- a/src/SPC/builder/extension/redis.php +++ b/src/SPC/builder/extension/redis.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('redis')] class redis extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--enable-redis'; $arg .= $this->builder->getExt('session') ? ' --enable-redis-session' : ' --disable-redis-session'; diff --git a/src/SPC/builder/extension/snappy.php b/src/SPC/builder/extension/snappy.php index 2dc2a33a..896a9be2 100644 --- a/src/SPC/builder/extension/snappy.php +++ b/src/SPC/builder/extension/snappy.php @@ -26,7 +26,7 @@ class snappy extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-snappy --with-snappy-includedir="' . BUILD_ROOT_PATH . '"'; } diff --git a/src/SPC/builder/extension/spx.php b/src/SPC/builder/extension/spx.php index 6c2a6a19..dc341e39 100644 --- a/src/SPC/builder/extension/spx.php +++ b/src/SPC/builder/extension/spx.php @@ -21,7 +21,7 @@ class spx extends Extension } } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--enable-spx'; if ($this->builder->getExt('zlib') === null) { diff --git a/src/SPC/builder/extension/swoole.php b/src/SPC/builder/extension/swoole.php index 3c04a298..6ce006b9 100644 --- a/src/SPC/builder/extension/swoole.php +++ b/src/SPC/builder/extension/swoole.php @@ -35,7 +35,7 @@ class swoole extends Extension return null; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { // enable swoole $arg = '--enable-swoole'; @@ -49,7 +49,9 @@ class swoole extends Extension // additional feature: c-ares, brotli, nghttp2 (can be disabled, but we enable it by default in config to support full network feature) $arg .= $this->builder->getLib('libcares') ? ' --enable-cares' : ''; - $arg .= $this->builder->getLib('brotli') ? (' --enable-brotli --with-brotli-dir=' . BUILD_ROOT_PATH) : ''; + if (!$shared) { + $arg .= $this->builder->getLib('brotli') ? (' --enable-brotli --with-brotli-dir=' . BUILD_ROOT_PATH) : ''; + } $arg .= $this->builder->getLib('nghttp2') ? (' --with-nghttp2-dir=' . BUILD_ROOT_PATH) : ''; // additional feature: swoole-pgsql, it should depend on lib [postgresql], but it will lack of CFLAGS etc. diff --git a/src/SPC/builder/extension/swoole_hook_mysql.php b/src/SPC/builder/extension/swoole_hook_mysql.php index 6d1d6828..e9684872 100644 --- a/src/SPC/builder/extension/swoole_hook_mysql.php +++ b/src/SPC/builder/extension/swoole_hook_mysql.php @@ -16,7 +16,7 @@ class swoole_hook_mysql extends Extension return 'swoole'; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { // pdo_mysql doesn't need to be disabled // enable swoole-hook-mysql will enable mysqli, pdo, pdo_mysql, we don't need to add any additional options diff --git a/src/SPC/builder/extension/swoole_hook_pgsql.php b/src/SPC/builder/extension/swoole_hook_pgsql.php index 08e217be..113b8eb6 100644 --- a/src/SPC/builder/extension/swoole_hook_pgsql.php +++ b/src/SPC/builder/extension/swoole_hook_pgsql.php @@ -25,7 +25,7 @@ class swoole_hook_pgsql extends Extension } } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { // enable swoole pgsql hook return '--enable-swoole-pgsql'; diff --git a/src/SPC/builder/extension/swoole_hook_sqlite.php b/src/SPC/builder/extension/swoole_hook_sqlite.php index 5de18351..7948dd29 100644 --- a/src/SPC/builder/extension/swoole_hook_sqlite.php +++ b/src/SPC/builder/extension/swoole_hook_sqlite.php @@ -25,7 +25,7 @@ class swoole_hook_sqlite extends Extension } } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { // enable swoole pgsql hook return '--enable-swoole-sqlite'; diff --git a/src/SPC/builder/extension/xdebug.php b/src/SPC/builder/extension/xdebug.php index 3cbd311e..ed592056 100644 --- a/src/SPC/builder/extension/xdebug.php +++ b/src/SPC/builder/extension/xdebug.php @@ -15,7 +15,7 @@ class xdebug extends Extension { [$ret] = shell()->execWithResult(BUILD_BIN_PATH . '/php -n -d "zend_extension=' . BUILD_LIB_PATH . '/xdebug.so" --ri xdebug'); if ($ret !== 0) { - throw new RuntimeException('xdebug.so not found'); + throw new RuntimeException('xdebug.so failed to load.'); } } } diff --git a/src/SPC/builder/extension/xlswriter.php b/src/SPC/builder/extension/xlswriter.php index 475a6c07..6319ce31 100644 --- a/src/SPC/builder/extension/xlswriter.php +++ b/src/SPC/builder/extension/xlswriter.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('xlswriter')] class xlswriter extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = '--with-xlswriter --enable-reader'; if ($this->builder->getLib('openssl')) { diff --git a/src/SPC/builder/extension/xml.php b/src/SPC/builder/extension/xml.php index 6242be6b..fc8bfc4d 100644 --- a/src/SPC/builder/extension/xml.php +++ b/src/SPC/builder/extension/xml.php @@ -20,7 +20,7 @@ class xml extends Extension /** * @throws RuntimeException */ - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $arg = match ($this->name) { 'xml' => '--enable-xml', diff --git a/src/SPC/builder/extension/yac.php b/src/SPC/builder/extension/yac.php index a4152e42..bb085133 100644 --- a/src/SPC/builder/extension/yac.php +++ b/src/SPC/builder/extension/yac.php @@ -19,7 +19,7 @@ class yac extends Extension return true; } - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-yac --enable-igbinary --enable-json'; } diff --git a/src/SPC/builder/extension/zlib.php b/src/SPC/builder/extension/zlib.php index a9932999..86c45dbe 100644 --- a/src/SPC/builder/extension/zlib.php +++ b/src/SPC/builder/extension/zlib.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('zlib')] class zlib extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { $zlib_dir = $this->builder->getPHPVersionID() >= 80400 ? '' : ' --with-zlib-dir=' . BUILD_ROOT_PATH; return '--with-zlib' . $zlib_dir; diff --git a/src/SPC/builder/extension/zstd.php b/src/SPC/builder/extension/zstd.php index 13311979..3a6df602 100644 --- a/src/SPC/builder/extension/zstd.php +++ b/src/SPC/builder/extension/zstd.php @@ -10,7 +10,7 @@ use SPC\util\CustomExt; #[CustomExt('zstd')] class zstd extends Extension { - public function getUnixConfigureArg(): string + public function getUnixConfigureArg(bool $shared = false): string { return '--enable-zstd --with-libzstd="' . BUILD_ROOT_PATH . '"'; } diff --git a/src/SPC/command/BuildPHPCommand.php b/src/SPC/command/BuildPHPCommand.php index c5fa6c9e..4e690bed 100644 --- a/src/SPC/command/BuildPHPCommand.php +++ b/src/SPC/command/BuildPHPCommand.php @@ -171,7 +171,7 @@ class BuildPHPCommand extends BuildCommand // compile libraries $builder->proveLibs($libraries); // check extensions - $builder->proveExts($extensions, shared_extensions: $shared_extensions); + $builder->proveExts($static_extensions, $shared_extensions); // validate libs and extensions $builder->validateLibsAndExts(); diff --git a/src/SPC/store/Config.php b/src/SPC/store/Config.php index 9c00715d..29455fa1 100644 --- a/src/SPC/store/Config.php +++ b/src/SPC/store/Config.php @@ -118,7 +118,7 @@ class Config if (!isset(self::$ext[$name])) { throw new WrongUsageException('ext [' . $name . '] is not supported yet'); } - return self::$ext[$name]['target'] ?? ['static', 'shared']; + return self::$ext[$name]['target'] ?? ['static']; } /** diff --git a/src/SPC/util/SPCConfigUtil.php b/src/SPC/util/SPCConfigUtil.php index 01e47076..7adf723b 100644 --- a/src/SPC/util/SPCConfigUtil.php +++ b/src/SPC/util/SPCConfigUtil.php @@ -51,9 +51,9 @@ class SPCConfigUtil $libs = BUILD_LIB_PATH . '/mimalloc.o ' . str_replace(BUILD_LIB_PATH . '/mimalloc.o', '', $libs); } return [ - 'cflags' => $cflags, - 'ldflags' => $ldflags, - 'libs' => $libs, + 'cflags' => trim(getenv('CFLAGS') . ' ' . $cflags), + 'ldflags' => trim(getenv('LDFLAGS') . ' ' . $ldflags), + 'libs' => trim(getenv('LIBS') . ' ' . $libs), ]; }