try to make everything -flto=thin compatible (librdkafka fails for some reason)

This commit is contained in:
DubbleClick 2025-07-26 21:44:01 +07:00
parent fb62a0e338
commit 978552136c
5 changed files with 36 additions and 6 deletions

View File

@ -92,7 +92,7 @@ class LinuxBuilder extends UnixBuilderBase
'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'), 'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'),
'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH, 'CPPFLAGS' => '-I' . BUILD_INCLUDE_PATH,
'LDFLAGS' => '-L' . BUILD_LIB_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'; $embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static';
@ -103,7 +103,7 @@ class LinuxBuilder extends UnixBuilderBase
); );
} }
shell()->cd(SOURCE_PATH . '/php-src') shell()->cd(SOURCE_PATH . '/php-src')
->exec( ->exec($php_configure_env . ' ' .
getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' . getenv('SPC_CMD_PREFIX_PHP_CONFIGURE') . ' ' .
($enableCli ? '--enable-cli ' : '--disable-cli ') . ($enableCli ? '--enable-cli ' : '--disable-cli ') .
($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') . ($enableFpm ? '--enable-fpm ' . ($this->getLib('libacl') !== null ? '--with-fpm-acl ' : '') : '--disable-fpm ') .
@ -115,8 +115,8 @@ class LinuxBuilder extends UnixBuilderBase
$json_74 . $json_74 .
$zts . $zts .
$maxExecutionTimers . $maxExecutionTimers .
$this->makeStaticExtensionArgs() . $this->makeStaticExtensionArgs() . ' '
' ' . $php_configure_env . ' ' //'ac_cv_lib_readline_rl_pending_input=yes'
); );
$this->emitPatchPoint('before-php-make'); $this->emitPatchPoint('before-php-make');

View File

@ -17,6 +17,14 @@ trait librdkafka
*/ */
protected function build(): void 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( FileSystem::replaceFileStr(
$this->source_dir . '/lds-gen.py', $this->source_dir . '/lds-gen.py',
"funcs.append('rd_ut_coverage_check')", "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()}/*.so") ->exec("rm -rf {$this->getLibDir()}/*.so")
->exec("rm -rf {$this->getLibDir()}/*.dylib"); ->exec("rm -rf {$this->getLibDir()}/*.dylib");
$this->builder->arch_c_flags = $cflags;
$this->builder->arch_cxx_flags = $cxxflags;
} }
} }

View File

@ -16,6 +16,14 @@ trait unixodbc
*/ */
protected function build(): void 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) UnixAutoconfExecutor::create($this)
->configure( ->configure(
'--disable-debug', '--disable-debug',
@ -27,5 +35,8 @@ trait unixodbc
->make(); ->make();
$this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']); $this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']);
$this->patchLaDependencyPrefix(); $this->patchLaDependencyPrefix();
$this->builder->arch_c_flags = $cflags;
$this->builder->arch_cxx_flags = $cxxflags;
} }
} }

View File

@ -162,6 +162,12 @@ class Zig extends CustomPackage
$script_content = str_replace('zig cc', 'zig c++', $script_content); $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-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-c++", 0755);
chmod("{$bin_dir}/zig-ar", 0755);
chmod("{$bin_dir}/zig-ranlib", 0755);
chmod("{$bin_dir}/zig-objcopy", 0755);
} }
} }

View File

@ -15,10 +15,12 @@ class ZigToolchain implements ToolchainInterface
// Set environment variables for zig toolchain // Set environment variables for zig toolchain
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=zig-cc'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=zig-cc');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=zig-c++'); 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('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']; $paths = ['/usr/lib/gcc', '/usr/local/lib/gcc'];
$objects = ['crtbeginS.o', 'crtendS.o']; $objects = ['crtbeginS.o', 'crtendS.o'];
$found = []; $found = [];