diff --git a/bin/compiler.php b/bin/compiler.php index 5ae7e1e1..f292a428 100755 --- a/bin/compiler.php +++ b/bin/compiler.php @@ -3,20 +3,6 @@ require __DIR__ . '/bootstrap.php'; require __DIR__ . '/../src/polyfills.php'; require __DIR__ . '/../src/gen_stub.php'; +require __DIR__ . '/../src/compiler-build.php'; -use PhpAot\Php\Translator; - -$translator = new Translator(ROOT_PATH); -$translator->setIndent(' '); -// 扫描所有 PHP 文件,预处理 -$files = $translator->prepare($translator->parseArgv($argv)); -// 生成 C++ 文件 -$sourceFiles = $translator->convert($files); -// 编译所有 C++ 文件 -$objectFiles = $translator->compile($sourceFiles); -// 连接所有目标文件,生成可执行文件 -$binaryFile = $translator->build($objectFiles); -// 如果指定了 --run / -r,编译完成后立即执行 -if ($translator->isRunRequested()) { - $translator->run($binaryFile); // never returns -} +main($argc, $argv); diff --git a/src/compiler-build.php b/src/compiler-build.php index 0396000d..46594fd0 100644 --- a/src/compiler-build.php +++ b/src/compiler-build.php @@ -3,27 +3,25 @@ use PhpAot\Php\Translator; function main(int $argc, array $argv): void { - define("ROOT_PATH", getcwd()); - define('DEBUG', true); - - require ROOT_PATH . '/vendor/autoload.php'; + if (!defined('ROOT_PATH')) { + define("ROOT_PATH", getcwd()); + } + require_once ROOT_PATH . '/vendor/autoload.php'; global $translator; $translator = new Translator(ROOT_PATH); - if (empty($argv[1])) { - $translator->showUsage(); - exit(0); - } - $translator->setIndent(' '); // 扫描所有 PHP 文件,预处理 - $path = $argv[1]; - $files = $translator->prepare($path); + $files = $translator->prepare($translator->parseArgv($argv)); // 生成 C++ 文件 $sourceFiles = $translator->convert($files); // 编译所有 C++ 文件 $objectFiles = $translator->compile($sourceFiles); // 连接所有目标文件,生成可执行文件 - $translator->build($objectFiles); + $binaryFile = $translator->build($objectFiles); + // 如果指定了 --run / -r,编译完成后立即执行 + if ($translator->isRunRequested()) { + $translator->run($binaryFile); // never returns + } }