[lasem/wip/meson: 2/3] wip: meson build



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]