Although cairo-perf is not written to perform explicit failure testing of
cairo, it does generate long sequences of cairo operations which often
trigger unexpected errors. By including it with make check, it becomes
even easier for the programmer to check that one has not broken cairo in
terms of expected behaviour or performance.
The interface of the various buffer/image_diff functions is improved to
provide the maximum pixel difference in addition to the number of pixels
that differ. This value can then be used to compare against a per-backend
tolerance.
Currently I've set the SVG backend's tolerance to 1 to handle some issues
we're currently seeing of single-bit differences on different systems, (but
we're not exactly sure why yet).
Also I improved the image_diff routines to properly report a status value
on failure rather than the bogus value of -1 for pixels_changed.
The ChangeLog.pre-* files once generated, cannot be outdated and don't need
update anymore, but the main ChangeLog needs update everytime a git operation
is performed (commit, checkout, etc.) Previously, we were forcing a ChangeLog
recreation by making it a phony target. Now, we break it into two parts: One
up to the latest tag (as returned by git-describe), and another from there.
The former is, again, up-to-date when it exists. The latter, we make it
depend on .git. And since the latter is pretty short anyway, you get a very
first regeneration of it when you change your repo (and that only happens
during 'make dist' by the way.)
For an imaginary cairo-3.6.4 version, we now will generate the following
ChangeLog files:
ChangeLog
ChangeLog.pre-3.4
ChangeLog.pre-3.2
ChangeLog.pre-3.0
ChangeLog.pre-2.0
ChangeLog.pre-1.0
- Add new target recheck, that checks only failed tests
- Add targets test and retest, and make html after (re)checking
- Make targets html and index.html lazy, only update if any tests changed
- Improve build system such that checking one test (using TESTS=...) doesn't
build all tests
- Remove pixman-rotate from XFAIL
The big change here is to change the upload directory to be the snapshots directory
rather than the releases directory. We also use make dist rather than make distcheck
since there are currently a few tests still failing.
Add target "zips" to create zip file based distribution for Win32.
Produce a cairo.def file for distribution by preprocessing the relevant header files and grepping for declarations of functions that start with cairo_. Works for now, will have to modify later if necessary. Use the .def file when linking on Win32.
Build pixman internally as a private part of cairo, with suitable name changes to avoid any visible pixman symbols in the cairo library:
Descend into pixman.
Drop libpixman from Requires.
Don't check for libpixman. Check version of pkg-config and use Requires.private instead of Requires in cairo.pc if possible. Generate pixman Makefiles.
Rip out release-publish target and installation of libpixman.pc.
Add pixman-remap.h. Drop libpixman.la target.
Fix to include config.h rather than ../config.h
This is the cpp magic to rename all pixman functions from the various fb, Fb, INT_pixman, pixman, Render, _Render, or no prefix to _cairo_pixman_ prefixes.
Include pixman-remap.h to get all the cairo-internalized names.
Add -Ipixman/src to get at pixman-remap.h.