From 2bcba9d3b4814b3dd1888eb95dbae7267d469592 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 10 Feb 2019 19:58:46 +0100 Subject: [PATCH] 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 | 182 ++++++++++++++ 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, 1342 insertions(+) create mode 100644 ccode/meson.build create mode 100644 codegen/meson.build create mode 100644 compiler/meson.build create mode 100644 config.h.meson create mode 100644 doc/meson.build create mode 100644 gee/meson.build create mode 100644 gobject-introspection/meson.build create mode 100644 libvaladoc/meson.build create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 unversioned-install.sh create mode 100644 vala/meson.build create mode 100644 valadoc/doclets/devhelp/meson.build create mode 100644 valadoc/doclets/gtkdoc/meson.build create mode 100644 valadoc/doclets/html/meson.build create mode 100644 valadoc/doclets/meson.build create mode 100644 valadoc/icons/meson.build create mode 100644 valadoc/meson.build create mode 100644 vapi/meson.build create mode 100644 vapigen/meson.build create mode 100644 vapigen/vala-gen-introspect/meson.build 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..3dd99558f --- /dev/null +++ b/meson.build @@ -0,0 +1,182 @@ +project('vala', + 'c', 'vala', + version: '0.57.0', + 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.58' +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-in-bool-context', + '-Werror=int-to-pointer-cast', + '-Werror=pointer-to-int-cast', + '-Werror=compare-distinct-pointer-types', + '-Werror=empty-body', + '-Werror=comment', + '-Werror=strict-overflow', + '-Wformat=2', + '-Werror=format-security', + '-Werror=format-nonliteral', + '-Werror=format-overflow=2', + '-Werror=format-truncation=2', + '-Werror=int-conversion', + '-Werror=duplicated-branches', + '-Werror=duplicated-cond', + '-Werror=declaration-after-statement', + '-Werror=maybe-uninitialized', + '-Werror=missing-braces', + '-Werror=missing-declarations', + '-Werror=missing-prototypes', + '-Werror=strict-prototypes', + '-Werror=bool-compare', + '-Werror=tautological-pointer-compare', + '-Werror=logical-not-parentheses', + '-Werror=address', + '-Werror=array-bounds', + '-Werror=array-parameter=2', + '-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 + 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))) -- 2.47.2