summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build1
-rw-r--r--perf/meson.build93
-rw-r--r--perf/micro/meson.build57
-rwxr-xr-xsrc/check-headers.sh2
-rwxr-xr-xsrc/check-plt.sh12
-rw-r--r--src/meson.build27
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