upgrade pixman and cairo

Co-authored-by: Noel Grandin <noel.grandin@collabora.co.uk>

Change-Id: I21b8c772138b544d3192b786a6bae4c64ebcac94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191199
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
Caolán McNamara
2025-09-27 21:38:46 +02:00
co-authored by Noel Grandin
parent d65f9ebab1
commit 2b515d095d
29 changed files with 360 additions and 565 deletions
+4 -2
View File
@@ -1214,14 +1214,16 @@ $(call gb_LinkTarget_use_external,$(1),freetype_headers)
$(call gb_LinkTarget_set_include,$(1),\
-I$(gb_UnpackedTarball_workdir)/cairo \
-I$(gb_UnpackedTarball_workdir)/cairo/src \
-I$(gb_UnpackedTarball_workdir)/cairo/builddir/src \
-I$(gb_UnpackedTarball_workdir)/pixman/pixman \
-I$(gb_UnpackedTarball_workdir)/pixman/builddir/pixman \
$$(INCLUDE) \
)
$(call gb_LinkTarget_add_libs,$(1),\
$(if $(filter EMSCRIPTEN,$(OS)), \
$(gb_UnpackedTarball_workdir)/cairo/src/.libs/libcairo.a \
$(gb_UnpackedTarball_workdir)/cairo/builddir/src/libcairo-lo.a \
$(gb_UnpackedTarball_workdir)/pixman/pixman/.libs/libpixman-1.a, \
-L$(gb_UnpackedTarball_workdir)/cairo/src/.libs -lcairo \
-L$(gb_UnpackedTarball_workdir)/cairo/builddir/src -lcairo-lo \
-L$(gb_UnpackedTarball_workdir)/pixman/pixman/.libs -lpixman-1) \
)
+2 -2
View File
@@ -39,8 +39,8 @@ ANDROID)
oslibs="$WORKDIR/UnpackedTarball/curl/lib/.libs/*.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/fontconfig/src/.libs/libfontconfig.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/freetype/objs/.libs/libfreetype.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/pixman/pixman/.libs/libpixman-1.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/cairo/src/.libs/libcairo.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/pixman/builddir/pixman/libpixman-1.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/cairo/builddir/src/libcairo-lo.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/.libs/libxmlsec1.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/nss/.libs/libxmlsec1-nss.a"
# Only liblo-bootstrap.a ends up here:
+72 -56
View File
@@ -11679,63 +11679,8 @@ else
AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
fi
# harfbuzz is now built using meson
AC_ARG_VAR(MESON, [point to a specific meson to use instead of autodetecting])
if test -z "$MESON"; then
if test -z "$PYTHON_FOR_BUILD"; then
# we also want to call meson with internal python and use internal meson
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
# autodetect, prefer meson.py / standalone version that can more likely be run
# by different python runtimes
AC_PATH_PROGS(MESON,[meson.py meson],,[$LODE_HOME/opt/bin:$PATH])
if test -z "$MESON"; then
AC_MSG_WARN([meson not found, using internal copy])
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
PathFormat "$MESON"
MESON="$formatted_path"
AC_MSG_CHECKING([whether meson can be run with "$PYTHON_FOR_BUILD $MESON"])
if ($PYTHON_FOR_BUILD $MESON --version >/dev/null) ; then
# Xcode 26 and higher need a newer version of meson so use
# the internal meson if the external meson's version is
# too old
if test $_os = Darwin -a $MACOSX_SDK_VERSION -ge 260000; then
_meson_minver=1.8.3
_meson_minmajmin=`echo $_meson_minver | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
_meson_version=`$PYTHON_FOR_BUILD $MESON --version 2>/dev/null`
_meson_majmin=`echo $_meson_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
if test "$_meson_majmin" -lt "$_meson_minmajmin"; then
AC_MSG_WARN([meson "$_meson_version" is too old, using internal copy])
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
AC_MSG_RESULT([yes])
fi
else
AC_MSG_RESULT([yes])
fi
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([meson incompatible with the specified python. Try using a different python runtime or a plain release of meson by adding PYTHON=/other/python.version and/or MESON=/path/to/meson.py to autogen.input])
fi
fi
fi
MESON='$(call gb_ExternalExecutable_get_command,python) '"$MESON"
fi
AC_CHECK_PROG(NINJA,ninja,ninja)
if test -z "$MESON" -o -z "$NINJA"; then
AC_MSG_ERROR([you need to have meson and ninja in order to build harfbuzz])
fi
need_meson="yes"
fi
if test -z "$NINJA" || test "$NINJA" = 'assumed to be available from Visual Studio'; then
x_NINJA=[\#]
else
x_NINJA=
fi
AC_SUBST(x_NINJA)
AC_SUBST(NINJA)
if test "$USING_X11" = TRUE; then
AC_PATH_X
@@ -14701,6 +14646,8 @@ if test "$test_cairo" = "yes"; then
else
AC_MSG_RESULT([no])
BUILD_TYPE="$BUILD_TYPE CAIRO"
# harfbuzz is now built using meson
need_meson="yes"
fi
if test "$enable_cairo_canvas" != no; then
@@ -14714,6 +14661,75 @@ AC_SUBST(CAIRO_LIBS)
AC_SUBST(ENABLE_CAIRO_CANVAS)
AC_SUBST(SYSTEM_CAIRO)
dnl ===================================================================
dnl Check for meson
dnl ===================================================================
if test "$need_meson" = "yes"; then
AC_ARG_VAR(MESON, [point to a specific meson to use instead of autodetecting])
if test -z "$MESON"; then
if test -z "$PYTHON_FOR_BUILD"; then
# we also want to call meson with internal python and use internal meson
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
# autodetect, prefer meson.py / standalone version that can more likely be run
# by different python runtimes
AC_PATH_PROGS(MESON,[meson.py meson],,[$LODE_HOME/opt/bin:$PATH])
if test -z "$MESON"; then
AC_MSG_WARN([meson not found, using internal copy])
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
PathFormat "$MESON"
MESON="$formatted_path"
AC_MSG_CHECKING([whether meson can be run with "$PYTHON_FOR_BUILD $MESON"])
if ($PYTHON_FOR_BUILD $MESON --version >/dev/null) ; then
_meson_minver=0.61.5
if test "$test_cairo" = "yes" -a "$SYSTEM_CAIRO" != "TRUE"; then
_meson_minver=1.3.0
fi
# Xcode 26 and higher need a newer version of meson so use
# the internal meson if the external meson's version is
# too old
if test $_os = Darwin; then
if $MACOSX_SDK_VERSION -ge 260000; then
_meson_minver=1.8.3
fi
fi
_meson_minmajmin=`echo $_meson_minver | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
_meson_version=`$PYTHON_FOR_BUILD $MESON --version 2>/dev/null`
_meson_majmin=`echo $_meson_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
if test "$_meson_majmin" -lt "$_meson_minmajmin"; then
AC_MSG_WARN([meson "$_meson_version" is too old, using internal copy])
BUILD_TYPE="$BUILD_TYPE MESON"
MESON='$(gb_UnpackedTarball_workdir)/meson/meson.py'
else
AC_MSG_RESULT([yes])
AC_MSG_CHECKING([min version of meson required])
AC_MSG_RESULT([$meson_minver])
fi
else
AC_MSG_RESULT([no])
AC_MSG_ERROR([meson incompatible with the specified python. Try using a different python runtime or a plain release of meson by adding PYTHON=/other/python.version and/or MESON=/path/to/meson.py to autogen.input])
fi
fi
fi
MESON='$(call gb_ExternalExecutable_get_command,python) '"$MESON"
fi
AC_CHECK_PROG(NINJA,ninja,ninja)
if test -z "$MESON" -o -z "$NINJA"; then
AC_MSG_ERROR([you need to have meson and ninja in order to build harfbuzz])
fi
fi
if test -z "$NINJA" || test "$NINJA" = 'assumed to be available from Visual Studio'; then
x_NINJA=[\#]
else
x_NINJA=
fi
AC_SUBST(x_NINJA)
AC_SUBST(NINJA)
dnl ===================================================================
dnl Test whether to use avahi
dnl ===================================================================
+5 -5
View File
@@ -39,9 +39,9 @@ BZIP2_TARBALL := bzip2-1.0.8.tar.gz
# three static lines
# so that git cherry-pick
# will not run into conflicts
CAIRO_SHA256SUM := 4eebc4c2bad0402bc3f501db184417094657d111fb6c06f076a82ea191fe1faf
CAIRO_VERSION_MICRO := 6
CAIRO_TARBALL := cairo-1.17.$(CAIRO_VERSION_MICRO).tar.xz
CAIRO_SHA256SUM := 445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb
CAIRO_VERSION_MICRO := 4
CAIRO_TARBALL := cairo-1.18.$(CAIRO_VERSION_MICRO).tar.xz
# three static lines
# so that git cherry-pick
# will not run into conflicts
@@ -569,8 +569,8 @@ PDFIUM_TARBALL := pdfium-7012.tar.bz2
# three static lines
# so that git cherry-pick
# will not run into conflicts
PIXMAN_SHA256SUM := ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e
PIXMAN_TARBALL := pixman-0.42.2.tar.gz
PIXMAN_SHA256SUM := a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239
PIXMAN_TARBALL := pixman-0.46.4.tar.xz
# three static lines
# so that git cherry-pick
# will not run into conflicts
+1 -1
View File
@@ -12,7 +12,7 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,cairo,cairo))
$(eval $(call gb_ExternalPackage_use_external_project,cairo,cairo))
ifneq ($(DISABLE_DYNLOADING),TRUE)
$(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo-lo.so.2,src/.libs/libcairo-lo.so.2.1170$(CAIRO_VERSION_MICRO).0))
$(eval $(call gb_ExternalPackage_add_file,cairo,$(LIBO_LIB_FOLDER)/libcairo-lo.so.2,builddir/src/libcairo-lo.so.2.1180$(CAIRO_VERSION_MICRO).$(CAIRO_VERSION_MICRO)))
endif
# vim: set noet sw=4 ts=4:
+1 -1
View File
@@ -12,7 +12,7 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,pixman,pixman))
$(eval $(call gb_ExternalPackage_use_external_project,pixman,pixman))
ifneq ($(DISABLE_DYNLOADING),TRUE)
$(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.so.0,pixman/.libs/libpixman-1.so.0.42.2))
$(eval $(call gb_ExternalPackage_add_file,pixman,$(LIBO_LIB_FOLDER)/libpixman-1.so.0,builddir/pixman/libpixman-1.so.0.46.4))
endif
# vim: set noet sw=4 ts=4:
+69 -42
View File
@@ -9,19 +9,44 @@
$(eval $(call gb_ExternalProject_ExternalProject,cairo))
$(eval $(call gb_ExternalProject_use_external_project,cairo,pixman))
$(eval $(call gb_ExternalProject_use_externals,cairo,\
fontconfig \
freetype \
libpng \
zlib \
))
$(eval $(call gb_ExternalProject_register_targets,cairo,\
build \
))
$(eval $(call gb_ExternalProject_use_external_project,cairo,pixman))
$(eval $(call gb_ExternalProject_use_externals,cairo,\
fontconfig \
freetype \
libpng \
meson \
zlib \
))
# We cannot use environment vars inside the meson cross-build file,
# so we're going to have to generate one on-the-fly.
# mungle variables into python list format
python_listify = '$(subst $(WHITESPACE),'$(COMMA)',$(strip $(1)))'
cross_c = $(call python_listify,$(gb_CC))
cross_cxx = $(call python_listify,$(gb_CXX))
cross_ld := $(call python_listify,$(subst -fuse-ld=,,$(USE_LD)))
define gb_cairo_cross_compile
[binaries]
c = [$(cross_c)]
cpp = [$(cross_cxx)]
c_ld = [$(cross_ld)]
cpp_ld = [$(cross_ld)]
ar = '$(AR)'
strip = '$(STRIP)'
# TODO: this is pretty ugly...
[host_machine]
system = '$(if $(filter WNT,$(OS)),windows,$(if $(filter MACOSX,$(OS)),darwin,$(if $(filter ANDROID,$(OS)),android,linux)))'
cpu_family = '$(subst X86_64,x86_64,$(RTL_ARCH))'
cpu = '$(if $(filter x86,$(RTL_ARCH)),i686,$(if $(filter X86_64,$(RTL_ARCH)),x86_64,$(if $(filter AARCH64,$(RTL_ARCH)),aarch64,armv7)))'
endian = '$(ENDIANNESS)'
endef
# Including -rtlib=compiler-rt in pixman_LIBS is a BAD HACK: At least when compiling with Clang
# -fsanitize=undefined on Linux x86-64, the generated code references __muloti4, which is an
# extension provided by libclang_rt.builtins-x86_64.a runtime, but not by GCC's libgcc_s.so.1 (which
@@ -42,43 +67,45 @@ $(eval $(call gb_ExternalProject_register_targets,cairo,\
# cairo's configure. And pixman_LIBS happens to offer that. (The -Wc is necessary so that libtool
# does not throw away the -rtlib=compiler-rt which it does not understand.)
# We control how cairo handles its subprojects/dependencies by adding entries to PKG_CONFIG_PATH .
# Meson will look in those locations for *.pc files, which contains FLAGS and LIBS entries.
# We set PKG_CONFIG_TOP_BUILD_DIR= in order to work around some pkg-config weirdness, which otherwise
# will make meson crash.
$(call gb_ExternalProject_get_state_target,cairo,build) :
$(call gb_Trace_StartRange,cairo,EXTERNAL)
$(file >$(gb_UnpackedTarball_workdir)/cairo/cross-file.txt,$(gb_cairo_cross_compile))
$(call gb_ExternalProject_run,build,\
$(gb_RUN_CONFIGURE) ./configure \
$(if $(debug),STRIP=" ") \
$(if $(filter ANDROID iOS,$(OS)),CFLAGS="$(if $(debug),-g) $(ZLIB_CFLAGS) $(gb_VISIBILITY_FLAGS)") \
$(if $(filter EMSCRIPTEN,$(OS)),CFLAGS="-O3 -DCAIRO_NO_MUTEX $(ZLIB_CFLAGS) -Wno-enum-conversion $(gb_EMSCRIPTEN_CPPFLAGS)" ) \
PYTHONWARNINGS= \
PKG_CONFIG_TOP_BUILD_DIR= \
$(if $(filter ANDROID iOS,$(OS)),CFLAGS="$(if $(debug),-g) $(gb_VISIBILITY_FLAGS)") \
$(if $(filter EMSCRIPTEN,$(OS)),CFLAGS="-O3 -DCAIRO_NO_MUTEX -Wno-enum-conversion $(gb_EMSCRIPTEN_CPPFLAGS)" ) \
PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$(gb_UnpackedTarball_workdir)/pixman/builddir/meson-uninstalled" \
$(if $(SYSTEM_FREETYPE),,PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:$(gb_UnpackedTarball_workdir)/freetype/instdir/lib/pkgconfig") \
$(if $(SYSTEM_FONTCONFIG),,PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:$(gb_UnpackedTarball_workdir)/fontconfig") \
$(comment # on android we use system provided libz, but there is no .pc file, so create one for cairo) \
$(if $(filter ANDROID,$(OS)), \
$(shell mkdir $(gb_UnpackedTarball_workdir)/cairo/missing-system-pc) \
$(file >$(gb_UnpackedTarball_workdir)/cairo/missing-system-pc/zlib.pc,$(call gb_pkgconfig_file,zlib,1.2.8,$(ZLIB_CFLAGS),$(ZLIB_LIBS))) \
PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:$(gb_UnpackedTarball_workdir)/cairo/missing-system-pc" \
) \
$(if $(SYSTEM_ZLIB),,PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:$(gb_UnpackedTarball_workdir)/zlib") \
$(if $(SYSTEM_LIBPNG),,PKG_CONFIG_PATH="$$PKG_CONFIG_PATH:$(gb_UnpackedTarball_workdir)/libpng") \
$(if $(filter -fsanitize=undefined,$(CC)),CC='$(CC) -fno-sanitize=function') \
$(if $(filter-out EMSCRIPTEN ANDROID iOS,$(OS)), \
CFLAGS="$(CFLAGS) $(call gb_ExternalProject_get_build_flags,cairo) $(ZLIB_CFLAGS)" \
LDFLAGS="$(call gb_ExternalProject_get_link_flags,cairo)" \
) \
$(if $(filter MACOSX ANDROID iOS,$(OS)),PKG_CONFIG=./dummy_pkg_config) \
LIBS="$(ZLIB_LIBS)" \
$(if $(filter -fsanitize=%,$(LDFLAGS)),LDFLAGS="$(LDFLAGS) -fuse-ld=bfd") \
pixman_CFLAGS="-I$(gb_UnpackedTarball_workdir)/pixman/pixman -pthread" \
pixman_LIBS="-L$(gb_UnpackedTarball_workdir)/pixman/pixman/.libs -lpixman-1 \
$(if $(filter LINUX,$(OS)),-Wl$(COMMA)-z$(COMMA)origin \
-Wl$(COMMA)-rpath$(COMMA)\\\$$\$$ORIGIN) \
$(if $(filter -fsanitize=%,$(CC)), \
$(if $(filter LINUX-X86_64-TRUE,$(OS)-$(CPUNAME)-$(COM_IS_CLANG)), \
-Wc$(COMMA)-rtlib=compiler-rt))" \
png_REQUIRES="trick_configure_into_using_png_CFLAGS_and_LIBS" \
png_CFLAGS="$(LIBPNG_CFLAGS)" png_LIBS="$(LIBPNG_LIBS)" \
$(if $(SYSTEM_FREETYPE),,FREETYPE_CFLAGS="-I$(gb_UnpackedTarball_workdir)/freetype/include") \
$(if $(SYSTEM_FONTCONFIG),,FONTCONFIG_CFLAGS="-I$(gb_UnpackedTarball_workdir)/fontconfig") \
$(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
$(if $(filter EMSCRIPTEN ANDROID iOS,$(OS)),--disable-xlib --disable-xcb,$(if $(filter TRUE,$(DISABLE_GUI)),--disable-xlib --disable-xcb,--enable-xlib --enable-xcb)) \
$(if $(filter iOS,$(OS)),--enable-quartz --enable-quartz-font) \
--disable-valgrind \
$(if $(filter iOS,$(OS)),--disable-ft,--enable-ft --enable-fc) \
--disable-svg --enable-gtk-doc=no --enable-test-surfaces=no \
$(gb_CONFIGURE_PLATFORMS) \
$(if $(CROSS_COMPILING),$(if $(filter INTEL ARM,$(CPUNAME)),ac_cv_c_bigendian=no ax_cv_c_float_words_bigendian=no)) \
$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
&& cd src && $(MAKE) \
$(MESON) setup --wrap-mode nofallback builddir \
$(if $(debug),-Dstrip=false,-Dstrip=true) \
$(if $(filter -fsanitize=%,$(CC)),-Db_lundef=false) \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),-Ddefault_library=static,-Ddefault_library=shared) \
$(if $(filter EMSCRIPTEN ANDROID iOS,$(OS)),-Dxlib=disabled -Dxcb=disabled,$(if $(filter TRUE,$(DISABLE_GUI)),-Dxlib=disabled -Dxcb=disabled,-Dxlib=enabled -Dxcb=enabled)) \
$(if $(filter iOS,$(OS)),-Dquartz=enabled) \
$(if $(filter iOS,$(OS)),-Dfreetype=disabled,-Dfreetype=enabled -Dfontconfig=enabled) \
-Dgtk_doc=false -Dtests=disabled \
$(if $(CROSS_COMPILING),--cross-file cross-file.txt) \
$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
$(if $(filter-out $(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \
$(MESON) compile -C builddir \
$(if $(verbose),--verbose) \
)
$(call gb_Trace_EndRange,cairo,EXTERNAL)
+44 -15
View File
@@ -13,24 +13,53 @@ $(eval $(call gb_ExternalProject_register_targets,pixman,\
build \
))
# ANDROID:
# The pixman-cpu.c code wants to read /proc/<pid>/auxv, but
# the Android headers don't define Elf32_auxv_t.
#
# Maybe we should instead just patch the arm_has_* booleans in
# pixman-cpu.c to be hardcoded as TRUE and patch out the run-time
# check?
$(eval $(call gb_ExternalProject_use_externals,pixman,\
meson \
))
# We cannot use environment vars inside the meson cross-build file,
# so we're going to have to generate one on-the-fly.
# mungle variables into python list format
python_listify = '$(subst $(WHITESPACE),'$(COMMA)',$(strip $(1)))'
cross_c = $(call python_listify,$(gb_CC))
cross_cxx = $(call python_listify,$(gb_CXX))
cross_ld := $(call python_listify,$(subst -fuse-ld=,,$(USE_LD)))
define gb_pixman_cross_compile
[binaries]
c = [$(cross_c)]
cpp = [$(cross_cxx)]
c_ld = [$(cross_ld)]
cpp_ld = [$(cross_ld)]
ar = '$(AR)'
strip = '$(STRIP)'
# TODO: this is pretty ugly...
[host_machine]
system = '$(if $(filter WNT,$(OS)),windows,$(if $(filter MACOSX,$(OS)),darwin,$(if $(filter ANDROID,$(OS)),android,linux)))'
cpu_family = '$(subst X86_64,x86_64,$(RTL_ARCH))'
cpu = '$(if $(filter x86,$(RTL_ARCH)),i686,$(if $(filter X86_64,$(RTL_ARCH)),x86_64,$(if $(filter AARCH64,$(RTL_ARCH)),aarch64,armv7)))'
endian = '$(ENDIANNESS)'
endef
$(call gb_ExternalProject_get_state_target,pixman,build) :
$(call gb_Trace_StartRange,pixman,EXTERNAL)
$(file >$(gb_UnpackedTarball_workdir)/pixman/cross-file.txt,$(gb_pixman_cross_compile))
$(call gb_ExternalProject_run,build,\
$(gb_RUN_CONFIGURE) ./configure \
$(if $(filter TRUE,$(DISABLE_DYNLOADING)),--disable-shared,--disable-static) \
$(if $(filter ANDROID,$(OS)),--disable-arm-simd --disable-arm-neon --disable-arm-a64-neon --disable-arm-iwmmxt) \
$(gb_CONFIGURE_PLATFORMS) \
$(if $(CROSS_COMPILING),$(if $(filter INTEL ARM,$(CPUNAME)),ac_cv_c_bigendian=no)) \
$(if $(filter EMSCRIPTEN,$(OS)),CFLAGS="-O3 -pthread -msimd128") \
$(if $(filter -fsanitize=undefined,$(CC)),CC='$(CC) -fno-sanitize=function') \
&& $(MAKE) \
export PIXMAP_CFLAGS="\
$(if $(call gb_Module__symbols_enabled,pixman),$(gb_DEBUGINFO_FLAGS) ) \
$(if $(filter EMSCRIPTEN,$(OS)),-O3 -pthread -msimd128 ) \
$(if $(filter -fsanitize=undefined,$(CC)),-fno-sanitize=function ) \
" && \
$(MESON) setup --wrap-mode nofallback builddir \
-Ddefault_library=$(if $(filter TRUE,$(DISABLE_DYNLOADING)),static,shared) \
$(if $(call gb_Module__symbols_enabled,pixman),-Dc_args="$$PIXMAP_CFLAGS") \
$(if $(filter ANDROID,$(OS)),-Darm-simd=disabled -Dneon=disabled -Da64-neon=disabled) \
-Dbuildtype=$(if $(ENABLE_DBGUTIL),debug,$(if $(ENABLE_DEBUG),debugoptimized,release)) \
-Dauto_features=disabled \
-Dtests=disabled \
$(if $(filter-out $(BUILD_PLATFORM),$(HOST_PLATFORM))$(WSL),--cross-file cross-file.txt) && \
$(MESON) compile -C builddir \
$(if $(verbose),--verbose) \
)
$(call gb_Trace_EndRange,pixman,EXTERNAL)
+16 -29
View File
@@ -13,40 +13,27 @@ $(eval $(call gb_UnpackedTarball_set_tarball,cairo,$(CAIRO_TARBALL),,cairo))
$(eval $(call gb_UnpackedTarball_set_patchlevel,cairo,2))
# cairo >= 1.17.6 was probably created in Fedora where
# https://salsa.debian.org/mckinstry/libtool/-/commit/26c23f951d049241128e5e04a7bbc263e5b145f1
# isn't applied, so add that in to avoid: /usr/bin/ld: unrecognized option '--gdb-index'
# ofz50805.patch https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/350
# ofz46165.patch upstreamed as https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/351
# san.patch upstreamed as https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/352
# The avoid-negative-left-shift patch, I'm not sure if it's the right thing. It triggers in JunitTest_chart2_unoapi.
#
# The ubsan-memcpy-nullptr is reported at https://gitlab.freedesktop.org/cairo/cairo/-/issues/884
#
$(eval $(call gb_UnpackedTarball_add_patches,cairo,\
external/cairo/cairo/cairo.buildfix.patch \
external/cairo/cairo/cairo.RGB24_888.patch \
external/cairo/cairo/cairo-libtool-rpath.patch.1 \
external/cairo/cairo/cairo.oldfreetype.patch \
external/cairo/cairo/san.patch.0 \
external/cairo/cairo/cairo.ofz46165.patch.1 \
external/cairo/cairo/cairo.ofz50805.patch.1 \
external/cairo/cairo/0025-libtool-pass-use-ld.patch \
external/cairo/cairo/libcairo-bundled-soname.patch.0 \
external/cairo/cairo/cairo-fd-hack.patch.0 \
external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \
external/cairo/cairo/shm-null-deref.patch.1 \
external/cairo/cairo/Wincompatible-pointer-types.patch.0 \
external/cairo/cairo/cairo.RGB24_888.patch \
external/cairo/cairo/san.patch.0 \
external/cairo/cairo/libcairo-bundled-soname.patch.1 \
external/cairo/cairo/cairo-fd-hack.patch.0 \
external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \
external/cairo/cairo/shm-null-deref.patch.1 \
external/cairo/cairo/avoid-negative-left-shift.patch.1 \
external/cairo/cairo/ubsan-memcpy-nullptr.patch.1 \
external/cairo/cairo/ubsan-memcpy-nullptr2.patch.1 \
external/cairo/cairo/Wincompatible-pointer-types.patch.0 \
external/cairo/cairo/disable-cairo-utilities.patch.1 \
))
ifeq ($(OS),iOS)
$(eval $(call gb_UnpackedTarball_add_patches,cairo,\
external/cairo/cairo/cairo-1.10.2.no-atsui.patch \
external/cairo/cairo/cairo-1.10.2.ios.patch \
))
endif
ifeq ($(ENABLE_CAIRO_RGBA),TRUE)
$(eval $(call gb_UnpackedTarball_add_patches,cairo,\
external/cairo/cairo/cairo.GL_RGBA.patch \
external/cairo/cairo/cairo.GL_RGBA.patch \
))
endif
-16
View File
@@ -1,16 +0,0 @@
--- a/cairo/build/ltmain.sh 2022-05-04 16:12:17.409012360 +0100
+++ b/cairo/build/ltmain.sh 2022-05-04 16:12:42.510870063 +0100
@@ -7273,11 +7273,12 @@
# --sysroot=* for sysroot support
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
# -specs=* GCC specs files
+ # -fuse-ld=* Linker select flags for GCC
# -stdlib=* select c++ std lib with clang
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
- -specs=*)
+ -specs=*|-fuse-ld=*)
func_quote_for_eval "$arg"
arg=$func_quote_for_eval_result
func_append compile_command " $arg"
+14
View File
@@ -0,0 +1,14 @@
Only in cairo: builddir
Only in cairo: build.log
diff -ur cairo.org/src/cairo-fixed-private.h cairo/src/cairo-fixed-private.h
--- cairo.org/src/cairo-fixed-private.h 2025-01-30 11:47:24.708589118 +0200
+++ cairo/src/cairo-fixed-private.h 2025-01-30 11:48:36.632864262 +0200
@@ -265,7 +265,7 @@
} else if ((f >> CAIRO_FIXED_FRAC_BITS) > INT16_MAX) {
x = INT32_MAX;
} else {
- x = f << (16 - CAIRO_FIXED_FRAC_BITS);
+ x = (cairo_fixed_t)((unsigned)f << (16 - CAIRO_FIXED_FRAC_BITS));
}
return x;
-27
View File
@@ -1,27 +0,0 @@
--- misc/cairo-1.10.2/configure 2011-12-16 10:02:39.626077757 +0100
+++ misc/build/cairo-1.10.2/configure 2011-12-16 10:02:23.518237109 +0100
@@ -22766,11 +22766,13 @@
ac_fn_c_check_header_mongrel "$LINENO" "ApplicationServices/ApplicationServices.h" "ac_cv_header_ApplicationServices_ApplicationServices_h" "$ac_includes_default"
+if false; then
if test "x$ac_cv_header_ApplicationServices_ApplicationServices_h" = x""yes; then :
else
use_quartz="no (requires ApplicationServices framework)"
fi
+fi
if test "x$use_quartz" != "xyes" ; then
--- misc/cairo-1.10.2/src/cairo-quartz.h 2011-12-16 10:02:39.639079241 +0100
+++ misc/build/cairo-1.10.2/src/cairo-quartz.h 2011-12-16 10:01:18.404789245 +0100
@@ -40,7 +40,7 @@
#if CAIRO_HAS_QUARTZ_SURFACE
-#include <ApplicationServices/ApplicationServices.h>
+#include <CoreGraphics/CoreGraphics.h>
CAIRO_BEGIN_DECLS
-22
View File
@@ -1,22 +0,0 @@
--- misc/cairo-1.10.2/src/cairo-quartz-font.c 2010-12-25 15:21:34.000000000 +0100
+++ misc/build/cairo-1.10.2/src/cairo-quartz-font.c 2011-12-16 09:54:18.672445207 +0100
@@ -777,7 +777,7 @@
return ffont->cgFont;
}
-#ifndef __LP64__
+#if 0
/*
* compat with old ATSUI backend
*/
--- misc/cairo-1.10.2/src/cairo-quartz.h 2010-06-18 13:47:13.000000000 +0200
+++ misc/build/cairo-1.10.2/src/cairo-quartz.h 2011-12-16 09:52:53.081501547 +0100
@@ -66,7 +66,7 @@
cairo_public cairo_font_face_t *
cairo_quartz_font_face_create_for_cgfont (CGFontRef font);
-#ifndef __LP64__
+#if 0
cairo_public cairo_font_face_t *
cairo_quartz_font_face_create_for_atsu_font_id (ATSUFontID font_id);
#endif
-12
View File
@@ -1,12 +0,0 @@
Prevent libtool from adding annoying stuff to RPATH
--- cairo/configure.orig 2018-10-19 22:20:08.000000000 +0200
+++ cairo/configure 2019-09-04 17:53:00.927539686 +0200
@@ -10432,6 +10432,7 @@
else
ld_shlibs=no
fi
+hardcode_libdir_flag_spec=
;;
netbsd*)
+18 -19
View File
@@ -14,27 +14,26 @@
return CAIRO_FORMAT_RGB24;
case PIXMAN_a8:
return CAIRO_FORMAT_A8;
@@ -109,7 +109,7 @@
@@ -109,15 +109,15 @@
return CAIRO_FORMAT_A1;
case PIXMAN_r5g6b5:
return CAIRO_FORMAT_RGB16_565;
- case PIXMAN_r8g8b8:
+ case PIXMAN_b8g8r8: //tweaked
- case PIXMAN_r8g8b8:
+ case PIXMAN_b8g8r8: //tweaked
return CAIRO_FORMAT_RGB24_888;
#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0,22,0)
case PIXMAN_r8g8b8a8: case PIXMAN_r8g8b8x8:
@@ -117,8 +117,8 @@
#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0,27,2)
case PIXMAN_a8r8g8b8_sRGB:
#if HAS_PIXMAN_r8g8b8_sRGB
case PIXMAN_r8g8b8_sRGB:
#endif
- case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8:
- case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8:
- case PIXMAN_b8g8r8: case PIXMAN_b5g6r5:
+ case PIXMAN_a8r8g8b8: case PIXMAN_x8r8g8b8: //tweaked
+ case PIXMAN_r8g8b8: case PIXMAN_b5g6r5:
case PIXMAN_a1r5g5b5: case PIXMAN_x1r5g5b5: case PIXMAN_a1b5g5r5:
case PIXMAN_x1b5g5r5: case PIXMAN_a4r4g4b4: case PIXMAN_x4r4g4b4:
case PIXMAN_a4b4g4r4: case PIXMAN_x4b4g4r4: case PIXMAN_r3g3b2:
@@ -320,7 +320,7 @@
@@ -335,7 +335,7 @@
ret = PIXMAN_a8;
break;
case CAIRO_FORMAT_RGB24:
@@ -43,7 +42,7 @@
break;
case CAIRO_FORMAT_RGB30:
ret = PIXMAN_x2r10g10b10;
@@ -335,12 +335,12 @@
@@ -350,12 +350,12 @@
ret = PIXMAN_rgba_float;
break;
case CAIRO_FORMAT_RGB24_888:
@@ -60,7 +59,7 @@
return ret;
--- misc/cairo-1.10.2/src/cairo-ft-font.c
+++ misc/cairo-1.10.2/src/cairo-ft-font.c
@@ -1318,6 +1321,19 @@
@@ -1331,6 +1331,19 @@
memcpy (data, bitmap->buffer, (size_t)stride * height);
}
@@ -80,15 +79,15 @@
if (!_cairo_is_little_endian ())
{
/* Byteswap. */
@@ -2573,7 +2589,7 @@
if (unlikely (status))
return status;
- if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8r8g8b8 &&
+ if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8b8g8r8 &&
!pixman_image_get_component_alpha (surface->pixman_image)) {
_cairo_scaled_glyph_set_color_surface (scaled_glyph,
&scaled_font->base,
@@ -2679,7 +2692,7 @@
/* We tried loading a color glyph and can now check if we got
* a color glyph and set scaled_glyph->color_glyph
* accordingly */
- if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8r8g8b8 &&
+ if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8b8g8r8 &&
!pixman_image_get_component_alpha (surface->pixman_image))
{
_cairo_scaled_glyph_set_color_surface (scaled_glyph,
--- misc/cairo-1.10.2/src/cairo-image-compositor.c
+++ misc/cairo-1.10.2/src/cairo-image-compositor.c
@@ -1074,7 +1074,7 @@
+15 -14
View File
@@ -1,7 +1,7 @@
diff -ru cairo-1.17.4.orig/src/cairo.h cairo-1.17.4/src/cairo.h
--- misc/cairo-1.17.4.orig/src/cairo.h 2021-08-29 19:43:26.976435721 +0100
+++ misc/build/cairo-1.17.4/src/cairo.h 2021-08-29 19:47:41.373919330 +0100
@@ -407,6 +407,8 @@
@@ -420,6 +420,8 @@
* @CAIRO_FORMAT_RGB30: like RGB24 but with 10bpc. (Since 1.12)
* @CAIRO_FORMAT_RGB96F: 3 floats, R, G, B. (Since 1.17.2)
* @CAIRO_FORMAT_RGBA128F: 4 floats, R, G, B, A. (Since 1.17.2)
@@ -10,7 +10,7 @@ diff -ru cairo-1.17.4.orig/src/cairo.h cairo-1.17.4/src/cairo.h
*
* #cairo_format_t is used to identify the memory format of
* image data.
@@ -424,9 +426,16 @@
@@ -437,10 +439,18 @@
CAIRO_FORMAT_RGB16_565 = 4,
CAIRO_FORMAT_RGB30 = 5,
CAIRO_FORMAT_RGB96F = 6,
@@ -19,15 +19,17 @@ diff -ru cairo-1.17.4.orig/src/cairo.h cairo-1.17.4/src/cairo.h
+ CAIRO_FORMAT_RGB24_888 = 8
} cairo_format_t;
+/**
/**
+ * Need this until CAIRO_FORMAT_RGB24_888 is in some official release.
+ * Otherwise we can't reliably check if this is available or we should
+ * convert from 24-bit RGB to 32-bit RGB before passing to Cairo.
+ **/
+#define HAVE_CAIRO_FORMAT_RGB24_888
/**
* cairo_write_func_t:
+
+/**
* cairo_dither_t:
* @CAIRO_DITHER_NONE: No dithering.
* @CAIRO_DITHER_DEFAULT: Default choice at cairo compile time. Currently NONE.
diff -ru cairo-1.17.4.orig/src/cairo-image-source.c cairo-1.17.4/src/cairo-image-source.c
--- misc/cairo-1.17.4.orig/src/cairo-image-source.c 2021-08-29 19:43:26.979435585 +0100
+++ misc/build/cairo-1.17.4/src/cairo-image-source.c 2021-08-29 19:43:47.501506559 +0100
@@ -54,24 +56,23 @@ diff -ru cairo-1.17.4.orig/src/cairo-image-source.c cairo-1.17.4/src/cairo-image
diff -ru cairo-1.17.4.orig/src/cairo-image-surface.c cairo-1.17.4/src/cairo-image-surface.c
--- misc/cairo-1.17.4.orig/src/cairo-image-surface.c 2021-08-29 19:43:26.982435449 +0100
+++ misc/build/cairo-1.17.4/src/cairo-image-surface.c 2021-08-29 19:43:47.501506559 +0100
@@ -109,13 +109,15 @@
@@ -109,12 +109,14 @@
return CAIRO_FORMAT_A1;
case PIXMAN_r5g6b5:
return CAIRO_FORMAT_RGB16_565;
+ case PIXMAN_r8g8b8:
+ case PIXMAN_r8g8b8:
+ return CAIRO_FORMAT_RGB24_888;
#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0,22,0)
case PIXMAN_r8g8b8a8: case PIXMAN_r8g8b8x8:
#endif
#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0,27,2)
case PIXMAN_a8r8g8b8_sRGB:
#if HAS_PIXMAN_r8g8b8_sRGB
case PIXMAN_r8g8b8_sRGB:
#endif
- case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8: case PIXMAN_r8g8b8:
+ case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8:
+ case PIXMAN_a8b8g8r8: case PIXMAN_x8b8g8r8:
case PIXMAN_b8g8r8: case PIXMAN_b5g6r5:
case PIXMAN_a1r5g5b5: case PIXMAN_x1r5g5b5: case PIXMAN_a1b5g5r5:
case PIXMAN_x1b5g5r5: case PIXMAN_a4r4g4b4: case PIXMAN_x4r4g4b4:
@@ -332,6 +334,9 @@
@@ -347,6 +349,9 @@
case CAIRO_FORMAT_RGBA128F:
ret = PIXMAN_rgba_float;
break;
@@ -81,7 +82,7 @@ diff -ru cairo-1.17.4.orig/src/cairo-image-surface.c cairo-1.17.4/src/cairo-imag
case CAIRO_FORMAT_ARGB32:
case CAIRO_FORMAT_INVALID:
default:
@@ -736,6 +741,8 @@
@@ -743,6 +748,8 @@
case CAIRO_FORMAT_RGB30:
case CAIRO_FORMAT_RGB24:
return 32;
-122
View File
@@ -1,122 +0,0 @@
diff -ru cairo-1.17.4.orig/build/Makefile.win32.features cairo-1.17.4/build/Makefile.win32.features
--- misc/cairo-1.17.4.orig/build/Makefile.win32.features 2021-08-29 19:43:27.093430425 +0100
+++ misc/build/cairo-1.17.4/build/Makefile.win32.features 2021-08-29 19:43:47.496506785 +0100
@@ -30,7 +30,7 @@
CAIRO_HAS_FC_FONT=0
CAIRO_HAS_PS_SURFACE=1
CAIRO_HAS_PDF_SURFACE=1
-CAIRO_HAS_SVG_SURFACE=1
+CAIRO_HAS_SVG_SURFACE=0
CAIRO_HAS_TEST_SURFACES=0
CAIRO_HAS_TEE_SURFACE=0
CAIRO_HAS_XML_SURFACE=0
diff -ru cairo-1.17.4.orig/configure cairo-1.17.4/configure
--- misc/cairo-1.17.4.orig/configure 2021-08-29 19:43:26.966436173 +0100
+++ misc/build/cairo-1.17.4/configure 2021-08-29 19:43:47.500506604 +0100
@@ -17149,61 +17149,12 @@
rm -f confcache
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5
-$as_echo_n "checking for compress in -lz... " >&6; }
-if ${ac_cv_lib_z_compress+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char compress ();
-int
-main ()
-{
-return compress ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_z_compress=yes
-else
- ac_cv_lib_z_compress=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress" >&5
-$as_echo "$ac_cv_lib_z_compress" >&6; }
-if test "x$ac_cv_lib_z_compress" = xyes; then :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
have_libz=yes
$as_echo "#define HAVE_ZLIB 1" >>confdefs.h
-else
- have_libz="no (requires zlib http://www.gzip.org/zlib/)"
-fi
-
-
-else
- have_libz="no (requires zlib http://www.gzip.org/zlib/)"
-fi
-
-
save_LIBS="$LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzo2a_decompress in -llzo2" >&5
$as_echo_n "checking for lzo2a_decompress in -llzo2... " >&6; }
@@ -24319,7 +24270,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_VERSION - OK" >&5
$as_echo "$FREETYPE_VERSION - OK" >&6; }
ft_NONPKGCONFIG_CFLAGS=`$FREETYPE_CONFIG --cflags`
- ft_NONPKGCONFIG_LIBS=`$FREETYPE_CONFIG --libs`
+ ft_NONPKGCONFIG_LIBS=`$FREETYPE_CONFIG --libs | $SED -e 's/-lz//g'`
else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_VERSION - Too old" >&5
$as_echo "$FREETYPE_VERSION - Too old" >&6; }
use_ft="no ($FREETYPE_VERSION found; version $FREETYPE_MIN_VERSION from release $FREETYPE_MIN_RELEASE required)"
@@ -24329,7 +24280,7 @@
fi
ft_CFLAGS="$FREETYPE_CFLAGS"
- ft_LIBS="$FREETYPE_LIBS"
+ ft_LIBS=`echo "$FREETYPE_LIBS" | $SED -e 's/-lz//g'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's FreeType font backend feature could be enabled" >&5
@@ -24962,7 +24913,7 @@
# The ps backend requires zlib.
use_ps=$have_libz
- ps_NONPKGCONFIG_LIBS=-lz
+ ps_NONPKGCONFIG_LIBS=$ZLIB3RDLIB
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's PostScript surface backend feature could be enabled" >&5
@@ -25355,7 +25306,7 @@
# The pdf backend requires zlib.
use_pdf=$have_libz
- pdf_NONPKGCONFIG_LIBS=-lz
+ pdf_NONPKGCONFIG_LIBS=$ZLIB3RDLIB
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's PDF surface backend feature could be enabled" >&5
@@ -27218,7 +27169,7 @@
use_xml="no (requires --enable-png)"
else
use_xml=$have_libz
- xml_NONPKGCONFIG_LIBS=-lz
+ xml_NONPKGCONFIG_LIBS=$ZLIB3RDLIB
fi
-16
View File
@@ -1,16 +0,0 @@
--- a/src/cairo-pen.c 2022-03-30 09:48:14.702456922 +0100
+++ b/src/cairo-pen.c 2022-03-30 09:50:40.011793460 +0100
@@ -289,7 +289,12 @@
} else if (tolerance >= major_axis) {
num_vertices = 4;
} else {
- num_vertices = ceil (2*M_PI / acos (1 - tolerance / major_axis));
+ double divisor = acos (1 - tolerance / major_axis);
+
+ if (divisor == 0.0)
+ return 4;
+
+ num_vertices = ceil (2*M_PI / divisor);
/* number of vertices must be even */
if (num_vertices % 2)
-16
View File
@@ -1,16 +0,0 @@
--- a/src/cairo-ft-font.c 2022-08-31 09:46:52.595160200 +0100
+++ b/src/cairo-ft-font.c 2022-08-31 09:47:41.623945654 +0100
@@ -2568,9 +2568,11 @@
if (unlikely (status))
cairo_surface_destroy (&surface->base);
}
- if (unlikely (status))
- return status;
}
+
+ if (unlikely (status))
+ return status;
+
if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8r8g8b8 &&
!pixman_image_get_component_alpha (surface->pixman_image)) {
_cairo_scaled_glyph_set_color_surface (scaled_glyph,
+11
View File
@@ -0,0 +1,11 @@
--- cairo/meson.build
+++ cairo/meson.build
@@ -790,8 +790,6 @@
cairoboilerplate_dep = dependency('', required: false)
endif
-subdir('util')
-
if not get_option('tests').disabled() and feature_conf.get('CAIRO_HAS_PNG_FUNCTIONS', 0) == 1
subdir('test')
subdir('perf')
-12
View File
@@ -1,12 +0,0 @@
# -*- Mode: Diff -*-
--- src/Makefile.in
+++ src/Makefile.in
@@ -2075,7 +2075,7 @@
$(enabled_cairo_sources) \
$(NULL)
-libcairo_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols)
+libcairo_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols) -release lo -Wl,-soname -Wl,libcairo-lo.so.2
libcairo_la_LIBADD = $(CAIRO_LIBS)
libcairo_la_DEPENDENCIES = $(cairo_def_dependency)
+12
View File
@@ -0,0 +1,12 @@
diff -ur cairo.org/src/meson.build cairo/src/meson.build
--- cairo.org/src/meson.build 2025-01-29 14:45:14.418331058 +0200
+++ cairo/src/meson.build 2025-01-29 14:45:46.897440936 +0200
@@ -240,7 +240,7 @@
add_project_arguments('-DCAIRO_WIN32_STATIC_BUILD', language: 'c')
endif
-libcairo = library('cairo', cairo_sources,
+libcairo = library('cairo-lo', cairo_sources,
dependencies: deps,
c_args: cairo_no_warn_c_args + pthread_c_args + ['-DCAIRO_COMPILATION'],
cpp_args: cairo_no_warn_c_args + pthread_c_args + ['-DCAIRO_COMPILATION'],
+3 -55
View File
@@ -1,60 +1,8 @@
--- configure 2022-08-27 10:09:35.721992976 +0100
+++ configure 2022-08-27 10:10:00.363873391 +0100
@@ -14940,7 +14940,8 @@
MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common"
-MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2"
+# breaks msan
+# MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2"
# invalidate cached value if MAYBE_WARN has changed
if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then
--- src/cairo-fixed-private.h
+++ src/cairo-fixed-private.h
@@ -61,7 +61,7 @@
static inline cairo_fixed_t
_cairo_fixed_from_int (int i)
{
- return i << CAIRO_FIXED_FRAC_BITS;
+ return (unsigned)i << CAIRO_FIXED_FRAC_BITS;
}
/* This is the "magic number" approach to converting a double into fixed
@@ -249,7 +249,7 @@
} else if ((f >> CAIRO_FIXED_FRAC_BITS) > INT16_MAX) {
x = INT32_MAX;
} else {
- x = f << (16 - CAIRO_FIXED_FRAC_BITS);
+ x = (uint32_t)f << (16 - CAIRO_FIXED_FRAC_BITS);
}
return x;
--- src/cairo-gstate.c
+++ src/cairo-gstate.c
@@ -2297,7 +2297,7 @@
if (!drop || KEEP_GLYPH (transformed_glyphs[j]))
j++;
}
- memcpy (transformed_clusters, clusters,
+ if (num_clusters != 0) memcpy (transformed_clusters, clusters,
num_clusters * sizeof (cairo_text_cluster_t));
} else {
const cairo_glyph_t *cur_glyph;
@@ -2352,7 +2352,7 @@
if (! drop || KEEP_GLYPH (transformed_glyphs[j]))
j++;
}
- memcpy (transformed_clusters, clusters,
+ if (num_clusters != 0) memcpy (transformed_clusters, clusters,
num_clusters * sizeof (cairo_text_cluster_t));
} else {
const cairo_glyph_t *cur_glyph;
--- src/cairo-surface.c
+++ src/cairo-surface.c
@@ -2849,7 +2849,7 @@
if (_cairo_scaled_font_has_color_glyphs (scaled_font)) {
@@ -2952,7 +2952,7 @@
scaled_font->options.color_mode != CAIRO_COLOR_MODE_NO_COLOR)
{
utf8_copy = malloc (sizeof (char) * utf8_len);
- memcpy (utf8_copy, utf8, sizeof (char) * utf8_len);
+ if (utf8_len != 0) memcpy (utf8_copy, utf8, sizeof (char) * utf8_len);
+15
View File
@@ -0,0 +1,15 @@
diff -ur cairo.org/src/cairo-gstate.c cairo/src/cairo-gstate.c
--- cairo.org/src/cairo-gstate.c 2025-01-30 12:44:31.337402299 +0200
+++ cairo/src/cairo-gstate.c 2025-01-30 12:45:23.443833793 +0200
@@ -2357,8 +2357,9 @@
if (! drop || KEEP_GLYPH (transformed_glyphs[j]))
j++;
}
- memcpy (transformed_clusters, clusters,
- num_clusters * sizeof (cairo_text_cluster_t));
+ if (num_clusters)
+ memcpy (transformed_clusters, clusters,
+ num_clusters * sizeof (cairo_text_cluster_t));
} else {
const cairo_glyph_t *cur_glyph;
+15
View File
@@ -0,0 +1,15 @@
diff -ur cairo.org/src/cairo-gstate.c cairo/src/cairo-gstate.c
--- cairo.org/src/cairo-gstate.c 2025-01-30 12:53:23.553726623 +0200
+++ cairo/src/cairo-gstate.c 2025-01-30 12:54:05.543062183 +0200
@@ -2302,8 +2302,9 @@
if (!drop || KEEP_GLYPH (transformed_glyphs[j]))
j++;
}
- memcpy (transformed_clusters, clusters,
- num_clusters * sizeof (cairo_text_cluster_t));
+ if (num_clusters != 0)
+ memcpy (transformed_clusters, clusters,
+ num_clusters * sizeof (cairo_text_cluster_t));
} else {
const cairo_glyph_t *cur_glyph;
-11
View File
@@ -1,14 +1,3 @@
--- misc/pixman-0.24.4/Makefile.in 2011-11-06 22:11:25.000000000 +0100
+++ misc/build/pixman-0.24.4/Makefile.in 2011-12-16 09:06:45.317211035 +0100
@@ -385,7 +385,7 @@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = pixman demos test
+SUBDIRS = pixman
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = pixman-1.pc
GPGKEY = 3892336E
--- misc/pixman-0.24.4/pixman/pixman-utils.c
+++ misc/build/pixman-0.24.4/pixman/pixman-utils.c
@@ -27,6 +27,7 @@
+3 -6
View File
@@ -38,18 +38,15 @@ diff -ru pixman-0.42.2.orig/pixman/pixman-fast-path.c pixman-0.42.2/pixman/pixma
px = (x & 0xffff) >> x_phase_shift;
py = (y & 0xffff) >> y_phase_shift;
@@ -2837,9 +2837,9 @@
@@ -2836,7 +2836,7 @@
sgtot = CLIP (sgtot, 0, 0xff);
sbtot = CLIP (sbtot, 0, 0xff);
#ifdef WORDS_BIGENDIAN
- buffer[k] = (satot << 0) | (srtot << 8) | (sgtot << 16) | (sbtot << 24);
+ buffer[k] = (satot << 0) | (srtot << 8) | (sgtot << 16) | ((uint32_t)sbtot << 24);
#else
- buffer[k] = (satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0);
+ buffer[k] = ((uint32_t)satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0);
#endif
next:
vx += ux;
diff -ru pixman-0.42.2.orig/pixman/pixman-sse2.c pixman-0.42.2/pixman/pixman-sse2.c
--- misc/pixman-0.42.2/pixman/pixman-sse2.c 2022-02-02 05:51:25.000000000 +0900
+++ misc/build/pixman-0.42.2/pixman/pixman-sse2.c 2022-11-28 22:11:19.276969466 +0900
+39 -63
View File
@@ -1,39 +1,15 @@
--- a/pixman/pixman/pixman-x86.c
+++ b/pixman/pixman/pixman-x86.c
@@ -77,13 +77,20 @@
@@ -74,6 +74,8 @@
#else
-#define _PIXMAN_X86_64 \
- (defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64))
+#if (defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64))
+#define _PIXMAN_X86_64 1
+#else
+#define _PIXMAN_X86_64 0
+#endif
static pixman_bool_t
have_cpuid (void)
{
-#if _PIXMAN_X86_64 || defined (_MSC_VER)
+#if defined(__EMSCRIPTEN__)
+
+ return FALSE;
+
+#elif _PIXMAN_X86_64 || defined (_MSC_VER)
return TRUE;
@@ -109,6 +109,8 @@
#endif
}
+#if !defined(__EMSCRIPTEN__)
+
static void
pixman_cpuid (uint32_t feature,
uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d)
@@ -156,10 +156,17 @@
#if defined (__GNUC__)
#include <cpuid.h>
#elif defined(_MSC_VER)
@@ -100,10 +102,17 @@
#error Unknown compiler
#endif
}
@@ -51,7 +27,7 @@
uint32_t a, b, c, d;
cpu_features_t features = 0;
@@ -202,6 +202,8 @@
@@ -149,6 +158,8 @@
}
return features;
@@ -72,37 +48,37 @@
#include <xmmintrin.h>
#include <emmintrin.h>
#include <tmmintrin.h>
--- a/pixman/configure
+++ b/pixman/configure
@@ -14207,7 +14207,11 @@
#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
#error "Need GCC >= 3.4 for MMX intrinsics"
#endif
+#if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+#else
+#include <xmmintrin.h>
+#endif
#include <stdint.h>
--- a/pixman/meson.build
+++ b/pixman/meson.build
@@ -104,7 +104,11 @@
if host_machine.cpu_family() == 'x86_64' or cc.get_id() == 'msvc'
have_mmx = true
elif host_machine.cpu_family() == 'x86' and cc.compiles('''
+ #if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+ #else
+ #include <xmmintrin.h>
+ #endif
#include <stdint.h>
/* Check support for block expressions */
@@ -14308,7 +14308,9 @@
# error "Need GCC >= 4.2 for SSE2 intrinsics on x86"
# endif
#endif
+#if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+#endif
#include <xmmintrin.h>
#include <emmintrin.h>
int param;
@@ -14380,7 +14380,9 @@
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+#endif
#include <xmmintrin.h>
#include <emmintrin.h>
#include <tmmintrin.h>
/* Check support for block expressions */
@@ -167,7 +171,9 @@
# error "Need GCC >= 4.2 for SSE2 intrinsics on x86"
# endif
#endif
+ #if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+ #endif
#include <xmmintrin.h>
#include <emmintrin.h>
int param;
@@ -202,7 +208,9 @@
if not use_ssse3.disabled() and not (cc.get_id() == 'msvc' and cc.version().version_compare('<16') and host_machine.cpu_family() == 'x86_64')
if host_machine.cpu_family().startswith('x86')
if cc.compiles('''
+ #if !defined(__EMSCRIPTEN__)
#include <mmintrin.h>
+ #endif
#include <xmmintrin.h>
#include <emmintrin.h>
int param;
+1 -1
View File
@@ -51,7 +51,7 @@ $(call gb_ExternalProject_get_state_target,harfbuzz,build) : | $(call gb_Externa
$(call gb_ExternalProject_run,build,\
PKG_CONFIG_PATH="${PKG_CONFIG_PATH}$(LIBO_PATH_SEPARATOR)$(gb_UnpackedTarball_workdir)/graphite$(if $(SYSTEM_ICU),,$(LIBO_PATH_SEPARATOR)$(gb_UnpackedTarball_workdir)/icu)" \
PYTHONWARNINGS= \
$(MESON) setup builddir \
$(MESON) setup --wrap-mode nofallback builddir \
-Ddefault_library=static -Dbuildtype=$(if $(ENABLE_DBGUTIL),debug,$(if $(ENABLE_DEBUG),debugoptimized,release \
$(if $(call gb_Module__symbols_enabled,harfbuzz),$(addsuffix "$(strip $(gb_DEBUGINFO_FLAGS))",-Dc_args= -Dcpp_args=)))) \
-Dauto_features=disabled \