[lasem/wip/meson: 2/3] wip: meson build
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem/wip/meson: 2/3] wip: meson build
- Date: Mon, 27 May 2019 15:15:17 +0000 (UTC)
commit 428013fecbf123262c1c57f4f5574f6887746a4b
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Mon May 27 16:47:03 2019 +0200
wip: meson build
.gitignore | 53 +------
docs/reference/lasem/meson.build | 23 +++
itex2mml/meson.build | 17 +++
meson.build | 36 +++++
meson_options.txt | 6 +
po/meson.build | 4 +
src/lasemrender.c | 1 -
src/meson.build | 310 +++++++++++++++++++++++++++++++++++++++
tests/meson.build | 27 ++++
9 files changed, 424 insertions(+), 53 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 28e99f5..567609b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,52 +1 @@
-*~
-.buildconfig
-.exrc
-perf-report.*
-INSTALL
-Makefile
-Makefile.in
-Makecache
-aclocal.m4
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-intltool*
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-stamp*
-autom4te*
-tags
-*.o
-*.lo
-*.lineno
-*.swp
-*.stamp
-*.bak
-lasem.svg
-lasem*.pc
-lasemtest.xml
-manugen
-massif.out.*
-callgrind.out.*
-gtk-doc.make
-gtk-doc.m4
-gtkdoc-check.*
-test-suite.log
-.libs/
-.deps/
-tmp-introspect*
-tests/suite
-lasem-*.tar.bz2
-lasem-*.tar.gz
-perf.data
-perf.data.old
-test-driver
-compile
+build/
diff --git a/docs/reference/lasem/meson.build b/docs/reference/lasem/meson.build
new file mode 100644
index 0000000..e0b829e
--- /dev/null
+++ b/docs/reference/lasem/meson.build
@@ -0,0 +1,23 @@
+doc_ignore_headers = [
+ 'lsm.h',
+ 'lsmconfig.h',
+ 'lsmcairo.h',
+ 'lsmstr.h',
+ 'lsmdebug.h',
+ 'lsmtraits.h',
+ 'lsmproperties.h',
+ 'lsmattributes.h',
+ 'lsmitex.h',
+ 'itex2MM.tab.h'
+] + mathml_headers + svg_headers
+
+gnome.gtkdoc ('lasem',
+ main_xml: 'lasem-docs.xml',
+ src_dir: [join_paths (meson.source_root (), 'src'),
+ join_paths (meson.build_root (), 'src')],
+ gobject_typesfile: 'lasem.types',
+ dependencies: [lasem_library_dependencies],
+ scan_args: ['--ignore-headers=' + ' '.join (doc_ignore_headers), '--rebuild-types'],
+ content_files: ['lasem-overview.xml'],
+ install_dir: 'lasem-@0@'.format (lasem_api_version),
+ install: true)
diff --git a/itex2mml/meson.build b/itex2mml/meson.build
new file mode 100644
index 0000000..6323f89
--- /dev/null
+++ b/itex2mml/meson.build
@@ -0,0 +1,17 @@
+flex = find_program('flex', required: false)
+bison = find_program('bison', required: false)
+
+lgen = generator(flex,
+output : '@BASENAME@.yy.c',
+arguments : ['-P', '@BASENAME@_yy', '-o', '@OUTPUT@', '@INPUT@'])
+
+pgen = generator(bison,
+output : ['@BASENAME@.tab.c', '@BASENAME@.tab.h'],
+arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@', '-v', '-y', '-p', '@BASENAME@_yy',
'-d'])
+
+itex2mml_files = [
+ lgen.process ('itex2MML.l'),
+ pgen.process ('itex2MML.y')
+]
+
+itex2mml_inc = include_directories ('.')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..4cad82f
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,36 @@
+project ('lasem', 'c', version: '0.5.2', meson_version: '>=0.47.0')
+
+gnome = import('gnome')
+i18n = import ('i18n')
+pkg = import ('pkgconfig')
+
+lasem_version = meson.project_version ()
+lasem_api_version = '0.6'
+
+versions = lasem_version.split ('.')
+lasem_major_version = versions[0].to_int ()
+lasem_minor_version = versions[1].to_int ()
+lasem_micro_version = versions[2].to_int ()
+
+cc = meson.get_compiler ('c')
+
+glib_dep = dependency ('glib-2.0', version: '>=2.32', required: true)
+gobject_dep = dependency ('gobject-2.0', required: true)
+gio_dep = dependency ('gio-2.0', required: true)
+gdk_dep = dependency ('gdk-pixbuf-2.0', required: true)
+cairo_dep = dependency ('cairo', version: '>= 1.2', required: true)
+pango_cairo_dep = dependency ('pangocairo', version: '>= 1.16.0', required: true)
+libxml2_dep = dependency ('libxml-2.0', required: true)
+
+libm = cc.find_library ('m', required: true)
+
+lasem_dependencies = [glib_dep, gobject_dep, gio_dep, gdk_dep, cairo_dep, pango_cairo_dep, libxml2_dep, libm]
+
+subdir ('po')
+subdir ('itex2mml')
+subdir ('src')
+subdir ('tests')
+
+if get_option ('documentation')
+ subdir ('docs/reference/lasem')
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..053c918
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,6 @@
+# Documentation and introspection
+
+option('documentation', type: 'boolean', value: true,
+ description: 'Build API reference (requires gtk-doc and xlstproc)')
+option('introspection', type: 'boolean', value: true,
+ description: 'Build introspection data (requires gobject-introspection)')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..2e78636
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,4 @@
+add_project_arguments('-DGETTEXT_PACKAGE="lasem-@0@"'.format (lasem_api_version), language:'c')
+
+i18n.gettext ('lasem-@0@'.format (lasem_api_version),
+ args: '--directory=' + meson.source_root())
diff --git a/src/lasemrender.c b/src/lasemrender.c
index c5bcd26..2a97c96 100644
--- a/src/lasemrender.c
+++ b/src/lasemrender.c
@@ -32,7 +32,6 @@
#include <cairo-pdf.h>
#include <cairo-svg.h>
#include <cairo-ps.h>
-#include <../config.h>
#include <../itex2mml/itex2MML.h>
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..efab2d6
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,310 @@
+dom_sources = [
+ 'lsm.c',
+ 'lsmdebug.c',
+ 'lsmstr.c',
+ 'lsmutils.c',
+ 'lsmtraits.c',
+ 'lsmproperties.c',
+ 'lsmattributes.c',
+ 'lsmcairo.c',
+ 'lsmitex.c',
+ 'lsmdomentities.c',
+ 'lsmdomnode.c',
+ 'lsmdomnodelist.c',
+ 'lsmdomnamednodemap.c',
+ 'lsmdomdocument.c',
+ 'lsmdomdocumentfragment.c',
+ 'lsmdomelement.c',
+ 'lsmdomcharacterdata.c',
+ 'lsmdomtext.c',
+ 'lsmdomview.c',
+ 'lsmdomparser.c',
+ 'lsmdomimplementation.c'
+]
+
+mathml_sources = [
+ 'lsmmathmlenums.c',
+ 'lsmmathmltraits.c',
+ 'lsmmathmlattributes.c',
+ 'lsmmathmloperatordictionary.c',
+ 'lsmmathmldocument.c',
+ 'lsmmathmlelement.c',
+ 'lsmmathmlsemanticselement.c',
+ 'lsmmathmlphantomelement.c',
+ 'lsmmathmlmathelement.c',
+ 'lsmmathmltableelement.c',
+ 'lsmmathmltablerowelement.c',
+ 'lsmmathmltablecellelement.c',
+ 'lsmmathmlspaceelement.c',
+ 'lsmmathmlradicalelement.c',
+ 'lsmmathmlscriptelement.c',
+ 'lsmmathmlfractionelement.c',
+ 'lsmmathmlunderoverelement.c',
+ 'lsmmathmlpresentationtoken.c',
+ 'lsmmathmloperatorelement.c',
+ 'lsmmathmlstringelement.c',
+ 'lsmmathmlpresentationcontainer.c',
+ 'lsmmathmlstyleelement.c',
+ 'lsmmathmlrowelement.c',
+ 'lsmmathmlencloseelement.c',
+ 'lsmmathmlfencedelement.c',
+ 'lsmmathmlpaddedelement.c',
+ 'lsmmathmlerrorelement.c',
+ 'lsmmathmlactionelement.c',
+ 'lsmmathmlstyle.c',
+ 'lsmmathmlview.c',
+ 'lsmmathmlglyphtableams.c',
+ 'lsmmathmlalignmarkelement.c',
+ 'lsmmathmlaligngroupelement.c',
+ 'lsmmathmlitexelement.c',
+ 'lsmmathmlutils.c',
+ 'lsmmathmllayoututils.c'
+]
+
+svg_sources = [
+ 'lsmsvgenums.c',
+ 'lsmsvgtraits.c',
+ 'lsmsvgstyle.c',
+ 'lsmsvgcolors.c',
+ 'lsmsvglength.c',
+ 'lsmsvgview.c',
+ 'lsmsvgmatrix.c',
+ 'lsmsvgdocument.c',
+ 'lsmsvgelement.c',
+ 'lsmsvgtransformable.c',
+ 'lsmsvgclippathelement.c',
+ 'lsmsvgsvgelement.c',
+ 'lsmsvguseelement.c',
+ 'lsmsvgimageelement.c',
+ 'lsmsvgsymbolelement.c',
+ 'lsmsvgmarkerelement.c',
+ 'lsmsvgaelement.c',
+ 'lsmsvggelement.c',
+ 'lsmsvgdefselement.c',
+ 'lsmsvgrectelement.c',
+ 'lsmsvgcircleelement.c',
+ 'lsmsvgellipseelement.c',
+ 'lsmsvglineelement.c',
+ 'lsmsvgpolylineelement.c',
+ 'lsmsvgpolygonelement.c',
+ 'lsmsvgpathelement.c',
+ 'lsmsvgtextelement.c',
+ 'lsmsvgtspanelement.c',
+ 'lsmsvggradientelement.c',
+ 'lsmsvglineargradientelement.c',
+ 'lsmsvgradialgradientelement.c',
+ 'lsmsvgstopelement.c',
+ 'lsmsvgswitchelement.c',
+ 'lsmsvgpatternelement.c',
+ 'lsmsvgmaskelement.c',
+ 'lsmsvgfilterelement.c',
+ 'lsmsvgfilterprimitive.c',
+ 'lsmsvgfilterblend.c',
+ 'lsmsvgfiltercolormatrix.c',
+ 'lsmsvgfiltercomposite.c',
+ 'lsmsvgfilterconvolvematrix.c',
+ 'lsmsvgfilterdisplacementmap.c',
+ 'lsmsvgfilterflood.c',
+ 'lsmsvgfiltergaussianblur.c',
+ 'lsmsvgfilterimage.c',
+ 'lsmsvgfilteroffset.c',
+ 'lsmsvgfiltermerge.c',
+ 'lsmsvgfiltermergenode.c',
+ 'lsmsvgfiltermorphology.c',
+ 'lsmsvgfilterspecularlighting.c',
+ 'lsmsvgfiltertile.c',
+ 'lsmsvgfilterturbulence.c',
+ 'lsmsvgfiltersurface.c'
+]
+
+dom_headers = [
+ 'lsm.h',
+ 'lsmtypes.h',
+ 'lsmcairo.h',
+ 'lsmstr.h',
+ 'lsmutils.h',
+ 'lsmdebug.h',
+ 'lsmtraits.h',
+ 'lsmproperties.h',
+ 'lsmattributes.h',
+ 'lsmitex.h',
+ 'lsmdomentities.h',
+ 'lsmdom.h',
+ 'lsmdomtypes.h',
+ 'lsmdomnode.h',
+ 'lsmdomnodelist.h',
+ 'lsmdomnamednodemap.h',
+ 'lsmdomdocument.h',
+ 'lsmdomdocumentfragment.h',
+ 'lsmdomelement.h',
+ 'lsmdomcharacterdata.h',
+ 'lsmdomtext.h',
+ 'lsmdomview.h',
+ 'lsmdomparser.h',
+ 'lsmdomimplementation.h'
+]
+
+mathml_headers = [
+ 'lsmmathml.h',
+ 'lsmmathmltypes.h',
+ 'lsmmathmlenums.h',
+ 'lsmmathmltraits.h',
+ 'lsmmathmlattributes.h',
+ 'lsmmathmloperatordictionary.h',
+ 'lsmmathmldocument.h',
+ 'lsmmathmlelement.h',
+ 'lsmmathmlsemanticselement.h',
+ 'lsmmathmlphantomelement.h',
+ 'lsmmathmlmathelement.h',
+ 'lsmmathmltableelement.h',
+ 'lsmmathmltablerowelement.h',
+ 'lsmmathmltablecellelement.h',
+ 'lsmmathmlspaceelement.h',
+ 'lsmmathmlradicalelement.h',
+ 'lsmmathmlscriptelement.h',
+ 'lsmmathmlfractionelement.h',
+ 'lsmmathmlunderoverelement.h',
+ 'lsmmathmlpresentationtoken.h',
+ 'lsmmathmloperatorelement.h',
+ 'lsmmathmlstringelement.h',
+ 'lsmmathmlpresentationcontainer.h',
+ 'lsmmathmlstyleelement.h',
+ 'lsmmathmlrowelement.h',
+ 'lsmmathmlencloseelement.h',
+ 'lsmmathmlfencedelement.h',
+ 'lsmmathmlpaddedelement.h',
+ 'lsmmathmlerrorelement.h',
+ 'lsmmathmlactionelement.h',
+ 'lsmmathmlstyle.h',
+ 'lsmmathmlview.h',
+ 'lsmmathmlglyphtableams.h',
+ 'lsmmathmlalignmarkelement.h',
+ 'lsmmathmlaligngroupelement.h',
+ 'lsmmathmlitexelement.h',
+ 'lsmmathmlutils.h',
+ 'lsmmathmllayoututils.h'
+]
+
+svg_headers = [
+ 'lsmsvg.h',
+ 'lsmsvgtypes.h',
+ 'lsmsvgenums.h',
+ 'lsmsvgtraits.h',
+ 'lsmsvgattributes.h',
+ 'lsmsvgstyle.h',
+ 'lsmsvgcolors.h',
+ 'lsmsvglength.h',
+ 'lsmsvgview.h',
+ 'lsmsvgmatrix.h',
+ 'lsmsvgdocument.h',
+ 'lsmsvgelement.h',
+ 'lsmsvgtransformable.h',
+ 'lsmsvgclippathelement.h',
+ 'lsmsvgsvgelement.h',
+ 'lsmsvgaelement.h',
+ 'lsmsvggelement.h',
+ 'lsmsvgdefselement.h',
+ 'lsmsvguseelement.h',
+ 'lsmsvgimageelement.h',
+ 'lsmsvgsymbolelement.h',
+ 'lsmsvgmarkerelement.h',
+ 'lsmsvgrectelement.h',
+ 'lsmsvgcircleelement.h',
+ 'lsmsvgellipseelement.h',
+ 'lsmsvglineelement.h',
+ 'lsmsvgpathelement.h',
+ 'lsmsvgpolylineelement.h',
+ 'lsmsvgpolygonelement.h',
+ 'lsmsvgtextelement.h',
+ 'lsmsvgtspanelement.h',
+ 'lsmsvggradientelement.h',
+ 'lsmsvglineargradientelement.h',
+ 'lsmsvgradialgradientelement.h',
+ 'lsmsvgstopelement.h',
+ 'lsmsvgswitchelement.h',
+ 'lsmsvgpatternelement.h',
+ 'lsmsvgmaskelement.h',
+ 'lsmsvgfilterelement.h',
+ 'lsmsvgfilterprimitive.h',
+ 'lsmsvgfilterblend.h',
+ 'lsmsvgfiltercolormatrix.h',
+ 'lsmsvgfiltercomposite.h',
+ 'lsmsvgfilterdisplacementmap.h',
+ 'lsmsvgfilterconvolvematrix.h',
+ 'lsmsvgfilterflood.h',
+ 'lsmsvgfiltergaussianblur.h',
+ 'lsmsvgfilterimage.h',
+ 'lsmsvgfilteroffset.h',
+ 'lsmsvgfiltermerge.h',
+ 'lsmsvgfiltermergenode.h',
+ 'lsmsvgfiltermorphology.h',
+ 'lsmsvgfilterspecularlighting.h',
+ 'lsmsvgfiltertile.h',
+ 'lsmsvgfilterturbulence.h',
+ 'lsmsvgfiltersurface.h'
+]
+
+dom_enums = gnome.mkenums_simple ('lsmdomenumtypes', sources: dom_headers)
+mathml_enums = gnome.mkenums_simple ('lsmmathmlenumtypes', sources: mathml_headers)
+svg_enums = gnome.mkenums_simple ('lsmsvgenumtypes', sources: svg_headers)
+
+library_sources = dom_sources + mathml_sources + svg_sources
+library_headers = dom_headers + mathml_headers + svg_headers
+library_enums = dom_enums + mathml_enums + svg_enums
+
+library_include_dir = join_paths (get_option ('includedir'), 'lasem-@0@'.format (lasem_api_version))
+
+library_inc = include_directories (['.'])
+
+install_headers (library_headers, install_dir: library_include_dir)
+
+library_c_args = [
+ '-DG_LOG_DOMAIN="Lasem"'
+]
+
+lasem_library = library ('lasem-@0@'.format (lasem_api_version),
+ itex2mml_files,
+ library_sources, library_headers,
+ library_enums,
+ include_directories: [library_inc, itex2mml_inc],
+ version: lasem_version,
+ soversion: '0',
+ dependencies: lasem_dependencies,
+ c_args: library_c_args,
+ install: true)
+
+lasem_library_dependencies = declare_dependency (dependencies: lasem_dependencies,
+ link_with: lasem_library)
+
+pkg.generate (libraries: [lasem_library, libm],
+ filebase: 'lasem-@0@'.format (lasem_api_version),
+ version: lasem_version,
+ subdirs: 'lasem-@0@'.format (lasem_api_version),
+ name: 'Lasem',
+ description: 'Mathml and SVG rendering library',
+ requires: [glib_dep, gobject_dep, gio_dep, cairo_dep, gdk_dep])
+
+render_c_args = [
+ '-DPACKAGE_LOCALE_DIR="@0@"'.format (join_paths (get_option ('prefix'), 'locale')),
+]
+
+lasem_render = executable ('lasem-render-@0@'.format (lasem_api_version),
+ 'lasemrender.c',
+ link_with: lasem_library,
+ dependencies: lasem_dependencies,
+ c_args: render_c_args,
+ install: true)
+
+
+if get_option ('introspection')
+ gnome.generate_gir(lasem_library,
+ sources : [dom_sources, dom_headers, dom_enums],
+ nsversion : lasem_api_version,
+ namespace : 'Lasem',
+ symbol_prefix : 'lsm_',
+ identifier_prefix : 'Lsm',
+ export_packages : 'lasem',
+ includes : ['GObject-2.0', 'Gio-2.0', 'cairo-1.0', 'GdkPixbuf-2.0'],
+ install : true
+ )
+endif
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..262ea86
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,27 @@
+tests = [
+ ['dom', []],
+ ['str', []],
+ ['filter', []],
+ ['suite', ['-DSUITE_DATA_DIRECTORY="@0@/tests/data"'.format (meson.source_root ()),
+ '-DSUITE_OPTION_FILE="@0@/tests/suite.ini"'.format (meson.source_root ())]]
+]
+
+foreach t: tests
+ exe = executable (t[0], '@0@.c'.format (t[0]),
+ c_args: [t[1]],
+ link_with: lasem_library,
+ dependencies: lasem_dependencies,
+ include_directories: [library_inc])
+ test (t[0], exe)
+endforeach
+
+examples = [
+ ['lsm-test', 'lsmtest.c']
+]
+
+foreach example: examples
+ exe = executable (example[0], example[1],
+ link_with: lasem_library,
+ dependencies: lasem_dependencies,
+ include_directories: [library_inc])
+endforeach
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]