cairo/test/meson.build
2021-08-28 12:53:43 +01:00

638 lines
14 KiB
Meson

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-40410.c',
'bug-361.c',
'bug-431.c',
'bug-448.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-image-compositor.c',
'bug-seams.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',
'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',
'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',
]
test_pthread_sources = [
'pthread-same-source.c',
'pthread-show-text.c',
'pthread-similar.c',
]
# Only font-variations.c is ft-specific according to Makefile.sources, the other
# depend on fontconfig
test_ft_font_sources = [
'font-variations.c',
'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',
]
test_gl_sources = [
'gl-device-release.c',
'gl-oversized-surface.c',
'gl-surface-source.c',
]
test_egl_sources = [
'egl-oversized-surface.c',
'egl-surface-source.c',
]
test_quartz_sources = [
'quartz-surface-source.c',
]
test_pdf_sources = [
'pdf-features.c',
'pdf-mime-data.c',
'pdf-operators-text.c',
'pdf-surface-source.c',
'pdf-tagged-text.c',
]
test_ps_sources = [
'ps-eps.c',
'ps-features.c',
'ps-surface-source.c',
]
test_svg_sources = [
'svg-surface.c',
'svg-clip.c',
'svg-surface-source.c',
]
test_xcb_sources = [
'xcb-surface-source.c',
]
test_xlib_sources = [
'xlib-surface.c',
'xlib-surface-source.c',
]
test_xlib_xrender_sources = [
'get-xrender-format.c',
]
test_multi_page_sources = [
'multi-page.c',
'mime-unique-id.c',
]
test_fallback_resolution_sources = [
'fallback-resolution.c',
]
cairo_test_suite_sources = [
'buffer-diff.c',
'cairo-test.c',
'cairo-test-runner.c',
]
cairo_test_trace_sources = [
'cairo-test-trace.c',
'buffer-diff.c',
]
imagediff_sources = [
'imagediff.c',
'buffer-diff.c',
]
png_flatten_sources = [
'png-flatten.c',
]
pdf2png_sources = [
'pdf2png.c',
]
svg2png_sources = [
'svg2png.c',
]
ps2png_sources = [
'ps2png.c',
]
build_any2ppm = false
has_multipage_surfaces = false
add_fallback_resolution = false
if conf.get('CAIRO_HAS_REAL_PTHREAD', 0) == 1
test_sources += test_pthread_sources
endif
if feature_conf.get('CAIRO_HAS_FT_FONT', 0) == 1 and feature_conf.get('CAIRO_HAS_FC_FONT', 0) == 1
test_sources += test_ft_font_sources
endif
if feature_conf.get('CAIRO_HAS_QUARTZ_SURFACE', 0) == 1
test_sources += test_quartz_sources
endif
if feature_conf.get('CAIRO_HAS_PDF_SURFACE', 0) == 1
test_sources += test_pdf_sources
has_multipage_surfaces = true
add_fallback_resolution = true
build_any2ppm = true
endif
if feature_conf.get('CAIRO_HAS_PS_SURFACE', 0) == 1
test_sources += test_ps_sources
has_multipage_surfaces = true
add_fallback_resolution = true
build_any2ppm = true
endif
if feature_conf.get('CAIRO_HAS_SVG_SURFACE', 0) == 1
test_sources += test_svg_sources
build_any2ppm = true
add_fallback_resolution = true
endif
if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1
test_sources += test_xcb_sources
endif
if feature_conf.get('CAIRO_HAS_XLIB_SURFACE', 0) == 1
test_sources += test_xlib_sources
endif
if feature_conf.get('CAIRO_HAS_XLIB_XRENDER_SURFACE', 0) == 1
test_sources += test_xlib_xrender_sources
endif
if feature_conf.get('CAIRO_HAS_EGL_FUNCTIONS', 0) == 1
test_sources += test_egl_sources
endif
if has_multipage_surfaces
test_sources += test_multi_page_sources
endif
if add_fallback_resolution
test_sources += test_fallback_resolution_sources
endif
if feature_conf.get('CAIRO_HAS_SCRIPT_SURFACE', 0) == 1
build_any2ppm = true
endif
cairo_test_constructors = custom_target('cairo-test-constructors.c',
input: files(test_sources),
output: 'cairo-test-constructors.c',
command: [python3, files('make-cairo-test-constructors.py')[0], '@OUTPUT@', '@INPUT@'])
test_depends = []
subdir('pdiff')
if conf.get('CAIRO_CAN_TEST_PDF_SURFACE', 0) == 1
exe = executable('pdf2png', pdf2png_sources,
dependencies: deps + test_deps,
)
endif
if conf.get('CAIRO_CAN_TEST_SVG_SURFACE', 0) == 1
exe = executable('svg2png', svg2png_sources,
dependencies: deps + test_deps,
)
endif
if conf.get('CAIRO_HAS_SPECTRE', 0) == 1
exe = executable('ps2png', ps2png_sources,
dependencies: deps + test_deps,
)
endif
if build_any2ppm
any2ppm_exe = executable('any2ppm', 'any2ppm.c',
include_directories: [incbase],
dependencies: deps + test_deps + [libcairo_dep, libcairoscript_dep],
)
test_depends += [any2ppm_exe]
endif
if have_shm and conf.get('CAIRO_HAS_INTERPRETER', 0) == 1
cairo_test_trace_exe = executable('cairo-test-trace', cairo_test_trace_sources,
include_directories: [incbase],
c_args: pthread_c_args,
link_args: extra_link_args,
dependencies: deps + test_deps + [rt_dep, libcairo_dep, cairoboilerplate_dep, libpdiff_dep, libcairomissing_dep, libcairoscript_dep])
endif
exe = executable('cairo-test-suite', [cairo_test_suite_sources, test_sources, cairo_test_constructors],
include_directories: [incbase],
link_args: extra_link_args,
dependencies: deps + test_deps + [libcairo_dep, cairoboilerplate_dep,
libpdiff_dep],
)
env = environment()
env.set('srcdir', meson.current_source_dir())
test('cairo', exe,
timeout: 60 * 60,
env: env,
workdir: meson.current_build_dir(),
depends: test_depends)