Add watcher

This commit is contained in:
crazywhalecc 2026-02-06 14:26:24 +08:00
parent b6d8bf5639
commit ca9dc25f9a
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
2 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1,15 @@
watcher:
type: library
artifact:
source:
type: ghtar
repo: e-dant/watcher
prefer-stable: true
metadata:
license-files: [license]
license: MIT
headers:
- wtr/watcher-c.h
lang: cpp
static-libs@unix:
- libwatcher-c.a

View File

@ -0,0 +1,32 @@
<?php
declare(strict_types=1);
namespace Package\Library;
use StaticPHP\Attribute\Package\BuildFor;
use StaticPHP\Attribute\Package\Library;
use StaticPHP\Package\LibraryPackage;
use StaticPHP\Util\FileSystem;
#[Library('watcher')]
class watcher extends LibraryPackage
{
#[BuildFor('Darwin')]
#[BuildFor('Linux')]
public function build(): void
{
$cflags = $this->getLibExtraCXXFlags();
if (stripos($cflags, '-fpic') === false) {
$cflags .= ' -fPIC';
}
$ldflags = $this->getLibExtraLdFlags() ? ' ' . $this->getLibExtraLdFlags() : '';
shell()->cd("{$this->getSourceDir()}/watcher-c")
->exec(getenv('CXX') . " -c -o libwatcher-c.o ./src/watcher-c.cpp -I ./include -I ../include -std=c++17 -Wall -Wextra {$cflags}{$ldflags}")
->exec(getenv('AR') . ' rcs libwatcher-c.a libwatcher-c.o');
copy("{$this->getSourceDir()}/watcher-c/libwatcher-c.a", "{$this->getLibDir()}/libwatcher-c.a");
FileSystem::createDir("{$this->getIncludeDir()}/wtr");
copy("{$this->getSourceDir()}/watcher-c/include/wtr/watcher-c.h", "{$this->getIncludeDir()}/wtr/watcher-c.h");
}
}