From a613e9a84f3cb2afaf54ffbece1315dd0f0bb23a Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Tue, 10 Dec 2024 23:08:11 +0800 Subject: [PATCH] Add spc-config command --- src/SPC/command/SPCConfigCommand.php | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/SPC/command/SPCConfigCommand.php diff --git a/src/SPC/command/SPCConfigCommand.php b/src/SPC/command/SPCConfigCommand.php new file mode 100644 index 00000000..0377ace9 --- /dev/null +++ b/src/SPC/command/SPCConfigCommand.php @@ -0,0 +1,53 @@ +addArgument('extensions', InputArgument::OPTIONAL, 'The extensions will be compiled, comma separated'); + $this->addOption('with-libs', null, InputOption::VALUE_REQUIRED, 'add additional libraries, comma separated', ''); + $this->addOption('with-suggested-libs', 'L', null, 'Build with suggested libs for selected exts and libs'); + $this->addOption('with-suggested-exts', 'E', null, 'Build with suggested extensions for selected exts'); + $this->addOption('includes', null, null, 'Add additional include path'); + $this->addOption('libs', null, null, 'Add additional libs path'); + } + + /** + * @throws RuntimeException + */ + public function handle(): int + { + // transform string to array + $libraries = array_map('trim', array_filter(explode(',', $this->getOption('with-libs')))); + // transform string to array + $extensions = $this->getArgument('extensions') ? $this->parseExtensionList($this->getArgument('extensions')) : []; + $include_suggest_ext = $this->getOption('with-suggested-exts'); + $include_suggest_lib = $this->getOption('with-suggested-libs'); + + $util = new SPCConfigUtil(null, $this->input); + $config = $util->config($extensions, $libraries, $include_suggest_ext, $include_suggest_lib); + + if ($this->getOption('includes')) { + $this->output->writeln($config['cflags']); + } elseif ($this->getOption('libs')) { + $this->output->writeln("{$config['ldflags']} {$config['libs']}"); + } else { + $this->output->writeln("{$config['cflags']} {$config['ldflags']} {$config['libs']}"); + } + + return 0; + } +}