diff --git a/src/SPC/builder/BuilderBase.php b/src/SPC/builder/BuilderBase.php index 54f23ec6..6eebbe7d 100644 --- a/src/SPC/builder/BuilderBase.php +++ b/src/SPC/builder/BuilderBase.php @@ -202,6 +202,16 @@ abstract class BuilderBase return $this->libs_only; } + /** + * 获取当前即将编译的 PHP 的版本 ID,五位数那个 + */ + public function getPHPVersionID(): int + { + $file = file_get_contents(SOURCE_PATH . '/php-src/main/php_version.h'); + preg_match('/PHP_VERSION_ID (\d+)/', $file, $match); + return intval($match[1]); + } + /** * 检查是否存在 lib 库对应的源码,如果不存在,则抛出异常 * diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index b1e898cb..2da8f960 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -174,6 +174,7 @@ class LinuxBuilder extends BuilderBase '--disable-all ' . '--disable-cgi ' . '--disable-phpdbg ' . + '--with-ffi ' . '--enable-cli ' . '--enable-micro=all-static ' . ($this->zts ? '--enable-zts' : '') . ' ' . @@ -248,6 +249,9 @@ class LinuxBuilder extends BuilderBase */ public function buildMicro(string $extra_libs, string $use_lld, string $cflags): void { + if ($this->getPHPVersionID() < 80000) { + throw new RuntimeException('phpmicro only support PHP >= 8.0!'); + } if ($this->getExt('phar')) { $this->phar_patched = true; try { diff --git a/src/SPC/builder/macos/MacOSBuilder.php b/src/SPC/builder/macos/MacOSBuilder.php index b749c038..6a9db521 100644 --- a/src/SPC/builder/macos/MacOSBuilder.php +++ b/src/SPC/builder/macos/MacOSBuilder.php @@ -224,52 +224,31 @@ class MacOSBuilder extends BuilderBase $this->phar_patched = true; try { // TODO: 未来改进一下 patch,让除了这种 patch 类型的文件以外可以恢复原文件 - f_passthru('cd ' . SOURCE_PATH . '/php-src && patch -p1 < sapi/micro/patches/phar.patch'); + shell()->cd(SOURCE_PATH . '/php-src')->exec('patch -p1 < sapi/micro/patches/phar.patch'); } catch (RuntimeException $e) { logger()->error('failed to patch phat due to patch exit with code ' . $e->getCode()); $this->phar_patched = false; } } - f_passthru( - $this->set_x . ' && ' . - 'cd ' . SOURCE_PATH . '/php-src && ' . - "make -j{$this->concurrency} " . - 'EXTRA_CFLAGS="-g -Os -fno-ident" ' . - "EXTRA_LIBS=\"{$extra_libs} -lresolv\" " . - 'STRIP="dsymutil -f " ' . - // TODO: comment things - 'micro' - ); + shell()->cd(SOURCE_PATH . '/php-src') + ->exec("make -j{$this->concurrency} EXTRA_CFLAGS=\"-g -Os -fno-ident\" EXTRA_LIBS=\"{$extra_libs} -lresolv\" STRIP=\"dsymutil -f \" micro"); + $this->deployBinary(BUILD_TYPE_MICRO); } /** * 构建 cli * * @throws RuntimeException + * @throws FileSystemException */ public function buildCli(string $extra_libs): void { - f_passthru( - $this->set_x . ' && ' . - 'cd ' . SOURCE_PATH . '/php-src && ' . - "make -j{$this->concurrency} " . - 'EXTRA_CFLAGS="-g -Os -fno-ident" ' . // 生成调试信息、优化编译后的尺寸、禁用标识符(如变量、函数名)缩短 - "EXTRA_LIBS=\"{$extra_libs} -lresolv\" " . - // TODO: comment things - 'cli &&' . - 'dsymutil -f sapi/cli/php &&' . - 'strip sapi/cli/php' - ); - } - - /** - * 获取当前即将编译的 PHP 的版本 ID,五位数那个 - */ - public function getPHPVersionID(): int - { - $file = file_get_contents(SOURCE_PATH . '/php-src/main/php_version.h'); - preg_match('/PHP_VERSION_ID (\d+)/', $file, $match); - return intval($match[1]); + shell()->cd(SOURCE_PATH . '/php-src') + // 生成调试信息、优化编译后的尺寸、禁用标识符(如变量、函数名)缩短 + ->exec("make -j{$this->concurrency} EXTRA_CFLAGS=\"-g -Os -fno-ident\" EXTRA_LIBS=\"{$extra_libs} -lresolv\" cli") + ->exec('dsymutil -f sapi/cli/php') + ->exec('strip sapi/cli/php'); + $this->deployBinary(BUILD_TYPE_CLI); } } diff --git a/src/SPC/builder/macos/library/MacOSLibraryBase.php b/src/SPC/builder/macos/library/MacOSLibraryBase.php index 0478e10a..3401e168 100644 --- a/src/SPC/builder/macos/library/MacOSLibraryBase.php +++ b/src/SPC/builder/macos/library/MacOSLibraryBase.php @@ -14,15 +14,8 @@ abstract class MacOSLibraryBase extends LibraryBase { use UnixLibraryTrait; - protected array $static_libs; - protected array $headers; - /** - * 依赖的名字及是否可选,例如:curl => true,代表依赖 curl 但可选 - */ - protected array $dep_names; - public function __construct(protected MacOSBuilder $builder) { parent::__construct(); diff --git a/src/SPC/builder/macos/library/brotli.php b/src/SPC/builder/macos/library/brotli.php index a4c29e32..1ff7efeb 100644 --- a/src/SPC/builder/macos/library/brotli.php +++ b/src/SPC/builder/macos/library/brotli.php @@ -27,23 +27,21 @@ class brotli extends MacOSLibraryBase protected function build() { [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - "{$this->builder->set_x} && " . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DBUILD_SHARED_LIBS=OFF ' . - '-DCMAKE_INSTALL_PREFIX=/ ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "cmake --build . -j {$this->builder->concurrency} && " . - 'make install DESTDIR="' . $destdir . '"' - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} cmake " . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DCMAKE_INSTALL_PREFIX=/ ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("cmake --build . -j {$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/bzip2.php b/src/SPC/builder/macos/library/bzip2.php index 2c48caf6..824cc6df 100644 --- a/src/SPC/builder/macos/library/bzip2.php +++ b/src/SPC/builder/macos/library/bzip2.php @@ -26,14 +26,10 @@ class bzip2 extends MacOSLibraryBase protected function build() { - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "make {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' clean" . ' && ' . - "make -j{$this->builder->concurrency} {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' libbz2.a" . ' && ' . - // make install may fail when cross-compiling, so we copy files. - 'cp libbz2.a ' . BUILD_LIB_PATH . ' && ' . - 'cp bzlib.h ' . BUILD_INCLUDE_PATH - ); + shell()->cd($this->source_dir) + ->exec("make {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' clean") + ->exec("make -j{$this->builder->concurrency} {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' libbz2.a") + ->exec('cp libbz2.a ' . BUILD_LIB_PATH) + ->exec('cp bzlib.h ' . BUILD_INCLUDE_PATH); } } diff --git a/src/SPC/builder/macos/library/curl.php b/src/SPC/builder/macos/library/curl.php index 4cbb1fcd..45ec30e4 100644 --- a/src/SPC/builder/macos/library/curl.php +++ b/src/SPC/builder/macos/library/curl.php @@ -95,24 +95,22 @@ class curl extends MacOSLibraryBase [$lib, $include, $destdir] = SEPARATED_PATH; // compile! - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DBUILD_SHARED_LIBS=OFF ' . - $extra . - '-DCMAKE_INSTALL_PREFIX= ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR="' . $destdir . '"' - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} cmake " . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DBUILD_SHARED_LIBS=OFF ' . + $extra . + '-DCMAKE_INSTALL_PREFIX= ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/freetype.php b/src/SPC/builder/macos/library/freetype.php index 49cfb7b9..45da3140 100644 --- a/src/SPC/builder/macos/library/freetype.php +++ b/src/SPC/builder/macos/library/freetype.php @@ -23,16 +23,14 @@ class freetype extends MacOSLibraryBase $suggested .= ($this->builder->getLib('brotli') instanceof MacOSLibraryBase) ? ('--with-brotli=' . BUILD_ROOT_PATH) : '--without-brotli'; $suggested .= ' '; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--enable-static --disable-shared --without-harfbuzz ' . - $suggested . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./configure " . + '--enable-static --disable-shared --without-harfbuzz --prefix= ' . + $suggested + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/gmp.php b/src/SPC/builder/macos/library/gmp.php index e8fde67d..edef5560 100644 --- a/src/SPC/builder/macos/library/gmp.php +++ b/src/SPC/builder/macos/library/gmp.php @@ -15,15 +15,14 @@ class gmp extends MacOSLibraryBase { [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--enable-static --disable-shared ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./configure " . + '--enable-static --disable-shared ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libffi.php b/src/SPC/builder/macos/library/libffi.php index 1944a578..9fbabfb5 100644 --- a/src/SPC/builder/macos/library/libffi.php +++ b/src/SPC/builder/macos/library/libffi.php @@ -26,20 +26,19 @@ class libffi extends MacOSLibraryBase protected function build() { - [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--enable-static ' . - '--disable-shared ' . - "--host={$this->builder->arch}-apple-darwin " . - "--target={$this->builder->arch}-apple-darwin " . - '--prefix= ' . // use prefix=/ - "--libdir={$lib} && " . - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - "make install DESTDIR={$destdir}" - ); + [$lib, , $destdir] = SEPARATED_PATH; + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./configure " . + '--enable-static ' . + '--disable-shared ' . + "--host={$this->builder->arch}-apple-darwin " . + "--target={$this->builder->arch}-apple-darwin " . + '--prefix= ' . // use prefix=/ + "--libdir={$lib}" + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libpng.php b/src/SPC/builder/macos/library/libpng.php index 6610a885..4ffb44be 100644 --- a/src/SPC/builder/macos/library/libpng.php +++ b/src/SPC/builder/macos/library/libpng.php @@ -43,23 +43,20 @@ class libpng extends MacOSLibraryBase // patch configure Patcher::patchUnixLibpng(); - - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} " . - './configure ' . - "--host={$this->builder->gnu_arch}-apple-darwin " . - '--disable-shared ' . - '--enable-static ' . - '--enable-hardware-optimizations ' . - $optimizations . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} DEFAULT_INCLUDES='-I. -I" . BUILD_INCLUDE_PATH . "' LIBS= libpng16.la && " . - 'make install-libLTLIBRARIES install-data-am DESTDIR=' . BUILD_ROOT_PATH . ' && ' . - 'cd ' . BUILD_LIB_PATH . ' && ' . - 'ln -sf libpng16.a libpng.a' - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./configure " . + "--host={$this->builder->gnu_arch}-apple-darwin " . + '--disable-shared ' . + '--enable-static ' . + '--enable-hardware-optimizations ' . + $optimizations . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency} DEFAULT_INCLUDES='-I. -I" . BUILD_INCLUDE_PATH . "' LIBS= libpng16.la") + ->exec('make install-libLTLIBRARIES install-data-am DESTDIR=' . BUILD_ROOT_PATH) + ->cd(BUILD_LIB_PATH) + ->exec('ln -sf libpng16.a libpng.a'); } } diff --git a/src/SPC/builder/macos/library/libssh2.php b/src/SPC/builder/macos/library/libssh2.php index d4a5e43c..e129a6e6 100644 --- a/src/SPC/builder/macos/library/libssh2.php +++ b/src/SPC/builder/macos/library/libssh2.php @@ -31,26 +31,24 @@ class libssh2 extends MacOSLibraryBase [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DBUILD_SHARED_LIBS=OFF ' . - '-DBUILD_EXAMPLES=OFF ' . - '-DBUILD_TESTING=OFF ' . - "-DENABLE_ZLIB_COMPRESSION={$enable_zlib} " . - '-DCMAKE_INSTALL_PREFIX=/ ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "cmake --build . -j {$this->builder->concurrency} --target libssh2 && " . - 'make install DESTDIR="' . $destdir . '"' - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} " . ' cmake ' . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DBUILD_EXAMPLES=OFF ' . + '-DBUILD_TESTING=OFF ' . + "-DENABLE_ZLIB_COMPRESSION={$enable_zlib} " . + '-DCMAKE_INSTALL_PREFIX=/ ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("cmake --build . -j {$this->builder->concurrency} --target libssh2") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libuv.php b/src/SPC/builder/macos/library/libuv.php index 21adbb57..e267698d 100644 --- a/src/SPC/builder/macos/library/libuv.php +++ b/src/SPC/builder/macos/library/libuv.php @@ -15,15 +15,14 @@ class libuv extends MacOSLibraryBase { [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--enable-static --disable-shared ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./configure " . + '--enable-static --disable-shared ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libxml2.php b/src/SPC/builder/macos/library/libxml2.php index 4d2cd7e2..43c48ae0 100644 --- a/src/SPC/builder/macos/library/libxml2.php +++ b/src/SPC/builder/macos/library/libxml2.php @@ -37,30 +37,29 @@ class libxml2 extends MacOSLibraryBase [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DBUILD_SHARED_LIBS=OFF ' . - '-DLIBXML2_WITH_ICONV=ON ' . - "-DLIBXML2_WITH_ZLIB={$enable_zlib} " . - "-DLIBXML2_WITH_ICU={$enable_icu} " . - "-DLIBXML2_WITH_LZMA={$enable_xz} " . - '-DLIBXML2_WITH_PYTHON=OFF ' . - '-DLIBXML2_WITH_PROGRAMS=OFF ' . - '-DLIBXML2_WITH_TESTS=OFF ' . - '-DCMAKE_INSTALL_PREFIX=/ ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "cmake --build . -j {$this->builder->concurrency} && " . - 'make install DESTDIR="' . $destdir . '"' - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} " . ' cmake ' . + // '--debug-find ' . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DLIBXML2_WITH_ICONV=ON ' . + "-DLIBXML2_WITH_ZLIB={$enable_zlib} " . + "-DLIBXML2_WITH_ICU={$enable_icu} " . + "-DLIBXML2_WITH_LZMA={$enable_xz} " . + '-DLIBXML2_WITH_PYTHON=OFF ' . + '-DLIBXML2_WITH_PROGRAMS=OFF ' . + '-DLIBXML2_WITH_TESTS=OFF ' . + '-DCMAKE_INSTALL_PREFIX=/ ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("cmake --build . -j {$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libyaml.php b/src/SPC/builder/macos/library/libyaml.php index c8095fc9..79eff2f6 100644 --- a/src/SPC/builder/macos/library/libyaml.php +++ b/src/SPC/builder/macos/library/libyaml.php @@ -72,24 +72,23 @@ EOF [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DBUILD_TESTING=OFF ' . - '-DBUILD_SHARED_LIBS=OFF ' . - '-DCMAKE_INSTALL_PREFIX=/ ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} " . ' cmake ' . + // '--debug-find ' . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DBUILD_TESTING=OFF ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DCMAKE_INSTALL_PREFIX=/ ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/libzip.php b/src/SPC/builder/macos/library/libzip.php index ce8683ee..0951d9e5 100644 --- a/src/SPC/builder/macos/library/libzip.php +++ b/src/SPC/builder/macos/library/libzip.php @@ -72,30 +72,29 @@ class libzip extends MacOSLibraryBase [$lib, $include, $destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'rm -rf build && ' . - 'mkdir -p build && ' . - 'cd build && ' . - "{$this->builder->configure_env} " . ' cmake ' . - // '--debug-find ' . - '-DCMAKE_BUILD_TYPE=Release ' . - '-DENABLE_GNUTLS=OFF ' . - '-DENABLE_MBEDTLS=OFF ' . - '-DBUILD_SHARED_LIBS=OFF ' . - '-DBUILD_DOC=OFF ' . - '-DBUILD_EXAMPLES=OFF ' . - '-DBUILD_REGRESS=OFF ' . - '-DBUILD_TOOLS=OFF ' . - $extra . - '-DCMAKE_INSTALL_PREFIX=/ ' . - "-DCMAKE_INSTALL_LIBDIR={$lib} " . - "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . - "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . - '.. && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec('rm -rf build') + ->exec('mkdir -p build') + ->cd($this->source_dir . '/build') + ->exec( + "{$this->builder->configure_env} " . ' cmake ' . + // '--debug-find ' . + '-DCMAKE_BUILD_TYPE=Release ' . + '-DENABLE_GNUTLS=OFF ' . + '-DENABLE_MBEDTLS=OFF ' . + '-DBUILD_SHARED_LIBS=OFF ' . + '-DBUILD_DOC=OFF ' . + '-DBUILD_EXAMPLES=OFF ' . + '-DBUILD_REGRESS=OFF ' . + '-DBUILD_TOOLS=OFF ' . + $extra . + '-DCMAKE_INSTALL_PREFIX=/ ' . + "-DCMAKE_INSTALL_LIBDIR={$lib} " . + "-DCMAKE_INSTALL_INCLUDEDIR={$include} " . + "-DCMAKE_TOOLCHAIN_FILE={$this->builder->cmake_toolchain_file} " . + '..' + ) + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/nghttp2.php b/src/SPC/builder/macos/library/nghttp2.php index ab5ab13c..c9d2f04d 100644 --- a/src/SPC/builder/macos/library/nghttp2.php +++ b/src/SPC/builder/macos/library/nghttp2.php @@ -44,20 +44,19 @@ class nghttp2 extends MacOSLibraryBase [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} " . ' ./configure ' . - '--enable-static ' . - '--disable-shared ' . - "--host={$this->builder->gnu_arch}-apple-darwin " . - '--enable-lib-only ' . - '--with-boost=no ' . - $args . ' ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - "make install DESTDIR={$destdir}" - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} " . ' ./configure ' . + '--enable-static ' . + '--disable-shared ' . + "--host={$this->builder->gnu_arch}-apple-darwin " . + '--enable-lib-only ' . + '--with-boost=no ' . + $args . ' ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/onig.php b/src/SPC/builder/macos/library/onig.php index 74e4fb0c..47111351 100644 --- a/src/SPC/builder/macos/library/onig.php +++ b/src/SPC/builder/macos/library/onig.php @@ -28,17 +28,16 @@ class onig extends MacOSLibraryBase { [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} " . ' ./configure ' . - '--enable-static ' . - '--disable-shared ' . - "--host={$this->builder->arch}-apple-darwin " . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} " . ' ./configure ' . + '--enable-static ' . + '--disable-shared ' . + "--host={$this->builder->arch}-apple-darwin " . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/openssl.php b/src/SPC/builder/macos/library/openssl.php index 4d198c41..07f71d49 100644 --- a/src/SPC/builder/macos/library/openssl.php +++ b/src/SPC/builder/macos/library/openssl.php @@ -37,16 +37,15 @@ class openssl extends MacOSLibraryBase $ex_lib = trim($zlib->getStaticLibFiles() . ' ' . $ex_lib); } - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./Configure no-shared {$extra} " . - '--prefix=/ ' . // use prefix=/ - "--libdir={$lib} " . - " darwin64-{$this->builder->arch}-cc && " . - 'make clean && ' . - "make -j{$this->builder->concurrency} CNF_EX_LIBS=\"{$ex_lib}\" && " . - 'make install_sw DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec( + "{$this->builder->configure_env} ./Configure no-shared {$extra} " . + '--prefix=/ ' . // use prefix=/ + "--libdir={$lib} " . + " darwin64-{$this->builder->arch}-cc" + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency} CNF_EX_LIBS=\"{$ex_lib}\"") + ->exec("make install_sw DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/sqlite.php b/src/SPC/builder/macos/library/sqlite.php index 03f96b57..9c3e023e 100644 --- a/src/SPC/builder/macos/library/sqlite.php +++ b/src/SPC/builder/macos/library/sqlite.php @@ -11,16 +11,10 @@ class sqlite extends MacOSLibraryBase protected function build() { [,,$destdir] = SEPARATED_PATH; - - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--enable-static --disable-shared ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec("{$this->builder->configure_env} ./configure --enable-static --disable-shared --prefix=") + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/xz.php b/src/SPC/builder/macos/library/xz.php index c5dfa09a..7f9abda3 100644 --- a/src/SPC/builder/macos/library/xz.php +++ b/src/SPC/builder/macos/library/xz.php @@ -28,25 +28,24 @@ class xz extends MacOSLibraryBase { [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - 'autoreconf -i --force && ' . - "{$this->builder->configure_env} ./configure " . - '--enable-static ' . - '--disable-shared ' . - "--host={$this->builder->gnu_arch}-apple-darwin " . - '--disable-xz ' . - '--disable-xzdec ' . - '--disable-lzmadec ' . - '--disable-lzmainfo ' . - '--disable-scripts ' . - '--disable-doc ' . - '--with-libiconv ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec('autoreconf -i --force') + ->exec( + "{$this->builder->configure_env} ./configure " . + '--enable-static ' . + '--disable-shared ' . + "--host={$this->builder->gnu_arch}-apple-darwin " . + '--disable-xz ' . + '--disable-xzdec ' . + '--disable-lzmadec ' . + '--disable-lzmainfo ' . + '--disable-scripts ' . + '--disable-doc ' . + '--with-libiconv ' . + '--prefix=' + ) + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/zlib.php b/src/SPC/builder/macos/library/zlib.php index b4200c89..11dab8eb 100644 --- a/src/SPC/builder/macos/library/zlib.php +++ b/src/SPC/builder/macos/library/zlib.php @@ -28,15 +28,10 @@ class zlib extends MacOSLibraryBase { [,,$destdir] = SEPARATED_PATH; - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "{$this->builder->configure_env} ./configure " . - '--static ' . - '--prefix= && ' . // use prefix=/ - 'make clean && ' . - "make -j{$this->builder->concurrency} && " . - 'make install DESTDIR=' . $destdir - ); + shell()->cd($this->source_dir) + ->exec("{$this->builder->configure_env} ./configure --static --prefix=") + ->exec('make clean') + ->exec("make -j{$this->builder->concurrency}") + ->exec("make install DESTDIR={$destdir}"); } } diff --git a/src/SPC/builder/macos/library/zstd.php b/src/SPC/builder/macos/library/zstd.php index 0a44408f..f645a8f8 100644 --- a/src/SPC/builder/macos/library/zstd.php +++ b/src/SPC/builder/macos/library/zstd.php @@ -26,16 +26,15 @@ class zstd extends MacOSLibraryBase protected function build() { - f_passthru( - $this->builder->set_x . ' && ' . - "cd {$this->source_dir} && " . - "make {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' clean" . ' && ' . - "make -j{$this->builder->concurrency} " . - "{$this->builder->configure_env} " . - "PREFIX='" . BUILD_ROOT_PATH . "' " . - '-C lib libzstd.a CPPFLAGS_STATLIB=-DZSTD_MULTITHREAD && ' . - 'cp lib/libzstd.a ' . BUILD_LIB_PATH . ' && ' . - 'cp lib/zdict.h lib/zstd_errors.h lib/zstd.h ' . BUILD_INCLUDE_PATH - ); + shell()->cd($this->source_dir) + ->exec("make {$this->builder->configure_env} PREFIX='" . BUILD_ROOT_PATH . "' clean") + ->exec( + "make -j{$this->builder->concurrency} " . + "{$this->builder->configure_env} " . + "PREFIX='" . BUILD_ROOT_PATH . "' " . + '-C lib libzstd.a CPPFLAGS_STATLIB=-DZSTD_MULTITHREAD' + ) + ->exec('cp lib/libzstd.a ' . BUILD_LIB_PATH) + ->exec('cp lib/zdict.h lib/zstd_errors.h lib/zstd.h ' . BUILD_INCLUDE_PATH); } }