enable hardware intrinsics for libaom

This commit is contained in:
henderkes
2026-05-22 11:49:15 +07:00
parent 11e19db480
commit 721ac4a390
2 changed files with 24 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ namespace SPC\builder\unix\library;
use SPC\toolchain\ToolchainManager;
use SPC\toolchain\ZigToolchain;
use SPC\util\executor\UnixCMakeExecutor;
use SPC\util\SPCTarget;
trait libaom
{
@@ -17,9 +18,16 @@ trait libaom
$new = trim($extra . ' -D_GNU_SOURCE');
f_putenv("SPC_COMPILER_EXTRA={$new}");
}
$targetCpu = SPCTarget::getTargetArch();
if (str_starts_with($targetCpu, 'aarch')) {
$targetCpu = str_replace($targetCpu, 'aarch', 'arm');
}
UnixCMakeExecutor::create($this)
->setBuildDir("{$this->source_dir}/builddir")
->addConfigureArgs('-DAOM_TARGET_CPU=generic')
->addConfigureArgs(
"-DAOM_TARGET_CPU={$targetCpu}",
'-DCONFIG_RUNTIME_CPU_DETECT=1'
)
->build();
f_putenv("SPC_COMPILER_EXTRA={$extra}");
$this->patchPkgconfPrefix(['aom.pc']);

View File

@@ -127,4 +127,19 @@ class SPCTarget
default => PHP_OS_FAMILY,
};
}
/**
* Returns the target OS arch, e.g. x86_64, aarch64, arm, x86.
*/
public static function getTargetArch(): string
{
$target = (string) getenv('SPC_TARGET');
return match (true) {
str_starts_with($target, 'aarch64') => 'aarch64',
str_starts_with($target, 'arm-') => 'arm',
str_starts_with($target, 'x86_64-') => 'x86_64',
str_starts_with($target, 'x86-') => 'x86',
default => GNU_ARCH,
};
}
}