diff options
author | Adrian Johnson <ajohnson@redneon.com> | 2023-01-08 22:27:47 +1030 |
---|---|---|
committer | Adrian Johnson <ajohnson@redneon.com> | 2023-01-08 22:27:47 +1030 |
commit | efe303d9db6e24d5786c15252327811338bc9b0a (patch) | |
tree | 03e9f747e7beea2ddd4f8fb218550aef285f4418 /test | |
parent | 387d2f07394061882ec0319b114a789e48ec5380 (diff) | |
download | cairo-efe303d9db6e24d5786c15252327811338bc9b0a.tar.gz |
Remove autotools build
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 412 | ||||
-rw-r--r-- | test/Makefile.sources | 485 | ||||
-rw-r--r-- | test/Makefile.win32 | 55 | ||||
-rw-r--r-- | test/README | 296 | ||||
-rw-r--r-- | test/pdiff/CMakeLists.txt | 55 | ||||
-rw-r--r-- | test/pdiff/Makefile.am | 19 | ||||
-rw-r--r-- | test/pdiff/Makefile.win32 | 14 |
7 files changed, 0 insertions, 1336 deletions
diff --git a/test/Makefile.am b/test/Makefile.am deleted file mode 100644 index df2d59f44..000000000 --- a/test/Makefile.am +++ /dev/null @@ -1,412 +0,0 @@ -include $(top_srcdir)/build/Makefile.am.common - -include $(top_srcdir)/test/Makefile.sources - -SUBDIRS=pdiff . - -# Then we have a collection of tests that are only run if certain -# features are compiled into cairo -if HAVE_REAL_PTHREAD -test_sources += $(pthread_test_sources) -endif - -if CAIRO_HAS_FT_FONT -test_sources += $(ft_font_test_sources) -if CAIRO_HAS_FC_FONT -test_sources += $(fc_font_test_sources) -if HAVE_FT_SVG_DOCUMENT -test_sources += $(fc_svg_font_test_sources) -endif -endif -endif - -if CAIRO_HAS_GL_SURFACE -test_sources += $(gl_surface_test_sources) -endif - -if CAIRO_HAS_EGL_FUNCTIONS -test_sources += $(egl_surface_test_sources) -endif - -# Need to add quartz-surface-source -if CAIRO_HAS_QUARTZ_SURFACE -test_sources += "$(quartz_surface_test_sources) $(quartz_color_font_test_sources)" -endif - -if CAIRO_HAS_PDF_SURFACE -test_sources += $(pdf_surface_test_sources) -endif - -if CAIRO_HAS_PS_SURFACE -test_sources += $(ps_surface_test_sources) -endif - -if CAIRO_HAS_SVG_SURFACE -test_sources += $(svg_surface_test_sources) -endif - -if CAIRO_HAS_TEST_SURFACES -test_sources += $(test_fallback16_surface_test_sources) -endif - -if CAIRO_HAS_XCB_SURFACE -test_sources += $(xcb_surface_test_sources) -endif - -if CAIRO_HAS_XLIB_SURFACE -test_sources += $(xlib_surface_test_sources) -endif - -if CAIRO_HAS_XLIB_XRENDER_SURFACE -test_sources += $(xlib_xrender_surface_test_sources) -endif - -if CAIRO_HAS_MULTI_PAGE_SURFACES -test_sources += $(multi_page_surface_test_sources) -endif - -# Include fallback-resolution (once!) if we have any of the vector surfaces -if BUILD_ANY2PPM -if CAIRO_HAS_SVG_SURFACE -test = $(fallback_resolution_test_sources) -endif -if CAIRO_HAS_PDF_SURFACE -test = $(fallback_resolution_test_sources) -endif -if CAIRO_HAS_PS_SURFACE -test = $(fallback_resolution_test_sources) -endif -endif -test_sources += $(test) - -noinst_PROGRAMS = cairo-test-suite$(EXEEXT) # always build -noinst_SCRIPTS = check-refs.sh - -TESTS += cairo-test-suite$(EXEEXT) - -cairo-test-constructors.c: Makefile $(test_sources) make-cairo-test-constructors.sh - (cd $(srcdir) && sh ./make-cairo-test-constructors.sh $(test_sources)) > $@ || (rm $@ ; exit 1) - -cairo_test_suite_SOURCES = \ - $(cairo_test_suite_sources) \ - $(cairo_test_suite_headers) \ - $(test_sources) \ - cairo-test-constructors.c -cairo_test_suite_CFLAGS = $(AM_CFLAGS) $(real_pthread_CFLAGS) -cairo_test_suite_LDADD = \ - $(real_pthread_LIBS) \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) -cairo_test_suite_DEPENDENCIES = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la -if BUILD_ANY2PPM -cairo_test_suite_DEPENDENCIES += \ - any2ppm$(EXEEXT) -endif - -if HAVE_SHM -EXTRA_PROGRAMS += cairo-test-trace -cairo_test_trace_SOURCES = \ - cairo-test-trace.c \ - buffer-diff.c \ - buffer-diff.h -cairo_test_trace_CFLAGS = $(AM_CFLAGS) $(real_pthread_CFLAGS) -cairo_test_trace_LDADD = \ - $(real_pthread_LIBS) \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(top_builddir)/util/cairo-missing/libcairo-missing.la \ - $(CAIRO_LDADD) \ - $(SHM_LIBS) -cairo_test_trace_DEPENDENCIES = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/boilerplate/libcairoboilerplate.la \ - $(top_builddir)/src/libcairo.la \ - $(top_builddir)/util/cairo-missing/libcairo-missing.la \ - $(NULL) -endif - -BUILT_SOURCES += cairo-test-constructors.c -EXTRA_DIST += $(BUILT_SOURCES) $(noinst_SCRIPTS) COPYING make-cairo-test-constructors.sh run-cairo-test-suite.sh generate_refs.sh tiger.inc -CLEANFILES += $(BUILT_SOURCES) - -EXTRA_DIST += \ -6x13.pcf \ -index.html \ -jp2.jp2 \ -jpeg.jpg \ -png.png \ -romedalen.jpg \ -romedalen.png \ -scarab.jpg \ -surface-source.c \ -testtable.js \ -reference - -# Any test that doesn't generate a log file goes here -NOLOG_TESTS = \ -fallback-resolution \ -font-options \ -multi-page \ -pdf-features \ -png \ -ps-eps \ -ps-features \ -svg-clip \ -svg-surface \ -toy-font-face \ -font-variations \ -user-data - -# A target to summarise the failures -check-summary: - @FAILED_TESTS=""; \ - for t in output/*.log; do \ - if grep -e '\<FAIL\>' $$t >/dev/null 2>&1; then \ - FAILED_TESTS="$$FAILED_TESTS $$t"; \ - fi; \ - done; \ - if test -n "$$FAILED_TESTS"; then \ - echo "Failed tests:"; \ - surfaces=""; \ - for t in $$FAILED_TESTS; do \ - name="$${t##output/}"; name="$${name%.log}"; \ - echo -n " $$name: "; \ - grep -e '\<FAIL\>' $$t | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq | tr '\n' ' '; \ - echo; \ - for s in `grep -e '\<FAIL\>' $$t | sed -e 's/.*TARGET: \([^ ]*\).*/\1/' | sort | uniq`; do \ - ss=`echo $$s | tr '-' '_'`; \ - tt=`echo $$name | tr '-' '_'`; \ - eval $$ss=\""$${!ss} $$tt"\"; \ - echo $$surfaces | grep $$ss >/dev/null || surfaces="$$surfaces $$ss"; \ - done; \ - done; \ - echo -n "Failures per surface - "; \ - first=""; \ - for s in $$surfaces; do \ - ss=`echo $$s | tr '_' '-'`; \ - test -n "$$first" && echo -n ", "; \ - cnt=`echo $${!s} | wc -w`; \ - echo -n "$$ss: $$cnt"; \ - first="false"; \ - done; \ - echo "."; \ - for s in $$surfaces; do \ - ss=`echo $$s | tr '_' '-'`; \ - cnt=`echo $${!s} | wc -w`; \ - echo -n " $$ss [$$cnt]: "; \ - echo $${!s} | tr '_' '-'; \ - done; \ - fi - -AM_CPPFLAGS = \ - -I$(srcdir) \ - -I$(srcdir)/pdiff \ - -I$(top_srcdir)/boilerplate \ - -I$(top_srcdir)/util/cairo-missing \ - -I$(top_srcdir)/util/cairo-script \ - -I$(top_srcdir)/src \ - -I$(top_builddir)/src \ - $(CAIRO_CFLAGS) -AM_LDFLAGS = $(CAIRO_LDFLAGS) - -$(top_builddir)/boilerplate/libcairoboilerplate.la: $(top_builddir)/src/libcairo.la - cd $(top_builddir)/boilerplate && $(MAKE) $(AM_MAKEFLAGS) libcairoboilerplate.la - -$(top_builddir)/src/libcairo.la: - cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) libcairo.la - -$(top_builddir)/test/pdiff/libpdiff.la: - cd $(top_builddir)/test/pdiff && $(MAKE) $(AM_MAKEFLAGS) libpdiff.la - -$(top_builddir)/test/pdiff/perceptualdiff: - cd $(top_builddir)/test/pdiff && $(MAKE) $(AM_MAKEFLAGS) perceptualdiff - -$(top_builddir)/util/cairo-script/libcairo-script-interpreter.la: $(top_builddir)/src/libcairo.la - cd $(top_builddir)/util/cairo-script && $(MAKE) $(AM_MAKEFLAGS) libcairo-script-interpreter.la - -EXTRA_PROGRAMS += imagediff png-flatten - -imagediff_SOURCES = \ - imagediff.c \ - buffer-diff.c \ - buffer-diff.h -imagediff_LDADD = \ - $(top_builddir)/test/pdiff/libpdiff.la \ - $(top_builddir)/src/libcairo.la - -png_flatten_SOURCES = png-flatten.c -png_flatten_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) - -if BUILD_ANY2PPM -check_PROGRAMS += any2ppm -any2ppm_CFLAGS = $(AM_CFLAGS) $(POPPLER_CFLAGS) $(LIBRSVG_CFLAGS) $(LIBSPECTRE_CFLAGS) -# add LDADD, so poppler/librsvg uses "our" cairo -any2ppm_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -any2ppm_LDADD = \ - $(top_builddir)/util/cairo-script/libcairo-script-interpreter.la \ - $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(CAIROBOILERPLATE_LIBS) \ - $(POPPLER_LIBS) \ - $(LIBRSVG_LIBS) \ - $(LIBSPECTRE_LIBS) -endif - -if CAIRO_CAN_TEST_PDF_SURFACE -check_PROGRAMS += pdf2png -pdf2png_CFLAGS = $(AM_CFLAGS) $(POPPLER_CFLAGS) -# add LDADD, so poppler uses "our" cairo -pdf2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -pdf2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(POPPLER_LIBS) -endif - -if CAIRO_CAN_TEST_SVG_SURFACE -check_PROGRAMS += svg2png -svg2png_CFLAGS = $(AM_CFLAGS) $(LIBRSVG_CFLAGS) -# add LDADD, so librsvg uses "our" cairo -svg2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -svg2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(LIBRSVG_LIBS) -endif - -if CAIRO_HAS_SPECTRE -check_PROGRAMS += ps2png -ps2png_CFLAGS = $(AM_CFLAGS) $(LIBSPECTRE_CFLAGS) -# add LDADD, so ps2png uses "our" cairo -ps2png_LDFLAGS = $(AM_LDFLAGS) $(CAIRO_TEST_UNDEFINED_LDFLAGS) -ps2png_LDADD = $(top_builddir)/src/libcairo.la \ - $(CAIRO_LDADD) \ - $(LIBSPECTRE_LIBS) -endif - -EXTRA_PROGRAMS += $(TESTS) - -# Do a funny transition of CAIRO_TEST_TARGET through TARGETS such that -# one can limit tested targets both through CAIRO_TEST_TARGET env var -# and TARGETS make var on the command line. Same for the rest. -TARGETS = $(CAIRO_TEST_TARGET) -TARGETS_EXCLUDE = $(CAIRO_TEST_TARGET_EXCLUDE) -FORMAT = $(CAIRO_TEST_TARGET_FORMAT) -MODE = $(CAIRO_TEST_MODE) - -# Same about ENV vs CAIRO_TEST_ENV. ENV is used with "make run" only -ENV = $(CAIRO_TEST_ENV) - -TESTS_ENVIRONMENT = CAIRO_TEST_MODE="$(MODE)" CAIRO_TEST_TARGET="$(TARGETS)" CAIRO_TEST_TARGET_FORMAT="$(FORMAT)" CAIRO_TEST_TARGET_EXCLUDE="$(TARGETS_EXCLUDE)" $(ENV) - -EXTRA_VALGRIND_FLAGS = $(CAIRO_EXTRA_VALGRIND_FLAGS) -VALGRIND_FLAGS = \ - --tool=memcheck --suppressions=$(srcdir)/.valgrind-suppressions \ - --track-origins=yes \ - --leak-check=yes --show-reachable=yes \ - $(EXTRA_VALGRIND_FLAGS) - -CLEANFILES += \ - valgrind-log \ - ref.hash \ - ref.list \ - png-test.png \ - png.out.png \ - create-for-stream.pdf \ - create-for-stream.ps \ - create-for-stream.svg \ - svg-surface-source.out.svg \ - pdf-surface-source.out.pdf \ - ps-surface-source.out.ps \ - pdf-features.pdf \ - pdf-mime-data.out* \ - pdf-tagged-text.out* \ - ps-features.ps \ - svg-clip.svg \ - svg-surface.svg \ - multi-page.pdf \ - multi-page.ps \ - $(NULL) - -# This used to be a simple 'echo ${RM} *.ps *.pdf *.svg *.etc', but -# most systems cannot handle all of our clean files together. -# Then it became a fancy find using many GNU extensions, but then the ugly -# reality of portability was raised and it became.... -clean-local: - rm -rf output - -${FIND} . -name '*.log' -print | ${XARGS} ${RM} - -${FIND} . -name '*.[is]' -print | ${XARGS} ${RM} -clean-caches: - -${FIND} output -name '*.fail.*' -print | ${XARGS} ${RM} - -${FIND} output -name '*.pass.*' -print | ${XARGS} ${RM} - -# The following definitions both should work. -#FAILED_TESTS = `grep -l '\<FAIL\>' $(test_sources:.c=.log) 2>/dev/null | sed -e 's/[.]log$$//' | xargs echo` -FAILED_TESTS = `grep -l '\<FAIL\>' $(test_sources:.c=.log) 2>/dev/null | tr '\n' ' ' | sed -e 's/[.]log */ /g; s/^ //; s/ $$//'` - -recheck = check CAIRO_TESTS="$(FAILED_TESTS)" - -# Re-checks all failed tests, i.e. tests with a log file that has a failure -recheck: - @echo Re-checking failed tests - @$(MAKE) $(AM_MAKEFLAGS) $(recheck) - -# Checks tests. -# Target doesn't fail if tests fail. -test: - @$(MAKE) $(AM_MAKEFLAGS) check - -# Re-checks tests. -# Target doesn't fail if tests fail. -retest: - @CAIRO_TESTS="$(FAILED_TESTS)"; \ - $(MAKE) $(AM_MAKEFLAGS) check - -# Run tests under a tool specified by TOOL. For example, make run TOOL=gdb -run: - $(MAKE) $(AM_MAKEFLAGS) check TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) $(top_builddir)/libtool --mode=execute env $(TOOL)' - -# Check tests under valgrind. Saves log to valgrind-log -check-valgrind: - $(MAKE) $(AM_MAKEFLAGS) check TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) CAIRO_TEST_MODE="$(MODE),foreground CAIRO_TEST_TIMEOUT=0" $(top_builddir)/libtool --mode=execute valgrind $(VALGRIND_FLAGS)' 2>&1 | tee valgrind-log - -#%.log: %.c cairo-test-suite -#-./cairo-test-suite $(<:.c=) - -NOLOG_TESTS_LOG = $(NOLOG_TESTS:=.log) - -$(NOLOG_TESTS_LOG): - @echo dummy > $@ - -# Identify identical reference images -check-ref-dups: check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - sh $(srcdir)/check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - -# Remove identical reference images (DANGEROUS) -clean-ref-dups: check-refs.sh $(top_builddir)/test/pdiff/perceptualdiff - sh $(srcdir)/check-refs.sh | cut -d' ' -f2 | while read f; do git rm "reference/$$f"; done - -results.tar: - @tar cf $@ index.html testtable.js *.log output/*.log; \ - for i in output/*.fail.png ; do \ - testname=$${i#output/} ; \ - testname=$${testname%%.*} ; \ - echo tar uf $@ reference/$${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ - tar uf $@ reference/$${testname}*.ref.png $${i%fail.png}out.png $${i%fail.png}diff.png ; \ - done - -results.tar.gz: results.tar - gzip -c $< > $@ - -release-verify-sane-tests: - -.PHONY: check-valgrind test recheck retest check-ref-dups release-verify-sane-tests - -EXTRA_DIST += Makefile.win32 diff --git a/test/Makefile.sources b/test/Makefile.sources deleted file mode 100644 index 6a5b57575..000000000 --- a/test/Makefile.sources +++ /dev/null @@ -1,485 +0,0 @@ -test_sources = \ - a1-bug.c \ - a1-clip.c \ - a1-fill.c \ - a1-image-sample.c \ - a1-mask.c \ - a1-mask-sample.c \ - a1-sample.c \ - a1-traps-sample.c \ - a1-rasterisation.c \ - a8-clear.c \ - a8-mask.c \ - aliasing.c \ - alpha-similar.c \ - arc-direction.c \ - arc-infinite-loop.c \ - arc-looping-dash.c \ - api-special-cases.c \ - big-line.c \ - big-empty-box.c \ - big-empty-triangle.c \ - big-little-box.c \ - big-little-triangle.c \ - bug-spline.c \ - big-trap.c \ - bilevel-image.c \ - bug-277.c \ - bug-361.c \ - bug-40410.c \ - bug-431.c \ - bug-448.c \ - bug-535.c \ - bug-51910.c \ - bug-75705.c \ - bug-84115.c \ - bug-bo-rectangular.c \ - bug-bo-collins.c \ - bug-bo-ricotz.c \ - bug-source-cu.c \ - bug-extents.c \ - bug-seams.c \ - bug-image-compositor.c \ - caps.c \ - checkerboard.c \ - caps-joins.c \ - caps-joins-alpha.c \ - caps-joins-curve.c \ - caps-tails-curve.c \ - caps-sub-paths.c \ - clear.c \ - clear-source.c \ - clip-all.c \ - clip-complex-bug61592.c \ - clip-complex-shape.c \ - clip-contexts.c \ - clip-disjoint.c \ - clip-disjoint-hatching.c \ - clip-disjoint-quad.c \ - clip-device-offset.c \ - clip-double-free.c \ - clip-draw-unbounded.c \ - clip-empty.c \ - clip-empty-group.c \ - clip-empty-save.c \ - clip-fill.c \ - clip-fill-no-op.c \ - clip-fill-rule.c \ - clip-fill-rule-pixel-aligned.c \ - clip-group-shapes.c \ - clip-image.c \ - clip-intersect.c \ - clip-mixed-antialias.c \ - clip-nesting.c \ - clip-operator.c \ - clip-push-group.c \ - clip-polygons.c \ - clip-rectilinear.c \ - clip-shape.c \ - clip-stroke.c \ - clip-stroke-no-op.c \ - clip-text.c \ - clip-twice.c \ - clip-twice-rectangle.c \ - clip-unbounded.c \ - clip-zero.c \ - clipped-group.c \ - clipped-surface.c \ - close-path.c \ - close-path-current-point.c \ - composite-integer-translate-source.c \ - composite-integer-translate-over.c \ - composite-integer-translate-over-repeat.c \ - copy-disjoint.c \ - copy-path.c \ - coverage.c \ - create-for-stream.c \ - create-from-broken-png-stream.c \ - create-from-png.c \ - create-from-png-stream.c \ - culled-glyphs.c \ - curve-to-as-line-to.c \ - dash-caps-joins.c \ - dash-curve.c \ - dash-infinite-loop.c \ - dash-no-dash.c \ - dash-offset.c \ - dash-offset-negative.c \ - dash-scale.c \ - dash-state.c \ - dash-zero-length.c \ - degenerate-arc.c \ - degenerate-arcs.c \ - degenerate-curve-to.c \ - degenerate-dash.c \ - degenerate-linear-gradient.c \ - degenerate-path.c \ - degenerate-pen.c \ - degenerate-radial-gradient.c \ - degenerate-rel-curve-to.c \ - degenerate-solid-dash.c \ - drunkard-tails.c \ - device-offset.c \ - device-offset-fractional.c \ - device-offset-positive.c \ - device-offset-scale.c \ - error-setters.c \ - extend-pad.c \ - extend-pad-border.c \ - extend-pad-similar.c \ - extend-reflect.c \ - extend-reflect-similar.c \ - extend-repeat.c \ - extend-repeat-similar.c \ - extended-blend.c \ - fallback.c \ - fill-alpha.c \ - fill-alpha-pattern.c \ - fill-and-stroke.c \ - fill-and-stroke-alpha.c \ - fill-and-stroke-alpha-add.c \ - fill-degenerate-sort-order.c \ - fill-disjoint.c \ - fill-empty.c \ - fill-image.c \ - fill-missed-stop.c \ - fill-rule.c \ - filter-bilinear-extents.c \ - filter-nearest-offset.c \ - filter-nearest-transformed.c \ - finer-grained-fallbacks.c \ - font-face-get-type.c \ - font-matrix-translation.c \ - font-options.c \ - glyph-cache-pressure.c \ - get-and-set.c \ - get-clip.c \ - get-group-target.c \ - get-path-extents.c \ - gradient-alpha.c \ - gradient-constant-alpha.c \ - gradient-zero-stops.c \ - gradient-zero-stops-mask.c \ - group-clip.c \ - group-paint.c \ - group-state.c \ - group-unaligned.c \ - hairline.c \ - half-coverage.c \ - halo.c \ - hatchings.c \ - horizontal-clip.c \ - huge-linear.c \ - huge-radial.c \ - image-surface-source.c \ - image-bug-710072.c \ - implicit-close.c \ - infinite-join.c \ - in-fill-empty-trapezoid.c \ - in-fill-trapezoid.c \ - invalid-matrix.c \ - inverse-text.c \ - inverted-clip.c \ - joins.c \ - joins-loop.c \ - joins-star.c \ - joins-retrace.c \ - large-clip.c \ - large-font.c \ - large-source.c \ - large-source-roi.c \ - large-twin-antialias-mixed.c \ - leaky-dash.c \ - leaky-dashed-rectangle.c \ - leaky-dashed-stroke.c \ - leaky-polygon.c \ - line-width.c \ - line-width-large-overlap.c \ - line-width-overlap.c \ - line-width-scale.c \ - line-width-tolerance.c \ - line-width-zero.c \ - linear-gradient.c \ - linear-gradient-extend.c \ - linear-gradient-large.c \ - linear-gradient-one-stop.c \ - linear-gradient-reflect.c \ - linear-gradient-subset.c \ - linear-step-function.c \ - linear-uniform.c \ - long-dashed-lines.c \ - long-lines.c \ - map-to-image.c \ - mask.c \ - mask-alpha.c \ - mask-ctm.c \ - mask-glyphs.c \ - mask-surface-ctm.c \ - mask-transformed-image.c \ - mask-transformed-similar.c \ - mesh-pattern.c \ - mesh-pattern-accuracy.c \ - mesh-pattern-conical.c \ - mesh-pattern-control-points.c \ - mesh-pattern-fold.c \ - mesh-pattern-overlap.c \ - mesh-pattern-transformed.c \ - mime-data.c \ - mime-surface-api.c \ - miter-precision.c \ - move-to-show-surface.c \ - negative-stride-image.c \ - new-sub-path.c \ - nil-surface.c \ - operator.c \ - operator-alpha.c \ - operator-alpha-alpha.c \ - operator-clear.c \ - operator-source.c \ - operator-www.c \ - outline-tolerance.c \ - overflow.c \ - over-above-source.c \ - over-around-source.c \ - over-below-source.c \ - over-between-source.c \ - overlapping-boxes.c \ - overlapping-glyphs.c \ - overlapping-dash-caps.c \ - paint.c \ - paint-clip-fill.c \ - paint-repeat.c \ - paint-source-alpha.c \ - paint-with-alpha.c \ - paint-with-alpha-group-clip.c \ - partial-clip-text.c \ - partial-coverage.c \ - pass-through.c \ - path-append.c \ - path-currentpoint.c \ - path-stroke-twice.c \ - path-precision.c \ - pattern-get-type.c \ - pattern-getters.c \ - pdf-isolated-group.c \ - pixman-downscale.c \ - pixman-rotate.c \ - png.c \ - push-group.c \ - push-group-color.c \ - push-group-path-offset.c \ - radial-gradient.c \ - radial-gradient-extend.c \ - radial-outer-focus.c \ - random-clips.c \ - random-intersections-eo.c \ - random-intersections-nonzero.c \ - random-intersections-curves-eo.c \ - random-intersections-curves-nz.c \ - raster-source.c \ - record.c \ - record1414x.c \ - record2x.c \ - record90.c \ - recordflip.c \ - record-extend.c \ - record-neg-extents.c \ - record-mesh.c \ - record-replay-extend.c \ - record-transform-paint.c \ - record-write-png.c \ - recording-ink-extents.c \ - recording-surface-pattern.c \ - recording-surface-extend.c \ - rectangle-rounding-error.c \ - rectilinear-fill.c \ - rectilinear-grid.c \ - rectilinear-miter-limit.c \ - rectilinear-dash.c \ - rectilinear-dash-scale.c \ - rectilinear-stroke.c \ - reflected-stroke.c \ - rel-path.c \ - rgb24-ignore-alpha.c \ - rotate-image-surface-paint.c \ - rotate-stroke-box.c \ - rotated-clip.c \ - rounded-rectangle-fill.c \ - rounded-rectangle-stroke.c \ - round-join-bug-520.c \ - sample.c \ - scale-down-source-surface-paint.c \ - scale-offset-image.c \ - scale-offset-similar.c \ - scale-source-surface-paint.c \ - scaled-font-zero-matrix.c \ - stroke-ctm-caps.c \ - stroke-clipped.c \ - stroke-image.c \ - stroke-open-box.c \ - select-font-face.c \ - select-font-no-show-text.c \ - self-copy.c \ - self-copy-overlap.c \ - self-intersecting.c \ - set-source.c \ - show-glyphs-advance.c \ - show-glyphs-many.c \ - show-text-current-point.c \ - shape-general-convex.c \ - shape-sierpinski.c \ - shifted-operator.c \ - simple.c \ - skew-extreme.c \ - smask.c \ - smask-fill.c \ - smask-image-mask.c \ - smask-mask.c \ - smask-paint.c \ - smask-stroke.c \ - smask-text.c \ - smp-glyph.c \ - solid-pattern-cache-stress.c \ - source-clip.c \ - source-clip-scale.c \ - source-surface-scale-paint.c \ - spline-decomposition.c \ - stride-12-image.c \ - stroke-pattern.c \ - subsurface.c \ - subsurface-image-repeat.c \ - subsurface-repeat.c \ - subsurface-reflect.c \ - subsurface-pad.c \ - subsurface-modify-child.c \ - subsurface-modify-parent.c \ - subsurface-outside-target.c \ - subsurface-scale.c \ - subsurface-similar-repeat.c \ - surface-finish-twice.c \ - surface-pattern.c \ - surface-pattern-big-scale-down.c \ - surface-pattern-operator.c \ - surface-pattern-scale-down.c \ - surface-pattern-scale-down-extend.c \ - surface-pattern-scale-up.c \ - text-antialias.c \ - text-antialias-subpixel.c \ - text-cache-crash.c \ - text-glyph-range.c \ - text-pattern.c \ - text-rotate.c \ - text-subpixel.c \ - text-transform.c \ - text-unhinted-metrics.c \ - text-zero-len.c \ - thin-lines.c \ - tighten-bounds.c \ - tiger.c \ - toy-font-face.c \ - transforms.c \ - translate-show-surface.c \ - trap-clip.c \ - twin.c \ - twin-antialias-gray.c \ - twin-antialias-mixed.c \ - twin-antialias-none.c \ - twin-antialias-subpixel.c \ - unaligned-box.c \ - unantialiased-shapes.c \ - unbounded-operator.c \ - unclosed-strokes.c \ - user-data.c \ - user-font.c \ - user-font-color.c \ - user-font-mask.c \ - user-font-proxy.c \ - user-font-rescale.c \ - user-font-subpixel.c \ - world-map.c \ - white-in-noop.c \ - xcb-huge-image-shm.c \ - xcb-huge-subimage.c \ - xcb-stress-cache.c \ - xcb-snapshot-assert.c \ - xcomposite-projection.c \ - xlib-expose-event.c \ - zero-alpha.c \ - zero-mask.c - -pthread_test_sources = \ - pthread-same-source.c \ - pthread-show-text.c \ - pthread-similar.c \ - $(NULL) - -ft_font_test_sources = \ - font-variations.c - -fc_font_test_sources = \ - bitmap-font.c \ - ft-color-font.c \ - ft-font-create-for-ft-face.c \ - ft-show-glyphs-positioning.c \ - ft-show-glyphs-table.c \ - ft-text-vertical-layout-type1.c \ - ft-text-vertical-layout-type3.c \ - ft-text-antialias-none.c - -fc_svg_font_test_sources = \ - ft-svg-color-font.c - -gl_surface_test_sources = \ - gl-device-release.c \ - gl-oversized-surface.c \ - gl-surface-source.c - -egl_surface_test_sources = \ - egl-oversized-surface.c \ - egl-surface-source.c - -quartz_surface_test_sources = quartz-surface-source.c - -quartz_color_font_test_sources = quartz-color-font.c - -pdf_surface_test_sources = \ - pdf-features.c \ - pdf-mime-data.c \ - pdf-operators-text.c \ - pdf-surface-source.c \ - pdf-tagged-text.c - -ps_surface_test_sources = \ - ps-eps.c \ - ps-features.c \ - ps-surface-source.c - -svg_surface_test_sources = \ - svg-surface.c \ - svg-clip.c \ - svg-surface-source.c - -xcb_surface_test_sources = \ - xcb-surface-source.c - -xlib_surface_test_sources = \ - xlib-surface.c \ - xlib-surface-source.c - -xlib_xrender_surface_test_sources = get-xrender-format.c - -multi_page_surface_test_sources = multi-page.c mime-unique-id.c - -fallback_resolution_test_sources = fallback-resolution.c - -cairo_test_suite_headers = \ - buffer-diff.h \ - cairo-test.h \ - cairo-test-private.h \ - world-map.h \ - $(NULL) - -cairo_test_suite_sources = \ - buffer-diff.c \ - cairo-test.c \ - cairo-test-runner.c diff --git a/test/Makefile.win32 b/test/Makefile.win32 deleted file mode 100644 index ba8ea5b86..000000000 --- a/test/Makefile.win32 +++ /dev/null @@ -1,55 +0,0 @@ -top_srcdir = .. -include $(top_srcdir)/build/Makefile.win32.common -include $(top_srcdir)/test/Makefile.sources - -CFLAGS += \ - -I$(top_srcdir)/boilerplate \ - -I$(top_srcdir)/util/cairo-script/ \ - -I./pdiff \ - $(NULL) - -TEST_LIBS = \ - ./pdiff/$(CFG)/pdiff.lib \ - $(top_builddir)/boilerplate/$(CFG)/boiler.lib \ - $(top_builddir)/src/$(CFG)/cairo-static.lib \ - $(NULL) - -all: inform $(CFG)/cairo-test-suite.exe - -cairo-test-constructors.c: Makefile.sources Makefile.win32 $(test_sources) make-cairo-test-constructors.sh - sh ./make-cairo-test-constructors.sh $(test_sources) > $@ - -SOURCES = $(cairo_test_suite_sources) $(test_sources) cairo-test-constructors.c - -OBJECTS = $(patsubst %.c, $(CFG)/%-static.obj, $(SOURCES)) - -ANY2PPM_OBJS = \ - $(CFG)/any2ppm-static.obj \ - $(top_builddir)/util/cairo-script/$(CFG)/libcairo-script-interpreter.lib \ - $(top_builddir)/src/$(CFG)/cairo-static.lib \ - $(NULL) - -$(CFG)/cairo-test-suite.exe: $(OBJECTS) $(TEST_LIBS) - @$(LD) $(CAIRO_LDFLAGS) -OUT:$@ $(OBJECTS) $(TEST_LIBS) $(CAIRO_LIBS) - -$(CFG)/any2ppm.exe: $(ANY2PPM_OBJS) - $(LD) $(CAIRO_LDFLAGS) -OUT:$@ $^ $(CAIRO_LIBS) - -./pdiff/$(CFG)/pdiff.lib: - $(MAKE) -C pdiff -f Makefile.win32 - -$(top_builddir)/src/$(CFG)/cairo-static.lib: - $(MAKE) -C $(top_srcdir)/src -f Makefile.win32 - -$(top_builddir)/boilerplate/$(CFG)/boiler.lib: - $(MAKE) -C $(top_srcdir)/boilerplate -f Makefile.win32 - -$(top_builddir)/util/cairo-script/$(CFG)/libcairo-script-interpreter.lib: - $(MAKE) -C $(top_srcdir)/util/cairo-script -f Makefile.win32 - -.PHONY: check test - -check: inform $(CFG)/any2ppm.exe $(CFG)/cairo-test-suite.exe - @ANY2PPM=$(CFG)\\any2ppm.exe $(CFG)/cairo-test-suite.exe - -test: inform check diff --git a/test/README b/test/README deleted file mode 100644 index ea775cfcd..000000000 --- a/test/README +++ /dev/null @@ -1,296 +0,0 @@ -Regression test suite for cairo. - -How to use cairo's test suite -============================= -Using this test should be as simple as running: - - make test - -assuming that the cairo distribution in the directory above has been -configured and built. The test suite here goes through some effort to -run against the locally compiled library rather than any installed -version, but those efforts may fall short depending on the level of your -libtool madness. - -The results of the test suite run are summarized in an index.html -file, which, when viewed in a web browser makes it quite easy to -visually see any failed renderings alongside the corresponding -reference image, (and a diff image as well). - -As some browsers do not permit Javascript to read from the local -filesystem, the view-test-results.py script can used to view the -results. It starts a http server serving the current directory before -displaying the test results in a browser. - -The test suite needs to be run before any code is committed and before -any release. See below for hints and rules governing the use of the suite. - -The test suite is built as a single binary, which allows you to choose -individual or categories of tests to run. For example, to run specific tests: - ./cairo-test-suite record-neg-extents-unbounded record-neg-extents-bounded -Or if you want to run all paint.* related tests you can use: - ./cairo-test-suite paint -Or if you want to check the current status of known failures: - ./cairo-test-suite XFAIL -Or to run a subset of tests, use the -k option to run only the tests -that include the given keyword: - ./cairo-test-suite -k downscale -The binary also permits controlling which backend is used via the -CAIRO_TEST_TARGET environment variable, so for instance: - CAIRO_TEST_TARGET=gl ./cairo-test-suite -k blur -This binary should be backwards-compatible with all library versions, -allowing you to compare current versus past behaviour for any test. - -The test suite needs to find the "test" directory in the source -tree. The srcdir environment variable can be used to specify -the location of this directory. If this environment variable is not -set, the binary looks for the directory "srcdir" in the current -directory. The meson build system symlinks "srcdir" in the -$builddir/test directory to the "test" directory in the source -tree. If this is not found the binary defaults to the current -directory. - -Tailoring tests running ------------------------ -There are some mechanisms to limit the tests run during "make test". -These come very handy when doing development, but should not be used -to circumvent the "pass" requirements listed below. - -make's TARGETS environment variable can be used to limit the backends when -running the tests. It should contain a (space-, comma-separated) list of -backends. CAIRO_TESTS environment variable, which is a comma-, space-seperated -lists, can be used to limit the tests run. -For example: - - CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps - -make's FORMAT variable can also be used to limit the content formats when -running the tests. It should contain a (space-, comma-separated) list of -content formats to test. -For example: - - CAIRO_TESTS="zero-alpha" make test TARGETS=image,ps FORMAT="rgb,rgba" - -Another very handy mechanism when trying to fix bugs is: - - make retest - -This will re-run the test suite, but only on tests that failed on the -last run. So this is a much faster way of checking if changes actually -fix bugs rather than running the entire test suite again. - -The test suite first compares the output from the current run against the -previous in order to skip more expensive image comparisons . If you think -this is interfering with the results, you can clear the cached results using: - - make clean-caches - -Running tests under modified environments or tools -------------------------------------------------- -To run tests under a tool like gdb, one can use the run target and -the TOOL variable. For example: - - CAIRO_TESTS=user-font make run TOOL=gdb TARGETS=pdf - -If you want to run under valgrind, there is a specific target for that -that also sets a bunch of useful valgrind options. Try: - - CAIRO_TESTS=user-font make check-valgrind - -You can run tests under a modified environment you can use the ENV -make variable. However, that environment will also affect the libtool -wrapper of the tests. To only affect the actual test binaries, pass -such environment as TOOL: - - CAIRO_TESTS=user-font make run TOOL="LD_PRELOAD=/path/to/something.so" - -Getting the elusive zero failures ---------------------------------- -It's generally been very difficult to achieve a test run with zero -failures. The difficulties stem from the various versions of the many -libraries that the test suite depends on, (it depends on a lot more -than cairo itself), as well as fonts and other system-specific -settings. If your system differs significantly from the system on -which the reference images were generated, then you will likely see -the test suite reporting "failures", (even if cairo is working just -fine). - -We are constantly working to reduce the number of variables that need -to be tweaked to get a clean run, (for example, by bundling fonts with -the test suite itself), and also working to more carefully document -the software configuration used to generate the reference images. - -Here are some of the relevant details: - - * Your system must have a copy of the DejaVu font, the sha1sum of - the version used are listed in [...]. These are - "DejaVu Sans" (DejaVuSans.ttf) [e9831ee4fd2e1d0ac54508a548c6a449545eba3f]; - "DejaVu Sans Mono" (DejaVuSansMono.ttf) [25d854fbd0450a372615a26a8ef9a1024bd3efc6]; - "DejaVu Serif" (DejaVuSerif.ttf) [78a81850dc7883969042cf3d6dfd18eea7e43e2f]; - [the DejaVu fonts can be installed from the fonts-dejavu-core 2.34-1 Debian package] - and also - "Nimbus Sans L" (n019003l.pfb) - [which can be found in the gsfonts Debian package]. - - * Currently, you must be using a build of cairo using freetype - (cairo-ft) as the default font backend. Otherwise all tests - involving text are likely to fail. - - * To test the pdf backend, you will want the very latest version of - poppler as made available via git: - - git clone git://anongit.freedesktop.org/git/poppler/poppler - - As of this writing, no released version of poppler contains all - the fixes you will need to avoid false negatives from the test - suite. - - * To test the ps backend, you will need ghostscript version 9.06. - - * Testing the xlib backend is problematic since many X server - drivers have bugs that are exercised by the test suite. (Or, if - not actual bugs, differ slightly in their output in such a way - that the test suite will report errors.) This can be quite handy - if you want to debug an X server driver, but since most people - don't want to do that, another option is to run against a headless - X server that uses only software for all rendering. One such X - server is Xvfb which can be started like this: - - Xvfb -screen 0 1680x1024x24 -ac -nolisten tcp :2 - - after which the test suite can be run against it like so: - - DISPLAY=:2 make test - - We have been using Xvfb for testing cairo releases and ensuring - that all tests behave as expected with this X server. - -What if I can't make my system match? -------------------------------------- -For one reason or another, you may be unable to get a clean run of the -test suite even if cairo is working properly, (for example, you might -be on a system without freetype). In this case, it's still useful to -be able to determine if code changes you make to cairo result in any -regressions to the test suite. But it's hard to notice regressions if -there are many failures both before and after your changes. - -For this scenario, you can capture the output of a run of the test -suite before your changes, and then use the CAIRO_REF_DIR environment -variable to use that output as the reference images for a run after -your changes. The process looks like this: - - # Before code change there may be failures we don't care about - make test - - # Let's save those output images - mkdir /some/directory/ - cp -r test/output /some/directory/ - - # hack, hack, hack - - # Now to see if nothing changed: - CAIRO_REF_DIR=/some/directory/ make test - -Best practices for cairo developers -=================================== -If we all follow the guidelines below, then both the test suite and -cairo itself will stay much healthier, and we'll all have a lot more -fun hacking on cairo. - -Before committing ------------------ -All tests should return a result of PASS or XFAIL. The XFAIL results -indicate known bugs. The final message should be one of the following: - - All XX tests behaved as expected (YY expected failures) - All XX tests passed - -If any tests have a status of FAIL, then the new code has caused a -regression error which should be fixed before the code is committed. - -When a new bug is found ------------------------ -A new test case should be added by imitating the style of an existing -test. This means adding the following files: - - new-bug.c - reference/new-bug.ref.png - reference/new-bug.xfail.png - -Where new-bug.c is a minimal program to demonstrate the bug, following -the style of existing tests. The new-bug.ref.png image should contain -the desired result of new-bug.c if the bug were fixed while -new-bug.xfail.png contains the current results of the test. - -Makefile.sources should be edited by adding new-bug.c to test_sources. -And last but not least, don't forget to "git add" the new files. - -When a new feature is added ---------------------------- -It's important for the regression suite to keep pace with development -of the library. So a new test should be added for each new feature. -The work involved is similar the work described above for new bugs. -The only distinction is that the test is expected to pass so it -should not need a new-bug.xfail.png file. - -While working on a test ------------------------ -Before a bugfix or feature is ready, it may be useful to compare -output from different builds. For convenience, you can set -CAIRO_REF_DIR to point at a previous test directory, relative -to the current test directory, and any previous output will be -used by preference as reference images. - -When a bug is fixed -------------------- -The fix should be verified by running the test suite which should -result in an "unexpected pass" for the test of interest. Rejoice as -appropriate, then remove the relevant xfail.png file from git. - -Before releasing ----------------- -All tests should return a result of PASS for all supported (those enabled by -default) backends, meaning all known bugs are fixed, resulting in the happy -message: - - All XX tests passed - -Some notes on limitations in poppler -==================================== -One of the difficulties of our current test infrastructure is that we -rely on external tools to convert cairo's vector output (PDF, -PostScript, and SVG), into an image that can be used for the image -comparison. This means that any bugs in that conversion tool will -result in false negatives in the test suite. - -We've identified several such bugs in the poppler library which is -used to convert PDF to an image. This is particularly discouraging -because 1) poppler is free software that will be used by *many* cairo -users, and 2) poppler calls into cairo for its rendering so it should -be able to do a 100% faithful conversion. - -So we have an interest in ensuring that these poppler bugs get fixed -sooner rather than later. As such, we're trying to be good citizens by -reporting all such poppler bugs that we identify to the poppler -bugzilla. Here's a tracking bug explaining the situation: - - Poppler does not yet handle everything in the cairo test suite - https://bugs.freedesktop.org/show_bug.cgi?id=12143 - -Here's the rule: If a cairo-pdf test reports a failure, but viewing -the resulting PDF file with acroread suggests that the PDF itself is -correct, then there's likely a bug in poppler. In this case, we can -simply report the poppler bug, (making it block 12143 above), post the -PDF result from the test suite, and list the bug in this file. Once -we've done this, we can capture poppler's buggy output as a -pdf-specific reference image (as reference/*.xfail.png) so that the -test suite will regard the test as passing, (and we'll ensure there -is no regression). - -Once the poppler bug gets fixed, the test suite will start reporting a -false negative again, and this will be easy to fix by simply removing -the pdf-specific reference image. - -Here are the reported poppler bugs and the tests they affect: - -[Newest was closed in 2009.] diff --git a/test/pdiff/CMakeLists.txt b/test/pdiff/CMakeLists.txt deleted file mode 100644 index 6e4fa7a8a..000000000 --- a/test/pdiff/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -PROJECT (PerceptualDiff) -SET(DIFF_SRC PerceptualDiff.cpp LPyramid.cpp RGBAImage.cpp -CompareArgs.cpp Metric.cpp) - -ADD_EXECUTABLE (perceptualdiff ${DIFF_SRC}) - -# look for libtiff -FIND_PATH(TIFF_INCLUDE_DIR tiff.h - /usr/local/include - /usr/include - /opt/local/include -) - -FIND_LIBRARY(TIFF_LIBRARY tiff - /usr/lib - /usr/local/lib - /opt/local/lib -) - -IF(TIFF_INCLUDE_DIR) - IF(TIFF_LIBRARY) - SET( TIFF_FOUND "YES" ) - SET( TIFF_LIBRARIES ${TIFF_LIBRARY} ) - ENDIF(TIFF_LIBRARY) -ENDIF(TIFF_INCLUDE_DIR) - -IF(TIFF_FOUND) - INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES(perceptualdiff ${TIFF_LIBRARY}) -ENDIF(TIFF_FOUND) - -# look for libpng -FIND_PATH(PNG_INCLUDE_DIR png.h - /usr/local/include - /usr/include - /opt/local/include -) - -FIND_LIBRARY(PNG_LIBRARY png - /usr/lib - /usr/local/lib - /opt/local/lib -) - -IF(PNG_INCLUDE_DIR) - IF(PNG_LIBRARY) - SET( PNG_FOUND "YES" ) - SET( PNG_LIBRARIES ${PNG_LIBRARY} ) - ENDIF(PNG_LIBRARY) -ENDIF(PNG_INCLUDE_DIR) - -IF(PNG_FOUND) - INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES(perceptualdiff ${PNG_LIBRARY}) -ENDIF(PNG_FOUND)
\ No newline at end of file diff --git a/test/pdiff/Makefile.am b/test/pdiff/Makefile.am deleted file mode 100644 index 73098da78..000000000 --- a/test/pdiff/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -include $(top_srcdir)/build/Makefile.am.common - -EXTRA_PROGRAMS += perceptualdiff -EXTRA_DIST += gpl.txt - -noinst_LTLIBRARIES = libpdiff.la -libpdiff_la_SOURCES = \ - pdiff.h \ - lpyramid.c \ - lpyramid.h \ - pdiff.c - -perceptualdiff_SOURCES = \ - args.c \ - args.h \ - perceptualdiff.c - -AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_builddir)/src $(CAIRO_CFLAGS) -LDADD = libpdiff.la $(top_builddir)/src/libcairo.la diff --git a/test/pdiff/Makefile.win32 b/test/pdiff/Makefile.win32 deleted file mode 100644 index 3d64676da..000000000 --- a/test/pdiff/Makefile.win32 +++ /dev/null @@ -1,14 +0,0 @@ -top_srcdir = ../.. -include $(top_srcdir)/build/Makefile.win32.common - -SOURCES = \ - lpyramid.c \ - pdiff.c \ - $(NULL) - -OBJECTS = $(patsubst %.c, $(CFG)/%-static.obj, $(SOURCES)) - -all: $(CFG)/pdiff.lib - -$(CFG)/pdiff.lib: $(OBJECTS) - @$(AR) $(CAIRO_ARFLAGS) -OUT:$@ $(OBJECTS) |