From d0b6a02432cb15e2156f27304f6878779283c7f2 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Fri, 6 Mar 2026 19:20:55 +0800 Subject: [PATCH] Add patchBeforeBuild method to modify Makefile CFLAGS and enhance build process --- src/Package/Library/bzip2.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Package/Library/bzip2.php b/src/Package/Library/bzip2.php index 7f554ab4..403773da 100644 --- a/src/Package/Library/bzip2.php +++ b/src/Package/Library/bzip2.php @@ -6,19 +6,30 @@ namespace Package\Library; use StaticPHP\Attribute\Package\BuildFor; use StaticPHP\Attribute\Package\Library; +use StaticPHP\Attribute\Package\PatchBeforeBuild; use StaticPHP\Package\LibraryPackage; use StaticPHP\Package\PackageBuilder; +use StaticPHP\Util\FileSystem; #[Library('bzip2')] class bzip2 { + #[PatchBeforeBuild] + public function patchBeforeBuild(LibraryPackage $lib): void + { + FileSystem::replaceFileStr($lib->getSourceDir() . '/Makefile', 'CFLAGS=-Wall', 'CFLAGS=-fPIC -Wall'); + } + #[BuildFor('Linux')] #[BuildFor('Darwin')] public function build(LibraryPackage $lib, PackageBuilder $builder): void { - shell()->cd($lib->getSourceDir())->initializeEnv($lib) - ->exec("make PREFIX='{$lib->getBuildRootPath()}' clean") - ->exec("make -j{$builder->concurrency} PREFIX='{$lib->getBuildRootPath()}' libbz2.a") + $shell = shell()->cd($lib->getSourceDir())->initializeEnv($lib); + $env = $shell->getEnvString(); + $cc_env = 'CC=' . escapeshellarg(getenv('CC') ?: 'cc') . ' AR=' . escapeshellarg(getenv('AR') ?: 'ar'); + + $shell->exec("make PREFIX='{$lib->getBuildRootPath()}' clean") + ->exec("make -j{$builder->concurrency} {$cc_env} {$env} PREFIX='{$lib->getBuildRootPath()}' libbz2.a") ->exec('cp libbz2.a ' . $lib->getLibDir()) ->exec('cp bzlib.h ' . $lib->getIncludeDir()); }