From 596a82f2d185b101bd74645492821fe2f9e0daa0 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Mon, 21 May 2018 20:08:22 +0200 Subject: Add meson build definitions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored by: Nirbheek Chauhan lb90 Tim-Philipp Müller --- boilerplate/make-cairo-boilerplate-constructors.py | 38 +++++++++++++++++++ boilerplate/make-cairo-boilerplate-constructors.sh | 2 + boilerplate/meson.build | 43 ++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 boilerplate/make-cairo-boilerplate-constructors.py create mode 100644 boilerplate/meson.build (limited to 'boilerplate') diff --git a/boilerplate/make-cairo-boilerplate-constructors.py b/boilerplate/make-cairo-boilerplate-constructors.py new file mode 100644 index 000000000..8e02fa500 --- /dev/null +++ b/boilerplate/make-cairo-boilerplate-constructors.py @@ -0,0 +1,38 @@ +# IMPORTANT: Keep in sync with make-cairo-boilerplate-constructors.sh +# and test/make-cairo-test-constructors.py! +import argparse +import sys +import re + +if __name__=='__main__': + parser = argparse.ArgumentParser() + parser.add_argument('output') + parser.add_argument('input', nargs='+') + args = parser.parse_args() + + boilerplate_names = [] + + match_boilerplate_line = re.compile(r'^CAIRO_BOILERPLATE.*') + match_boilerplate_name = re.compile(r'^CAIRO_BOILERPLATE.*\((.*),.*') + + for fname in args.input: + with open(fname, 'r') as f: + for l in f.readlines(): + if match_boilerplate_line.match(l): + boilerplate_names.append(match_boilerplate_name.match(l).group(1)) + + with open(args.output, 'w') as f: + f.write('/* WARNING: Autogenerated file - see %s! */\n\n' % sys.argv[0]) + f.write('#include "cairo-boilerplate-private.h"\n\n') + f.write('void _cairo_boilerplate_register_all (void);\n\n') + + for boilerplate_name in boilerplate_names: + f.write('extern void _register_%s (void);\n' % boilerplate_name) + + f.write('\nvoid\n') + f.write('_cairo_boilerplate_register_all (void)\n') + f.write('{\n') + + for boilerplate_name in boilerplate_names: + f.write(' _register_%s ();\n' % boilerplate_name) + f.write('}\n') diff --git a/boilerplate/make-cairo-boilerplate-constructors.sh b/boilerplate/make-cairo-boilerplate-constructors.sh index 09716ca9e..1503e9970 100644 --- a/boilerplate/make-cairo-boilerplate-constructors.sh +++ b/boilerplate/make-cairo-boilerplate-constructors.sh @@ -1,4 +1,6 @@ #! /bin/sh +# +# IMPORTANT: Keep in sync with make-cairo-boilerplate-constructors.py! if test $# -eq 0; then echo "$0: no input files." >&2 diff --git a/boilerplate/meson.build b/boilerplate/meson.build new file mode 100644 index 000000000..325396d6e --- /dev/null +++ b/boilerplate/meson.build @@ -0,0 +1,43 @@ +cairo_boilerplate_sources = [ + 'cairo-boilerplate-getopt.c', + 'cairo-boilerplate-system.c', + 'cairo-boilerplate.c', +] + +cairo_boilerplate_feature_sources = { + 'cairo-xlib': ['cairo-boilerplate-xlib.c'], + 'cairo-qt': ['cairo-boilerplate-qt.cpp'], + 'cairo-quartz': ['cairo-boilerplate-quartz.c'], + 'cairo-xcb': ['cairo-boilerplate-xcb.c'], + 'cairo-win32': ['cairo-boilerplate-win32.c', 'cairo-boilerplate-win32-printing.c'], + 'cairo-drm': ['cairo-boilerplate-drm.c'], + 'cairo-cogl': ['cairo-boilerplate-cogl.c'], + 'cairo-directfb': ['cairo-boilerplate-directfb.c'], + 'cairo-pdf': ['cairo-boilerplate-pdf.c'], + 'cairo-ps': ['cairo-boilerplate-ps.c'], + 'cairo-svg': ['cairo-boilerplate-svg.c'], + 'cairo-vg': ['cairo-boilerplate-vg.c'], + 'cairo-script': ['cairo-boilerplate-script.c'], + # All tests crash with FPE + # 'cairo-egl': ['cairo-boilerplate-egl.c'], + # cairo-glx: ['cairo-boilerplate-glx.c'], + 'cairo-wgl': ['cairo-boilerplate-wgl.c'], +} + +foreach feature: built_features + source_key = feature.get('source-key', feature.get('name')) + cairo_boilerplate_sources += cairo_boilerplate_feature_sources.get(source_key, []) +endforeach + +cairo_boilerplate_constructors = custom_target('cairo-boilerplate-constructors.c', + input: files(cairo_boilerplate_sources), + output: 'cairo-boilerplate-constructors.c', + command: [python3, files('make-cairo-boilerplate-constructors.py')[0], '@OUTPUT@', '@INPUT@']) + +libcairoboilerplate = static_library('cairoboilerplate', cairo_boilerplate_sources + [cairo_boilerplate_constructors], + c_args: ['-DHAVE_CONFIG_H'], + cpp_args: ['-DHAVE_CONFIG_H'], + include_directories: [incbase, incsrc], + dependencies: deps, + link_with: [libcairo], +) -- cgit v1.2.1