mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 12:54:52 +08:00
unify CMakeExecutor and AutoConfExecutor
This commit is contained in:
parent
eb56690684
commit
6962d24b52
@ -12,7 +12,7 @@ use SPC\util\UnixShell;
|
|||||||
|
|
||||||
class UnixAutoconfExecutor extends Executor
|
class UnixAutoconfExecutor extends Executor
|
||||||
{
|
{
|
||||||
protected ?UnixShell $shell = null;
|
protected UnixShell $shell;
|
||||||
|
|
||||||
protected array $configure_args = [];
|
protected array $configure_args = [];
|
||||||
|
|
||||||
|
|||||||
@ -5,26 +5,36 @@ declare(strict_types=1);
|
|||||||
namespace SPC\util\executor;
|
namespace SPC\util\executor;
|
||||||
|
|
||||||
use Closure;
|
use Closure;
|
||||||
|
use SPC\builder\freebsd\library\BSDLibraryBase;
|
||||||
|
use SPC\builder\linux\library\LinuxLibraryBase;
|
||||||
|
use SPC\builder\macos\library\MacOSLibraryBase;
|
||||||
use SPC\exception\FileSystemException;
|
use SPC\exception\FileSystemException;
|
||||||
use SPC\exception\WrongUsageException;
|
use SPC\exception\WrongUsageException;
|
||||||
use SPC\store\FileSystem;
|
use SPC\store\FileSystem;
|
||||||
|
use SPC\util\UnixShell;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unix-like OS cmake command executor.
|
* Unix-like OS cmake command executor.
|
||||||
*/
|
*/
|
||||||
class UnixCMakeExecutor extends Executor
|
class UnixCMakeExecutor extends Executor
|
||||||
{
|
{
|
||||||
protected ?string $build_dir = null;
|
protected UnixShell $shell;
|
||||||
|
|
||||||
protected array $configure_args = [];
|
protected array $configure_args = [];
|
||||||
|
|
||||||
|
protected ?string $build_dir = null;
|
||||||
|
|
||||||
protected ?array $custom_default_args = null;
|
protected ?array $custom_default_args = null;
|
||||||
|
|
||||||
protected int $steps = 3;
|
protected int $steps = 3;
|
||||||
|
|
||||||
protected bool $reset = true;
|
protected bool $reset = true;
|
||||||
|
|
||||||
protected array $extra_env = [];
|
public function __construct(protected BSDLibraryBase|LinuxLibraryBase|MacOSLibraryBase $library)
|
||||||
|
{
|
||||||
|
parent::__construct($library);
|
||||||
|
$this->initShell();
|
||||||
|
}
|
||||||
|
|
||||||
public function build(string $build_pos = '..'): void
|
public function build(string $build_pos = '..'): void
|
||||||
{
|
{
|
||||||
@ -35,17 +45,14 @@ class UnixCMakeExecutor extends Executor
|
|||||||
FileSystem::resetDir($this->build_dir);
|
FileSystem::resetDir($this->build_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
// prepare shell
|
|
||||||
$shell = shell()->cd($this->build_dir)->initializeEnv($this->library)->appendEnv($this->extra_env);
|
|
||||||
|
|
||||||
// config
|
// config
|
||||||
$this->steps >= 1 && $shell->exec("cmake {$this->getConfigureArgs()} {$this->getDefaultCMakeArgs()} {$build_pos}");
|
$this->steps >= 1 && $this->shell->exec("cmake {$this->getConfigureArgs()} {$this->getDefaultCMakeArgs()} {$build_pos}");
|
||||||
|
|
||||||
// make
|
// make
|
||||||
$this->steps >= 2 && $shell->exec("cmake --build . -j {$this->library->getBuilder()->concurrency}");
|
$this->steps >= 2 && $this->shell->exec("cmake --build . -j {$this->library->getBuilder()->concurrency}");
|
||||||
|
|
||||||
// install
|
// install
|
||||||
$this->steps >= 3 && $shell->exec('make install');
|
$this->steps >= 3 && $this->shell->exec('make install');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,12 +86,9 @@ class UnixCMakeExecutor extends Executor
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function appendEnv(array $env): static
|
||||||
* Add extra environment flags
|
|
||||||
*/
|
|
||||||
public function addExtraEnv(array $env): static
|
|
||||||
{
|
{
|
||||||
$this->extra_env = [...$this->extra_env, ...$env];
|
$this->shell->appendEnv($env);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,4 +224,9 @@ CMAKE;
|
|||||||
FileSystem::writeFile(SOURCE_PATH . '/toolchain.cmake', $toolchain);
|
FileSystem::writeFile(SOURCE_PATH . '/toolchain.cmake', $toolchain);
|
||||||
return $created = realpath(SOURCE_PATH . '/toolchain.cmake');
|
return $created = realpath(SOURCE_PATH . '/toolchain.cmake');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function initShell(): void
|
||||||
|
{
|
||||||
|
$this->shell = shell()->cd($this->build_dir)->initializeEnv($this->library);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user