fix(build): 统一调试选项配置并支持自定义链接器标志

- 将所有后端编译器的调试选项从 'debug' 统一更改为 'debug_info'
- 在 GCC 和 Clang 后端移除重复的调试标志添加逻辑
- 在 CompilerBase 中添加对用户自定义 ldflags 的支持
- 确保所有平台的调试信息配置保持一致
pull/1/head
韩天峰 4 months ago
parent 2bf36baf56
commit c4f828b30a
  1. 9
      src/Php/Backend/Clang.php
  2. 9
      src/Php/Backend/Gcc.php
  3. 2
      src/Php/Backend/Msvc.php
  4. 9
      src/Php/CompilerBase.php

@ -123,7 +123,7 @@ class Clang extends CompilerBackend
$optimizeLevel = $options['optimize'] ?? 2;
// 调试模式
if (!empty($options['debug'])) {
if (!empty($options['debug_info'])) {
$cmd .= ' -O0 -g';
} else {
$cmd .= ' -O' . $optimizeLevel;
@ -172,7 +172,7 @@ class Clang extends CompilerBackend
$optimizeLevel = $options['optimize'] ?? 0;
// 调试模式
if (!empty($options['debug'])) {
if (!empty($options['debug_info'])) {
$cmd .= ' -O0 -g';
} else {
$cmd .= ' -O' . $optimizeLevel;
@ -407,11 +407,6 @@ class Clang extends CompilerBackend
}
} else {
// Unix/Linux/macOS
// 调试
if (!empty($config['debug_info'])) {
$cmd .= ' -g';
}
// 扩展模块选项
if (!empty($config['build_mode']) && $config['build_mode'] === 'ext') {
$cmd .= ' -shared';

@ -98,7 +98,7 @@ class Gcc extends CompilerBackend
$cmd .= ' -O' . $optimizeLevel;
// 调试信息
if (!empty($options['debug'])) {
if (!empty($options['debug_info'])) {
$cmd .= ' -g';
}
@ -132,7 +132,7 @@ class Gcc extends CompilerBackend
$cmd .= ' -O' . $optimizeLevel;
// 调试信息
if (!empty($options['debug'])) {
if (!empty($options['debug_info'])) {
$cmd .= ' -g';
}
@ -286,11 +286,6 @@ class Gcc extends CompilerBackend
{
$cmd = '';
// 调试
if (!empty($config['debug_info'])) {
$cmd .= ' -g';
}
// 扩展模块选项
if (!empty($config['build_mode']) && $config['build_mode'] === 'ext') {
$cmd .= ' -shared';

@ -182,7 +182,7 @@ class Msvc extends CompilerBackend
$cmd .= ' /OUT:' . escapeshellarg($outputFile);
// 调试信息
if (!empty($options['debug'])) {
if (!empty($options['debug_info'])) {
$cmd .= ' /DEBUG';
}

@ -2470,7 +2470,14 @@ class CompilerBase extends \PhpAot\Core\Translator
$libraryPaths = array_merge($libraryPaths, $phpLibPaths);
}
return $this->platform->getLibraryPathFlags($libraryPaths);
$flags = $this->platform->getLibraryPathFlags($libraryPaths);
// 添加用户自定义的 ldflags
if (!empty($this->ldflags)) {
$flags .= ' ' . $this->ldflags;
}
return $flags;
}
/**

Loading…
Cancel
Save