mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 04:44:53 +08:00
Add imagemagick,jbig,lerc,libaom,libde265,libheif,libjxl,libtiff,libwebp,libzip
This commit is contained in:
parent
807b90b182
commit
7ae16e5be8
32
config/pkg/lib/imagemagick.yml
Normal file
32
config/pkg/lib/imagemagick.yml
Normal file
@ -0,0 +1,32 @@
|
||||
imagemagick:
|
||||
type: library
|
||||
artifact:
|
||||
source: {
|
||||
"type": "ghtar",
|
||||
"repo": "ImageMagick/ImageMagick"
|
||||
}
|
||||
metadata:
|
||||
license-files: [LICENSE]
|
||||
lang: cpp
|
||||
pkg-configs: [
|
||||
"Magick++-7.Q16HDRI",
|
||||
"MagickCore-7.Q16HDRI",
|
||||
"MagickWand-7.Q16HDRI"
|
||||
]
|
||||
depends:
|
||||
- zlib
|
||||
- libjpeg
|
||||
- libjxl
|
||||
- libpng
|
||||
- libwebp
|
||||
- freetype
|
||||
- libtiff
|
||||
- libheif
|
||||
- bzip2
|
||||
suggests:
|
||||
- zstd
|
||||
- xz
|
||||
- libzip
|
||||
- libxml2
|
||||
|
||||
|
||||
15
config/pkg/lib/jbig.yml
Normal file
15
config/pkg/lib/jbig.yml
Normal file
@ -0,0 +1,15 @@
|
||||
jbig:
|
||||
type: library
|
||||
artifact:
|
||||
source: 'https://dl.static-php.dev/static-php-cli/deps/jbig/jbigkit-2.1.tar.gz'
|
||||
source-mirror: 'https://www.cl.cam.ac.uk/~mgk25/jbigkit/download/jbigkit-2.1.tar.gz'
|
||||
metadata:
|
||||
license-files: [COPYING]
|
||||
license: GPL-2.0-or-later
|
||||
headers:
|
||||
- jbig.h
|
||||
- jbig85.h
|
||||
- jbig_ar.h
|
||||
static-libs@unix:
|
||||
- libjbig.a
|
||||
- libjbig85.a
|
||||
12
config/pkg/lib/lerc.yml
Normal file
12
config/pkg/lib/lerc.yml
Normal file
@ -0,0 +1,12 @@
|
||||
lerc:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: ghtar
|
||||
repo: Esri/lerc
|
||||
prefer-stable: true
|
||||
metadata:
|
||||
license-files: [LICENSE]
|
||||
lang: cpp
|
||||
static-libs@unix:
|
||||
- libLerc.a
|
||||
12
config/pkg/lib/libaom.yml
Normal file
12
config/pkg/lib/libaom.yml
Normal file
@ -0,0 +1,12 @@
|
||||
libaom:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: git
|
||||
rev: main
|
||||
url: 'https://aomedia.googlesource.com/aom'
|
||||
metadata:
|
||||
license-files: [LICENSE]
|
||||
lang: cpp
|
||||
static-libs@unix:
|
||||
- libaom.a
|
||||
13
config/pkg/lib/libde265.yml
Normal file
13
config/pkg/lib/libde265.yml
Normal file
@ -0,0 +1,13 @@
|
||||
libde265:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: ghrel
|
||||
repo: strukturag/libde265
|
||||
match: libde265-.+\.tar\.gz
|
||||
prefer-stable: true
|
||||
metadata:
|
||||
license-files: [COPYING]
|
||||
lang: cpp
|
||||
static-libs@unix:
|
||||
- libde265.a
|
||||
18
config/pkg/lib/libheif.yml
Normal file
18
config/pkg/lib/libheif.yml
Normal file
@ -0,0 +1,18 @@
|
||||
libheif:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: ghrel
|
||||
repo: strukturag/libheif
|
||||
match: libheif-.+\.tar\.gz
|
||||
prefer-stable: true
|
||||
metadata:
|
||||
license-files: [COPYING]
|
||||
depends:
|
||||
- libde265
|
||||
- libwebp
|
||||
- libaom
|
||||
- zlib
|
||||
- brotli
|
||||
static-libs@unix:
|
||||
- libheif.a
|
||||
21
config/pkg/lib/libjxl.yml
Normal file
21
config/pkg/lib/libjxl.yml
Normal file
@ -0,0 +1,21 @@
|
||||
libjxl:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: git
|
||||
url: 'https://github.com/libjxl/libjxl'
|
||||
rev: main
|
||||
submodules: [third_party/highway, third_party/libjpeg-turbo, third_party/sjpeg, third_party/skcms]
|
||||
metadata:
|
||||
license-files: [LICENSE]
|
||||
license: BSD-3-Clause
|
||||
depends:
|
||||
- brotli
|
||||
- libjpeg
|
||||
- libpng
|
||||
- libwebp
|
||||
pkg-configs:
|
||||
- libjxl
|
||||
- libjxl_cms
|
||||
- libjxl_threads
|
||||
- libhwy
|
||||
21
config/pkg/lib/libtiff.yml
Normal file
21
config/pkg/lib/libtiff.yml
Normal file
@ -0,0 +1,21 @@
|
||||
libtiff:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: filelist
|
||||
url: 'https://download.osgeo.org/libtiff/'
|
||||
regex: '/href="(?<file>tiff-(?<version>[^"]+)\.tar\.xz)"/'
|
||||
metadata:
|
||||
license-files: [LICENSE.md]
|
||||
license: libtiff
|
||||
depends:
|
||||
- zlib
|
||||
- libjpeg
|
||||
suggests@unix:
|
||||
- lerc
|
||||
- libwebp
|
||||
- jbig
|
||||
- xz
|
||||
- zstd
|
||||
static-libs@unix:
|
||||
- libtiff.a
|
||||
16
config/pkg/lib/libwebp.yml
Normal file
16
config/pkg/lib/libwebp.yml
Normal file
@ -0,0 +1,16 @@
|
||||
libwebp:
|
||||
type: library
|
||||
artifact:
|
||||
source:
|
||||
type: ghtagtar
|
||||
repo: webmproject/libwebp
|
||||
match: v1\.\d+\.\d+$
|
||||
metadata:
|
||||
license-files: [COPYING]
|
||||
license: BSD-3-Clause
|
||||
pkg-configs:
|
||||
- libwebp
|
||||
- libwebpdecoder
|
||||
- libwebpdemux
|
||||
- libwebpmux
|
||||
- libsharpyuv
|
||||
23
config/pkg/lib/libzip.yml
Normal file
23
config/pkg/lib/libzip.yml
Normal file
@ -0,0 +1,23 @@
|
||||
libzip:
|
||||
type: library
|
||||
artifact:
|
||||
source: {
|
||||
"type": "ghrel",
|
||||
"repo": "nih-at/libzip",
|
||||
"match": "libzip.+\\.tar\\.xz",
|
||||
"prefer-stable": true
|
||||
}
|
||||
metadata:
|
||||
license-files: [LICENSE]
|
||||
static-libs@unix:
|
||||
- libzip.a
|
||||
headers:
|
||||
- zip.h
|
||||
- zipconf.h
|
||||
depends@unix:
|
||||
- zlib
|
||||
suggests@unix:
|
||||
- bzip2
|
||||
- xz
|
||||
- zstd
|
||||
- openssl
|
||||
83
src/Package/Library/imagemagick.php
Normal file
83
src/Package/Library/imagemagick.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixAutoconfExecutor;
|
||||
use StaticPHP\Runtime\SystemTarget;
|
||||
use StaticPHP\Toolchain\Interface\ToolchainInterface;
|
||||
use StaticPHP\Util\FileSystem;
|
||||
|
||||
#[Library('imagemagick')]
|
||||
class imagemagick
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(LibraryPackage $lib, ToolchainInterface $toolchain): void
|
||||
{
|
||||
$ldflags = $original_ldflags = getenv('SPC_DEFAULT_LD_FLAGS');
|
||||
if (str_contains($ldflags, '-Wl,--as-needed')) {
|
||||
$ldflags = str_replace('-Wl,--as-needed', '', $ldflags);
|
||||
f_putenv("SPC_DEFAULT_LD_FLAGS={$ldflags}");
|
||||
}
|
||||
|
||||
$ac = UnixAutoconfExecutor::create($lib)
|
||||
->optionalPackage('libzip', ...ac_with_args('zip'))
|
||||
->optionalPackage('libjpeg', ...ac_with_args('jpeg'))
|
||||
->optionalPackage('libpng', ...ac_with_args('png'))
|
||||
->optionalPackage('libwebp', ...ac_with_args('webp'))
|
||||
->optionalPackage('libxml2', ...ac_with_args('xml'))
|
||||
->optionalPackage('libheif', ...ac_with_args('heic'))
|
||||
->optionalPackage('zlib', ...ac_with_args('zlib'))
|
||||
->optionalPackage('xz', ...ac_with_args('lzma'))
|
||||
->optionalPackage('zstd', ...ac_with_args('zstd'))
|
||||
->optionalPackage('freetype', ...ac_with_args('freetype'))
|
||||
->optionalPackage('bzip2', ...ac_with_args('bzlib'))
|
||||
->optionalPackage('libjxl', ...ac_with_args('jxl'))
|
||||
->optionalPackage('jbig', ...ac_with_args('jbig'))
|
||||
->addConfigureArgs(
|
||||
'--disable-openmp',
|
||||
'--without-x',
|
||||
);
|
||||
|
||||
// special: linux-static target needs `-static`
|
||||
$ldflags = $toolchain->isStatic() ? '-static -ldl' : '-ldl';
|
||||
|
||||
// special: macOS needs -iconv
|
||||
$libs = SystemTarget::getTargetOS() === 'Darwin' ? '-liconv' : '';
|
||||
|
||||
$ac->appendEnv([
|
||||
'LDFLAGS' => $ldflags,
|
||||
'LIBS' => $libs,
|
||||
'PKG_CONFIG' => '$PKG_CONFIG --static',
|
||||
]);
|
||||
|
||||
$ac->configure()->make();
|
||||
|
||||
f_putenv("SPC_DEFAULT_LD_FLAGS={$original_ldflags}");
|
||||
|
||||
$filelist = [
|
||||
'ImageMagick.pc',
|
||||
'ImageMagick-7.Q16HDRI.pc',
|
||||
'Magick++.pc',
|
||||
'Magick++-7.Q16HDRI.pc',
|
||||
'MagickCore.pc',
|
||||
'MagickCore-7.Q16HDRI.pc',
|
||||
'MagickWand.pc',
|
||||
'MagickWand-7.Q16HDRI.pc',
|
||||
];
|
||||
$lib->patchPkgconfPrefix($filelist);
|
||||
foreach ($filelist as $file) {
|
||||
FileSystem::replaceFileRegex(
|
||||
"{$lib->getLibDir()}/pkgconfig/{$file}",
|
||||
'#includearchdir=/include/ImageMagick-7#m',
|
||||
'includearchdir=${prefix}/include/ImageMagick-7'
|
||||
);
|
||||
}
|
||||
$lib->patchLaDependencyPrefix();
|
||||
}
|
||||
}
|
||||
46
src/Package/Library/jbig.php
Normal file
46
src/Package/Library/jbig.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Attribute\Package\PatchBeforeBuild;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Package\PackageBuilder;
|
||||
use StaticPHP\Util\FileSystem;
|
||||
|
||||
#[Library('jbig')]
|
||||
class jbig
|
||||
{
|
||||
#[PatchBeforeBuild]
|
||||
public function patchBeforeBuild(LibraryPackage $lib): void
|
||||
{
|
||||
FileSystem::replaceFileStr($lib->getSourceDir() . '/Makefile', 'CFLAGS = -O2 -W -Wno-unused-result', 'CFLAGS = -O2 -W -Wno-unused-result -fPIC');
|
||||
}
|
||||
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(LibraryPackage $lib, PackageBuilder $builder): void
|
||||
{
|
||||
$ccenv = [
|
||||
'CC' => getenv('CC'),
|
||||
'CXX' => getenv('CXX'),
|
||||
'AR' => getenv('AR'),
|
||||
'LD' => getenv('LD'),
|
||||
];
|
||||
$env = [];
|
||||
foreach ($ccenv as $k => $v) {
|
||||
$env[] = "{$k}={$v}";
|
||||
}
|
||||
$env_str = implode(' ', $env);
|
||||
shell()->cd($lib->getSourceDir())->initializeEnv($lib)
|
||||
->exec("make -j{$builder->concurrency} {$env_str} lib")
|
||||
->exec("cp libjbig/libjbig.a {$lib->getLibDir()}")
|
||||
->exec("cp libjbig/libjbig85.a {$lib->getLibDir()}")
|
||||
->exec("cp libjbig/jbig.h {$lib->getIncludeDir()}")
|
||||
->exec("cp libjbig/jbig85.h {$lib->getIncludeDir()}")
|
||||
->exec("cp libjbig/jbig_ar.h {$lib->getIncludeDir()}");
|
||||
}
|
||||
}
|
||||
21
src/Package/Library/lerc.php
Normal file
21
src/Package/Library/lerc.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
|
||||
#[Library('lerc')]
|
||||
class lerc extends LibraryPackage
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(): void
|
||||
{
|
||||
UnixCMakeExecutor::create($this)->build();
|
||||
}
|
||||
}
|
||||
33
src/Package/Library/libaom.php
Normal file
33
src/Package/Library/libaom.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
use StaticPHP\Toolchain\Interface\ToolchainInterface;
|
||||
use StaticPHP\Toolchain\ZigToolchain;
|
||||
|
||||
#[Library('libaom')]
|
||||
class libaom extends LibraryPackage
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(ToolchainInterface $toolchain): void
|
||||
{
|
||||
$extra = getenv('SPC_COMPILER_EXTRA');
|
||||
if ($toolchain instanceof ZigToolchain) {
|
||||
$new = trim($extra . ' -D_GNU_SOURCE');
|
||||
f_putenv("SPC_COMPILER_EXTRA={$new}");
|
||||
}
|
||||
UnixCMakeExecutor::create($this)
|
||||
->setBuildDir("{$this->getSourceDir()}/builddir")
|
||||
->addConfigureArgs('-DAOM_TARGET_CPU=generic')
|
||||
->build();
|
||||
f_putenv("SPC_COMPILER_EXTRA={$extra}");
|
||||
$this->patchPkgconfPrefix(['aom.pc']);
|
||||
}
|
||||
}
|
||||
24
src/Package/Library/libde265.php
Normal file
24
src/Package/Library/libde265.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
|
||||
#[Library('libde265')]
|
||||
class libde265 extends LibraryPackage
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(): void
|
||||
{
|
||||
UnixCMakeExecutor::create($this)
|
||||
->addConfigureArgs('-DENABLE_SDL=OFF')
|
||||
->build();
|
||||
$this->patchPkgconfPrefix(['libde265.pc']);
|
||||
}
|
||||
}
|
||||
45
src/Package/Library/libheif.php
Normal file
45
src/Package/Library/libheif.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Attribute\Package\PatchBeforeBuild;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
use StaticPHP\Util\FileSystem;
|
||||
|
||||
#[Library('libheif')]
|
||||
class libheif
|
||||
{
|
||||
#[PatchBeforeBuild]
|
||||
public function patchBeforeBuild(LibraryPackage $lib): void
|
||||
{
|
||||
if (!str_contains(file_get_contents($lib->getSourceDir() . '/CMakeLists.txt'), 'libbrotlienc')) {
|
||||
FileSystem::replaceFileStr(
|
||||
$lib->getSourceDir() . '/CMakeLists.txt',
|
||||
'list(APPEND REQUIRES_PRIVATE "libbrotlidec")',
|
||||
'list(APPEND REQUIRES_PRIVATE "libbrotlidec")' . "\n" . ' list(APPEND REQUIRES_PRIVATE "libbrotlienc")'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(LibraryPackage $lib): void
|
||||
{
|
||||
UnixCMakeExecutor::create($lib)
|
||||
->addConfigureArgs(
|
||||
'--preset=release',
|
||||
'-DWITH_EXAMPLES=OFF',
|
||||
'-DWITH_GDK_PIXBUF=OFF',
|
||||
'-DBUILD_TESTING=OFF',
|
||||
'-DWITH_LIBSHARPYUV=ON', // optional: libwebp
|
||||
'-DENABLE_PLUGIN_LOADING=OFF',
|
||||
)
|
||||
->build();
|
||||
$lib->patchPkgconfPrefix(['libheif.pc']);
|
||||
}
|
||||
}
|
||||
52
src/Package/Library/libjxl.php
Normal file
52
src/Package/Library/libjxl.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
use StaticPHP\Toolchain\Interface\ToolchainInterface;
|
||||
use StaticPHP\Toolchain\ZigToolchain;
|
||||
|
||||
#[Library('libjxl')]
|
||||
class libjxl extends LibraryPackage
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(ToolchainInterface $toolchain): void
|
||||
{
|
||||
$cmake = UnixCMakeExecutor::create($this)
|
||||
->addConfigureArgs(
|
||||
'-DJPEGXL_ENABLE_TOOLS=OFF',
|
||||
'-DJPEGXL_ENABLE_EXAMPLES=OFF',
|
||||
'-DJPEGXL_ENABLE_MANPAGES=OFF',
|
||||
'-DJPEGXL_ENABLE_BENCHMARK=OFF',
|
||||
'-DJPEGXL_ENABLE_PLUGINS=OFF',
|
||||
'-DJPEGXL_ENABLE_SJPEG=ON',
|
||||
'-DJPEGXL_ENABLE_JNI=OFF',
|
||||
'-DJPEGXL_ENABLE_TRANSCODE_JPEG=ON',
|
||||
'-DJPEGXL_STATIC=' . ($toolchain->isStatic() ? 'ON' : 'OFF'),
|
||||
'-DJPEGXL_FORCE_SYSTEM_BROTLI=ON',
|
||||
'-DBUILD_TESTING=OFF'
|
||||
);
|
||||
|
||||
if ($toolchain instanceof ZigToolchain) {
|
||||
$cflags = getenv('SPC_DEFAULT_C_FLAGS') ?: getenv('CFLAGS') ?: '';
|
||||
$has_avx512 = str_contains($cflags, '-mavx512') || str_contains($cflags, '-march=x86-64-v4');
|
||||
if (!$has_avx512) {
|
||||
$cmake->addConfigureArgs(
|
||||
'-DCXX_MAVX512F_SUPPORTED:BOOL=FALSE',
|
||||
'-DCXX_MAVX512DQ_SUPPORTED:BOOL=FALSE',
|
||||
'-DCXX_MAVX512CD_SUPPORTED:BOOL=FALSE',
|
||||
'-DCXX_MAVX512BW_SUPPORTED:BOOL=FALSE',
|
||||
'-DCXX_MAVX512VL_SUPPORTED:BOOL=FALSE'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$cmake->build();
|
||||
}
|
||||
}
|
||||
50
src/Package/Library/libtiff.php
Normal file
50
src/Package/Library/libtiff.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixAutoconfExecutor;
|
||||
use StaticPHP\Runtime\SystemTarget;
|
||||
use StaticPHP\Util\FileSystem;
|
||||
|
||||
#[Library('libtiff')]
|
||||
class libtiff
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(LibraryPackage $lib): void
|
||||
{
|
||||
$libcpp = SystemTarget::getTargetOS() === 'Linux' ? '-lstdc++' : '-lc++';
|
||||
FileSystem::replaceFileStr("{$lib->getSourceDir()}/configure", '-lwebp', '-lwebp -lsharpyuv');
|
||||
FileSystem::replaceFileStr("{$lib->getSourceDir()}/configure", '-l"$lerc_lib_name"', "-l\"\$lerc_lib_name\" {$libcpp}");
|
||||
UnixAutoconfExecutor::create($lib)
|
||||
->optionalPackage('lerc', '--enable-lerc', '--disable-lerc')
|
||||
->optionalPackage('zstd', '--enable-zstd', '--disable-zstd')
|
||||
->optionalPackage('libwebp', '--enable-webp', '--disable-webp')
|
||||
->optionalPackage('xz', '--enable-lzma', '--disable-lzma')
|
||||
->optionalPackage('jbig', '--enable-jbig', '--disable-jbig')
|
||||
->configure(
|
||||
// zlib deps
|
||||
'--enable-zlib',
|
||||
"--with-zlib-include-dir={$lib->getIncludeDir()}",
|
||||
"--with-zlib-lib-dir={$lib->getLibDir()}",
|
||||
// libjpeg deps
|
||||
'--enable-jpeg',
|
||||
"--with-jpeg-include-dir={$lib->getIncludeDir()}",
|
||||
"--with-jpeg-lib-dir={$lib->getLibDir()}",
|
||||
'--disable-old-jpeg',
|
||||
'--disable-jpeg12',
|
||||
'--disable-libdeflate',
|
||||
'--disable-tools',
|
||||
'--disable-contrib',
|
||||
'--disable-cxx',
|
||||
'--without-x',
|
||||
)
|
||||
->make();
|
||||
$lib->patchPkgconfPrefix(['libtiff-4.pc']);
|
||||
}
|
||||
}
|
||||
44
src/Package/Library/libwebp.php
Normal file
44
src/Package/Library/libwebp.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
|
||||
#[Library('libwebp')]
|
||||
class libwebp extends LibraryPackage
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(): void
|
||||
{
|
||||
$code = '#include <immintrin.h>
|
||||
int main() { return _mm256_cvtsi256_si32(_mm256_setzero_si256()); }';
|
||||
$cc = getenv('CC') ?: 'gcc';
|
||||
[$ret] = shell()->execWithResult("printf '%s' '{$code}' | {$cc} -x c -mavx2 -o /dev/null - 2>&1");
|
||||
$disableAvx2 = $ret !== 0 && GNU_ARCH === 'x86_64' && PHP_OS_FAMILY === 'Linux';
|
||||
|
||||
UnixCMakeExecutor::create($this)
|
||||
->addConfigureArgs(
|
||||
'-DWEBP_BUILD_EXTRAS=OFF',
|
||||
'-DWEBP_BUILD_ANIM_UTILS=OFF',
|
||||
'-DWEBP_BUILD_CWEBP=OFF',
|
||||
'-DWEBP_BUILD_DWEBP=OFF',
|
||||
'-DWEBP_BUILD_GIF2WEBP=OFF',
|
||||
'-DWEBP_BUILD_IMG2WEBP=OFF',
|
||||
'-DWEBP_BUILD_VWEBP=OFF',
|
||||
'-DWEBP_BUILD_WEBPINFO=OFF',
|
||||
'-DWEBP_BUILD_WEBPMUX=OFF',
|
||||
'-DWEBP_BUILD_FUZZTEST=OFF',
|
||||
$disableAvx2 ? '-DWEBP_ENABLE_SIMD=OFF' : ''
|
||||
)
|
||||
->build();
|
||||
// patch pkgconfig
|
||||
$this->patchPkgconfPrefix(patch_option: PKGCONF_PATCH_PREFIX | PKGCONF_PATCH_LIBDIR);
|
||||
$this->patchPkgconfPrefix(['libsharpyuv.pc'], PKGCONF_PATCH_CUSTOM, ['/^includedir=.*$/m', 'includedir=${prefix}/include/webp']);
|
||||
}
|
||||
}
|
||||
36
src/Package/Library/libzip.php
Normal file
36
src/Package/Library/libzip.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Package\Library;
|
||||
|
||||
use StaticPHP\Attribute\Package\BuildFor;
|
||||
use StaticPHP\Attribute\Package\Library;
|
||||
use StaticPHP\Package\LibraryPackage;
|
||||
use StaticPHP\Runtime\Executor\UnixCMakeExecutor;
|
||||
|
||||
#[Library('libzip')]
|
||||
class libzip
|
||||
{
|
||||
#[BuildFor('Darwin')]
|
||||
#[BuildFor('Linux')]
|
||||
public function buildUnix(LibraryPackage $lib): void
|
||||
{
|
||||
UnixCMakeExecutor::create($lib)
|
||||
->optionalPackage('bzip2', ...cmake_boolean_args('ENABLE_BZIP2'))
|
||||
->optionalPackage('xz', ...cmake_boolean_args('ENABLE_LZMA'))
|
||||
->optionalPackage('openssl', ...cmake_boolean_args('ENABLE_OPENSSL'))
|
||||
->optionalPackage('zstd', ...cmake_boolean_args('ENABLE_ZSTD'))
|
||||
->addConfigureArgs(
|
||||
'-DENABLE_GNUTLS=OFF',
|
||||
'-DENABLE_MBEDTLS=OFF',
|
||||
'-DBUILD_DOC=OFF',
|
||||
'-DBUILD_EXAMPLES=OFF',
|
||||
'-DBUILD_REGRESS=OFF',
|
||||
'-DBUILD_TOOLS=OFF',
|
||||
'-DBUILD_OSSFUZZ=OFF',
|
||||
)
|
||||
->build();
|
||||
$lib->patchPkgconfPrefix(['libzip.pc'], PKGCONF_PATCH_PREFIX);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user