diff --git a/src/SPC/builder/extension/imagick.php b/src/SPC/builder/extension/imagick.php index ef965d58..d7721a24 100644 --- a/src/SPC/builder/extension/imagick.php +++ b/src/SPC/builder/extension/imagick.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace SPC\builder\extension; use SPC\builder\Extension; +use SPC\builder\linux\LinuxBuilder; use SPC\util\CustomExt; #[CustomExt('imagick')] @@ -14,7 +15,9 @@ class imagick extends Extension { // imagick may call omp_pause_all which requires -lgomp $extra_libs = $this->builder->getOption('extra-libs', ''); - $extra_libs .= ' -lgomp '; + if ($this->builder instanceof LinuxBuilder) { + $extra_libs .= ' -lgomp '; + } $this->builder->setOption('extra-libs', $extra_libs); return true; } diff --git a/src/SPC/builder/extension/sodium.php b/src/SPC/builder/extension/sodium.php new file mode 100644 index 00000000..18059774 --- /dev/null +++ b/src/SPC/builder/extension/sodium.php @@ -0,0 +1,35 @@ +removeLineContainingString(); + } + + private function removeLineContainingString(): bool + { + $path = SOURCE_PATH . '/php-src/ext/sodium/config.m4'; + $search = '-Wno-logical-op'; + if (!file_exists($path)) { + return false; + } + $content = file_get_contents($path); + $lines = preg_split('/\r\n|\n/', $content); + $filteredLines = array_filter($lines, function ($line) use ($search) { + return strpos($line, $search) === false; + }); + $newContent = implode("\n", $filteredLines); + file_put_contents($path, $newContent); + return true; + } +} diff --git a/src/SPC/builder/unix/library/imagemagick.php b/src/SPC/builder/unix/library/imagemagick.php index bd4d0424..a75969ac 100644 --- a/src/SPC/builder/unix/library/imagemagick.php +++ b/src/SPC/builder/unix/library/imagemagick.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace SPC\builder\unix\library; use SPC\builder\linux\library\LinuxLibraryBase; +use SPC\builder\macos\library\MacOSLibraryBase; use SPC\exception\FileSystemException; use SPC\exception\RuntimeException; use SPC\store\FileSystem; @@ -39,8 +40,12 @@ trait imagemagick } $ldflags = $this instanceof LinuxLibraryBase ? ('LDFLAGS="-static" ') : ''; + + // libxml iconv patch + $required_libs .= $this instanceof MacOSLibraryBase ? (' -liconv') : ''; shell()->cd($this->source_dir) ->exec( + 'PKG_CONFIG="$PKG_CONFIG --static" ' . $ldflags . "LIBS='{$required_libs}' " . './configure ' . diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 075c1f8d..b1c96f55 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -3,6 +3,6 @@ declare(strict_types=1); # If you want to test new extensions here, just modify it. -$extensions = -'apcu,bcmath,calendar,ctype,curl,dba,dom,exif,filter,fileinfo,gd,iconv,intl,mbstring,mbregex,mysqli,mysqlnd,openssl,opcache,pcntl,pdo,pdo_mysql,pdo_sqlite,pdo_pgsql,pgsql,phar,posix,readline,redis,session,simplexml,sockets,sodium,sqlite3,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib,bz2,event,gmp,imagick,imap,ldap,protobuf,shmop,snappy,soap,swoole,sysvmsg,sysvsem,sysvshm,tidy,zstd'; +$extensions = 'apcu,bcmath,calendar,ctype,curl,dba,dom,exif,filter,fileinfo,gd,iconv,intl,mbstring,mbregex,mysqli,mysqlnd,openssl,opcache,pcntl,pdo,pdo_mysql,pdo_sqlite,pdo_pgsql,pgsql,phar,posix,readline,redis,session,simplexml,sockets,sodium,sqlite3,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib,bz2,event,gmp,imagick,imap,ldap,protobuf,shmop,snappy,soap,swoole,sysvmsg,sysvsem,sysvshm,tidy,zstd'; + echo $extensions;