|
6 | 6 |
|
7 | 7 | use StaticPHP\Attribute\Package\BuildFor; |
8 | 8 | use StaticPHP\Attribute\Package\Library; |
| 9 | +use StaticPHP\Attribute\Package\PatchBeforeBuild; |
| 10 | +use StaticPHP\Attribute\PatchDescription; |
9 | 11 | use StaticPHP\Package\LibraryPackage; |
10 | 12 | use StaticPHP\Runtime\Executor\UnixAutoconfExecutor; |
| 13 | +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; |
| 14 | +use StaticPHP\Runtime\SystemTarget; |
| 15 | +use StaticPHP\Util\FileSystem; |
11 | 16 |
|
12 | 17 | #[Library('libyaml')] |
13 | 18 | class libyaml |
14 | 19 | { |
| 20 | + #[PatchBeforeBuild] |
| 21 | + #[PatchDescription('Copy missing cmake helper files required for MSVC build (not included in libyaml git source)')] |
| 22 | + public function patchBeforeBuild(LibraryPackage $lib): void |
| 23 | + { |
| 24 | + spc_skip_if(SystemTarget::getTargetOS() !== 'Windows', 'This patch is only for Windows builds.'); |
| 25 | + // check missing files: cmake\config.h.in and .\YamlConfig.cmake.in |
| 26 | + if (!file_exists($lib->getSourceDir() . '\cmake\config.h.in')) { |
| 27 | + FileSystem::createDir($lib->getSourceDir() . '\cmake'); |
| 28 | + FileSystem::copy(ROOT_DIR . '/src/globals/extra/libyaml_config.h.in', $lib->getSourceDir() . '\cmake\config.h.in'); |
| 29 | + } |
| 30 | + if (!file_exists($lib->getSourceDir() . '\YamlConfig.cmake.in')) { |
| 31 | + FileSystem::copy(ROOT_DIR . '/src/globals/extra/libyaml_yamlConfig.cmake.in', $lib->getSourceDir() . '\YamlConfig.cmake.in'); |
| 32 | + } |
| 33 | + } |
| 34 | + |
15 | 35 | #[BuildFor('Darwin')] |
16 | 36 | #[BuildFor('Linux')] |
17 | 37 | public function buildUnix(LibraryPackage $lib): void |
18 | 38 | { |
19 | 39 | UnixAutoconfExecutor::create($lib)->configure()->make(); |
20 | 40 | } |
| 41 | + |
| 42 | + #[BuildFor('Windows')] |
| 43 | + public function buildWin(LibraryPackage $lib): void |
| 44 | + { |
| 45 | + WindowsCMakeExecutor::create($lib) |
| 46 | + ->addConfigureArgs('-DBUILD_TESTING=OFF') |
| 47 | + ->build(); |
| 48 | + } |
21 | 49 | } |
0 commit comments