diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 47d17866..6e57f183 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -69,4 +69,5 @@ return (new PhpCsFixer\Config()) ]) ->setFinder( PhpCsFixer\Finder::create()->in([__DIR__ . '/src', __DIR__ . '/tests/SPC']) - ); + ) + ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()); diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index 7ff6cff7..31a9cd5a 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -13,6 +13,7 @@ use SPC\store\SourcePatcher; use SPC\toolchain\ToolchainManager; use SPC\toolchain\ZigToolchain; use SPC\util\GlobalEnvManager; +use SPC\util\SPCTarget; class LinuxBuilder extends UnixBuilderBase { @@ -92,7 +93,9 @@ class LinuxBuilder extends UnixBuilderBase $zts = ''; } $disable_jit = $this->getOption('disable-opcache-jit', false) ? '--disable-opcache-jit ' : ''; - + if (!$disable_jit && $this->getExt('opcache')) { + f_putenv('COMPILER_EXTRA=-fno-sanitize=undefined'); + } $config_file_path = $this->getOption('with-config-file-path', false) ? ('--with-config-file-path=' . $this->getOption('with-config-file-path') . ' ') : ''; $config_file_scan_dir = $this->getOption('with-config-file-scan-dir', false) ? @@ -123,6 +126,12 @@ class LinuxBuilder extends UnixBuilderBase } $embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static'; + if ($embed_type !== 'static' && SPCTarget::isStatic()) { + throw new WrongUsageException( + 'Linux does not support loading shared libraries when linking libc statically. ' . + 'Change SPC_CMD_VAR_PHP_EMBED_TYPE to static.' + ); + } shell()->cd(SOURCE_PATH . '/php-src') ->exec( getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' . diff --git a/src/SPC/builder/unix/library/libaom.php b/src/SPC/builder/unix/library/libaom.php index 31c40a0f..9c10079b 100644 --- a/src/SPC/builder/unix/library/libaom.php +++ b/src/SPC/builder/unix/library/libaom.php @@ -4,28 +4,24 @@ declare(strict_types=1); namespace SPC\builder\unix\library; -use SPC\exception\FileSystemException; -use SPC\exception\RuntimeException; use SPC\toolchain\ToolchainManager; use SPC\toolchain\ZigToolchain; use SPC\util\executor\UnixCMakeExecutor; trait libaom { - /** - * @throws RuntimeException - * @throws FileSystemException - */ protected function build(): void { + $extra = getenv('COMPILER_EXTRA'); if (ToolchainManager::getToolchainClass() === ZigToolchain::class) { - f_putenv('COMPILER_EXTRA=-D_GNU_SOURCE'); + $new = trim($extra . ' -D_GNU_SOURCE'); + f_putenv("COMPILER_EXTRA={$new}"); } UnixCMakeExecutor::create($this) ->setBuildDir("{$this->source_dir}/builddir") ->addConfigureArgs('-DAOM_TARGET_CPU=generic') ->build(); - f_putenv('COMPILER_EXTRA'); + f_putenv("COMPILER_EXTRA={$extra}"); $this->patchPkgconfPrefix(['aom.pc']); } }