diff --git a/examples/prime/vector.cc b/examples/prime/cpp-src/vector.cc similarity index 100% rename from examples/prime/vector.cc rename to examples/prime/cpp-src/vector.cc diff --git a/examples/prime/vector.stub.php b/examples/prime/php-src/vector.stub.php similarity index 100% rename from examples/prime/vector.stub.php rename to examples/prime/php-src/vector.stub.php diff --git a/examples/prime/project.yml b/examples/prime/project.yml index 0a4a3d11..a5c1099f 100644 --- a/examples/prime/project.yml +++ b/examples/prime/project.yml @@ -7,4 +7,7 @@ cxxflags: | ldflags: | -L/usr/lib/x86_64-linux-gnu/ -lssl - +sources: + - php-src + - ./cpp-src + - main.php \ No newline at end of file diff --git a/src/Php/Translator.php b/src/Php/Translator.php index 7957865a..5aae2c7e 100644 --- a/src/Php/Translator.php +++ b/src/Php/Translator.php @@ -168,17 +168,26 @@ class Translator extends Preprocessor protected function parseProjectYaml(string $path): array { $cfg = Yaml::parseFile($path); + $projectDir = dirname($path); if (!empty($cfg['sources'])) { - $dirs = $cfg['sources']; + $sources = $cfg['sources']; $list = []; - foreach ($dirs as $dir) { - $tmp = $this->getFilesFromDir($dir); - $list = array_merge($list, $tmp); + foreach ($sources as $src) { + $src = trim($src); + if ($src[0] != '/') { + $src = $projectDir . '/' . $src; + } + $src = realpath($src); + if (is_file($src)) { + $list[] = $src; + } else { + $tmp = $this->getFilesFromDir($src); + $list = array_merge($list, $tmp); + } } } else { - $dir = dirname($path); - $list = $this->getFilesFromDir($dir); + $list = $this->getFilesFromDir($projectDir); } if (!empty($cfg['cxxflags'])) { $this->cxxflags = str_replace("\n", " ", $cfg['cxxflags']);