diff --git a/src/Package/Extension/uv.php b/src/Package/Extension/uv.php index ddc38353a..1d44c2098 100644 --- a/src/Package/Extension/uv.php +++ b/src/Package/Extension/uv.php @@ -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);', + ]), ); } diff --git a/src/Package/Library/brotli.php b/src/Package/Library/brotli.php index cab05112b..7a56afe78 100644 --- a/src/Package/Library/brotli.php +++ b/src/Package/Library/brotli.php @@ -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 diff --git a/src/Package/Library/gmp.php b/src/Package/Library/gmp.php index f8eb5f8e4..31a1b220b 100644 --- a/src/Package/Library/gmp.php +++ b/src/Package/Library/gmp.php @@ -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 @@ -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']); } } diff --git a/src/Package/Library/imagemagick.php b/src/Package/Library/imagemagick.php index 649894349..21ba687b6 100644 --- a/src/Package/Library/imagemagick.php +++ b/src/Package/Library/imagemagick.php @@ -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` diff --git a/src/Package/Library/ldap.php b/src/Package/Library/ldap.php index 21e7f8c04..bbaf06b47 100644 --- a/src/Package/Library/ldap.php +++ b/src/Package/Library/ldap.php @@ -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' diff --git a/src/Package/Library/libavif.php b/src/Package/Library/libavif.php index b8321375e..ef86386d3 100644 --- a/src/Package/Library/libavif.php +++ b/src/Package/Library/libavif.php @@ -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']); @@ -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(); } diff --git a/src/Package/Library/libffi.php b/src/Package/Library/libffi.php index e40127fb3..f24827474 100644 --- a/src/Package/Library/libffi.php +++ b/src/Package/Library/libffi.php @@ -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"); @@ -34,6 +34,7 @@ public function buildDarwin(): void ->configure( "--host={$arch}-apple-darwin", "--target={$arch}-apple-darwin", + '--disable-docs', ) ->make(); $this->patchPkgconfPrefix(['libffi.pc']); diff --git a/src/Package/Library/libheif.php b/src/Package/Library/libheif.php index 19ad4c619..935817f78 100644 --- a/src/Package/Library/libheif.php +++ b/src/Package/Library/libheif.php @@ -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', ) diff --git a/src/Package/Library/libjxl.php b/src/Package/Library/libjxl.php index 74b87907d..668f2bb95 100644 --- a/src/Package/Library/libjxl.php +++ b/src/Package/Library/libjxl.php @@ -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', diff --git a/src/Package/Library/libmemcached.php b/src/Package/Library/libmemcached.php index ea632192a..7744f3f0c 100644 --- a/src/Package/Library/libmemcached.php +++ b/src/Package/Library/libmemcached.php @@ -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(); } } diff --git a/src/Package/Library/libpng.php b/src/Package/Library/libpng.php index 6a1690105..8613c2dbe 100644 --- a/src/Package/Library/libpng.php +++ b/src/Package/Library/libpng.php @@ -20,6 +20,8 @@ public function buildUnix(LibraryPackage $lib): void { $args = [ '--enable-hardware-optimizations', + '--disable-tests', + '--disable-tools', "--with-zlib-prefix={$lib->getBuildRootPath()}", ]; diff --git a/src/Package/Library/librabbitmq.php b/src/Package/Library/librabbitmq.php index 03eda2a74..990c70237 100644 --- a/src/Package/Library/librabbitmq.php +++ b/src/Package/Library/librabbitmq.php @@ -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"); } } diff --git a/src/Package/Library/libtiff.php b/src/Package/Library/libtiff.php index 385ff3ca4..1626db3c2 100644 --- a/src/Package/Library/libtiff.php +++ b/src/Package/Library/libtiff.php @@ -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', ) diff --git a/src/Package/Library/libuv.php b/src/Package/Library/libuv.php index c27b499c9..95fbae405 100644 --- a/src/Package/Library/libuv.php +++ b/src/Package/Library/libuv.php @@ -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']); @@ -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(); } } diff --git a/src/Package/Library/libxslt.php b/src/Package/Library/libxslt.php index 7513d1468..35118c775 100644 --- a/src/Package/Library/libxslt.php +++ b/src/Package/Library/libxslt.php @@ -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')) { diff --git a/src/Package/Library/mimalloc.php b/src/Package/Library/mimalloc.php index fd7a73513..241e08aa0 100644 --- a/src/Package/Library/mimalloc.php +++ b/src/Package/Library/mimalloc.php @@ -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') { diff --git a/src/Package/Library/nghttp3.php b/src/Package/Library/nghttp3.php index 4659c5711..f20fbc94e 100644 --- a/src/Package/Library/nghttp3.php +++ b/src/Package/Library/nghttp3.php @@ -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(); } diff --git a/src/Package/Library/ngtcp2.php b/src/Package/Library/ngtcp2.php index 0a5ca8f5a..e392431fe 100644 --- a/src/Package/Library/ngtcp2.php +++ b/src/Package/Library/ngtcp2.php @@ -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(); } diff --git a/src/Package/Library/qdbm.php b/src/Package/Library/qdbm.php index 358846fb6..c7785683a 100644 --- a/src/Package/Library/qdbm.php +++ b/src/Package/Library/qdbm.php @@ -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']); } diff --git a/src/Package/Library/readline.php b/src/Package/Library/readline.php index a32334723..6213c37fa 100644 --- a/src/Package/Library/readline.php +++ b/src/Package/Library/readline.php @@ -20,6 +20,7 @@ public function buildUnix(LibraryPackage $lib): void ->configure( '--with-curses', '--enable-multibyte=yes', + '--disable-install-examples', ) ->make(); $lib->patchPkgconfPrefix(['readline.pc']); diff --git a/src/Package/Library/tidy.php b/src/Package/Library/tidy.php index 5e16b2d18..1f40c535d 100644 --- a/src/Package/Library/tidy.php +++ b/src/Package/Library/tidy.php @@ -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'); @@ -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 diff --git a/src/Package/Library/unixodbc.php b/src/Package/Library/unixodbc.php index 78debadf6..fa079b867 100644 --- a/src/Package/Library/unixodbc.php +++ b/src/Package/Library/unixodbc.php @@ -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']); diff --git a/src/Package/Library/xz.php b/src/Package/Library/xz.php index 44a20090f..4671c77d9 100644 --- a/src/Package/Library/xz.php +++ b/src/Package/Library/xz.php @@ -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. ) diff --git a/src/Package/Library/zstd.php b/src/Package/Library/zstd.php index a5df737e5..a038e6a68 100644 --- a/src/Package/Library/zstd.php +++ b/src/Package/Library/zstd.php @@ -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'); @@ -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); diff --git a/src/Package/Target/curl.php b/src/Package/Target/curl.php index 4d7747221..66c62490d 100644 --- a/src/Package/Target/curl.php +++ b/src/Package/Target/curl.php @@ -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', @@ -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();