Skip to content
8 changes: 7 additions & 1 deletion src/Package/Extension/uv.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ public function patchBeforeBuild(): void
FileSystem::replaceFileStr(
"{$this->getBuildDir()}/config.w32",
'CHECK_LIB("Ws2_32.lib","uv", PHP_UV);',
"CHECK_LIB(\"Ws2_32.lib\",\"uv\" , PHP_UV);\n\tCHECK_LIB(\"dbghelp.lib\",\"uv\", PHP_UV);",
implode("\n\t", [
'CHECK_LIB("Ws2_32.lib","uv" , PHP_UV);',
'CHECK_LIB("dbghelp.lib","uv", PHP_UV);',
// libuv >= 1.53 calls WaitOnAddress()/WakeByAddressSingle() in win/pipe.c;
// php.exe links libuv.lib directly, so the consumer has to pass synchronization.lib.
'CHECK_LIB("synchronization.lib","uv", PHP_UV);',
]),
);
}

Expand Down
5 changes: 4 additions & 1 deletion src/Package/Library/brotli.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ public function build(LibraryPackage $lib): void
{
UnixCMakeExecutor::create($lib)
->setBuildDir($lib->getSourceDir() . '/build-dir')
->addConfigureArgs("-DSHARE_INSTALL_PREFIX={$lib->getBuildRootPath()}")
->addConfigureArgs(
"-DSHARE_INSTALL_PREFIX={$lib->getBuildRootPath()}",
'-DBROTLI_DISABLE_TESTS=ON',
)
->build();

// Patch pkg-config files
Expand Down
11 changes: 7 additions & 4 deletions src/Package/Library/gmp.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use StaticPHP\Attribute\Package\Library;
use StaticPHP\Package\LibraryPackage;
use StaticPHP\Runtime\Executor\UnixAutoconfExecutor;
use StaticPHP\Runtime\SystemTarget;

#[Library('gmp')]
class gmp
Expand All @@ -16,10 +17,12 @@ class gmp
#[BuildFor('Darwin')]
public function build(LibraryPackage $lib): void
{
UnixAutoconfExecutor::create($lib)
->appendEnv(['CFLAGS' => '-std=c17'])
->configure('--enable-fat')
->make();
$make = UnixAutoconfExecutor::create($lib)->appendEnv(['CFLAGS' => '-std=c17']);
if (SystemTarget::getTargetArch() === 'x86_64' && SystemTarget::getTargetOS() === 'Linux') {
$libc = SystemTarget::getLibc() === 'glibc' ? 'gnu' : 'musl';
$make->addConfigureArgs("--host=x86_64-pc-linux-{$libc}");
}
$make->configure('--enable-fat')->make();
$lib->patchPkgconfPrefix(['gmp.pc']);
}
}
3 changes: 3 additions & 0 deletions src/Package/Library/imagemagick.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,9 @@ public function buildUnix(LibraryPackage $lib, ToolchainInterface $toolchain): v
// implicit --with-gcc-arch
// bleeds host cpu features into built binaries
'--without-gcc-arch',
'--disable-docs',
'--without-utilities',
'--disable-dpc',
);

