diff options
-rw-r--r-- | meson.build | 1 | ||||
-rw-r--r-- | perf/meson.build | 93 | ||||
-rw-r--r-- | perf/micro/meson.build | 57 | ||||
-rwxr-xr-x | src/check-headers.sh | 2 | ||||
-rwxr-xr-x | src/check-plt.sh | 12 | ||||
-rw-r--r-- | src/meson.build | 27 |
6 files changed, 186 insertions, 6 deletions
diff --git a/meson.build b/meson.build index 8d989abe9..5ddf7868b 100644 --- a/meson.build +++ b/meson.build @@ -900,6 +900,7 @@ subdir('util') if not get_option('tests').disabled() and feature_conf.get('CAIRO_HAS_PNG_FUNCTIONS', 0) == 1 subdir('test') + subdir('perf') endif configure_file(output: 'config.h', configuration: conf) diff --git a/perf/meson.build b/perf/meson.build new file mode 100644 index 000000000..40ebeea05 --- /dev/null +++ b/perf/meson.build @@ -0,0 +1,93 @@ +incmicro = include_directories('.') + +subdir('micro') + +gtk2_dep = dependency('gtk+-2.0', required: false) + +libcairoperf = static_library('cairoperf', + [ + 'cairo-perf.c', + 'cairo-perf-report.c', + 'cairo-stats.c', + '../src/cairo-time.c', + 'cairo-perf.h', + 'cairo-stats.h', + ], + include_directories: [incbase, incsrc, incboilerplate, inccairomissing], + link_with: [libcairomissing, libcairoboilerplate], + dependencies: [pixman_dep], +) + + +analyse_trace = executable('cairo-analyse-trace', + [ + 'cairo-analyse-trace.c', + '../src/cairo-error.c', + ], + include_directories: [incbase, incsrc, incboilerplate, inccairoscript, inccairomissing], + link_with: [libcairo, libcairoboilerplate, libcairoscript, libcairomissing], + dependencies: [pixman_dep, fontconfig_dep], +) + +perf_trace = executable('cairo-perf-trace', + [ + 'cairo-perf-trace.c', + '../src/cairo-error.c', + '../src/cairo-hash.c', + ], + include_directories: [incbase, incsrc, incboilerplate, inccairoscript, inccairomissing], + link_with: [libcairoperf, libcairoscript], + dependencies: [pixman_dep, fontconfig_dep], +) + +micro = executable('cairo-perf-micro', + [ 'cairo-perf-micro.c', ], + include_directories: [incbase, incsrc, incboilerplate, inccairomissing], + link_with: [libcairoperf, libcairoperfmicro], + dependencies: [fontconfig_dep], +) + +diff_files = executable('cairo-perf-diff-files', + [ + 'cairo-perf-diff-files.c', + ], + include_directories: [incbase, incsrc, incboilerplate], + link_with: [libcairoperf], +) + +print = executable('cairo-perf-print', + [ + 'cairo-perf-print.c', + ], + include_directories: [incbase, incsrc, incboilerplate], + link_with: [libcairoperf], +) + +chart = executable('cairo-perf-chart', + [ + 'cairo-perf-chart.c', + ], + include_directories: [incbase, incsrc, incboilerplate], + link_with: [libcairoperf], +) + +compare_backends = executable('cairo-perf-compare-backends', + [ + 'cairo-perf-compare-backends.c', + ], + include_directories: [incbase, incsrc, incboilerplate], + link_with: [libcairoperf], +) + +if gtk2_dep.found() + graph_files = executable('cairo-perf-graph', + [ + 'cairo-perf-graph-files.c', + 'cairo-perf-graph-widget.c', + 'cairo-perf-graph.h', + ], + include_directories: [incbase, incsrc, incboilerplate], + link_with: [libcairo, libcairoboilerplate, libcairoperf], + dependencies: [gtk2_dep], + ) +endif diff --git a/perf/micro/meson.build b/perf/micro/meson.build new file mode 100644 index 000000000..5ee45b5ce --- /dev/null +++ b/perf/micro/meson.build @@ -0,0 +1,57 @@ +perf_micro_sources = [ + 'cairo-perf-cover.c', + 'box-outline.c', + 'composite-checker.c', + 'disjoint.c', + 'fill.c', + 'hatching.c', + 'hash-table.c', + 'line.c', + 'a1-line.c', + 'long-lines.c', + 'mosaic.c', + 'paint.c', + 'paint-with-alpha.c', + 'mask.c', + 'pattern_create_radial.c', + 'rectangles.c', + 'rounded-rectangles.c', + 'stroke.c', + 'subimage_copy.c', + 'tessellate.c', + 'text.c', + 'tiger.c', + 'glyphs.c', + 'twin.c', + 'unaligned-clip.c', + 'wave.c', + 'world-map.c', + 'zrusin.c', + 'long-dashed-lines.c', + 'dragon.c', + 'pythagoras-tree.c', + 'intersections.c', + 'many-strokes.c', + 'wide-strokes.c', + 'many-fills.c', + 'wide-fills.c', + 'many-curves.c', + 'curve.c', + 'a1-curve.c', + 'spiral.c', + 'pixel.c', + 'sierpinski.c', + 'fill-clip.c', +] + +perf_micro_headers = [ + 'mosaic.h', + 'world-map.h', + 'zrusin-another.h', +] + +libcairoperfmicro = static_library('cairo-perf-micro', + perf_micro_sources + perf_micro_headers, + include_directories: [incbase, incsrc, incboilerplate, incmicro], + dependencies: [pixman_dep], +) diff --git a/src/check-headers.sh b/src/check-headers.sh index 61232954b..f6c7bd59f 100755 --- a/src/check-headers.sh +++ b/src/check-headers.sh @@ -11,7 +11,7 @@ echo Checking public headers for missing cairo_public decorators cd "$srcdir" FILES=$all_cairo_headers if test "x$FILES" = x; then - FILES=`find . -name 'cairo*.h' ! -name '*-private.h' ! -name 'cairoint.h'` + FILES=`find . -name 'cairo*.h' ! -name '*-private.h' ! -name 'cairoint.h' ! -name '*-inline.h' ! -name cairo-drm-intel-brw-eu.h` fi grep -B 1 '^cairo_.*[ ]\+(' /dev/null $FILES | diff --git a/src/check-plt.sh b/src/check-plt.sh index 5a9dae126..6f3d07401 100755 --- a/src/check-plt.sh +++ b/src/check-plt.sh @@ -14,13 +14,15 @@ test -z "$srcdir" && srcdir=. test -z "$MAKE" && MAKE=make stat=0 -$MAKE check-has-hidden-symbols.i > /dev/null || exit 1 -if tail -1 check-has-hidden-symbols.i | grep CAIRO_HAS_HIDDEN_SYMBOLS >/dev/null; then - echo "Compiler doesn't support symbol visibility; skipping test" - exit 0 +if [ "x$CAIRO_HAS_HIDDEN_SYMBOLS" = x ]; then + $MAKE check-has-hidden-symbols.i > /dev/null || exit 1 + if tail -1 check-has-hidden-symbols.i | grep CAIRO_HAS_HIDDEN_SYMBOLS >/dev/null; then + echo "Compiler doesn't support symbol visibility; skipping test" + exit 0 + fi fi -for so in .libs/lib*.so; do +for so in .libs/lib*.so "$@"; do echo Checking "$so" for local PLT entries readelf -W -r "$so" | grep 'JU\?MP_SLO' | grep 'cairo' >&2 && stat=1 done diff --git a/src/meson.build b/src/meson.build index 58a798404..bfe7c9018 100644 --- a/src/meson.build +++ b/src/meson.build @@ -320,3 +320,30 @@ pkgmod.generate(libcairo, meson.override_dependency('cairo', libcairo_dep) install_headers(cairo_headers, subdir: 'cairo') + +shell = find_program('sh', required: false) +if shell.found() + test_scripts = [ + # This script calls back into make to generate cairo.def + # TODO: Make this work, somehow + #'check-def.sh', + 'check-doc-syntax.sh', + 'check-headers.sh', + 'check-preprocessor-syntax.sh', + ] + + foreach test_script: test_scripts + test(test_script, shell, + args: [test_script], + workdir: meson.current_source_dir()) + endforeach + + env = environment() + env.set('CAIRO_HAS_HIDDEN_SYMBOLS', '1') + + test('check-plt.sh', shell, + args: ['check-plt.sh', libcairo ], + env: env, + workdir: meson.current_source_dir()) + +endif |