Skip to content

Commit 41f5948

Browse files
committed
Add libyaml
1 parent 6d91f8b commit 41f5948

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

config/pkg/lib/libyaml.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ libyaml:
1313
- yaml.h
1414
static-libs@unix:
1515
- libyaml.a
16+
static-libs@windows:
17+
- yaml.lib

src/Package/Library/libyaml.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,44 @@
66

77
use StaticPHP\Attribute\Package\BuildFor;
88
use StaticPHP\Attribute\Package\Library;
9+
use StaticPHP\Attribute\Package\PatchBeforeBuild;
10+
use StaticPHP\Attribute\PatchDescription;
911
use StaticPHP\Package\LibraryPackage;
1012
use StaticPHP\Runtime\Executor\UnixAutoconfExecutor;
13+
use StaticPHP\Runtime\Executor\WindowsCMakeExecutor;
14+
use StaticPHP\Runtime\SystemTarget;
15+
use StaticPHP\Util\FileSystem;
1116

1217
#[Library('libyaml')]
1318
class libyaml
1419
{
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+
1535
#[BuildFor('Darwin')]
1636
#[BuildFor('Linux')]
1737
public function buildUnix(LibraryPackage $lib): void
1838
{
1939
UnixAutoconfExecutor::create($lib)->configure()->make();
2040
}
41+
42+
#[BuildFor('Windows')]
43+
public function buildWin(LibraryPackage $lib): void
44+
{
45+
WindowsCMakeExecutor::create($lib)
46+
->addConfigureArgs('-DBUILD_TESTING=OFF')
47+
->build();
48+
}
2149
}

0 commit comments

Comments
 (0)