commit a2982962d8d4019cd9db2136126e382ff3ed7de6 Author: Jakub Bogusz <qbo...@pld-linux.org> Date: Mon Sep 25 17:30:35 2023 +0200
- updated to 1.18.0 cairo-link.patch | 11 ---- cairo-mingw32-gl.patch | 158 ------------------------------------------------ cairo-mingw32.patch | 70 ++------------------- crossmingw32-cairo.spec | 110 +++++++++++++++++---------------- 4 files changed, 59 insertions(+), 290 deletions(-) --- diff --git a/crossmingw32-cairo.spec b/crossmingw32-cairo.spec index 989babc..4f030ef 100644 --- a/crossmingw32-cairo.spec +++ b/crossmingw32-cairo.spec @@ -1,36 +1,29 @@ -# -# Conditional build: -%bcond_with opengl # OpenGL surface backend - +# TODO: dwrite=enabled (BR: libd2d1, libdwrite, d2d1.h, dwrite.h Summary: Cairo - multi-platform 2D graphics library - cross MinGW32 version Summary(pl.UTF-8): Cairo - wieloplatformowa biblioteka graficzna 2D - skrośna wersja MinGW32 %define realname cairo Name: crossmingw32-%{realname} -Version: 1.16.0 -Release: 3 +Version: 1.18.0 +Release: 1 License: LGPL v2.1 or MPL v1.1 Group: Development/Libraries Source0: https://www.cairographics.org/releases/%{realname}-%{version}.tar.xz -# Source0-md5: f19e0353828269c22bd72e271243a552 -Patch0: cairo-link.patch -Patch1: cairo-mingw32.patch -# https://gitlab.freedesktop.org/cairo/cairo/issues/204 -Patch2: cairo-mingw32-gl.patch +# Source0-md5: 3f0685fbadc530606f965b9645bb51d9 +Patch0: cairo-mingw32.patch URL: https://www.cairographics.org/ -BuildRequires: autoconf >= 2.63 -BuildRequires: automake >= 1:1.11 BuildRequires: crossmingw32-fontconfig >= 2.2.95 -BuildRequires: crossmingw32-freetype >= 2.5.1 +BuildRequires: crossmingw32-freetype >= 2.13.0 BuildRequires: crossmingw32-glib2 >= 2.14 -BuildRequires: crossmingw32-libpng -BuildRequires: crossmingw32-pixman >= 0.30.0 +BuildRequires: crossmingw32-libpng >= 1.4.0 +BuildRequires: crossmingw32-pixman >= 0.36.0 BuildRequires: crossmingw32-zlib -BuildRequires: libtool >= 2:2.2 +BuildRequires: meson >= 0.59.0 +BuildRequires: ninja >= 1.5 BuildRequires: pkgconfig >= 1:0.18 Requires: crossmingw32-fontconfig >= 2.2.95 -Requires: crossmingw32-freetype >= 2.5.1 -Requires: crossmingw32-libpng -Requires: crossmingw32-pixman >= 0.30.0 +Requires: crossmingw32-freetype >= 2.13.0 +Requires: crossmingw32-libpng >= 1.4.0 +Requires: crossmingw32-pixman >= 0.36.0 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define no_install_post_strip 1 @@ -107,9 +100,9 @@ Summary: DLL Cairo library for Windows Summary(pl.UTF-8): Biblioteka DLL Cairo dla Windows Group: Applications/Emulators Requires: crossmingw32-fontconfig-dll >= 2.2.95 -Requires: crossmingw32-freetype-dll >= 2.5.1 -Requires: crossmingw32-libpng-dll -Requires: crossmingw32-pixman-dll >= 0.30.0 +Requires: crossmingw32-freetype-dll >= 2.13.0 +Requires: crossmingw32-libpng-dll >= 1.4.0 +Requires: crossmingw32-pixman-dll >= 0.36.0 %description dll DLL Cairo library for Windows. @@ -158,46 +151,53 @@ Biblioteka DLL Cairo GObject dla Windows. %prep %setup -q -n %{realname}-%{version} %patch0 -p1 -%patch1 -p1 -%patch2 -p1 + +cat > meson-cross.txt <<'EOF' +[host_machine] +system = 'windows' +cpu_family = 'x86' +cpu = 'i386' +endian='little' +[binaries] +c = '%{target}-gcc' +cpp = '%{target}-g++' +ar = '%{target}-ar' +windres = '%{target}-windres' +pkgconfig = 'pkg-config' +[built-in options] +%ifarch %{ix86} +c_args = ['%(echo %{rpmcflags} | sed -e "s/ \+/ /g;s/ /', '/g")'] +%else +# arch-specific flags (like alpha's -mieee) are not valid for i386 gcc. +c_args = ['-O2'] +%endif +EOF %build export PKG_CONFIG_LIBDIR=%{_prefix}/lib/pkgconfig -%{__libtoolize} -%{__aclocal} -I build -%{__autoheader} -%{__autoconf} -%{__automake} -%configure \ - CPPFLAGS="%{rpmcppflags} -Dffs=__builtin_ffs" \ - lt_cv_deplibs_check_method=pass_all \ - --target=%{target} \ - --host=%{target} \ - --disable-gtk-doc \ - --disable-silent-rules \ - --disable-xlib \ - --enable-ft \ - %{?with_opengl:--enable-gl} \ - --enable-pdf \ - --enable-png \ - --enable-ps \ - --enable-tee \ - --enable-windows \ - --enable-xml - -%{__make} +%meson build \ + --cross-file meson-cross.txt \ + -Ddwrite=disabled \ + -Dfontconfig=enabled \ + -Dfreetype=enabled \ + -Dpng=enabled \ + -Dspectre=disabled \ + -Dtee=enabled \ + -Dtests=disabled \ + -Dxcb=disabled \ + -Dxlib=disabled \ + -Dzlib=enabled + +%ninja_build -C build %install rm -rf $RPM_BUILD_ROOT -%{__make} install \ - DESTDIR=$RPM_BUILD_ROOT +%ninja_install -C build install -d $RPM_BUILD_ROOT%{_dlldir} %{__mv} $RPM_BUILD_ROOT%{_prefix}/bin/*.dll $RPM_BUILD_ROOT%{_dlldir} -%{__rm} $RPM_BUILD_ROOT%{_libdir}/libcairo*.la - %if 0%{!?debug:1} %{target}-strip --strip-unneeded -R.comment -R.note $RPM_BUILD_ROOT%{_dlldir}/*.dll %{target}-strip -g -R.comment -R.note $RPM_BUILD_ROOT%{_libdir}/*.a @@ -211,7 +211,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(644,root,root,755) # COPYING contains only notes, not LGPL/MPL texts -%doc AUTHORS COPYING ChangeLog NEWS README +%doc AUTHORS COPYING NEWS README.md %{_libdir}/libcairo.dll.a %{_libdir}/libcairo-script-interpreter.dll.a %{_includedir}/cairo @@ -219,17 +219,15 @@ rm -rf $RPM_BUILD_ROOT %{_pkgconfigdir}/cairo.pc %{_pkgconfigdir}/cairo-fc.pc %{_pkgconfigdir}/cairo-ft.pc -%{?with_opengl:%{_pkgconfigdir}/cairo-gl.pc} %{_pkgconfigdir}/cairo-pdf.pc %{_pkgconfigdir}/cairo-png.pc %{_pkgconfigdir}/cairo-ps.pc %{_pkgconfigdir}/cairo-script.pc +%{_pkgconfigdir}/cairo-script-interpreter.pc %{_pkgconfigdir}/cairo-svg.pc %{_pkgconfigdir}/cairo-tee.pc -%{?with_opengl:%{_pkgconfigdir}/cairo-wgl.pc} %{_pkgconfigdir}/cairo-win32.pc %{_pkgconfigdir}/cairo-win32-font.pc -%{_pkgconfigdir}/cairo-xml.pc %files static %defattr(644,root,root,755) diff --git a/cairo-link.patch b/cairo-link.patch deleted file mode 100644 index 8bce68a..0000000 --- a/cairo-link.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- cairo-1.12.4/configure.ac~ 2012-09-13 13:38:21.000000000 +0200 -+++ cairo-1.12.4/configure.ac 2012-10-07 07:13:25.814449494 +0200 -@@ -71,7 +71,7 @@ CAIRO_ENABLE_SURFACE_BACKEND(xlib, Xlib, - if test "x$no_x" = xyes; then - use_xlib="no (requires X development libraries)" - else -- xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS" -+ xlib_NONPKGCONFIG_LIBS="$X_LIBS -lX11 -lXext $X_EXTRA_LIBS" - xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS - fi]) - ]) diff --git a/cairo-mingw32-gl.patch b/cairo-mingw32-gl.patch deleted file mode 100644 index af0eb92..0000000 --- a/cairo-mingw32-gl.patch +++ /dev/null @@ -1,158 +0,0 @@ ---- cairo-1.16.0/src/cairo-gl-composite.c.orig 2018-10-21 18:12:52.400945600 +0200 -+++ cairo-1.16.0/src/cairo-gl-composite.c 2018-10-21 18:14:57.924277503 +0200 -@@ -340,7 +340,7 @@ _cairo_gl_context_setup_operand (cairo_g - case CAIRO_GL_OPERAND_CONSTANT: - break; - case CAIRO_GL_OPERAND_TEXTURE: -- glActiveTexture (GL_TEXTURE0 + tex_unit); -+ ctx->dispatch.ActiveTexture (GL_TEXTURE0 + tex_unit); - glBindTexture (ctx->tex_target, operand->texture.tex); - _cairo_gl_texture_set_extend (ctx, ctx->tex_target, - operand->texture.attributes.extend); -@@ -358,7 +358,7 @@ _cairo_gl_context_setup_operand (cairo_g - case CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE: - case CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT: -- glActiveTexture (GL_TEXTURE0 + tex_unit); -+ ctx->dispatch.ActiveTexture (GL_TEXTURE0 + tex_unit); - glBindTexture (ctx->tex_target, operand->gradient.gradient->tex); - _cairo_gl_texture_set_extend (ctx, ctx->tex_target, operand->gradient.extend); - _cairo_gl_texture_set_filter (ctx, ctx->tex_target, CAIRO_FILTER_BILINEAR); -@@ -481,9 +481,9 @@ _cairo_gl_set_operator (cairo_gl_context - } - - if (ctx->current_target->base.content == CAIRO_CONTENT_ALPHA) { -- glBlendFuncSeparate (GL_ZERO, GL_ZERO, src_factor, dst_factor); -+ ctx->dispatch.BlendFuncSeparate (GL_ZERO, GL_ZERO, src_factor, dst_factor); - } else if (ctx->current_target->base.content == CAIRO_CONTENT_COLOR) { -- glBlendFuncSeparate (src_factor, dst_factor, GL_ONE, GL_ONE); -+ ctx->dispatch.BlendFuncSeparate (src_factor, dst_factor, GL_ONE, GL_ONE); - } else { - glBlendFunc (src_factor, dst_factor); - } ---- cairo-1.16.0/src/cairo-gl-device.c.orig 2018-10-21 18:12:52.400945600 +0200 -+++ cairo-1.16.0/src/cairo-gl-device.c 2018-10-21 18:16:20.617609890 +0200 -@@ -341,9 +341,9 @@ _cairo_gl_context_activate (cairo_gl_con - _cairo_gl_composite_flush (ctx); - _cairo_gl_context_destroy_operand (ctx, ctx->max_textures - 1); - } -- glActiveTexture (ctx->max_textures - 1); -+ ctx->dispatch.ActiveTexture (ctx->max_textures - 1); - } else { -- glActiveTexture (GL_TEXTURE0 + tex_unit); -+ ctx->dispatch.ActiveTexture (GL_TEXTURE0 + tex_unit); - } - } - -diff -x '*.am' -x '*.in' -rupwN cairo-1.12.16.old/src/cairo-gl-dispatch-private.h cairo-1.12.16.new/src/cairo-gl-dispatch-private.h ---- cairo-1.12.16.old/src/cairo-gl-dispatch-private.h 2013-08-26 15:07:21 +0000 -+++ cairo-1.12.16.new/src/cairo-gl-dispatch-private.h 2014-08-02 14:58:08 +0000 -@@ -59,6 +59,16 @@ typedef struct _cairo_gl_dispatch_entry - offsetof(cairo_gl_dispatch_t, name)} - #define DISPATCH_ENTRY_LAST { { NULL, NULL, NULL }, 0 } - -+cairo_private cairo_gl_dispatch_entry_t dispatch_multitexture_entries[] = { -+ DISPATCH_ENTRY_ARB (ActiveTexture), -+ DISPATCH_ENTRY_LAST -+}; -+ -+cairo_private cairo_gl_dispatch_entry_t dispatch_blendfuncseparate_entries[] = { -+ DISPATCH_ENTRY_EXT (BlendFuncSeparate), -+ DISPATCH_ENTRY_LAST -+}; -+ - cairo_private cairo_gl_dispatch_entry_t dispatch_buffers_entries[] = { - DISPATCH_ENTRY_ARB (GenBuffers), - DISPATCH_ENTRY_ARB (BindBuffer), -diff -x '*.am' -x '*.in' -rupwN cairo-1.12.16.old/src/cairo-gl-dispatch.c cairo-1.12.16.new/src/cairo-gl-dispatch.c ---- cairo-1.12.16.old/src/cairo-gl-dispatch.c 2013-08-26 15:07:21 +0000 -+++ cairo-1.12.16.new/src/cairo-gl-dispatch.c 2014-08-02 15:00:10 +0000 -@@ -226,6 +226,45 @@ _cairo_gl_dispatch_init_multisampling (c - return CAIRO_STATUS_SUCCESS; - } - -+static cairo_status_t -+_cairo_gl_dispatch_init_multitexture (cairo_gl_dispatch_t *dispatch, -+ cairo_gl_get_proc_addr_func_t get_proc_addr, -+ int gl_version, -+ cairo_gl_flavor_t gl_flavor) -+{ -+ cairo_gl_dispatch_name_t dispatch_name = CAIRO_GL_DISPATCH_NAME_EXT; -+ -+ if (gl_version >= CAIRO_GL_VERSION_ENCODE (1, 3)) -+ dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; -+ else if (!_cairo_gl_has_extension ("GL_ARB_multitexture")) -+ return CAIRO_STATUS_DEVICE_ERROR; -+ -+ _cairo_gl_dispatch_init_entries (dispatch, get_proc_addr, -+ dispatch_multitexture_entries, -+ dispatch_name); -+ return CAIRO_STATUS_SUCCESS; -+} -+ -+static cairo_status_t -+_cairo_gl_dispatch_init_blendfuncseparate (cairo_gl_dispatch_t *dispatch, -+ cairo_gl_get_proc_addr_func_t get_proc_addr, -+ int gl_version, -+ cairo_gl_flavor_t gl_flavor) -+{ -+ cairo_gl_dispatch_name_t dispatch_name = CAIRO_GL_DISPATCH_NAME_EXT; -+ -+ if (gl_version >= CAIRO_GL_VERSION_ENCODE (1, 4)) -+ { -+ dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; -+ } else if (!_cairo_gl_has_extension ("GL_EXT_blend_func_separate")) -+ return CAIRO_STATUS_DEVICE_ERROR; -+ -+ _cairo_gl_dispatch_init_entries (dispatch, get_proc_addr, -+ dispatch_blendfuncseparate_entries, -+ dispatch_name); -+ return CAIRO_STATUS_SUCCESS; -+} -+ - cairo_status_t - _cairo_gl_dispatch_init (cairo_gl_dispatch_t *dispatch, - cairo_gl_get_proc_addr_func_t get_proc_addr) -@@ -257,5 +296,15 @@ _cairo_gl_dispatch_init (cairo_gl_dispat - if (status != CAIRO_STATUS_SUCCESS) - return status; - -+ status = _cairo_gl_dispatch_init_multitexture (dispatch, get_proc_addr, -+ gl_version, gl_flavor); -+ if (status != CAIRO_STATUS_SUCCESS) -+ return status; -+ -+ status = _cairo_gl_dispatch_init_blendfuncseparate (dispatch, get_proc_addr, -+ gl_version, gl_flavor); -+ if (status != CAIRO_STATUS_SUCCESS) -+ return status; -+ - return CAIRO_STATUS_SUCCESS; - } -diff -x '*.am' -x '*.in' -rupwN cairo-1.12.16.old/src/cairo-gl-glyphs.c cairo-1.12.16.new/src/cairo-gl-glyphs.c ---- cairo-1.12.16.old/src/cairo-gl-glyphs.c 2013-08-26 15:07:21 +0000 -+++ cairo-1.12.16.new/src/cairo-gl-glyphs.c 2014-08-01 21:45:43 +0000 -@@ -130,7 +130,7 @@ _cairo_gl_glyph_cache_add_glyph (cairo_g - return status; - - /* XXX: Make sure we use the mask texture. This should work automagically somehow */ -- glActiveTexture (GL_TEXTURE1); -+ ctx->dispatch.ActiveTexture (GL_TEXTURE1); - status = _cairo_gl_surface_draw_image (cache->surface, glyph_surface, - 0, 0, - glyph_surface->width, glyph_surface->height, -diff -x '*.am' -x '*.in' -rupwN cairo-1.12.16.old/src/cairo-gl-private.h cairo-1.12.16.new/src/cairo-gl-private.h ---- cairo-1.12.16.old/src/cairo-gl-private.h 2013-08-26 15:07:21 +0000 -+++ cairo-1.12.16.new/src/cairo-gl-private.h 2014-08-01 21:35:01 +0000 -@@ -325,6 +325,11 @@ typedef struct _cairo_gl_dispatch { - void (*FramebufferTexture2DMultisample) (GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level, GLsizei samples); -+ -+ /* Misc */ -+ void (*ActiveTexture) (GLenum texture); -+ void (*BlendFuncSeparate) (GLenum sfactorRGB, GLenum dfactorRGB, -+ GLenum sfactorAlpha, GLenum dfactorAlpha); - } cairo_gl_dispatch_t; - - struct _cairo_gl_context { diff --git a/cairo-mingw32.patch b/cairo-mingw32.patch index e3a43b9..7a2a34e 100644 --- a/cairo-mingw32.patch +++ b/cairo-mingw32.patch @@ -1,71 +1,11 @@ ---- cairo-1.12.0/util/cairo-missing/cairo-missing.h.orig 2012-02-02 01:48:15.000000000 +0100 -+++ cairo-1.12.0/util/cairo-missing/cairo-missing.h 2012-03-25 12:56:29.970335651 +0200 -@@ -37,7 +37,7 @@ - #include <string.h> - #include <sys/types.h> - --#ifdef _WIN32 -+#if defined(_WIN32) && !defined(__MINGW32__) - #define WIN32_LEAN_AND_MEAN - #include <windows.h> - ---- cairo-1.14.4/boilerplate/cairo-boilerplate-win32.c.orig 2015-10-27 22:04:22.000000000 +0100 -+++ cairo-1.14.4/boilerplate/cairo-boilerplate-win32.c 2015-10-30 17:16:38.317127499 +0100 -@@ -26,6 +26,7 @@ - - #include "cairo-boilerplate-private.h" - -+#include <limits.h> - #include <cairo-win32.h> - - static const cairo_user_data_key_t win32_closure_key; ---- cairo-1.14.12/src/cairo-compiler-private.h.orig 2017-12-04 23:24:46.000000000 +0100 -+++ cairo-1.14.12/src/cairo-compiler-private.h 2018-09-27 21:39:54.869047194 +0200 -@@ -195,7 +195,7 @@ +--- cairo-1.18.0/src/cairo-compiler-private.h.orig 2023-09-25 17:24:13.379273100 +0200 ++++ cairo-1.18.0/src/cairo-compiler-private.h 2023-09-25 17:24:48.662415288 +0200 +@@ -149,7 +149,7 @@ #define __attribute__(x) #endif -#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER) +#if (defined(__WIN32__) && !defined(__WINE__) && !defined(__MINGW32__)) || defined(_MSC_VER) #define access _access - #define fdopen _fdopen - #define hypot _hypot ---- cairo-1.16.0/configure.ac.orig 2018-10-21 16:21:17.304355378 +0200 -+++ cairo-1.16.0/configure.ac 2018-10-21 17:09:07.484322608 +0200 -@@ -334,7 +334,12 @@ - AC_CHECK_HEADER(GL/gl.h,, [use_gl="no (gl.pc nor OpenGL headers not found)"]) - if test "x$use_gl" = "xyes"; then - gl_NONPKGCONFIG_CFLAGS= -+ if test "x$have_windows" = xyes; then -+ gl_NONPKGCONFIG_LIBS="-lopengl32" -+ gl_REQUIRES= -+ else - gl_NONPKGCONFIG_LIBS="-lGL" -+ fi - fi]) - - if test "x$have_dl" = "xyes" -a "x$have_dlsym" = "xyes"; then ---- cairo-1.16.0/test/Makefile.am.orig 2018-08-17 03:10:53.000000000 +0200 -+++ cairo-1.16.0/test/Makefile.am 2018-10-21 18:46:12.054256102 +0200 -@@ -17,8 +17,11 @@ endif - endif - - if CAIRO_HAS_GL_SURFACE -+if CAIRO_HAS_XLIB_SURFACE -+# gl_surface test relies on X11/GLX - test_sources += $(gl_surface_test_sources) - endif -+endif - - if CAIRO_HAS_EGL_FUNCTIONS - test_sources += $(egl_surface_test_sources) ---- cairo-1.16.0/boilerplate/cairo-boilerplate-wgl.c.orig 2018-08-17 03:10:53.000000000 +0200 -+++ cairo-1.16.0/boilerplate/cairo-boilerplate-wgl.c 2018-10-21 20:14:56.554195307 +0200 -@@ -35,6 +35,7 @@ - - #include "cairo-boilerplate-private.h" - -+#include <GL/gl.h> - #include <cairo-gl.h> - - static const cairo_user_data_key_t gl_closure_key; + #ifndef R_OK + #define R_OK 4 ================================================================ ---- gitweb: http://git.pld-linux.org/gitweb.cgi/packages/crossmingw32-cairo.git/commitdiff/a2982962d8d4019cd9db2136126e382ff3ed7de6 _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit