mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 04:44:53 +08:00
Fix gd build on PHP 8.5
This commit is contained in:
parent
7d7902e0e9
commit
7e5fd7a8b6
@ -634,7 +634,13 @@ class SourcePatcher
|
||||
FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/ext/gd/libgd/gdft.c', '#ifndef MSWIN32', '#ifndef _WIN32');
|
||||
}
|
||||
// custom config.w32, because official config.w32 is hard-coded many things
|
||||
$origin = $ver_id >= 80100 ? file_get_contents(ROOT_DIR . '/src/globals/extra/gd_config_81.w32') : file_get_contents(ROOT_DIR . '/src/globals/extra/gd_config_80.w32');
|
||||
if ($ver_id >= 80500) {
|
||||
$origin = file_get_contents(ROOT_DIR . '/src/globals/extra/gd_config_85.w32');
|
||||
} elseif ($ver_id >= 80100) {
|
||||
$origin = file_get_contents(ROOT_DIR . '/src/globals/extra/gd_config_81.w32');
|
||||
} else {
|
||||
$origin = file_get_contents(ROOT_DIR . '/src/globals/extra/gd_config_80.w32');
|
||||
}
|
||||
file_put_contents(SOURCE_PATH . '/php-src/ext/gd/config.w32.bak', file_get_contents(SOURCE_PATH . '/php-src/ext/gd/config.w32'));
|
||||
return file_put_contents(SOURCE_PATH . '/php-src/ext/gd/config.w32', $origin) !== false;
|
||||
}
|
||||
|
||||
94
src/globals/extra/gd_config_85.w32
Normal file
94
src/globals/extra/gd_config_85.w32
Normal file
@ -0,0 +1,94 @@
|
||||
// vim:ft=javascript
|
||||
|
||||
ARG_WITH("gd", "Bundled GD support", "yes");
|
||||
|
||||
if (PHP_GD != "no") {
|
||||
// check for gd.h (required)
|
||||
if (!CHECK_HEADER_ADD_INCLUDE("gd.h", "CFLAGS_GD", PHP_GD + ";ext\\gd\\libgd")) {
|
||||
ERROR("gd not enabled; libraries and headers not found");
|
||||
}
|
||||
|
||||
// zlib ext support (required)
|
||||
if (!CHECK_LIB("zs.lib", "gd", PHP_GD)) {
|
||||
ERROR("gd not enabled; zlib not enabled");
|
||||
}
|
||||
|
||||
// libjpeg lib support
|
||||
if (CHECK_LIB("libjpeg_a.lib;libjpeg.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("jpeglib.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include")) {
|
||||
AC_DEFINE("HAVE_LIBJPEG", 1, "JPEG support");
|
||||
AC_DEFINE("HAVE_GD_JPG", 1, "JPEG support");
|
||||
}
|
||||
|
||||
// libpng16 lib support
|
||||
if (CHECK_LIB("libpng_a.lib;libpng.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("png.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\libpng16")) {
|
||||
AC_DEFINE("HAVE_LIBPNG", 1, "PNG support");
|
||||
AC_DEFINE("HAVE_GD_PNG", 1, "PNG support");
|
||||
}
|
||||
|
||||
// freetype lib support
|
||||
if (CHECK_LIB("libfreetype_a.lib;libfreetype.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("ft2build.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\freetype2;" + PHP_PHP_BUILD + "\\include\\freetype")) {
|
||||
AC_DEFINE("HAVE_LIBFREETYPE", 1, "FreeType support");
|
||||
AC_DEFINE("HAVE_GD_FREETYPE", 1, "FreeType support");
|
||||
}
|
||||
|
||||
// xpm lib support
|
||||
if (CHECK_LIB("libXpm_a.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("xpm.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\X11")) {
|
||||
AC_DEFINE("HAVE_LIBXPM", 1, "XPM support");
|
||||
AC_DEFINE("HAVE_GD_XPM", 1, "XPM support");
|
||||
}
|
||||
|
||||
// iconv lib support
|
||||
if ((CHECK_LIB("libiconv_a.lib;libiconv.lib", "gd", PHP_GD) || CHECK_LIB("iconv_a.lib;iconv.lib", "gd", PHP_GD)) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("iconv.h", "CFLAGS_GD", PHP_GD)) {
|
||||
AC_DEFINE("HAVE_LIBICONV", 1, "Iconv support");
|
||||
}
|
||||
|
||||
// libwebp lib support
|
||||
if ((CHECK_LIB("libwebp_a.lib", "gd", PHP_GD) || CHECK_LIB("libwebp.lib", "gd", PHP_GD)) &&
|
||||
CHECK_LIB("libsharpyuv.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("decode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp") &&
|
||||
CHECK_HEADER_ADD_INCLUDE("encode.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\webp")) {
|
||||
AC_DEFINE("HAVE_LIBWEBP", 1, "WebP support");
|
||||
AC_DEFINE("HAVE_GD_WEBP", 1, "WebP support");
|
||||
}
|
||||
|
||||
// libavif lib support
|
||||
if (CHECK_LIB("avif_a.lib", "gd", PHP_GD) &&
|
||||
CHECK_LIB("aom_a.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) {
|
||||
ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF");
|
||||
} else if (CHECK_LIB("avif.lib", "gd", PHP_GD) &&
|
||||
CHECK_HEADER_ADD_INCLUDE("avif.h", "CFLAGS_GD", PHP_GD + ";" + PHP_PHP_BUILD + "\\include\\avif")) {
|
||||
ADD_FLAG("CFLAGS_GD", "/D HAVE_LIBAVIF /D HAVE_GD_AVIF");
|
||||
}
|
||||
|
||||
CHECK_LIB("User32.lib", "gd", PHP_GD);
|
||||
CHECK_LIB("Gdi32.lib", "gd", PHP_GD);
|
||||
|
||||
EXTENSION("gd", "gd.c", null, "-Iext/gd/libgd");
|
||||
ADD_SOURCES("ext/gd/libgd", "gd.c \
|
||||
gdcache.c gdfontg.c gdfontl.c gdfontmb.c gdfonts.c gdfontt.c \
|
||||
gdft.c gd_gd2.c gd_gd.c gd_gif_in.c gd_gif_out.c gdhelpers.c gd_io.c gd_io_dp.c \
|
||||
gd_io_file.c gd_io_ss.c gd_jpeg.c gdkanji.c gd_png.c gd_ss.c \
|
||||
gdtables.c gd_topal.c gd_wbmp.c gdxpm.c wbmp.c gd_xbm.c gd_security.c gd_transform.c \
|
||||
gd_filter.c gd_rotate.c gd_color_match.c gd_webp.c gd_avif.c \
|
||||
gd_crop.c gd_interpolation.c gd_matrix.c gd_bmp.c gd_tga.c", "gd");
|
||||
|
||||
AC_DEFINE('HAVE_LIBGD', 1, 'GD support');
|
||||
AC_DEFINE('HAVE_GD_BUNDLED', 1, "Bundled GD");
|
||||
AC_DEFINE('HAVE_GD_BMP', 1, "BMP support");
|
||||
AC_DEFINE('HAVE_GD_TGA', 1, "TGA support");
|
||||
ADD_FLAG("CFLAGS_GD", " \
|
||||
/D PHP_GD_EXPORTS=1 \
|
||||
/D HAVE_GD_GET_INTERPOLATION \
|
||||
");
|
||||
if (ICC_TOOLSET) {
|
||||
ADD_FLAG("LDFLAGS_GD", "/nodefaultlib:libcmt");
|
||||
}
|
||||
|
||||
PHP_INSTALL_HEADERS("", "ext/gd ext/gd/libgd");
|
||||
}
|
||||
@ -13,10 +13,10 @@ declare(strict_types=1);
|
||||
|
||||
// test php version (8.1 ~ 8.4 available, multiple for matrix)
|
||||
$test_php_version = [
|
||||
// '8.1',
|
||||
'8.1',
|
||||
// '8.2',
|
||||
// '8.3',
|
||||
// '8.4',
|
||||
'8.4',
|
||||
'8.5',
|
||||
// 'git',
|
||||
];
|
||||
@ -26,12 +26,12 @@ $test_os = [
|
||||
// 'macos-15-intel', // bin/spc for x86_64
|
||||
// 'macos-15', // bin/spc for arm64
|
||||
// 'ubuntu-latest', // bin/spc-alpine-docker for x86_64
|
||||
'ubuntu-22.04', // bin/spc-gnu-docker for x86_64
|
||||
'ubuntu-24.04', // bin/spc for x86_64
|
||||
'ubuntu-22.04-arm', // bin/spc-gnu-docker for arm64
|
||||
'ubuntu-24.04-arm', // bin/spc for arm64
|
||||
// 'ubuntu-22.04', // bin/spc-gnu-docker for x86_64
|
||||
// 'ubuntu-24.04', // bin/spc for x86_64
|
||||
// 'ubuntu-22.04-arm', // bin/spc-gnu-docker for arm64
|
||||
// 'ubuntu-24.04-arm', // bin/spc for arm64
|
||||
// 'windows-2022', // .\bin\spc.ps1
|
||||
// 'windows-2025',
|
||||
'windows-2025',
|
||||
];
|
||||
|
||||
// whether enable thread safe
|
||||
@ -51,7 +51,7 @@ $prefer_pre_built = false;
|
||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
||||
$extensions = match (PHP_OS_FAMILY) {
|
||||
'Linux', 'Darwin' => 'pgsql',
|
||||
'Windows' => 'com_dotnet',
|
||||
'Windows' => 'gd,zlib,mbstring,filter',
|
||||
};
|
||||
|
||||
// If you want to test shared extensions, add them below (comma separated, example `bcmath,openssl`).
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user