[gxml] Porting project from Autotools to Meson



commit 845ba31e79577e4a3ba9d584a148dcfb2e44318a
Author: Yannick Inizan <inizan yannick gmail com>
Date:   Fri May 5 19:36:08 2017 -0500

    Porting project from Autotools to Meson

 configure.ac      |    8 ++-
 gxml/Makefile.am  |   12 ++++-
 gxml/gxml.deps.in |    1 +
 gxml/gxml.pc.in   |   13 +++++
 gxml/meson.build  |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 meson.build       |   23 ++++++++
 6 files changed, 206 insertions(+), 5 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 7687c30..3070f80 100644
--- a/configure.ac
+++ b/configure.ac
@@ -120,9 +120,12 @@ VALA_API_REQUIRED=
 LIBVALA_REQUIRED=
 GEE_REQUIRED=0.18.0
 LIBXML_REQUIRED=2.7
-GIO_MODULES="gio-2.0 >= 2.16"
+GIO_MODULES="gio-2.0 >= 2.32"
 VALADOC_REQUIRED=0.30
 
+PCDEPS="gee-0.8 gio-2.0 libxml-2.0"
+AC_SUBST(PCDEPS)
+
 # Check glib
 PKG_CHECK_MODULES([GLIB],
                   [glib-2.0 >= $GLIB_REQUIRED
@@ -141,7 +144,6 @@ PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED)
 # Check for GIO
 PKG_CHECK_MODULES(GIO, $GIO_MODULES)
 
-
 # Check for GObject Introspection
 GOBJECT_INTROSPECTION_CHECK([1.32.0])
 
@@ -247,7 +249,7 @@ AM_CONDITIONAL(PLATFORM_WIN32, [test x$platform_win32 = xyes])
 AC_CONFIG_FILES([
 Makefile
 gxml/namespace-info.vala
-gxml/gxml-0.14.pc
+gxml/gxml.pc
 gxml/Makefile
 test/Makefile
 docs/Makefile
diff --git a/gxml/Makefile.am b/gxml/Makefile.am
index 5b70f0f..ef5e820 100644
--- a/gxml/Makefile.am
+++ b/gxml/Makefile.am
@@ -202,6 +202,12 @@ gxml_HEADERS = gxml.h xlibxml.h
 
 # .vapi Vala API file
 gxml-0.14.vapi: libgxml-0.14.la
+
+gxml-0.14.deps:
+       echo 'libxml-2.0' > $@
+       echo 'gee-0.8' >> $@
+       echo 'gio-2.0' >> $@
+
 vapidir = $(datadir)/vala/vapi
 dist_vapi_DATA = \
        gxml-0.14.vapi \
@@ -209,9 +215,11 @@ dist_vapi_DATA = \
        $(NULL)
 
 # .pc pkg-config file
-pkgconfig_in = gxml-0.14.pc.in
+gxml-0.14.pc:
+       cp gxml.pc $@
+
 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = $(pkgconfig_in:.in=)
+pkgconfig_DATA = gxml-0.14.pc
 
 EXTRA_DIST = \
        $(sources) \
diff --git a/gxml/gxml.deps.in b/gxml/gxml.deps.in
new file mode 100644
index 0000000..ff7dc3f
--- /dev/null
+++ b/gxml/gxml.deps.in
@@ -0,0 +1 @@
+@VALADEPS@
diff --git a/gxml/gxml.pc.in b/gxml/gxml.pc.in
new file mode 100644
index 0000000..761f885
--- /dev/null
+++ b/gxml/gxml.pc.in
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+datadir=@prefix@/share
+includedir=@prefix@/include
+
+Name: libgxml
+Description: GObject API for XML manipulation and serialization library
+URL: http://live.gnome.org/GXml
+Version: @GXML_VERSION@
+Requires: @PCDEPS@
+Libs: -L${libdir} -lgxml-@API_VERSION@
+Cflags: -I${includedir}/gxml-@API_VERSION@/gxml
diff --git a/gxml/meson.build b/gxml/meson.build
new file mode 100644
index 0000000..8691f9a
--- /dev/null
+++ b/gxml/meson.build
@@ -0,0 +1,154 @@
+vapidir = get_option('datadir') + '/vala/vapi'
+includedir = get_option('includedir') + '/gxml-@0@/gxml'.format(API_VERSION)
+
+conf = configuration_data()
+conf.set('prefix', get_option('prefix'))
+conf.set('libdir', get_option('prefix') + '/' + get_option('libdir'))
+conf.set('VALADEPS', VALADEPS)
+conf.set('PCDEPS', PCDEPS)
+conf.set('GXML_VERSION', GXML_VERSION)
+conf.set('API_VERSION', API_VERSION)
+       
+configure_file(input : 'gxml.pc.in',
+       output : 'gxml-@0@.pc'.format(API_VERSION),
+       configuration : conf,
+       install : true,
+       install_dir : join_paths(get_option('libdir'), 'pkgconfig'))
+       
+configure_file(input : 'gxml.deps.in',
+       output : 'gxml-@0@.deps'.format(API_VERSION),
+       configuration : conf,
+       install : true,
+       install_dir : vapidir)
+       
+conf = configuration_data()
+conf.set_quoted('PACKAGE_LOCALE_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
+conf.set_quoted('GETTEXT_PACKAGE', 'GXml')
+configure_file(output : 'config.h',
+       configuration : conf)
+
+sources = [
+       'Attribute.vala',
+       'CDATA.vala',
+       'Character.vala',
+       'Comment.vala',
+       'Document.vala',
+       'DocumentType.vala',
+       'DomAttr.vala',
+       'DomCharacter.vala',
+       'DomCollections.vala',
+       'DomDocument.vala',
+       'DomElement.vala',
+       'DomEvents.vala',
+       'DomMutationObservers.vala',
+       'DomNode.vala',
+       'DomRange.vala',
+       'Element.vala',
+       'Enumeration.vala',
+       'GHtml.vala',
+       'GomAttr.vala',
+       'GomCollections.vala',
+       'GomDocument.vala',
+       'GomElement.vala',
+       'GomNode.vala',
+       'GomObject.vala',
+       'GomProperty.vala',
+       'GomSchema.vala',
+       'GomText.vala',
+       'GXmlAttribute.vala',
+       'GXmlCDATA.vala',
+       'GXmlCharacter.vala',
+       'GXmlChildNode.vala',
+       'GXmlComment.vala',
+       'GXmlDocument.vala',
+       'GXmlDomCollections.vala',
+       'GXmlDomEvents.vala',
+       'GXmlDomRange.vala',
+       'GXmlElement.vala',
+       'GXmlHashMapAttr.vala',
+       'gxml-init.vala',
+       'GXmlListChildren.vala',
+       'GXmlListNamespaces.vala',
+       'GXmlNamespace.vala',
+       'GXmlNode.vala',
+       'GXmlProcessingInstruction.vala',
+       'GXmlText.vala',
+       'GXPathObject.vala',
+       'Namespace.vala',
+       'Node.vala',
+       'NodeType.vala',
+       'Notation.vala',
+       'Parser.vala',
+       'ProcessingInstruction.vala',
+       'Schema.vala',
+       'Serializable.vala',
+       'SerializableBool.vala',
+       'SerializableContainer.vala',
+       'SerializableDouble.vala',
+       'SerializableEnum.vala',
+       'SerializableFloat.vala',
+       'SerializableGeeArrayList.vala',
+       'SerializableGeeDualKeyMap.vala',
+       'SerializableGeeHashMap.vala',
+       'SerializableGeeTreeMap.vala',
+       'SerializableInt.vala',
+       'SerializableMapDualKey.vala',
+       'SerializableMapKey.vala',
+       'SerializableObjectModel.vala',
+       'SerializableProperty.vala',
+       'SerializableValueList.vala',
+       'TAttribute.vala',
+       'TCDATA.vala',
+       'TComment.vala',
+       'TDocument.vala',
+       'TElement.vala',
+       'Text.vala',
+       'TNamespace.vala',
+       'TNode.vala',
+       'TProcessingInstruction.vala',
+       'TText.vala',
+       'xlibxml.c',
+       'xlibxml.h',
+       'XParser.vala',
+       'XPath.vala',
+       meson.build_root() + '/namespace-info.vala'
+]
+
+gxml = library('gxml-@0@'.format(API_VERSION),
+       sources,
+       version : GXML_VERSION,
+       vala_header : 'gxml.h',
+       vala_vapi : 'gxml-@0@.vapi'.format(API_VERSION),
+       vala_gir : 'GXml-@0@.gir'.format(API_VERSION),
+       dependencies : [ gee, gio, xml ],
+       vala_args : [
+               '--vapidir=' + meson.source_root() + '/vapi',
+               '--pkg', 'config'
+       ],
+       c_args : [
+               '-include',
+               meson.current_build_dir() + '/config.h',
+               xlibxml_cflags
+       ],
+       install : true,
+       install_dir : [
+               get_option('libdir'),
+               includedir,
+               vapidir,
+               true
+       ])
+       
+install_headers('xlibxml.h', subdir : includedir)
+       
+g_ir_compiler = find_program('g-ir-compiler')
+custom_target('gxml-typelib',
+       command: [
+               g_ir_compiler,
+               '--shared-library', 'libgxml-@0@.so.@1@'.format (API_VERSION, GXML_VERSION),
+               '--output', '@OUTPUT@', 
+               join_paths(meson.current_build_dir(), 'GXml-@0@.gir'.format(API_VERSION))
+       ],
+       output: 'GXml-@0@.typelib'.format(API_VERSION),
+       depends: gxml,
+       install: true,
+       install_dir: join_paths(get_option('libdir'), 'girepository-1.0'))
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..f4a8d09
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,23 @@
+project('gxml', [ 'vala', 'c'])
+
+xml = dependency('libxml-2.0')
+gio = dependency('gio-2.0')
+gee = dependency('gee-0.8')
+
+VALADEPS = 'gee-0.8\ngio-2.0\nlibxml-2.0'
+PCDEPS = 'gee-0.8 gio-2.0 libxml-2.0'
+
+API_VERSION = '0.14'
+GXML_VERSION = '0.15.0'
+
+xlibxml_cflags = '-I' + meson.current_source_dir()
+
+conf = configuration_data()
+conf.set('API_VERSION', API_VERSION)
+
+configure_file(input : 'gxml/namespace-info.vala.in',
+       output : 'namespace-info.vala',
+       configuration : conf)
+
+subdir('po')
+subdir('gxml')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]