Merge branch 'more-meson' into 'master'

Add more of the auto-foo build to meson

See merge request cairo/cairo!183
This commit is contained in:
Uli Schlachter 2021-06-17 14:25:16 +00:00
commit 43a48fb6a5
6 changed files with 186 additions and 6 deletions

View file

@ -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)

93
perf/meson.build Normal file
View file

@ -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

57
perf/micro/meson.build Normal file
View file

@ -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],
)

View file

@ -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 |

View file

@ -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

View file

@ -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