summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <tingping@tingping.se>2017-02-08 14:29:19 -0500
committerPatrick Griffis <tingping@tingping.se>2017-02-08 14:29:19 -0500
commit73b9c01abca5afe403944b6f739242726ff80d97 (patch)
tree6b71f06a3e873191e2fdd6054636311af0de44f4
parent1ff63efedb2c7ce951eaf240a84876d5189d4504 (diff)
downloadbuildstream-73b9c01abca5afe403944b6f739242726ff80d97.tar.gz
Add Meson plugin
-rw-r--r--buildstream/plugins/elements/meson.py36
-rw-r--r--buildstream/plugins/elements/meson.yaml48
2 files changed, 84 insertions, 0 deletions
diff --git a/buildstream/plugins/elements/meson.py b/buildstream/plugins/elements/meson.py
new file mode 100644
index 000000000..4b9c21fb9
--- /dev/null
+++ b/buildstream/plugins/elements/meson.py
@@ -0,0 +1,36 @@
+# Copyright (C) 2017 Patrick Griffis
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+"""Meson build element
+
+A :mod:`BuildElement <buildstream.buildelement>` implementation for using
+Meson build scripts
+
+The meson default configuration:
+ .. literalinclude:: ../../../buildstream/plugins/elements/meson.yaml
+ :language: yaml
+"""
+
+from buildstream import BuildElement
+
+
+# Element implementation for the 'meson' kind.
+class MesonElement(BuildElement):
+ pass
+
+
+# Plugin entry point
+def setup():
+ return MesonElement
diff --git a/buildstream/plugins/elements/meson.yaml b/buildstream/plugins/elements/meson.yaml
new file mode 100644
index 000000000..d6543c833
--- /dev/null
+++ b/buildstream/plugins/elements/meson.yaml
@@ -0,0 +1,48 @@
+# Meson default configuration
+
+variables:
+
+ build-dir: _builddir
+ meson: |
+ meson %{build-dir} --prefix=%{prefix} \
+ --bindir=%{bindir} \
+ --sbindir=%{sbindir} \
+ --sysconfdir=%{sysconfdir} \
+ --datadir=%{datadir} \
+ --includedir=%{includedir} \
+ --libdir=%{libdir} \
+ --libexecdir=%{libexecdir} \
+ --localstatedir=%{localstatedir} \
+ --sharedstatedir=%{sharedstatedir} \
+ --mandir=%{mandir} \
+ --infodir=%{infodir}
+ ninja: ninja -j %{max-jobs} -C %{build-dir}
+ ninja-install: env DESTDIR="%{install-root}" ninja -C %{build-dir} install
+
+config:
+
+ # Commands for configuring the software
+ #
+ configure-commands:
+ - |
+ %{meson}
+
+ # Commands for building the software
+ #
+ build-commands:
+ - |
+ %{ninja}
+
+ # Commands for installing the software into a
+ # destination folder
+ #
+ install-commands:
+ - |
+ %{ninja-install}
+
+ # Commands for stripping debugging information out of
+ # installed binaries
+ #
+ strip-commands:
+ - |
+ %{strip-binaries}