From 29a8c9c1968e26d90a093ace9dd2520872c67e9e Mon Sep 17 00:00:00 2001 From: henderkes Date: Sun, 24 May 2026 21:28:31 +0700 Subject: [PATCH 1/2] libraries: honour SPC_DEFAULT_CFLAGS/CXXFLAGS/LDFLAGS and bug fixes bzip2, fastlz, jbig, qdbm: thread SPC_DEFAULT_CFLAGS into the hand-rolled Makefile patches and shell compile commands. Backward compatible when the env var is empty. icu: append SPC_DEFAULT_CXXFLAGS/LDFLAGS to runConfigureICU's CXXFLAGS and LDFLAGS so user flags reach the bundled cxx invocation. openssl: append user CFLAGS/LDFLAGS after the target name on Configure so options like -flto and -fprofile-* reach the openssl build. libheif: rewrite libheif 1.22+'s C-incompatible `struct heif_bad_pixel { uint32_t row; uint32_t column; };` as a typedef so C consumers compile. ncurses: filter the clang/zig-cc "N warning(s) generated." stdout line out of MKlib_gen.sh's preprocessor pipe before sed turns it into invalid C in lib_gen.c. libaom: detect target CPU from SystemTarget instead of hard-coding generic, fall back to generic only when neither nasm nor yasm is available, and turn off examples/tests/tools/docs. --- src/Package/Library/bzip2.php | 4 +++- src/Package/Library/fastlz.php | 4 +++- src/Package/Library/icu.php | 7 +++++-- src/Package/Library/jbig.php | 4 +++- src/Package/Library/libaom.php | 18 +++++++++++++++++- src/Package/Library/libheif.php | 11 +++++++++++ src/Package/Library/ncurses.php | 20 ++++++++++++++++++++ src/Package/Library/openssl.php | 9 ++++++++- src/Package/Library/qdbm.php | 5 +++++ 9 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/Package/Library/bzip2.php b/src/Package/Library/bzip2.php index 90fcce7c6..7f99c22b4 100644 --- a/src/Package/Library/bzip2.php +++ b/src/Package/Library/bzip2.php @@ -17,7 +17,9 @@ class bzip2 #[PatchBeforeBuild] public function patchBeforeBuild(LibraryPackage $lib): void { - FileSystem::replaceFileStr($lib->getSourceDir() . '/Makefile', 'CFLAGS=-Wall', 'CFLAGS=-fPIC -Wall'); + // Makefile pins -O2 -fPIC; inject SPC_DEFAULT_CFLAGS + $extra = deduplicate_flags(trim((string) getenv('SPC_DEFAULT_CFLAGS')) . ' -fPIC -Wall'); + FileSystem::replaceFileStr($lib->getSourceDir() . '/Makefile', 'CFLAGS=-Wall', "CFLAGS={$extra}"); } #[BuildFor('Windows')] diff --git a/src/Package/Library/fastlz.php b/src/Package/Library/fastlz.php index f9dd010dc..7c3792cd2 100644 --- a/src/Package/Library/fastlz.php +++ b/src/Package/Library/fastlz.php @@ -18,9 +18,11 @@ public function build(LibraryPackage $lib): void { $cc = getenv('CC') ?: 'cc'; $ar = getenv('AR') ?: 'ar'; + $extra = trim((string) getenv('SPC_DEFAULT_CFLAGS')); + $extra = $extra !== '' ? $extra . ' -fPIC' : '-O3 -fPIC'; shell()->cd($lib->getSourceDir())->initializeEnv($lib) - ->exec("{$cc} -c -O3 -fPIC fastlz.c -o fastlz.o") + ->exec("{$cc} -c {$extra} fastlz.c -o fastlz.o") ->exec("{$ar} rcs libfastlz.a fastlz.o"); // Copy header file diff --git a/src/Package/Library/icu.php b/src/Package/Library/icu.php index 7364e94ab..bab245081 100644 --- a/src/Package/Library/icu.php +++ b/src/Package/Library/icu.php @@ -24,9 +24,12 @@ public function beforePack(LibraryPackage $lib): void #[BuildFor('Linux')] public function buildLinux(LibraryPackage $lib, ToolchainInterface $toolchain, PackageBuilder $builder): void { + // runConfigureICU bakes CXXFLAGS/LDFLAGS, apply user flags too + $userCxxFlags = trim((string) getenv('SPC_DEFAULT_CXXFLAGS')); + $userLdFlags = trim((string) getenv('SPC_DEFAULT_LDFLAGS')); $cppflags = 'CPPFLAGS="-DU_CHARSET_IS_UTF8=1 -DU_USING_ICU_NAMESPACE=1 -DU_STATIC_IMPLEMENTATION=1 -DPIC -fPIC"'; - $cxxflags = 'CXXFLAGS="-std=c++17 -DPIC -fPIC -fno-ident"'; - $ldflags = $toolchain->isStatic() ? 'LDFLAGS="-static"' : ''; + $cxxflags = "CXXFLAGS=\"-std=c++17 -DPIC -fPIC -fno-ident {$userCxxFlags}\""; + $ldflags = $toolchain->isStatic() ? "LDFLAGS=\"-static {$userLdFlags}\"" : "LDFLAGS=\"{$userLdFlags}\""; shell()->cd($lib->getSourceDir() . '/source')->initializeEnv($lib) ->exec( "{$cppflags} {$cxxflags} {$ldflags} " . diff --git a/src/Package/Library/jbig.php b/src/Package/Library/jbig.php index 1cfe60b74..94527f457 100644 --- a/src/Package/Library/jbig.php +++ b/src/Package/Library/jbig.php @@ -17,7 +17,9 @@ 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'); + $extra = trim((string) getenv('SPC_DEFAULT_CFLAGS')); + $cflags = ($extra !== '' ? $extra : '-O2') . ' -W -Wno-unused-result -fPIC'; + FileSystem::replaceFileStr($lib->getSourceDir() . '/Makefile', 'CFLAGS = -O2 -W -Wno-unused-result', "CFLAGS = {$cflags}"); } #[BuildFor('Darwin')] diff --git a/src/Package/Library/libaom.php b/src/Package/Library/libaom.php index 7e578242b..7549125d5 100644 --- a/src/Package/Library/libaom.php +++ b/src/Package/Library/libaom.php @@ -9,8 +9,10 @@ use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixCMakeExecutor; use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; +use StaticPHP\Runtime\SystemTarget; use StaticPHP\Toolchain\Interface\ToolchainInterface; use StaticPHP\Toolchain\ZigToolchain; +use StaticPHP\Util\System\UnixUtil; #[Library('libaom')] class libaom extends LibraryPackage @@ -39,9 +41,23 @@ public function buildUnix(ToolchainInterface $toolchain): void $new = trim($extra . ' -D_GNU_SOURCE'); f_putenv("SPC_COMPILER_EXTRA={$new}"); } + $targetCpu = SystemTarget::getTargetArch(); + if (str_starts_with($targetCpu, 'aarch')) { + $targetCpu = str_replace('aarch', 'arm', $targetCpu); + } + if (!UnixUtil::findCommand('nasm') && !UnixUtil::findCommand('yasm')) { + $targetCpu = 'generic'; + } UnixCMakeExecutor::create($this) ->setBuildDir("{$this->getSourceDir()}/builddir") - ->addConfigureArgs('-DAOM_TARGET_CPU=generic') + ->addConfigureArgs( + "-DAOM_TARGET_CPU={$targetCpu}", + '-DCONFIG_RUNTIME_CPU_DETECT=1', + '-DENABLE_EXAMPLES=OFF', + '-DENABLE_TESTS=OFF', + '-DENABLE_TOOLS=OFF', + '-DENABLE_DOCS=OFF', + ) ->build(); f_putenv("SPC_COMPILER_EXTRA={$extra}"); $this->patchPkgconfPrefix(['aom.pc']); diff --git a/src/Package/Library/libheif.php b/src/Package/Library/libheif.php index 65545f365..19ad4c619 100644 --- a/src/Package/Library/libheif.php +++ b/src/Package/Library/libheif.php @@ -24,6 +24,17 @@ public function patchBeforeBuild(LibraryPackage $lib): void 'list(APPEND REQUIRES_PRIVATE "libbrotlidec")' . "\n" . ' list(APPEND REQUIRES_PRIVATE "libbrotlienc")' ); } + // libheif 1.22+ ships a C-incompatible header: `struct heif_bad_pixel` + $heif_properties = $lib->getSourceDir() . '/libheif/api/libheif/heif_properties.h'; + if (file_exists($heif_properties) + && str_contains(file_get_contents($heif_properties), 'struct heif_bad_pixel { uint32_t row; uint32_t column; };') + ) { + FileSystem::replaceFileStr( + $heif_properties, + 'struct heif_bad_pixel { uint32_t row; uint32_t column; };', + 'typedef struct heif_bad_pixel { uint32_t row; uint32_t column; } heif_bad_pixel;' + ); + } } #[BuildFor('Darwin')] diff --git a/src/Package/Library/ncurses.php b/src/Package/Library/ncurses.php index dd591a6f9..e27cefcd4 100644 --- a/src/Package/Library/ncurses.php +++ b/src/Package/Library/ncurses.php @@ -6,6 +6,8 @@ use StaticPHP\Attribute\Package\BuildFor; use StaticPHP\Attribute\Package\Library; +use StaticPHP\Attribute\Package\PatchBeforeBuild; +use StaticPHP\Attribute\PatchDescription; use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixAutoconfExecutor; use StaticPHP\Toolchain\Interface\ToolchainInterface; @@ -16,6 +18,24 @@ #[Library('ncursesw')] class ncurses { + #[PatchBeforeBuild] + #[PatchDescription('Filter clang/zig "N warning(s) generated." line out of MKlib_gen.sh preprocessor pipe')] + public function patchBeforeBuild(LibraryPackage $lib): void + { + // MKlib_gen.sh feeds the C preprocessor's stdout through a sed/awk + // pipeline into lib_gen.c. zig-cc/clang emits "N warning(s) generated." + // on stdout (not stderr), and that line ends up as invalid C in the + // generated source. Filter it out of the pipe before sed sees it. + $mklibGen = $lib->getSourceDir() . '/ncurses/base/MKlib_gen.sh'; + if (is_file($mklibGen) && !str_contains((string) file_get_contents($mklibGen), "| grep -v ' generated")) { + FileSystem::replaceFileStr( + $mklibGen, + '$preprocessor $TMP 2>/dev/null \\', + "\$preprocessor \$TMP 2>/dev/null \\\n| grep -v ' generated\\.\$' \\", + ); + } + } + #[BuildFor('Darwin')] #[BuildFor('Linux')] public function build(LibraryPackage $package, ToolchainInterface $toolchain): void diff --git a/src/Package/Library/openssl.php b/src/Package/Library/openssl.php index 69297198d..e0493ea5d 100644 --- a/src/Package/Library/openssl.php +++ b/src/Package/Library/openssl.php @@ -111,6 +111,12 @@ public function build(LibraryPackage $lib): void $openssl_dir ??= LinuxUtil::getOSRelease()['dist'] === 'redhat' ? '/etc/pki/tls' : '/etc/ssl'; $ex_lib = trim($ex_lib); + // anything we want included (PGO -fprofile-*, LTO, custom hardening) + // has to be appended on the command line *after* the target name. + $userCFlags = trim((string) getenv('SPC_DEFAULT_CFLAGS')); + $userLdFlags = trim((string) getenv('SPC_DEFAULT_LDFLAGS')); + $userExtra = trim($userCFlags . ' ' . $userLdFlags); + shell()->cd($lib->getSourceDir())->initializeEnv($lib) ->exec( "{$env} ./Configure no-shared zlib " . @@ -121,7 +127,8 @@ public function build(LibraryPackage $lib): void 'enable-pie ' . 'no-legacy ' . 'no-tests ' . - "linux-{$arch}" + "linux-{$arch} " . + $userExtra ) ->exec('make clean') ->exec("make -j{$lib->getBuilder()->concurrency} CNF_EX_LIBS=\"{$ex_lib}\"") 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']); } From 727600a73aab31569252e2fd6a8589162f8c912e Mon Sep 17 00:00:00 2001 From: henderkes Date: Tue, 26 May 2026 21:10:00 +0700 Subject: [PATCH 2/2] disable a whole lot of things we don't need to build --- src/Package/Library/brotli.php | 5 ++++- src/Package/Library/imagemagick.php | 3 +++ src/Package/Library/ldap.php | 1 + src/Package/Library/libavif.php | 9 +++++++-- src/Package/Library/libffi.php | 3 ++- src/Package/Library/libheif.php | 1 + src/Package/Library/libjxl.php | 1 + src/Package/Library/libmemcached.php | 12 ++++++++++-- src/Package/Library/libpng.php | 2 ++ src/Package/Library/librabbitmq.php | 16 ++++++++++++++-- src/Package/Library/libtiff.php | 3 +++ src/Package/Library/libuv.php | 10 ++++++++-- src/Package/Library/libxslt.php | 1 + src/Package/Library/mimalloc.php | 1 + src/Package/Library/nghttp3.php | 1 + src/Package/Library/ngtcp2.php | 1 + src/Package/Library/readline.php | 1 + src/Package/Library/tidy.php | 6 ++++-- src/Package/Library/unixodbc.php | 1 + src/Package/Library/xz.php | 5 +++++ src/Package/Library/zstd.php | 17 +++++++++-------- src/Package/Target/curl.php | 5 +++++ 22 files changed, 85 insertions(+), 20 deletions(-) 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/imagemagick.php b/src/Package/Library/imagemagick.php index d423163a2..7fd7ec61e 100644 --- a/src/Package/Library/imagemagick.php +++ b/src/Package/Library/imagemagick.php @@ -45,6 +45,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 351b9076c..74000ef56 100644 --- a/src/Package/Library/libffi.php +++ b/src/Package/Library/libffi.php @@ -16,7 +16,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"); @@ -33,6 +33,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/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 e482e68be..9048acf6a 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 3117a8cd1..358982549 100644 --- a/src/Package/Target/curl.php +++ b/src/Package/Target/curl.php @@ -43,6 +43,8 @@ public function buildWin(LibraryPackage $lib): void '-DZSTD_LIBRARY=zstd_static.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', @@ -81,6 +83,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();