diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index 2d42f931..aeadea5e 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -92,7 +92,7 @@ class LinuxBuilder extends UnixBuilderBase 'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'), 'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH, 'LDFLAGS' => '-L' . BUILD_LIB_PATH, - 'LIBS' => SPCTarget::getRuntimeLibs(), // do not pass static libraries here yet, they may contain polyfills for libc functions! + //'LIBS' => SPCTarget::getRuntimeLibs(), // do not pass static libraries here yet, they may contain polyfills for libc functions! ]); $embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static'; @@ -103,7 +103,7 @@ class LinuxBuilder extends UnixBuilderBase ); } shell()->cd(SOURCE_PATH . '/php-src') - ->exec( + ->exec($php_configure_env . ' ' . getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' . ($enableCli ? '--enable-cli ' : '--disable-cli ') . ($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') . @@ -115,8 +115,8 @@ class LinuxBuilder extends UnixBuilderBase $json_74 . $zts . $maxExecutionTimers . - $this->makeStaticExtensionArgs() . - ' ' . $php_configure_env . ' ' + $this->makeStaticExtensionArgs() . ' ' + //'ac_cv_lib_readline_rl_pending_input=yes' ); $this->emitPatchPoint('before-php-make'); diff --git a/src/SPC/builder/unix/library/librdkafka.php b/src/SPC/builder/unix/library/librdkafka.php index 3df7a931..81bd9364 100644 --- a/src/SPC/builder/unix/library/librdkafka.php +++ b/src/SPC/builder/unix/library/librdkafka.php @@ -17,6 +17,14 @@ trait librdkafka */ protected function build(): void { + $cflags = $this->builder->arch_c_flags; + $cxxflags = $this->builder->arch_cxx_flags; + $patched_cflags = preg_replace('/\s*-flto(=\S*)?\s*/', ' ', $cflags); + $patched_cxxflags = preg_replace('/\s*-flto(=\S*)?\s*/', ' ', $cxxflags); + + $this->builder->arch_c_flags = $patched_cflags; + $this->builder->arch_cxx_flags = $patched_cxxflags; + FileSystem::replaceFileStr( $this->source_dir . '/lds-gen.py', "funcs.append('rd_ut_coverage_check')", @@ -56,5 +64,8 @@ trait librdkafka ->exec("rm -rf {$this->getLibDir()}/*.so.*") ->exec("rm -rf {$this->getLibDir()}/*.so") ->exec("rm -rf {$this->getLibDir()}/*.dylib"); + + $this->builder->arch_c_flags = $cflags; + $this->builder->arch_cxx_flags = $cxxflags; } } diff --git a/src/SPC/builder/unix/library/unixodbc.php b/src/SPC/builder/unix/library/unixodbc.php index a795d244..842b9d93 100644 --- a/src/SPC/builder/unix/library/unixodbc.php +++ b/src/SPC/builder/unix/library/unixodbc.php @@ -16,6 +16,14 @@ trait unixodbc */ protected function build(): void { + $cflags = $this->builder->arch_c_flags; + $cxxflags = $this->builder->arch_cxx_flags; + $patched_cflags = preg_replace('/\s*-flto(=\S*)?\s*/', ' ', $cflags); + $patched_cxxflags = preg_replace('/\s*-flto(=\S*)?\s*/', ' ', $cxxflags); + + $this->builder->arch_c_flags = $patched_cflags; + $this->builder->arch_cxx_flags = $patched_cxxflags; + UnixAutoconfExecutor::create($this) ->configure( '--disable-debug', @@ -27,5 +35,8 @@ trait unixodbc ->make(); $this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']); $this->patchLaDependencyPrefix(); + + $this->builder->arch_c_flags = $cflags; + $this->builder->arch_cxx_flags = $cxxflags; } } diff --git a/src/SPC/store/pkg/Zig.php b/src/SPC/store/pkg/Zig.php index 6f823405..f6025b57 100644 --- a/src/SPC/store/pkg/Zig.php +++ b/src/SPC/store/pkg/Zig.php @@ -162,6 +162,12 @@ class Zig extends CustomPackage $script_content = str_replace('zig cc', 'zig c++', $script_content); file_put_contents("{$bin_dir}/zig-c++", $script_content); + file_put_contents("{$bin_dir}/zig-ar", "#!/usr/bin/env bash\nexec zig ar $@"); + file_put_contents("{$bin_dir}/zig-ranlib", "#!/usr/bin/env bash\nexec zig ranlib $@"); + file_put_contents("{$bin_dir}/zig-objcopy", "#!/usr/bin/env bash\nexec zig objcopy $@"); chmod("{$bin_dir}/zig-c++", 0755); + chmod("{$bin_dir}/zig-ar", 0755); + chmod("{$bin_dir}/zig-ranlib", 0755); + chmod("{$bin_dir}/zig-objcopy", 0755); } } diff --git a/src/SPC/toolchain/ZigToolchain.php b/src/SPC/toolchain/ZigToolchain.php index a379164c..3ededcbc 100644 --- a/src/SPC/toolchain/ZigToolchain.php +++ b/src/SPC/toolchain/ZigToolchain.php @@ -15,10 +15,12 @@ class ZigToolchain implements ToolchainInterface // Set environment variables for zig toolchain GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=zig-cc'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=zig-c++'); - GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=zig ar'); + GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=zig-ar'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_LD=zig-cc'); + GlobalEnvManager::putenv('RANLIB=zig-ranlib'); + GlobalEnvManager::putenv('OBJCOPY=zig-objcopy'); - // Generate additional object needed for zig toolchain + // Generate additional objects needed for zig toolchain $paths = ['/usr/lib/gcc', '/usr/local/lib/gcc']; $objects = ['crtbeginS.o', 'crtendS.o']; $found = [];