From 347785758439d178f1e97082d14eae3c37561965 Mon Sep 17 00:00:00 2001 From: Marc Henderkes Date: Thu, 20 Mar 2025 07:41:13 +0100 Subject: [PATCH] mimalloc on mac (untested) --- config/lib.json | 3 --- src/SPC/builder/macos/MacOSBuilder.php | 8 ++++++++ src/SPC/builder/macos/library/mimalloc.php | 12 ++++++++++++ src/globals/test-extensions.php | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/SPC/builder/macos/library/mimalloc.php diff --git a/config/lib.json b/config/lib.json index 696f38a7..eb009f21 100644 --- a/config/lib.json +++ b/config/lib.json @@ -593,9 +593,6 @@ "source": "mimalloc", "static-libs-unix": [ "mimalloc.o" - ], - "static-libs-windows": [ - "mimalloc.lib" ] }, "ncurses": { diff --git a/src/SPC/builder/macos/MacOSBuilder.php b/src/SPC/builder/macos/MacOSBuilder.php index ce82ab10..176bd21e 100644 --- a/src/SPC/builder/macos/MacOSBuilder.php +++ b/src/SPC/builder/macos/MacOSBuilder.php @@ -148,10 +148,12 @@ class MacOSBuilder extends UnixBuilderBase $enableEmbed = ($build_target & BUILD_TARGET_EMBED) === BUILD_TARGET_EMBED; // prepare build php envs + $mimallocLibs = $this->getLib('mimalloc') !== null ? BUILD_LIB_PATH . '/mimalloc.o ' : ''; $envs_build_php = SystemUtil::makeEnvVarString([ 'CFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CFLAGS'), 'CPPFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_CPPFLAGS'), 'LDFLAGS' => getenv('SPC_CMD_VAR_PHP_CONFIGURE_LDFLAGS'), + 'LIBS' => $mimallocLibs . getenv('SPC_CMD_VAR_PHP_CONFIGURE_LIBS'), ]); if ($this->getLib('postgresql')) { @@ -298,6 +300,12 @@ class MacOSBuilder extends UnixBuilderBase ->exec('rm ' . BUILD_ROOT_PATH . '/lib/libphp.a') ->exec('ar rcs ' . BUILD_ROOT_PATH . '/lib/libphp.a *.o') ->exec('rm -Rf ' . BUILD_ROOT_PATH . '/lib/php-o'); + + $php_config_str = FileSystem::readFile(BUILD_BIN_PATH . '/php-config'); + str_replace('prefix=""', 'prefix="' . BUILD_ROOT_PATH . '"', $php_config_str); + // move mimalloc to the beginning of libs + $php_config_str = preg_replace('/(libs=")(.*?)\s*(' . preg_quote(BUILD_LIB_PATH, '/') . '\/mimalloc\.o)\s*(.*?)"/', '$1$3 $2 $4"', $php_config_str); + FileSystem::writeFile(BUILD_BIN_PATH . '/php-config', $php_config_str); } private function getMakeExtraVars(): array diff --git a/src/SPC/builder/macos/library/mimalloc.php b/src/SPC/builder/macos/library/mimalloc.php new file mode 100644 index 00000000..c86c8ed6 --- /dev/null +++ b/src/SPC/builder/macos/library/mimalloc.php @@ -0,0 +1,12 @@ + 'freetype', + 'Linux', 'Darwin' => 'mimalloc', 'Windows' => 'libjpeg,libavif,freetype,libwebp', };