// special: linux-static target needs `-static`
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/ldap.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public function build(LibraryPackage $lib): void
->optionalPackage('libsodium', '--with-argon2=libsodium', '--enable-argon2=no')
->addConfigureArgs(
'--disable-slapd',
'--disable-debug',
'--without-systemd',
'--without-cyrus-sasl',
'ac_cv_func_pthread_kill_other_threads_np=no'
Expand Down
9 changes: 7 additions & 2 deletions src/Package/Library/libavif.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ public function buildUnix(LibraryPackage $lib): void
->optionalPackage('libjpeg', '-DAVIF_JPEG=SYSTEM', '-DAVIF_JPEG=OFF')
->optionalPackage('libxml2', '-DAVIF_LIBXML2=SYSTEM', '-DAVIF_LIBXML2=OFF')
->optionalPackage('libpng', '-DAVIF_LIBPNG=SYSTEM', '-DAVIF_LIBPNG=OFF')
->addConfigureArgs('-DAVIF_LIBYUV=OFF')
->addConfigureArgs(
'-DAVIF_LIBYUV=OFF',
'-DAVIF_BUILD_APPS=OFF',
'-DAVIF_BUILD_TESTS=OFF',
'-DAVIF_GTEST=OFF',
)
->build();
// patch pkgconfig
$lib->patchPkgconfPrefix(['libavif.pc']);
Expand All @@ -49,7 +54,7 @@ public function buildWin(LibraryPackage $lib): void
'-DAVIF_BUILD_APPS=OFF',
'-DAVIF_BUILD_TESTS=OFF',
'-DAVIF_LIBYUV=OFF',
'-DAVIF_ENABLE_GTEST=OFF',
'-DAVIF_GTEST=OFF',
)
->build();
}
Expand Down
3 changes: 2 additions & 1 deletion src/Package/Library/libffi.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class libffi extends LibraryPackage
public function buildLinux(): void
{
UnixAutoconfExecutor::create($this)
->configure()->make();
->configure('--disable-docs')->make();

if (is_file("{$this->getBuildRootPath()}/lib64/libffi.a")) {
copy("{$this->getBuildRootPath()}/lib64/libffi.a", "{$this->getBuildRootPath()}/lib/libffi.a");
Expand All @@ -34,6 +34,7 @@ public function buildDarwin(): void
->configure(
"--host={$arch}-apple-darwin",
"--target={$arch}-apple-darwin",
'--disable-docs',
)
->make();
$this->patchPkgconfPrefix(['libffi.pc']);
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/libheif.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public function buildUnix(LibraryPackage $lib): void
'-DWITH_EXAMPLES=OFF',
'-DWITH_GDK_PIXBUF=OFF',
'-DBUILD_TESTING=OFF',
'-DBUILD_DOCUMENTATION=OFF',
'-DWITH_LIBSHARPYUV=ON', // optional: libwebp
'-DENABLE_PLUGIN_LOADING=OFF',
)
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/libjxl.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public function buildUnix(ToolchainInterface $toolchain): void
'-DJPEGXL_ENABLE_MANPAGES=OFF',
'-DJPEGXL_ENABLE_BENCHMARK=OFF',
'-DJPEGXL_ENABLE_PLUGINS=OFF',
'-DJPEGXL_ENABLE_DOXYGEN=OFF',
'-DJPEGXL_ENABLE_SJPEG=ON',
'-DJPEGXL_ENABLE_JNI=OFF',
'-DJPEGXL_ENABLE_TRANSCODE_JPEG=ON',
Expand Down
12 changes: 10 additions & 2 deletions src/Package/Library/libmemcached.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,25 @@
#[Library('libmemcached')]
class libmemcached extends LibraryPackage
{
private const array DISABLE_ARGS = [
'-DBUILD_TESTING=OFF',
'-DBUILD_DOCS=OFF',
'-DENABLE_MEMASLAP=OFF',
];

#[BuildFor('Linux')]
public function buildLinux(): void
{
UnixCMakeExecutor::create($this)
->addConfigureArgs('-DCMAKE_INSTALL_RPATH=""')
->addConfigureArgs('-DCMAKE_INSTALL_RPATH=""', ...self::DISABLE_ARGS)
->build();
}

#[BuildFor('Darwin')]
public function buildDarwin(): void
{
UnixCMakeExecutor::create($this)->build();
UnixCMakeExecutor::create($this)
->addConfigureArgs(...self::DISABLE_ARGS)
->build();
}
}
2 changes: 2 additions & 0 deletions src/Package/Library/libpng.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ public function buildUnix(LibraryPackage $lib): void
{
$args = [
'--enable-hardware-optimizations',
'--disable-tests',
'--disable-tools',
"--with-zlib-prefix={$lib->getBuildRootPath()}",
];

Expand Down
16 changes: 14 additions & 2 deletions src/Package/Library/librabbitmq.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,29 @@
#[Library('librabbitmq')]
class librabbitmq extends LibraryPackage
{
private const array DISABLE_ARGS = [
'-DBUILD_EXAMPLES=OFF',
'-DBUILD_TESTING=OFF',
'-DBUILD_TOOLS=OFF',
'-DBUILD_TOOLS_DOCS=OFF',
'-DBUILD_API_DOCS=OFF',
];

#[BuildFor('Darwin')]
#[BuildFor('Linux')]
public function buildUnix(): void
{
UnixCMakeExecutor::create($this)->addConfigureArgs('-DBUILD_STATIC_LIBS=ON')->build();
UnixCMakeExecutor::create($this)
->addConfigureArgs('-DBUILD_STATIC_LIBS=ON', ...self::DISABLE_ARGS)
->build();
}

#[BuildFor('Windows')]
public function buildWin(): void
{
WindowsCMakeExecutor::create($this)->build();
WindowsCMakeExecutor::create($this)
->addConfigureArgs(...self::DISABLE_ARGS)
->build();
rename("{$this->getLibDir()}\\librabbitmq.4.lib", "{$this->getLibDir()}\\rabbitmq.4.lib");
}
}
3 changes: 3 additions & 0 deletions src/Package/Library/libtiff.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ public function buildUnix(LibraryPackage $lib): void
'--disable-libdeflate',
'--disable-tools',
'--disable-contrib',
'--disable-tests',
'--disable-docs',
'--disable-sphinx',
'--disable-cxx',
'--without-x',
)
Expand Down
10 changes: 8 additions & 2 deletions src/Package/Library/libuv.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,18 @@
#[Library('libuv')]
class libuv
{
private const array DISABLE_ARGS = [
'-DLIBUV_BUILD_SHARED=OFF',
'-DLIBUV_BUILD_TESTS=OFF',
'-DLIBUV_BUILD_BENCH=OFF',
];

#[BuildFor('Darwin')]
#[BuildFor('Linux')]
public function buildUnix(LibraryPackage $lib): void
{
UnixCMakeExecutor::create($lib)
->addConfigureArgs('-DLIBUV_BUILD_SHARED=OFF')
->addConfigureArgs(...self::DISABLE_ARGS)
->build();
// patch pkgconfig
$lib->patchPkgconfPrefix(['libuv-static.pc']);
Expand All @@ -28,7 +34,7 @@ public function buildUnix(LibraryPackage $lib): void
public function buildWindows(LibraryPackage $lib): void
{
WindowsCMakeExecutor::create($lib)
->addConfigureArgs('-DLIBUV_BUILD_SHARED=OFF')
->addConfigureArgs(...self::DISABLE_ARGS)
->build();
}
}
1 change: 1 addition & 0 deletions src/Package/Library/libxslt.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public function buildUnix(LibraryPackage $lib, PackageInstaller $installer): voi
'--without-crypto',
'--without-debug',
'--without-debugger',
'--without-profiler',
"--with-libxml-prefix={$lib->getBuildRootPath()}",
);
if (getenv('SPC_LD_LIBRARY_PATH') && getenv('SPC_LIBRARY_PATH')) {
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/mimalloc.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public function buildUnix(LibraryPackage $lib): void
->addConfigureArgs(
'-DMI_BUILD_SHARED=OFF',
'-DMI_BUILD_OBJECT=OFF',
'-DMI_BUILD_TESTS=OFF',
'-DMI_INSTALL_TOPLEVEL=ON',
);
if (SystemTarget::getLibc() === 'musl') {
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/nghttp3.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public function buildWin(LibraryPackage $lib): void
'-DBUILD_SHARED_LIBS=OFF',
'-DENABLE_STATIC_CRT=ON',
'-DENABLE_LIB_ONLY=ON',
'-DBUILD_TESTING=OFF',
)
->build();
}
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/ngtcp2.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public function buildWin(LibraryPackage $lib): void
'-DENABLE_STATIC_CRT=ON',
'-DENABLE_LIB_ONLY=ON',
'-DENABLE_OPENSSL=OFF',
'-DBUILD_TESTING=OFF',
)
->build();
}
Expand Down
5 changes: 5 additions & 0 deletions src/Package/Library/qdbm.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ public function buildUnix(LibraryPackage $lib): void
{
$ac = UnixAutoconfExecutor::create($lib)->configure();
FileSystem::replaceFileRegex($lib->getSourceDir() . '/Makefile', '/MYLIBS = libqdbm.a.*/m', 'MYLIBS = libqdbm.a');
// Makefile pins -O3, replace with SPC_DEFAULT_CFLAGS
$extra = trim((string) getenv('SPC_DEFAULT_CFLAGS'));
if ($extra !== '') {
FileSystem::replaceFileRegex($lib->getSourceDir() . '/Makefile', '/^CFLAGS = .*$/m', "CFLAGS = -Wall {$extra}");
}
$ac->make(SystemTarget::getTargetOS() === 'Darwin' ? 'mac' : '');
$lib->patchPkgconfPrefix(['qdbm.pc']);
}
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/readline.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public function buildUnix(LibraryPackage $lib): void
->configure(
'--with-curses',
'--enable-multibyte=yes',
'--disable-install-examples',
)
->make();
$lib->patchPkgconfPrefix(['readline.pc']);
Expand Down
6 changes: 4 additions & 2 deletions src/Package/Library/tidy.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public function buildUnix(LibraryPackage $lib): void
->setBuildDir("{$lib->getSourceDir()}/build-dir")
->addConfigureArgs(
'-DSUPPORT_CONSOLE_APP=OFF',
'-DBUILD_SHARED_LIB=OFF'
'-DBUILD_SHARED_LIB=OFF',
'-DSUPPORT_LOCALIZATIONS=OFF',
);
if (version_compare(get_cmake_version(), '4.0.0', '>=')) {
$cmake->addConfigureArgs('-DCMAKE_POLICY_VERSION_MINIMUM=3.5');
Expand All @@ -38,7 +39,8 @@ public function buildWindows(LibraryPackage $lib): void
->setBuildDir("{$lib->getSourceDir()}/build-dir")
->addConfigureArgs(
'-DSUPPORT_CONSOLE_APP=OFF',
'-DBUILD_SHARED_LIB=OFF'
'-DBUILD_SHARED_LIB=OFF',
'-DSUPPORT_LOCALIZATIONS=OFF',
)->build();

// rename tidy_static.lib to tidy_a.lib
Expand Down
1 change: 1 addition & 0 deletions src/Package/Library/unixodbc.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public function buildUnix(): void
'--with-included-ltdl',
"--sysconfdir={$sysconf_selector}",
'--enable-gui=no',
'--enable-readline=no',
)
->make();
$this->patchPkgconfPrefix(['odbc.pc', 'odbccr.pc', 'odbcinst.pc']);
Expand Down
5 changes: 5 additions & 0 deletions src/Package/Library/xz.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ public function build(LibraryPackage $lib): void
->configure(
'--disable-scripts',
'--disable-doc',
'--disable-xz',
'--disable-xzdec',
'--disable-lzmadec',
'--disable-lzmainfo',
'--disable-lzma-links',
'--with-libiconv',
'--bindir=/tmp/xz', // xz binary will corrupt `tar` command, that's really strange.
)
Expand Down
17 changes: 9 additions & 8 deletions src/Package/Library/zstd.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,20 @@
#[Library('zstd')]
class zstd
{
private const array DISABLE_ARGS = [
'-DZSTD_BUILD_STATIC=ON',
'-DZSTD_BUILD_SHARED=OFF',
'-DZSTD_BUILD_PROGRAMS=OFF',
'-DZSTD_BUILD_TESTS=OFF',
];

#[BuildFor('Windows')]
public function buildWin(LibraryPackage $package): void
{
WindowsCMakeExecutor::create($package)
->setWorkingDir("{$package->getSourceDir()}/build/cmake")
->setBuildDir("{$package->getSourceDir()}/build/cmake/build")
->addConfigureArgs(
'-DZSTD_BUILD_STATIC=ON',
'-DZSTD_BUILD_SHARED=OFF',
)
->addConfigureArgs(...self::DISABLE_ARGS)
->build();
FileSystem::copy($package->getLibDir() . '\zstd_static.lib', $package->getLibDir() . '/zstd.lib');
FileSystem::copy($package->getLibDir() . '\zstd_static.lib', $package->getLibDir() . '/libzstd.lib');
Expand All @@ -35,10 +39,7 @@ public function build(LibraryPackage $lib): void
{
UnixCMakeExecutor::create($lib)
->setBuildDir("{$lib->getSourceDir()}/build/cmake/build")
->addConfigureArgs(
'-DZSTD_BUILD_STATIC=ON',
'-DZSTD_BUILD_SHARED=OFF',
)
->addConfigureArgs(...self::DISABLE_ARGS)
->build();

$lib->patchPkgconfPrefix(['libzstd.pc'], PKGCONF_PATCH_PREFIX);
Expand Down
5 changes: 5 additions & 0 deletions src/Package/Target/curl.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ public function buildWin(LibraryPackage $lib): void
'-DZSTD_LIBRARY=' . escapeshellarg($zstd_lib),
'-DBUILD_TESTING=OFF',
'-DBUILD_EXAMPLES=OFF',
'-DBUILD_LIBCURL_DOCS=OFF',
'-DENABLE_CURL_MANUAL=OFF',
'-DUSE_LIBIDN2=OFF',
'-DCURL_USE_LIBPSL=OFF',
'-DUSE_WINDOWS_SSPI=ON',
Expand Down Expand Up @@ -85,6 +87,9 @@ public function build(LibraryPackage $lib): void
->addConfigureArgs(
'-DBUILD_CURL_EXE=ON',
'-DBUILD_LIBCURL_DOCS=OFF',
'-DBUILD_TESTING=OFF',
'-DBUILD_EXAMPLES=OFF',
'-DENABLE_CURL_MANUAL=OFF',
'-DOPENSSL_ROOT_DIR=' . BUILD_ROOT_PATH,
)
->build();
Expand Down
Loading