mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 12:54:52 +08:00
static compilation is not quite working yet
This commit is contained in:
parent
e7d6f37e98
commit
2c13eb257b
@ -68,7 +68,7 @@ CXX=${SPC_LINUX_DEFAULT_CXX}
|
|||||||
AR=${SPC_LINUX_DEFAULT_AR}
|
AR=${SPC_LINUX_DEFAULT_AR}
|
||||||
LD=ld.gold
|
LD=ld.gold
|
||||||
; default compiler flags, used in CMake toolchain file, openssl and pkg-config build
|
; default compiler flags, used in CMake toolchain file, openssl and pkg-config build
|
||||||
SPC_DEFAULT_C_FLAGS="-fPIC"
|
SPC_DEFAULT_C_FLAGS="-fPIC -std=c11"
|
||||||
SPC_DEFAULT_CXX_FLAGS=
|
SPC_DEFAULT_CXX_FLAGS=
|
||||||
; extra libs for building php executable, used in `make` command for building php (this value may changed by extension build process, space separated)
|
; extra libs for building php executable, used in `make` command for building php (this value may changed by extension build process, space separated)
|
||||||
SPC_EXTRA_LIBS=
|
SPC_EXTRA_LIBS=
|
||||||
@ -97,7 +97,7 @@ SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS="-L${BUILD_LIB_PATH}"
|
|||||||
; LIBS for configuring php
|
; LIBS for configuring php
|
||||||
SPC_CMD_VAR_PHP_CONFIGURE_LIBS="-ldl -lpthread -lm"
|
SPC_CMD_VAR_PHP_CONFIGURE_LIBS="-ldl -lpthread -lm"
|
||||||
; EXTRA_CFLAGS for `make` php
|
; 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"
|
SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fpic -fpie -fPIE -fPIC -Os -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-ident"
|
||||||
; EXTRA_LIBS for `make` php
|
; EXTRA_LIBS for `make` php
|
||||||
SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm"
|
SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm"
|
||||||
; EXTRA_LDFLAGS_PROGRAM for `make` php
|
; EXTRA_LDFLAGS_PROGRAM for `make` php
|
||||||
|
|||||||
@ -859,7 +859,7 @@
|
|||||||
"spx": {
|
"spx": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"rev": "master",
|
"rev": "master",
|
||||||
"url": "https://github.com/static-php/php-spx.git",
|
"url": "https://github.com/NoiseByNorthwest/php-spx.git",
|
||||||
"path": "php-src/ext/spx",
|
"path": "php-src/ext/spx",
|
||||||
"license": {
|
"license": {
|
||||||
"type": "file",
|
"type": "file",
|
||||||
|
|||||||
@ -5,25 +5,14 @@ declare(strict_types=1);
|
|||||||
namespace SPC\builder\extension;
|
namespace SPC\builder\extension;
|
||||||
|
|
||||||
use SPC\builder\Extension;
|
use SPC\builder\Extension;
|
||||||
use SPC\exception\WrongUsageException;
|
|
||||||
use SPC\util\CustomExt;
|
use SPC\util\CustomExt;
|
||||||
|
|
||||||
#[CustomExt('spx')]
|
#[CustomExt('spx')]
|
||||||
class spx extends Extension
|
class spx extends Extension
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @throws WrongUsageException
|
|
||||||
*/
|
|
||||||
public function validate(): void
|
|
||||||
{
|
|
||||||
if ($this->builder->getOption('enable-zts')) {
|
|
||||||
throw new WrongUsageException('ext-spx is not thread safe, do not build it with ZTS builds');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getUnixConfigureArg(bool $shared = false): string
|
public function getUnixConfigureArg(bool $shared = false): string
|
||||||
{
|
{
|
||||||
$arg = '--enable-spx';
|
$arg = '--enable-SPX';
|
||||||
if ($this->builder->getExt('zlib') === null) {
|
if ($this->builder->getExt('zlib') === null) {
|
||||||
$arg .= ' --with-zlib-dir=' . BUILD_ROOT_PATH;
|
$arg .= ' --with-zlib-dir=' . BUILD_ROOT_PATH;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,7 +73,7 @@ class BuildPHPCommand extends BuildCommand
|
|||||||
}
|
}
|
||||||
$static_and_shared = array_intersect($static_extensions, $shared_extensions);
|
$static_and_shared = array_intersect($static_extensions, $shared_extensions);
|
||||||
if (!empty($static_and_shared)) {
|
if (!empty($static_and_shared)) {
|
||||||
$this->output->writeln('<comment>Building extensions [' . implode(',', $static_and_shared) . '] as both static and shared\, tests may not be accurate or fail.</comment>');
|
$this->output->writeln('<comment>Building extensions [' . implode(',', $static_and_shared) . '] as both static and shared, tests may not be accurate or fail.</comment>');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($rule === BUILD_TARGET_NONE) {
|
if ($rule === BUILD_TARGET_NONE) {
|
||||||
@ -128,7 +128,6 @@ class BuildPHPCommand extends BuildCommand
|
|||||||
$include_suggest_lib = $this->getOption('with-suggested-libs');
|
$include_suggest_lib = $this->getOption('with-suggested-libs');
|
||||||
[$extensions, $libraries, $not_included] = DependencyUtil::getExtsAndLibs(array_merge($static_extensions, $shared_extensions), $libraries, $include_suggest_ext, $include_suggest_lib);
|
[$extensions, $libraries, $not_included] = DependencyUtil::getExtsAndLibs(array_merge($static_extensions, $shared_extensions), $libraries, $include_suggest_ext, $include_suggest_lib);
|
||||||
$display_libs = array_filter($libraries, fn ($lib) => in_array(Config::getLib($lib, 'type', 'lib'), ['lib', 'package']));
|
$display_libs = array_filter($libraries, fn ($lib) => in_array(Config::getLib($lib, 'type', 'lib'), ['lib', 'package']));
|
||||||
$display_extensions = array_map(fn ($ext) => in_array($ext, $shared_extensions) ? "*{$ext}" : $ext, $extensions);
|
|
||||||
|
|
||||||
// separate static and shared extensions from $extensions
|
// separate static and shared extensions from $extensions
|
||||||
// filter rule: including shared extensions if they are in $static_extensions or $shared_extensions
|
// filter rule: including shared extensions if they are in $static_extensions or $shared_extensions
|
||||||
@ -138,7 +137,8 @@ class BuildPHPCommand extends BuildCommand
|
|||||||
$indent_texts = [
|
$indent_texts = [
|
||||||
'Build OS' => PHP_OS_FAMILY . ' (' . php_uname('m') . ')',
|
'Build OS' => PHP_OS_FAMILY . ' (' . php_uname('m') . ')',
|
||||||
'Build SAPI' => $builder->getBuildTypeName($rule),
|
'Build SAPI' => $builder->getBuildTypeName($rule),
|
||||||
'Extensions (' . count($extensions) . ')' => implode(',', $display_extensions),
|
'Extensions (' . count($extensions) . ')' => implode(',', $extensions),
|
||||||
|
'Shared Extensions (' . count($shared_extensions) . ')' => implode(',', $shared_extensions),
|
||||||
'Libraries (' . count($libraries) . ')' => implode(',', $display_libs),
|
'Libraries (' . count($libraries) . ')' => implode(',', $display_libs),
|
||||||
'Strip Binaries' => $builder->getOption('no-strip') ? 'no' : 'yes',
|
'Strip Binaries' => $builder->getOption('no-strip') ? 'no' : 'yes',
|
||||||
'Enable ZTS' => $builder->getOption('enable-zts') ? 'yes' : 'no',
|
'Enable ZTS' => $builder->getOption('enable-zts') ? 'yes' : 'no',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user