[vala/wip/meson: 1/11] meson: Add initial build support
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/wip/meson: 1/11] meson: Add initial build support
- Date: Tue, 8 Mar 2022 10:16:22 +0000 (UTC)
commit a479e80f7864d3e81272183b0ae17c751ccb0c04
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Sun Feb 10 19:58:46 2019 +0100
meson: Add initial build support
ccode/meson.build | 73 ++++++++
codegen/meson.build | 51 ++++++
compiler/meson.build | 19 ++
config.h.meson | 28 +++
doc/meson.build | 61 +++++++
gee/meson.build | 32 ++++
gobject-introspection/meson.build | 45 +++++
libvaladoc/meson.build | 157 ++++++++++++++++
meson.build | 174 ++++++++++++++++++
meson_options.txt | 9 +
unversioned-install.sh | 13 ++
vala/meson.build | 209 ++++++++++++++++++++++
valadoc/doclets/devhelp/meson.build | 12 ++
valadoc/doclets/gtkdoc/meson.build | 16 ++
valadoc/doclets/html/meson.build | 12 ++
valadoc/doclets/meson.build | 3 +
valadoc/icons/meson.build | 38 ++++
valadoc/meson.build | 22 +++
vapi/meson.build | 305 ++++++++++++++++++++++++++++++++
vapigen/meson.build | 46 +++++
vapigen/vala-gen-introspect/meson.build | 9 +
21 files changed, 1334 insertions(+)
---
diff --git a/ccode/meson.build b/ccode/meson.build
new file mode 100644
index 000000000..099851ac8
--- /dev/null
+++ b/ccode/meson.build
@@ -0,0 +1,73 @@
+valaccode_sources = files(
+ 'valaccode.vala',
+ 'valaccodeassignment.vala',
+ 'valaccodebinaryexpression.vala',
+ 'valaccodeblock.vala',
+ 'valaccodebreakstatement.vala',
+ 'valaccodecasestatement.vala',
+ 'valaccodecastexpression.vala',
+ 'valaccodecommaexpression.vala',
+ 'valaccodecomment.vala',
+ 'valaccodeconditionalexpression.vala',
+ 'valaccodeconstant.vala',
+ 'valaccodeconstantidentifier.vala',
+ 'valaccodecontinuestatement.vala',
+ 'valaccodedeclaration.vala',
+ 'valaccodedeclarator.vala',
+ 'valaccodedefine.vala',
+ 'valaccodedostatement.vala',
+ 'valaccodeelementaccess.vala',
+ 'valaccodeemptystatement.vala',
+ 'valaccodeenum.vala',
+ 'valaccodeenumvalue.vala',
+ 'valaccodeexpressionstatement.vala',
+ 'valaccodeexpression.vala',
+ 'valaccodefile.vala',
+ 'valaccodeforstatement.vala',
+ 'valaccodefragment.vala',
+ 'valaccodefunctioncall.vala',
+ 'valaccodefunctiondeclarator.vala',
+ 'valaccodefunction.vala',
+ 'valaccodeggnucsection.vala',
+ 'valaccodegotostatement.vala',
+ 'valaccodeidentifier.vala',
+ 'valaccodeifsection.vala',
+ 'valaccodeifstatement.vala',
+ 'valaccodeincludedirective.vala',
+ 'valaccodeinitializerlist.vala',
+ 'valaccodeinvalidexpression.vala',
+ 'valaccodelabel.vala',
+ 'valaccodelinedirective.vala',
+ 'valaccodemacroreplacement.vala',
+ 'valaccodememberaccess.vala',
+ 'valaccodemodifiers.vala',
+ 'valaccodenewline.vala',
+ 'valaccodenode.vala',
+ 'valaccodeoncesection.vala',
+ 'valaccodeparameter.vala',
+ 'valaccodeparenthesizedexpression.vala',
+ 'valaccodereturnstatement.vala',
+ 'valaccodestatement.vala',
+ 'valaccodestruct.vala',
+ 'valaccodeswitchstatement.vala',
+ 'valaccodetypedefinition.vala',
+ 'valaccodeunaryexpression.vala',
+ 'valaccodevariabledeclarator.vala',
+ 'valaccodewhilestatement.vala',
+ 'valaccodewriter.vala'
+)
+
+valaccode_lib = static_library(
+ 'valaccode',
+ valaccode_sources,
+ dependencies: [gobject_dep, valagee_dep, valacore_dep],
+ install: false,
+ vala_header: 'valaccode.h',
+ vala_vapi: 'valaccode.vapi',
+)
+
+valaccode_dep = declare_dependency(
+ link_with: [valaccode_lib],
+ dependencies: [valagee_dep],
+ include_directories: include_directories('.'),
+)
diff --git a/codegen/meson.build b/codegen/meson.build
new file mode 100644
index 000000000..c7a0fbb08
--- /dev/null
+++ b/codegen/meson.build
@@ -0,0 +1,51 @@
+valacodegen_sources = files(
+ 'valaccode.vala',
+ 'valaccodearraymodule.vala',
+ 'valaccodeassignmentmodule.vala',
+ 'valaccodeattribute.vala',
+ 'valaccodebasemodule.vala',
+ 'valaccodecompiler.vala',
+ 'valaccodecontrolflowmodule.vala',
+ 'valaccodedelegatemodule.vala',
+ 'valaccodememberaccessmodule.vala',
+ 'valaccodemethodcallmodule.vala',
+ 'valaccodemethodmodule.vala',
+ 'valaccodestructmodule.vala',
+ 'valaclassregisterfunction.vala',
+ 'valactype.vala',
+ 'valaenumregisterfunction.vala',
+ 'valaerrordomainregisterfunction.vala',
+ 'valagasyncmodule.vala',
+ 'valagdbusclientmodule.vala',
+ 'valagdbusmodule.vala',
+ 'valagdbusservermodule.vala',
+ 'valagerrormodule.vala',
+ 'valagirwriter.vala',
+ 'valaglibvalue.vala',
+ 'valagobjectmodule.vala',
+ 'valagsignalmodule.vala',
+ 'valagtkmodule.vala',
+ 'valagtypemodule.vala',
+ 'valagvaluemodule.vala',
+ 'valagvariantmodule.vala',
+ 'valainterfaceregisterfunction.vala',
+ 'valastructregisterfunction.vala',
+ 'valatyperegisterfunction.vala',
+)
+
+valacodegen_lib = shared_library(
+ 'valacodegen',
+ valacodegen_sources,
+ dependencies: [gobject_dep, valacore_dep, valaccode_dep],
+ install_rpath: pkglibdir,
+ install_dir: pkglibdir,
+ install: [ true, false, false ],
+ vala_header: 'valacodegen.h',
+ vala_vapi: 'valacodegen.vapi',
+)
+
+valacodegen_dep = declare_dependency(
+ link_with: [valacodegen_lib],
+ dependencies: [valacore_dep, valaccode_dep],
+ include_directories: include_directories('.'),
+)
diff --git a/compiler/meson.build b/compiler/meson.build
new file mode 100644
index 000000000..25e934ee8
--- /dev/null
+++ b/compiler/meson.build
@@ -0,0 +1,19 @@
+valac_sources = files(
+ 'valacompiler.vala',
+)
+
+valac_name = 'valac@0@'.format(vala_version_suffix)
+
+valac_exe = executable(
+ valac_name,
+ valac_sources,
+ dependencies: [glib_dep, valacodegen_dep],
+ install: true,
+)
+
+vala_name = 'vala@0@'.format(vala_version_suffix)
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
valac'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name))
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
@2@'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name, vala_name))
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
vala'.format(join_paths(get_option('prefix'), get_option('bindir')), valac_name))
diff --git a/config.h.meson b/config.h.meson
new file mode 100644
index 000000000..f98435ef2
--- /dev/null
+++ b/config.h.meson
@@ -0,0 +1,28 @@
+/* Name of package */
+#mesondefine PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#mesondefine PACKAGE_BUGREPORT
+
+#mesondefine PACKAGE_DATADIR
+
+/* Define to the full name of this package. */
+#mesondefine PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#mesondefine PACKAGE_STRING
+
+/* Define to the suffix of this package */
+#mesondefine PACKAGE_SUFFIX
+
+/* Define to the one symbol short name of this package. */
+#mesondefine PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#mesondefine PACKAGE_URL
+
+/* Define to the version of this package. */
+#mesondefine PACKAGE_VERSION
+
+/* Version number of package */
+#mesondefine VERSION
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 000000000..deaaf3b7f
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,61 @@
+help2man = find_program('help2man', required: false)
+if help2man.found() and get_option('manpages')
+ # https://github.com/mesonbuild/meson/issues/1550
+ man_1_dir = join_paths(get_option('mandir'), 'man1')
+ custom_target('vala-gen-introspect.1',
+ output: 'vala-gen-introspect.1',
+ command: [help2man,
+ '--include', join_paths(meson.current_source_dir(), 'vala-gen-introspect.h2m'),
+ '--no-info', '--output=@OUTPUT@', vala_gen_introspect_sh
+ ],
+ install: true,
+ install_dir: man_1_dir,
+ )
+ custom_target('valac.1',
+ output: 'valac.1',
+ command: [help2man,
+ '--include', join_paths(meson.current_source_dir(), 'valac.h2m'),
+ '--no-info', '--output=@OUTPUT@', valac_exe
+ ],
+ install: true,
+ install_dir: man_1_dir,
+ )
+ custom_target('vapigen.1',
+ output: 'vapigen.1',
+ command: [help2man,
+ '--include', join_paths(meson.current_source_dir(), 'vapigen.h2m'),
+ '--no-info', '--output=@OUTPUT@', vapigen_exe
+ ],
+ install: true,
+ install_dir: man_1_dir,
+ )
+ if valadoc_enabled
+ custom_target('valadoc.1',
+ output: 'valadoc.1',
+ command: [help2man,
+ '--include', join_paths(meson.current_source_dir(), 'valadoc.h2m'),
+ '--no-info', '--output=@OUTPUT@', valadoc_exe
+ ],
+ install: true,
+ install_dir: man_1_dir,
+ )
+ endif
+else
+ manpages = files(
+ 'vala-gen-introspect.1',
+ 'valac.1',
+ 'vapigen.1',
+ )
+ if valadoc_enabled
+ manpages += files('valadoc.1')
+ endif
+ install_man(manpages)
+endif
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative vala-gen-introspect.1
@1@'.format(join_paths(get_option('prefix'), get_option('mandir')),
'vala-gen-introspect@0@.1'.format(vala_version_suffix)))
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative valac.1
@1@'.format(join_paths(get_option('prefix'), get_option('mandir')), 'valac@0@.1'.format(vala_version_suffix)))
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative vapigen.1
@1@'.format(join_paths(get_option('prefix'), get_option('mandir')),
'vapigen@0@.1'.format(vala_version_suffix)))
+if valadoc_enabled
+ meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@/man1; ln -fs --relative valadoc.1
@1@'.format(join_paths(get_option('prefix'), get_option('mandir')),
'valadoc@0@.1'.format(vala_version_suffix)))
+endif
diff --git a/gee/meson.build b/gee/meson.build
new file mode 100644
index 000000000..6efb542e5
--- /dev/null
+++ b/gee/meson.build
@@ -0,0 +1,32 @@
+valagee_sources = files(
+ 'arraylist.vala',
+ 'collection.vala',
+ 'hashmap.vala',
+ 'hashset.vala',
+ 'iterable.vala',
+ 'iterator.vala',
+ 'list.vala',
+ 'mapiterator.vala',
+ 'map.vala',
+ 'set.vala',
+ 'timsort.vala',
+)
+
+valagee_lib = static_library(
+ 'valagee',
+ valagee_sources,
+ dependencies: [gobject_dep],
+ install: [ false, true, false ],
+ install_dir: [
+ false,
+ join_paths (get_option('includedir'), 'vala@0@'.format (vala_version_suffix)),
+ false
+ ],
+ vala_header: 'valagee.h',
+ vala_vapi: 'gee.vapi',
+)
+
+valagee_dep = declare_dependency(
+ link_with: [valagee_lib],
+ include_directories: include_directories('.', '..'),
+)
diff --git a/gobject-introspection/meson.build b/gobject-introspection/meson.build
new file mode 100644
index 000000000..5bf20ce08
--- /dev/null
+++ b/gobject-introspection/meson.build
@@ -0,0 +1,45 @@
+gidl_sources = files(
+ 'gidlmodule.c',
+ 'gidlnode.c',
+ 'gidlparser.c',
+ 'gmetadata.c',
+)
+
+gidl_lib = static_library('gidl',
+ gidl_sources,
+ dependencies: [gobject_dep, gmodule_dep])
+
+gidl_dep = declare_dependency(
+ link_with: [gidl_lib],
+ include_directories: include_directories('.'),
+)
+
+flex = find_program('flex')
+bison = find_program('bison')
+
+lgen = generator(flex,
+ output: '@PLAINNAME@.c',
+ arguments: ['-o', '@OUTPUT@', '@INPUT@'])
+
+lfiles = lgen.process('scannerlexer.l')
+
+pgen = generator(bison,
+ output: ['@BASENAME@.c', '@BASENAME@.h'],
+ arguments: ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@'],
+)
+
+pfiles = pgen.process('scannerparser.y')
+
+gen_introspect_sources = files(
+ 'gidlwriter.c',
+ 'scanner.c',
+)
+
+gen_introspect_name = 'gen-introspect@0@'.format(vala_version_suffix)
+
+gen_introspect_exe = executable(gen_introspect_name,
+ [gen_introspect_sources, lfiles, pfiles],
+ install: true,
+ install_dir: pkglibdir,
+ dependencies: [gobject_dep, gmodule_dep, gidl_dep],
+)
diff --git a/libvaladoc/meson.build b/libvaladoc/meson.build
new file mode 100644
index 000000000..9a67c7b6e
--- /dev/null
+++ b/libvaladoc/meson.build
@@ -0,0 +1,157 @@
+libvaladoc_sources = files(
+ 'ctyperesolver.vala',
+ 'devhelp-markupwriter.vala',
+ 'doclet.vala',
+ 'errorreporter.vala',
+ 'filehelper.vala',
+ 'gtkdocmarkupwriter.vala',
+ 'gtkdocrenderer.vala',
+ 'gvc-compat.c',
+ 'markupwriter.vala',
+ 'moduleloader.vala',
+ 'settings.vala',
+ 'api/array.vala',
+ 'api/attribute.vala',
+ 'api/callable.vala',
+ 'api/childsymbolregistrar.vala',
+ 'api/class.vala',
+ 'api/constant.vala',
+ 'api/delegate.vala',
+ 'api/enum.vala',
+ 'api/enumvalue.vala',
+ 'api/errorcode.vala',
+ 'api/errordomain.vala',
+ 'api/field.vala',
+ 'api/girsourcecomment.vala',
+ 'api/interface.vala',
+ 'api/item.vala',
+ 'api/method.vala',
+ 'api/namespace.vala',
+ 'api/node.vala',
+ 'api/nodetype.vala',
+ 'api/ownership.vala',
+ 'api/package.vala',
+ 'api/parameter.vala',
+ 'api/pointer.vala',
+ 'api/property.vala',
+ 'api/propertyaccessor.vala',
+ 'api/signal.vala',
+ 'api/signaturebuilder.vala',
+ 'api/sourcecomment.vala',
+ 'api/sourcefile.vala',
+ 'api/struct.vala',
+ 'api/symbol.vala',
+ 'api/tree.vala',
+ 'api/typeparameter.vala',
+ 'api/typereference.vala',
+ 'api/typesymbol.vala',
+ 'api/visitor.vala',
+ 'charts/chart.vala',
+ 'charts/chartfactory.vala',
+ 'charts/hierarchychart.vala',
+ 'charts/simplechartfactory.vala',
+ 'content/block.vala',
+ 'content/blockcontent.vala',
+ 'content/comment.vala',
+ 'content/contentelement.vala',
+ 'content/contentfactory.vala',
+ 'content/contentrenderer.vala',
+ 'content/contentvisitor.vala',
+ 'content/embedded.vala',
+ 'content/headline.vala',
+ 'content/inline.vala',
+ 'content/inlinecontent.vala',
+ 'content/inlinetaglet.vala',
+ 'content/link.vala',
+ 'content/list.vala',
+ 'content/listitem.vala',
+ 'content/note.vala',
+ 'content/page.vala',
+ 'content/paragraph.vala',
+ 'content/resourcelocator.vala',
+ 'content/run.vala',
+ 'content/sourcecode.vala',
+ 'content/styleattributes.vala',
+ 'content/symbollink.vala',
+ 'content/table.vala',
+ 'content/tablecell.vala',
+ 'content/tablerow.vala',
+ 'content/taglet.vala',
+ 'content/text.vala',
+ 'content/warning.vala',
+ 'content/wikilink.vala',
+ 'documentation/commentscanner.vala',
+ 'documentation/documentationparser.vala',
+ 'documentation/documentation.vala',
+ 'documentation/girmetadata.vala',
+ 'documentation/gtkdoccommentparser.vala',
+ 'documentation/gtkdoccommentscanner.vala',
+ 'documentation/gtkdocmarkdownparser.vala',
+ 'documentation/gtkdocmarkdownscanner.vala',
+ 'documentation/importerhelper.vala',
+ 'documentation/wikiscanner.vala',
+ 'documentation/wiki.vala',
+ 'highlighter/codescanner.vala',
+ 'highlighter/codetoken.vala',
+ 'highlighter/highlighter.vala',
+ 'highlighter/scanner.vala',
+ 'highlighter/xmlscanner.vala',
+ 'html/basicdoclet.vala',
+ 'html/cssclassresolver.vala',
+ 'html/htmlchartfactory.vala',
+ 'html/htmlmarkupwriter.vala',
+ 'html/htmlrenderer.vala',
+ 'html/linkhelper.vala',
+ 'importer/documentationimporter.vala',
+ 'importer/girdocumentationimporter.vala',
+ 'importer/internalidregistrar.vala',
+ 'importer/valadocdocumentationimporterscanner.vala',
+ 'importer/valadocdocumentationimporter.vala',
+ 'parser/manyrule.vala',
+ 'parser/oneofrule.vala',
+ 'parser/optionalrule.vala',
+ 'parser/parser.vala',
+ 'parser/parsercallback.vala',
+ 'parser/rule.vala',
+ 'parser/scanner.vala',
+ 'parser/sequencerule.vala',
+ 'parser/stubrule.vala',
+ 'parser/token.vala',
+ 'parser/tokentype.vala',
+ 'taglets/tagletdeprecated.vala',
+ 'taglets/tagletinheritdoc.vala',
+ 'taglets/tagletinit.vala',
+ 'taglets/tagletlink.vala',
+ 'taglets/tagletparam.vala',
+ 'taglets/tagletreturn.vala',
+ 'taglets/tagletsee.vala',
+ 'taglets/tagletsince.vala',
+ 'taglets/tagletthrows.vala',
+)
+
+libvaladoc_lib = shared_library(
+ 'valadoc@0@'.format(vala_version_suffix),
+ libvaladoc_sources,
+ dependencies: [gmodule_dep, valacore_dep, valacodegen_dep, libgvc_dep],
+ version: '0.0.0',
+ install: true,
+ install_dir: [
+ true,
+ join_paths (get_option('includedir'), 'valadoc@0@'.format (vala_version_suffix)),
+ true
+ ],
+ c_args: ['-DPACKAGE_VALADOC_LIBDIR="@0@"'.format(join_paths(get_option('prefix'),
get_option('libdir'), 'valadoc@0@'.format (vala_version_suffix)))],
+ vala_header: 'valadoc.h',
+ vala_vapi: 'valadoc@0@.vapi'.format(vala_version_suffix),
+)
+
+libvaladoc_dep = declare_dependency(link_with: [libvaladoc_lib], dependencies: [gmodule_dep, valacore_dep,
libgvc_dep], include_directories: include_directories('.'))
+
+configure_file(input: 'valadoc.deps.in', output: 'valadoc@0@.deps'.format(vala_version_suffix),
configuration: pkgconf)
+
+configure_file(
+ input: 'valadoc.pc.in',
+ output: 'valadoc@0@.pc'.format(vala_version_suffix),
+ configuration: pkgconf,
+ install_dir: pkg_install_dir,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 000000000..9ca983965
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,174 @@
+project('vala',
+ 'c', 'vala',
+ version: '0.55.91',
+ meson_version: '>= 0.49',
+ license: 'LGPL2.1'
+)
+
+cc = meson.get_compiler('c')
+
+vala_version = meson.project_version()
+version_array = vala_version.split('.')
+vala_api_version = '0.56'
+vala_version_suffix = '-@0@'.format(vala_api_version)
+
+# Minimal required version for an initial build
+vala_version_required = '0.16.1'
+valac = meson.get_compiler('vala')
+if not valac.version().version_compare('>= @0@'.format(vala_version_required))
+ error('valac >= @0@ required!'.format(vala_version_required))
+endif
+if not valac.version().version_compare('>= @0@'.format(vala_version))
+ warning('Proper bootstrap build with valac >= @0@ is required!!!'.format(vala_version))
+endif
+
+pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), 'vala@0@'.format(vala_version_suffix))
+pkglibdir = join_paths(get_option('prefix'), get_option('libdir'), 'vala@0@'.format(vala_version_suffix))
+
+
+conf = configuration_data()
+conf.set_quoted('PACKAGE', meson.project_name())
+conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.gnome.org/GNOME/vala/issues')
+conf.set_quoted('PACKAGE_DATADIR', pkgdatadir)
+conf.set_quoted('PACKAGE_NAME', meson.project_name())
+conf.set_quoted('PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), vala_version))
+conf.set_quoted('PACKAGE_SUFFIX', vala_version_suffix)
+conf.set_quoted('PACKAGE_TARNAME', meson.project_name())
+conf.set_quoted('PACKAGE_URL', 'https://wiki.gnome.org/Projects/Vala')
+conf.set_quoted('PACKAGE_VERSION', vala_version)
+conf.set_quoted('VERSION', vala_version)
+conf.set_quoted('API_VERSION', vala_api_version)
+conf.set_quoted('BUILD_VERSION', vala_version)
+configure_file(input: 'config.h.meson', output: 'config.h', configuration: conf)
+
+pkgconf = configuration_data()
+pkgconf.set('prefix', get_option('prefix'))
+pkgconf.set('exec_prefix', '${prefix}')
+pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+pkgconf.set('bindir', '${exec_prefix}/@0@'.format(get_option('bindir')))
+pkgconf.set('datarootdir', '${prefix}/@0@'.format(get_option('datadir')))
+pkgconf.set('datadir', '${datarootdir}')
+pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
+pkgconf.set('pkgdatadir', '${datarootdir}/vala@0@'.format(vala_version_suffix))
+pkgconf.set('pkglibdir', '${exec_prefix}/@0@'.format(get_option('libdir'),
'vala@0@'.format(vala_version_suffix)))
+pkgconf.set('pkgdocdatadir', '${datarootdir}/valadoc@0@'.format(vala_version_suffix))
+pkgconf.set('pkgdoclibdir', '${exec_prefix}/@0@'.format(get_option('libdir'),
'valadoc@0@'.format(vala_version_suffix)))
+pkgconf.set('PACKAGE_SUFFIX', vala_version_suffix)
+pkgconf.set('VERSION', vala_version)
+pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
+
+configure_file(
+ input: 'libvala.pc.in',
+ output: 'libvala@0@.pc'.format(vala_version_suffix),
+ configuration: pkgconf,
+ install_dir: pkg_install_dir
+)
+
+versionconf = configuration_data()
+versionconf.set('VALA_MAJOR_VERSION', version_array[0])
+versionconf.set('VALA_MINOR_VERSION', version_array[1])
+versionconf.set('VALA_MICRO_VERSION', version_array[2])
+versionconf.set('API_VERSION', vala_api_version)
+# https://github.com/mesonbuild/meson/issues/688
+versionconf.set('PACKAGE_VERSION', '@VCS_TAG@')
+
+add_project_arguments([
+ '--disable-version-header',
+ '--vapidir', join_paths(meson.source_root(), 'vapi'),
+ '--pkg', 'config',
+ ],
+ language: 'vala'
+)
+
+if valac.version().version_compare('>= 0.25.1')
+ add_project_arguments(['--hide-internal'], language: 'vala')
+endif
+
+if valac.version().version_compare('>= 0.39.6')
+ add_project_arguments(['--abi-stability'], language: 'vala')
+endif
+
+test_cflags = [
+ '-Werror=init-self',
+ '-Werror=implicit',
+ '-Werror=implicit-fallthrough',
+ '-Werror=pointer-arith',
+ '-Werror=redundant-decls',
+ '-Werror=return-local-addr',
+ '-Werror=return-stack-address',
+ '-Werror=return-type',
+ '-Werror=sequence-point',
+ '-Werror=uninitialized',
+ '-Werror=int-to-pointer-cast',
+ '-Werror=pointer-to-int-cast',
+ '-Werror=compare-distinct-pointer-types',
+ '-Werror=empty-body',
+ '-Wformat=2',
+ '-Werror=format-security',
+ '-Werror=format-nonliteral',
+ '-Werror=int-conversion',
+ '-Werror=duplicated-branches',
+ '-Werror=duplicated-cond',
+ '-Werror=declaration-after-statement',
+ '-Werror=maybe-uninitialized',
+ '-Werror=missing-prototypes',
+ '-Werror=missing-braces',
+ '-Werror=missing-declaration',
+ '-Werror=strict-prototypes',
+ '-Werror=tautological-pointer-compare',
+ '-Werror=address',
+ '-Werror=array-bounds',
+ '-Werror=enum-conversion',
+]
+supported_test_cflags = cc.get_supported_arguments(test_cflags)
+
+add_project_arguments([
+ '-Wno-discarded-qualifiers',
+ '-Wno-incompatible-pointer-types',
+ '-Wno-unused',
+ '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_48',
+ '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_48',
+ ],
+ language: 'c',
+)
+
+glib_version_required = '2.48'
+libgvc_version_required = '2.16'
+
+valadoc_enabled = get_option('valadoc')
+
+glib_dep = dependency('glib-2.0', version: '>= @0@'.format(glib_version_required))
+gobject_dep = dependency('gobject-2.0', version: '>= @0@'.format(glib_version_required))
+gmodule_dep = dependency('gmodule-2.0', version: '>= @0@'.format(glib_version_required))
+libgvc_dep = dependency('libgvc', version: '>= @0@'.format(libgvc_version_required), required:
valadoc_enabled)
+
+# Check for CGraph support of libgvc
+if valadoc_enabled and cc.run('''#include <gvc.h>
+ int main(void) {
+ #ifdef WITH_CGRAPH
+ return 0;
+ #else
+ return -1;
+ #endif
+ }''',
+ dependencies: libgvc_dep).returncode() == 0
+ add_project_arguments('-D', 'WITH_CGRAPH', language: 'vala')
+endif
+
+subdir('gobject-introspection')
+subdir('gee')
+subdir('vala')
+subdir('ccode')
+subdir('codegen')
+subdir('compiler')
+subdir('vapigen')
+subdir('vapi')
+
+if valadoc_enabled
+ subdir('libvaladoc')
+ subdir('valadoc')
+endif
+
+subdir('doc')
+
+install_data('vala.m4', install_dir: join_paths('share', 'aclocal'))
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 000000000..b1465ad73
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,9 @@
+# Optional dependencies
+option('valadoc', type: 'boolean', value : 'true',
+ description : 'Enable build of libvaladoc and valadoc')
+
+# Documentation
+option('documentation', type: 'boolean', value: 'false',
+ description : 'Build API reference and tools documentation')
+option('manpages', type: 'boolean', value: 'false',
+ description : 'Build man pages for installed tools')
diff --git a/unversioned-install.sh b/unversioned-install.sh
new file mode 100644
index 000000000..fcc91783f
--- /dev/null
+++ b/unversioned-install.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+cd "${DESTDIR}/${MESON_INSTALL_PREFIX}/mydir"
+ln -s -f "${DESTDIR}/${MESON_INSTALL_PREFIX}/mydir"
+touch "${DESTDIR}/${MESON_INSTALL_PREFIX}/mydir/file.dat"
+
+install-exec-hook:
+ cd $(DESTDIR)$(bindir) && $(LN_S) -f vapigen@PACKAGE_SUFFIX@$(EXEEXT) vapigen$(EXEEXT)
+ cd $(DESTDIR)$(bindir) && $(LN_S) -f vapicheck@PACKAGE_SUFFIX@$(EXEEXT) vapicheck$(EXEEXT)
+
+install-data-hook:
+ cd $(DESTDIR)$(pkgconfigdir) && $(LN_S) -f vapigen@PACKAGE_SUFFIX@.pc vapigen.pc
+
diff --git a/vala/meson.build b/vala/meson.build
new file mode 100644
index 000000000..ead4400fc
--- /dev/null
+++ b/vala/meson.build
@@ -0,0 +1,209 @@
+valacore_sources = files(
+ 'valaaddressofexpression.vala',
+ 'valaarraycopymethod.vala',
+ 'valaarraycreationexpression.vala',
+ 'valaarraylengthfield.vala',
+ 'valaarraymovemethod.vala',
+ 'valaarrayresizemethod.vala',
+ 'valaarraytype.vala',
+ 'valaassignment.vala',
+ 'valaattribute.vala',
+ 'valabaseaccess.vala',
+ 'valabasicblock.vala',
+ 'valabinaryexpression.vala',
+ 'valablock.vala',
+ 'valabooleanliteral.vala',
+ 'valabooleantype.vala',
+ 'valabreakstatement.vala',
+ 'valacallable.vala',
+ 'valacallableexpression.vala',
+ 'valacallabletype.vala',
+ 'valacastexpression.vala',
+ 'valacatchclause.vala',
+ 'valacharacterliteral.vala',
+ 'valaclasstype.vala',
+ 'valaclass.vala',
+ 'valacodecontext.vala',
+ 'valacodegenerator.vala',
+ 'valacodenode.vala',
+ 'valacodevisitor.vala',
+ 'valacodewriter.vala',
+ 'valacomment.vala',
+ 'valaconditionalexpression.vala',
+ 'valaconstant.vala',
+ 'valaconstructor.vala',
+ 'valacontinuestatement.vala',
+ 'valacreationmethod.vala',
+ 'valadatatype.vala',
+ 'valadeclarationstatement.vala',
+ 'valadelegatedestroyfield.vala',
+ 'valadelegatetargetfield.vala',
+ 'valadelegatetype.vala',
+ 'valadelegate.vala',
+ 'valadeletestatement.vala',
+ 'valadestructor.vala',
+ 'valadostatement.vala',
+ 'valadynamicmethod.vala',
+ 'valadynamicproperty.vala',
+ 'valadynamicsignal.vala',
+ 'valaelementaccess.vala',
+ 'valaemptystatement.vala',
+ 'valaenum.vala',
+ 'valaenumvaluetype.vala',
+ 'valaenumvalue.vala',
+ 'valaerrorcode.vala',
+ 'valaerrordomain.vala',
+ 'valaerrortype.vala',
+ 'valaexpressionstatement.vala',
+ 'valaexpression.vala',
+ 'valafieldprototype.vala',
+ 'valafield.vala',
+ 'valafloatingtype.vala',
+ 'valaflowanalyzer.vala',
+ 'valaforeachstatement.vala',
+ 'valaforstatement.vala',
+ 'valagenericdestroyfield.vala',
+ 'valagenericdupfield.vala',
+ 'valagenerictype.vala',
+ 'valagenieparser.vala',
+ 'valageniescanner.vala',
+ 'valagenietokentype.vala',
+ 'valagircomment.vala',
+ 'valagirparser.vala',
+ 'valaifstatement.vala',
+ 'valainitializerlist.vala',
+ 'valaintegerliteral.vala',
+ 'valaintegertype.vala',
+ 'valainterfacetype.vala',
+ 'valainterface.vala',
+ 'valainvalidexpression.vala',
+ 'valainvalidtype.vala',
+ 'valalambdaexpression.vala',
+ 'valaliteral.vala',
+ 'valalocalvariable.vala',
+ 'valalockable.vala',
+ 'valalockstatement.vala',
+ 'valaloop.vala',
+ 'valaloopstatement.vala',
+ 'valamarkupreader.vala',
+ 'valamemberaccess.vala',
+ 'valamemberinitializer.vala',
+ 'valamethodcall.vala',
+ 'valamethodtype.vala',
+ 'valamethod.vala',
+ 'valanamedargument.vala',
+ 'valanamespace.vala',
+ 'valanullliteral.vala',
+ 'valanulltype.vala',
+ 'valaobjectcreationexpression.vala',
+ 'valaobjecttypesymbol.vala',
+ 'valaobjecttype.vala',
+ 'valaparameter.vala',
+ 'valaparser.vala',
+ 'valaphifunction.vala',
+ 'valapointerindirection.vala',
+ 'valapointertype.vala',
+ 'valapostfixexpression.vala',
+ 'valaprofile.vala',
+ 'valapropertyaccessor.vala',
+ 'valaproperty.vala',
+ 'valapropertyprototype.vala',
+ 'valarealliteral.vala',
+ 'valareferencetransferexpression.vala',
+ 'valareferencetype.vala',
+ 'valaregexliteral.vala',
+ 'valareport.vala',
+ 'valareturnstatement.vala',
+ 'valascanner.vala',
+ 'valascope.vala',
+ 'valasemanticanalyzer.vala',
+ 'valasignaltype.vala',
+ 'valasignal.vala',
+ 'valasizeofexpression.vala',
+ 'valasliceexpression.vala',
+ 'valasourcefile.vala',
+ 'valasourcelocation.vala',
+ 'valasourcereference.vala',
+ 'valastatementlist.vala',
+ 'valastatement.vala',
+ 'valastringliteral.vala',
+ 'valastruct.vala',
+ 'valastructvaluetype.vala',
+ 'valasubroutine.vala',
+ 'valaswitchlabel.vala',
+ 'valaswitchsection.vala',
+ 'valaswitchstatement.vala',
+ 'valasymbolresolver.vala',
+ 'valasymbol.vala',
+ 'valatargetvalue.vala',
+ 'valatemplate.vala',
+ 'valathrowstatement.vala',
+ 'valatokentype.vala',
+ 'valatraversevisitor.vala',
+ 'valatrystatement.vala',
+ 'valatuple.vala',
+ 'valatypecheck.vala',
+ 'valatypeofexpression.vala',
+ 'valatypeparameter.vala',
+ 'valatypesymbol.vala',
+ 'valaunaryexpression.vala',
+ 'valaunlockstatement.vala',
+ 'valaunresolvedsymbol.vala',
+ 'valaunresolvedtype.vala',
+ 'valausedattr.vala',
+ 'valausingdirective.vala',
+ 'valavaluetype.vala',
+ 'valavariable.vala',
+ 'valavartype.vala',
+ 'valaversionattribute.vala',
+ 'valavoidtype.vala',
+ 'valawhilestatement.vala',
+ 'valawithstatement.vala',
+ 'valayieldstatement.vala',
+)
+
+# https://github.com/mesonbuild/meson/issues/688
+valaversion_source = vcs_tag(
+ input: configure_file(
+ input: 'valaversion.vala.in',
+ output: 'valaversion.vala.in',
+ configuration: versionconf,
+ ),
+ output: 'valaversion.vala',
+)
+
+valacore_lib = shared_library(
+ 'vala@0@'.format(vala_version_suffix),
+ valacore_sources,
+ valaversion_source,
+ dependencies: [gobject_dep, gmodule_dep, valagee_dep],
+ version: '0.0.0',
+ install: true,
+ vala_header: 'vala.h',
+ vala_vapi: 'vala.vapi',
+ install_dir: [
+ true,
+ join_paths (get_option('includedir'), 'vala@0@'.format (vala_version_suffix)),
+ false
+ ],
+)
+
+valacore_dep = declare_dependency(
+ link_with: [valacore_lib],
+ dependencies: [valagee_dep],
+ include_directories: include_directories('.', '..'),
+)
+
+custom_target(
+ 'libvala@0@.vapi'.format(vala_version_suffix),
+ command: [
+ find_program('cat'),
+ join_paths(meson.build_root(), 'gee', 'gee.vapi'),
+ join_paths(meson.current_build_dir(), 'vala.vapi'),
+ ],
+ depends: [valagee_lib, valacore_lib],
+ capture: true,
+ install: true,
+ install_dir: join_paths('share', 'vala', 'vapi'),
+ output: 'libvala@0@.vapi'.format(vala_version_suffix),
+)
diff --git a/valadoc/doclets/devhelp/meson.build b/valadoc/doclets/devhelp/meson.build
new file mode 100644
index 000000000..2164c7e87
--- /dev/null
+++ b/valadoc/doclets/devhelp/meson.build
@@ -0,0 +1,12 @@
+doclet_devhelp_sources = files(
+ 'doclet.vala',
+)
+
+shared_module(
+ 'doclet',
+ doclet_devhelp_sources,
+ dependencies: [gobject_dep, libvaladoc_dep],
+ install: true,
+ install_dir: join_paths(get_option('libdir'), 'valadoc@0@'.format (vala_version_suffix), 'doclets',
'devhelp'),
+ c_args: ['-DPACKAGE_VALADOC_ICONDIR="@0@"'.format(join_paths(get_option('prefix'),
get_option('datadir'), 'valadoc@0@'.format (vala_version_suffix), 'icons'))],
+)
diff --git a/valadoc/doclets/gtkdoc/meson.build b/valadoc/doclets/gtkdoc/meson.build
new file mode 100644
index 000000000..ccf567cdc
--- /dev/null
+++ b/valadoc/doclets/gtkdoc/meson.build
@@ -0,0 +1,16 @@
+doclet_gtkdoc_sources = files(
+ 'commentconverter.vala',
+ 'dbus.vala',
+ 'doclet.vala',
+ 'gcomment.vala',
+ 'generator.vala',
+ 'utils.vala',
+)
+
+shared_module(
+ 'doclet',
+ doclet_gtkdoc_sources,
+ dependencies: [gobject_dep, libvaladoc_dep],
+ install: true,
+ install_dir: join_paths(get_option('libdir'), 'valadoc@0@'.format (vala_version_suffix), 'doclets',
'gtkdoc'),
+)
diff --git a/valadoc/doclets/html/meson.build b/valadoc/doclets/html/meson.build
new file mode 100644
index 000000000..6c1020b54
--- /dev/null
+++ b/valadoc/doclets/html/meson.build
@@ -0,0 +1,12 @@
+doclet_html_sources = files(
+ 'doclet.vala',
+)
+
+shared_module(
+ 'doclet',
+ doclet_html_sources,
+ dependencies: [gobject_dep, libvaladoc_dep],
+ install: true,
+ install_dir: join_paths(get_option('libdir'), 'valadoc@0@'.format (vala_version_suffix), 'doclets',
'html'),
+ c_args: ['-DPACKAGE_VALADOC_ICONDIR="@0@"'.format(join_paths(get_option('prefix'),
get_option('datadir'), 'valadoc@0@'.format (vala_version_suffix), 'icons'))],
+)
diff --git a/valadoc/doclets/meson.build b/valadoc/doclets/meson.build
new file mode 100644
index 000000000..a3bf048d2
--- /dev/null
+++ b/valadoc/doclets/meson.build
@@ -0,0 +1,3 @@
+subdir('devhelp')
+subdir('gtkdoc')
+subdir('html')
diff --git a/valadoc/icons/meson.build b/valadoc/icons/meson.build
new file mode 100644
index 000000000..0fe15ff16
--- /dev/null
+++ b/valadoc/icons/meson.build
@@ -0,0 +1,38 @@
+valadoc_data = files(
+ 'abstractclass.svg',
+ 'abstractmethod.svg',
+ 'abstractproperty.svg',
+ 'class.svg',
+ 'coll_close.svg',
+ 'coll_open.svg',
+ 'constant.svg',
+ 'constructor.svg',
+ 'delegate.svg',
+ 'devhelpstyle.css',
+ 'enum.svg',
+ 'enumvalue.svg',
+ 'errorcode.svg',
+ 'errordomain.svg',
+ 'field.svg',
+ 'interface.svg',
+ 'method.svg',
+ 'namespace.svg',
+ 'package.svg',
+ 'packages.svg',
+ 'property.svg',
+ 'scripts.js',
+ 'signal.svg',
+ 'staticmethod.svg',
+ 'struct.svg',
+ 'style.css',
+ 'tip.svg',
+ 'virtualmethod.svg',
+ 'virtualproperty.svg',
+ 'warning.svg',
+ 'wikistyle.css',
+)
+
+install_data(
+ valadoc_data,
+ install_dir: join_paths('share', 'valadoc@0@'.format (vala_version_suffix), 'icons'),
+)
diff --git a/valadoc/meson.build b/valadoc/meson.build
new file mode 100644
index 000000000..46de4975a
--- /dev/null
+++ b/valadoc/meson.build
@@ -0,0 +1,22 @@
+valadoc_sources = files(
+ 'girwriter.vala',
+ 'initializerbuilder.vala',
+ 'symbolresolver.vala',
+ 'treebuilder.vala',
+ 'valadoc.vala',
+)
+
+valadoc_name = 'valadoc@0@'.format(vala_version_suffix)
+
+valadoc_exe = executable(
+ valadoc_name,
+ valadoc_sources,
+ dependencies: [gobject_dep, valacodegen_dep, libvaladoc_dep],
+ install: true,
+)
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
valadoc'.format(join_paths(get_option('prefix'), get_option('bindir')), valadoc_name))
+
+subdir('doclets')
+subdir('icons')
diff --git a/vapi/meson.build b/vapi/meson.build
new file mode 100644
index 000000000..2490f766a
--- /dev/null
+++ b/vapi/meson.build
@@ -0,0 +1,305 @@
+vapis = files(
+ 'alsa.vapi',
+ 'alsa.deps',
+ 'atk.deps',
+ 'atk.vapi',
+ 'atspi-2.vapi',
+ 'atspi-2.deps',
+ 'avahi-client.vapi',
+ 'avahi-gobject.deps',
+ 'avahi-gobject.vapi',
+ 'bzlib.vapi',
+ 'cairo.vapi',
+ 'cairo-gobject.deps',
+ 'cairo-gobject.vapi',
+ 'cairo-xcb.deps',
+ 'cairo-xcb.vapi',
+ 'ccss-1.vapi',
+ 'clutter-1.0.deps',
+ 'clutter-1.0.vapi',
+ 'clutter-gdk-1.0.deps',
+ 'clutter-gdk-1.0.vapi',
+ 'clutter-gst-2.0.deps',
+ 'clutter-gst-2.0.vapi',
+ 'clutter-gst-3.0.deps',
+ 'clutter-gst-3.0.vapi',
+ 'clutter-gtk-0.10.deps',
+ 'clutter-gtk-0.10.vapi',
+ 'clutter-gtk-1.0.deps',
+ 'clutter-gtk-1.0.vapi',
+ 'clutter-x11-1.0.deps',
+ 'clutter-x11-1.0.vapi',
+ 'cogl-1.0.vapi',
+ 'cogl-1.0.deps',
+ 'cogl-pango-1.0.vapi',
+ 'cogl-pango-1.0.deps',
+ 'curses.vapi',
+ 'dbus-glib-1.vapi',
+ 'enchant.vapi',
+ 'enchant-2.vapi',
+ 'fuse.deps',
+ 'fuse.vapi',
+ 'gconf-2.0.vapi',
+ 'geocode-glib-1.0.deps',
+ 'geocode-glib-1.0.vapi',
+ 'glib-2.0.vapi',
+ 'gdesktopenums-3.0.vapi',
+ 'gdk-2.0.deps',
+ 'gdk-2.0.vapi',
+ 'gdk-3.0.deps',
+ 'gdk-3.0.vapi',
+ 'gdk-pixbuf-2.0.deps',
+ 'gdk-pixbuf-2.0.vapi',
+ 'gdk-x11-2.0.deps',
+ 'gdk-x11-2.0.vapi',
+ 'gdk-x11-3.0.deps',
+ 'gdk-x11-3.0.vapi',
+ 'gdl-1.0.deps',
+ 'gdl-1.0.vapi',
+ 'gdl-3.0.deps',
+ 'gdl-3.0.vapi',
+ 'gio-2.0.deps',
+ 'gio-2.0.vapi',
+ 'gio-unix-2.0.deps',
+ 'gio-unix-2.0.vapi',
+ 'gio-windows-2.0.deps',
+ 'gio-windows-2.0.vapi',
+ 'gmodule-2.0.deps',
+ 'gmodule-2.0.vapi',
+ 'gnet-2.0.deps',
+ 'gnet-2.0.vapi',
+ 'gnome-bg-4.deps',
+ 'gnome-bg-4.vapi',
+ 'gnome-desktop-2.0.deps',
+ 'gnome-desktop-2.0.vapi',
+ 'gnome-desktop-3.0.deps',
+ 'gnome-desktop-3.0.vapi',
+ 'gnome-desktop-4.deps',
+ 'gnome-desktop-4.vapi',
+ 'gnome-rr-4.deps',
+ 'gnome-rr-4.vapi',
+ 'gnome-vfs-2.0.vapi',
+ 'gnu.deps',
+ 'gnu.vapi',
+ 'gnutls.vapi',
+ 'gobject-2.0.deps',
+ 'gobject-2.0.vapi',
+ 'gobject-introspection-1.0.deps',
+ 'gobject-introspection-1.0.vapi',
+ 'goocanvas.deps',
+ 'goocanvas.vapi',
+ 'goocanvas-2.0.deps',
+ 'goocanvas-2.0.vapi',
+ 'graphene-1.0.deps',
+ 'graphene-1.0.vapi',
+ 'graphene-gobject-1.0.deps',
+ 'graphene-gobject-1.0.vapi',
+ 'gsl.vapi',
+ 'gstreamer-1.0.deps',
+ 'gstreamer-1.0.vapi',
+ 'gstreamer-allocators-1.0.vapi',
+ 'gstreamer-allocators-1.0.deps',
+ 'gstreamer-app-1.0.vapi',
+ 'gstreamer-app-1.0.deps',
+ 'gstreamer-audio-1.0.vapi',
+ 'gstreamer-audio-1.0.deps',
+ 'gstreamer-bad-allocators-1.0.deps',
+ 'gstreamer-bad-allocators-1.0.vapi',
+ 'gstreamer-base-1.0.vapi',
+ 'gstreamer-base-1.0.deps',
+ 'gstreamer-check-1.0.vapi',
+ 'gstreamer-check-1.0.deps',
+ 'gstreamer-controller-1.0.vapi',
+ 'gstreamer-controller-1.0.deps',
+ 'gstreamer-fft-1.0.vapi',
+ 'gstreamer-fft-1.0.deps',
+ 'gstreamer-net-1.0.vapi',
+ 'gstreamer-net-1.0.deps',
+ 'gstreamer-pbutils-1.0.vapi',
+ 'gstreamer-pbutils-1.0.deps',
+ 'gstreamer-play-1.0.vapi',
+ 'gstreamer-play-1.0.deps',
+ 'gstreamer-player-1.0.vapi',
+ 'gstreamer-player-1.0.deps',
+ 'gstreamer-riff-1.0.deps',
+ 'gstreamer-riff-1.0.vapi',
+ 'gstreamer-rtp-1.0.vapi',
+ 'gstreamer-rtp-1.0.deps',
+ 'gstreamer-rtsp-1.0.vapi',
+ 'gstreamer-rtsp-1.0.deps',
+ 'gstreamer-rtsp-server-1.0.vapi',
+ 'gstreamer-rtsp-server-1.0.deps',
+ 'gstreamer-sdp-1.0.vapi',
+ 'gstreamer-sdp-1.0.deps',
+ 'gstreamer-tag-1.0.vapi',
+ 'gstreamer-tag-1.0.deps',
+ 'gstreamer-video-1.0.vapi',
+ 'gstreamer-video-1.0.deps',
+ 'gstreamer-webrtc-1.0.vapi',
+ 'gstreamer-webrtc-1.0.deps',
+ 'gst-editing-services-1.0.vapi',
+ 'gst-editing-services-1.0.deps',
+ 'gtk+-2.0.deps',
+ 'gtk+-2.0.vapi',
+ 'gtk+-3.0.deps',
+ 'gtk+-3.0.vapi',
+ 'gtk+-unix-print-2.0.deps',
+ 'gtk+-unix-print-2.0.vapi',
+ 'gtk+-unix-print-3.0.deps',
+ 'gtk+-unix-print-3.0.vapi',
+ 'gtk4.deps',
+ 'gtk4.vapi',
+ 'gtk4-unix-print.deps',
+ 'gtk4-unix-print.vapi',
+ 'gtkmozembed.deps',
+ 'gtkmozembed.vapi',
+ 'gtksourceview-2.0.deps',
+ 'gtksourceview-2.0.vapi',
+ 'gudev-1.0.deps',
+ 'gudev-1.0.vapi',
+ 'hal.deps',
+ 'hal.vapi',
+ 'harfbuzz-gobject.deps',
+ 'harfbuzz-gobject.vapi',
+ 'hildon-1.deps',
+ 'hildon-1.vapi',
+ 'hildon-fm-2.deps',
+ 'hildon-fm-2.vapi',
+ 'javascriptcoregtk-4.0.vapi',
+ 'javascriptcoregtk-5.0.vapi',
+ 'json-glib-1.0.deps',
+ 'json-glib-1.0.vapi',
+ 'libarchive.deps',
+ 'libarchive.vapi',
+ 'libbonoboui-2.0.vapi',
+ 'libdaemon.vapi',
+ 'libepc-1.0.vapi',
+ 'libesmtp.vapi',
+ 'libftdi.deps',
+ 'libftdi.vapi',
+ 'libgeoclue-2.0.vapi',
+ 'libgeoclue-2.0.deps',
+ 'libglade-2.0.deps',
+ 'libglade-2.0.vapi',
+ 'libgnome-2.0.vapi',
+ 'libgnome-menu.vapi',
+ 'libgnome-menu-3.0.deps',
+ 'libgnome-menu-3.0.vapi',
+ 'libgnomeui-2.0.deps',
+ 'libgnomeui-2.0.vapi',
+ 'libgrss.deps',
+ 'libgrss.vapi',
+ 'libgsf-1.deps',
+ 'libgsf-1.vapi',
+ 'libgvc.vapi',
+ 'libmagic.vapi',
+ 'libnl-1.vapi',
+ 'libnl-2.0.deps',
+ 'libnl-2.0.vapi',
+ 'libnl-3.0.deps',
+ 'libnl-3.0.vapi',
+ 'libnotify.deps',
+ 'libnotify.vapi',
+ 'liboobs-1.vapi',
+ 'libosso.vapi',
+ 'libpanelapplet-2.0.deps',
+ 'libpanelapplet-2.0.vapi',
+ 'libpeas-1.0.deps',
+ 'libpeas-1.0.vapi',
+ 'libpeas-gtk-1.0.deps',
+ 'libpeas-gtk-1.0.vapi',
+ 'libpq.vapi',
+ 'libsexy.deps',
+ 'libsexy.vapi',
+ 'libsoup-2.4.deps',
+ 'libsoup-2.4.vapi',
+ 'libsoup-3.0.deps',
+ 'libsoup-3.0.vapi',
+ 'libunwind-generic.vapi',
+ 'libusb.vapi',
+ 'libusb-1.0.deps',
+ 'libusb-1.0.vapi',
+ 'libwnck-1.0.deps',
+ 'libwnck-1.0.vapi',
+ 'libwnck-3.0.deps',
+ 'libwnck-3.0.vapi',
+ 'libxml-2.0.vapi',
+ 'linux.deps',
+ 'linux.vapi',
+ 'loudmouth-1.0.vapi',
+ 'lua.vapi',
+ 'mysql.vapi',
+ 'orc-0.4.vapi',
+ 'packagekit-glib2.deps',
+ 'packagekit-glib2.vapi',
+ 'pango.deps',
+ 'pango.vapi',
+ 'pangocairo.deps',
+ 'pangocairo.vapi',
+ 'pixman-1.vapi',
+ 'polkit-agent-1.deps',
+ 'polkit-agent-1.vapi',
+ 'polkit-gobject-1.deps',
+ 'polkit-gobject-1.vapi',
+ 'poppler-glib.deps',
+ 'poppler-glib.vapi',
+ 'posix.vapi',
+ 'purple.deps',
+ 'purple.vapi',
+ 'raptor.vapi',
+ 'rasqal.vapi',
+ 'rasqal.deps',
+ 'readline.vapi',
+ 'rest-0.7.deps',
+ 'rest-0.7.vapi',
+ 'rest-extras-0.7.deps',
+ 'rest-extras-0.7.vapi',
+ 'sdl2-android.deps',
+ 'sdl2-android.vapi',
+ 'SDL2_gfx.deps',
+ 'SDL2_gfx.vapi',
+ 'SDL2_image.deps',
+ 'SDL2_image.vapi',
+ 'sdl2-ios.deps',
+ 'sdl2-ios.vapi',
+ 'SDL2_mixer.deps',
+ 'SDL2_mixer.vapi',
+ 'SDL2_net.deps',
+ 'SDL2_net.vapi',
+ 'SDL2_ttf.deps',
+ 'SDL2_ttf.vapi',
+ 'sdl2.vapi',
+ 'sdl2-windows.deps',
+ 'sdl2-windows.vapi',
+ 'sdl2-winrt.deps',
+ 'sdl2-winrt.vapi',
+ 'sqlite3.vapi',
+ 'taglib_c.vapi',
+ 'tiff.vapi',
+ 'tokyocabinet.vapi',
+ 'udisks2.deps',
+ 'udisks2.vapi',
+ 'unique-1.0.deps',
+ 'unique-1.0.vapi',
+ 'v4l2.vapi',
+ 'webkit2gtk-4.0.vapi',
+ 'webkit2gtk-4.0.deps',
+ 'webkit2gtk-5.0.vapi',
+ 'webkit2gtk-5.0.deps',
+ 'webkit2gtk-web-extension-4.0.vapi',
+ 'webkit2gtk-web-extension-4.0.deps',
+ 'webkit2gtk-web-extension-5.0.vapi',
+ 'webkit2gtk-web-extension-5.0.deps',
+ 'x11.vapi',
+ 'xcb.vapi',
+ 'xcb-icccm.vapi',
+ 'xcb-icccm.deps',
+ 'xtst.vapi',
+ 'xtst.deps',
+ 'zlib.vapi',
+)
+
+install_data(
+ vapis,
+ install_dir: join_paths('share', 'vala@0@'.format(vala_version_suffix), 'vapi'),
+)
diff --git a/vapigen/meson.build b/vapigen/meson.build
new file mode 100644
index 000000000..df3e18c5a
--- /dev/null
+++ b/vapigen/meson.build
@@ -0,0 +1,46 @@
+vapigen_sources = files(
+ 'valagidlparser.vala',
+ 'valavapigen.vala',
+)
+
+vapigen_name = 'vapigen@0@'.format(vala_version_suffix)
+
+vapigen_exe = executable(
+ vapigen_name,
+ vapigen_sources,
+ dependencies: [glib_dep, valagee_dep, valacore_dep, gidl_dep],
+ install: true,
+ vala_args: ['--pkg', 'gidl', '--vapidir', join_paths(meson.source_root(), 'gobject-introspection')],
+)
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
vapigen'.format(join_paths(get_option('prefix'), get_option('bindir')), vapigen_name))
+
+vapicheck_sources = files(
+ 'valavapicheck.vala',
+)
+
+vapicheck_name = 'vapicheck@0@'.format(vala_version_suffix)
+
+executable(
+ vapicheck_name,
+ vapicheck_sources,
+ dependencies: [glib_dep, valagee_dep, valacore_dep, gidl_dep],
+ install: true,
+ vala_args: ['--pkg', 'gidl', '--vapidir', join_paths(meson.source_root(), 'gobject-introspection')],
+)
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs --relative @1@
vapicheck'.format(join_paths(get_option('prefix'), get_option('bindir')), vapicheck_name))
+
+configure_file(
+ input: 'vapigen.pc.in',
+ output: 'vapigen@0@.pc'.format(vala_version_suffix),
+ configuration: pkgconf,
+ install_dir: pkg_install_dir,
+)
+
+install_data('vapigen.m4', install_dir: join_paths('share', 'aclocal'))
+install_data('Makefile.vapigen', install_dir: join_paths('share', 'vala'))
+
+subdir('vala-gen-introspect')
diff --git a/vapigen/vala-gen-introspect/meson.build b/vapigen/vala-gen-introspect/meson.build
new file mode 100644
index 000000000..79ab97379
--- /dev/null
+++ b/vapigen/vala-gen-introspect/meson.build
@@ -0,0 +1,9 @@
+vala_gen_introspect_sh = configure_file(
+ input: 'vala-gen-introspect.in',
+ output: 'vala-gen-introspect@0@'.format(vala_version_suffix),
+ configuration: pkgconf,
+ install_dir: get_option('bindir'),
+)
+
+# https://github.com/mesonbuild/meson/issues/1602
+meson.add_install_script('sh', '-c', 'cd $DESTDIR@0@; ln -fs @1@
vala-gen-introspect'.format(join_paths(get_option('prefix'), get_option('bindir')),
'vala-gen-introspect@0@'.format(vala_version_suffix)))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]