A new meta-surface backend for serialising drawing operations to a
CairoScript file. The principal use (as currently envisaged) is to provide
a round-trip testing mechanism for CairoScript - i.e. we can generate
script files for every test in the suite and check that we can replay them
with perfect fidelity. (Obviously this does not provide complete coverage
of CairoScript's syntax, but should give reasonable coverage over the
operators.)
This tool can be used to trace all the cairo function calls made by an
applications. This is useful for either extracting a test case triggering
a bug from an application, or simply to get a general idea of how an
application is using cairo.
After make install, cairo-trace program arguments, will print out all the
cairo calls to the terminal and also capture theme in ./program.$pid.trace
The format of the output is CairoScript, watch this space for more
cairo-script tools!
Avoid calling libtool to link every single test case, by building just one
binary from all the sources.
This binary is then given the task of choosing tests to run (based on user
selection and individual test requirement), forking each test into its own
process and accumulating the results.
That is, the vesion that appears as:
http://cairographics.org/manual
and:
http://cairographics.org/cairo-manual.tar.gz
It was silly that we previously required a manual step to
upload the documentation (which we regularly forgot to do)
and that it uploaded with a date in the name rather than a
version. So we just drop the old doc-publish Makefile target
now as it's just not useful anymore.
This arranges so that a versioned manual will be available of the form:
http://cairographics.org/manual-X.Y.Z
for all future releases and snapshots. We're going through the process
of manually doing all former releases, such as:
http://cairographics.org/manual-1.2.0/
which the LSB folks wanted to reference.
Richard Hult reported that -Wl,--allow-shlib-undefined was incorrectly
being identified as supported by gcc under Mac OS/X:
configure:25103: checking whether gcc supports -Wl,--allow-shlib-undefined
configure:25117: gcc -c -Werror -Wl,--allow-shlib-undefined conftest.c
>&5
i686-apple-darwin9-gcc-4.0.1: --allow-shlib-undefined: linker input file
unused because linking not done
So instead of just checking whether the compiler accepts the flag, check
that we can actually link a dummy file.
Dolt is a hack to speed up libtool-based build systems:
http://dolt.freedesktop.org/
It's completely transparent to the user. Brings make time
of cairo from 70s down to 20s. Yay!
Bug 18140 identifies a case where we have an atomic increment, but not an
atomic exchange. We need both to implement atomic reference counting, so
add a second check to detect whether __sync_val_compare_and_swap
generates a non-atomic instruction.
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18140.
Add the core support to cairo-test for running the test-suite under a
malloc fault injector. This commit contains the adjustments to
cairo_test_run() to repeat the test if it detects a failure due to fault
injection and complains if it detects unreported faults or memory leaks.
As reported by Damian Frank:
"I ran into a hitch with the Makefile.win32 infrastructure. It uses -MD and
-LD when linking regardless of the config, but it should be using -MDd and
-LDd for the debug config. I believe both the Makefile.win32.common and
src/Makefile.win32 files include erroneous declarations. This produces
warnings at link time about a mismatch when linking against properly created
debug libs (for instance, I had a zlib built as "LIB ASM Debug" that linked
properly against the debug runtime).
This problem applies to pixman too; can you pass this along to the
maintainer?"
Would be delighted to if someone commits a fix to pixman reading this
commit message.
The font data and rendering is adapted from Keith Packard's Twin
window system. The hinting stuff is not ported yet, but hey, it renders!
The implementation uses user fonts, and the user font backend is modified
to use this font face (which we call "twin" font face internally) when
a toy font is needed.
The font face layer is then modified to use this font if:
- The toy font face "cairo" is asked for, or
- No native font backend is available, or
- The preferred native font backend fails to return a font with
STATUS_UNSUPPORTED. No font backend does this right now but
the idea is to change FreeType to return it if no fonts found
on the system.
We also allow building with no font backends now!
The new doc/tutorial/src/twin.c file tests the twin face at various
sizes.
I know that I didn't create these Makefile.win32.features files,
so I assume that they are the result of Behdad's build magic and
that he just forgot to add them to .gitignore.
This reverts commit 03c37f56b2.
The AC_PROG_MKDIR_P is also one of those autoconf macros defined
in newer versions only. Since we use mkdir -p in releasing scripts
only, it's not a big deal if it's not portable.
By using top_srcdir if available. Make's include is relative to
current dir, not the Makefile being processed. That makes it hard
to include Makefile's relatively.
When I designed this first I thought people can define make vars on the
command line to override default features. That works. However, it's
natural to want to define the list of features in the toplevel Makefile
and not on command line. So, we don't override user's var now. They
can set a make feature var to 0 to disable it.
The macros CAIRO_BEGIN_DECLS and CAIRO_END_DECLS are declared in two
places: config.h and cairo.h. On Win32 build there is no config.h. So,
we can't rely on pulling CAIRO_BEGIN_DECLS from there. Hence, we now:
* Not add those declarations to config.h anymore,
* Test that every cairo private header includes some other cairo
header before any other includes.
These two are fairly enough to ensure that cairo.h is seen from all
private headers. There's still the case of headers not including
any header file at all. I'll fix that later.
Previously I made the mutex implementation code to use Windows mutexes
conditional on HAVE_WINDOWS_H. This was suppposed to be a more wine-friendly
version of checking for a Windows platform. However, it also meant that
when compiling without config.h, one had to stuff a #define for HAVE_WINDOWS_H
somewhere. Traditionally it was put in cairo-features-win32.h, and that
practice was carried over even after my build system rewrite.
Somewhere along the road I also decided that the mutex implementation header
does not need to include anything other than config.h. So the hacked up
HAVE_WINDOWS_H in cairo-features-win32.h was not being seen by its lone
user.
We now condition on any of HAVE_WINDOWS_H and _MSC_VER. So the hack can be
removed altogether.
Carl had this confusing problem today making the snapshot, which was
"make release-publish" erring. This commit reworks the release-publish
machinery to enforce serialization of some of the tasks such that it
works with make -j. Don't expect any speedup though as "make distcheck"
is inherently sequential.
By introducing $(top_srcdir)/cairo-version.h I tried to make it
unnecessary to rebuild the entire library when the version changes.
That comes handy around releases and when bisecting.
However this was not working as the version info was also ending
up in config.h and hence forcing a full rebuild upon change.
I now undefine the PACKAGE_VERSION* macros that autoconf defines,
so config.h does not change when cairo-version.h changes.