summaryrefslogtreecommitdiff
path: root/mkmesonconf.py
diff options
context:
space:
mode:
authorElliott Sales de Andrade <qulogic@pidgin.im>2017-07-06 19:40:28 -0400
committerElliott Sales de Andrade <qulogic@pidgin.im>2017-07-06 19:40:28 -0400
commita68518ba35e740e4807d8b0e9bc68608d85d5067 (patch)
tree1e25ee2967e9bd2e194bf4092aee788c421374e4 /mkmesonconf.py
parent4d424dda263ee4085ca286e499af7a0d9a1b08e5 (diff)
downloadpidgin-a68518ba35e740e4807d8b0e9bc68608d85d5067.tar.gz
Add meson arguments to About dialog.
Diffstat (limited to 'mkmesonconf.py')
-rwxr-xr-xmkmesonconf.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/mkmesonconf.py b/mkmesonconf.py
new file mode 100755
index 0000000000..35834f60ea
--- /dev/null
+++ b/mkmesonconf.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+#
+# Purple is the legal property of its developers, whose names are too numerous
+# to list here. Please refer to the COPYRIGHT file distributed with this
+# source distribution.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+
+"""
+Produce meson-config.h in a build directory.
+
+This should not really be run manually. It is used by Meson as a
+post-configuration script to create meson-config.h which for now simply
+contains information about the configuration used to create the build
+directory.
+"""
+
+import html
+import json
+import os
+import subprocess
+import sys
+
+
+try:
+ introspect = os.environ['MESONINTROSPECT']
+except KeyError:
+ print('Meson is too old; '
+ 'it does not set MESONINTROSPECT for postconf scripts.')
+ sys.exit(1)
+
+try:
+ build_root = os.environ['MESON_BUILD_ROOT']
+except KeyError:
+ print('Meson is too old; '
+ 'it does not set MESON_BUILD_ROOT for postconf scripts.')
+ sys.exit(1)
+
+
+def tostr(obj):
+ if isinstance(obj, str):
+ return html.escape(repr(obj))
+ else:
+ return repr(obj)
+
+
+conf = subprocess.check_output([introspect, '--buildoptions', build_root],
+ universal_newlines=True)
+conf = json.loads(conf)
+
+settings = ' '.join('{}={}'.format(option['name'], tostr(option['value']))
+ for option in sorted(conf, key=lambda x: x['name']))
+
+with open(os.path.join(build_root, 'meson-config.h'), 'w') as f:
+ f.write('#define MESON_ARGS "{}"'.format(settings))