Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
12 changes: 12 additions & 0 deletions src/Package/Library/qdbm.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,18 @@ 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 = $1 {$extra}");
}
if (SystemTarget::getTargetOS() === 'Darwin') {
FileSystem::replaceFileRegex(
"{$lib->getSourceDir()}/Makefile",
'/^(\tmake MYLIBS="\$\(MYMACLIBS\)" CFLAGS=")[^"]*(")$/m',
"$1-Wall -fsigned-char -fno-common -O2 {$extra}$2"
);
}
$ac->make(SystemTarget::getTargetOS() === 'Darwin' ? 'mac' : '');

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS may need different patch position:

FileSystem::replaceFileRegex(
    $path . '/Makefile',
    '/^(\tmake MYLIBS="\$\(MYMACLIBS\)" CFLAGS=")[^"]*(")$/m',
    "$1-Wall -fsigned-char -fno-common -O2 {$extra}$2"
);

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could you commit that yourself? I can't test it :(

$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