diff options
author | Patrick Griffis <tingping@tingping.se> | 2017-04-28 04:54:18 -0400 |
---|---|---|
committer | Philip Chimento <philip.chimento@gmail.com> | 2017-05-01 22:52:15 -0700 |
commit | d083e39038aca8de1b84ed3cb09c2ed880df1f88 (patch) | |
tree | 013c2a0c0621dd746973995b82c6bc2277766ed3 | |
parent | bdbf7179bca6fba1ac9ce69256b5121f81305507 (diff) | |
download | gjs-d083e39038aca8de1b84ed3cb09c2ed880df1f88.tar.gz |
package: Support running Meson projects from source
The run_target() function in Meson sets these variables allowing
you to simply create a target that can be ran with ninja.
See also: http://mesonbuild.com/Reference-manual.html#run_target
https://bugzilla.gnome.org/show_bug.cgi?id=781883
-rw-r--r-- | modules/package.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/modules/package.js b/modules/package.js index fa1d5a82..ca167c2d 100644 --- a/modules/package.js +++ b/modules/package.js @@ -59,6 +59,11 @@ function _runningFromSource() { return binary.equal(sourceBinary); } +function _runningFromMesonSource() { + return GLib.getenv('MESON_BUILD_ROOT') && + GLib.getenv('MESON_SOURCE_ROOT'); +} + function _makeNamePath(name) { return '/' + name.replace('.', '/', 'g'); } @@ -132,6 +137,23 @@ function init(params) { pkgdatadir = GLib.build_filenamev([_base, 'data']); localedir = GLib.build_filenamev([_base, 'po']); moduledir = GLib.build_filenamev([_base, 'src']); + } else if (_runningFromMesonSource()) { + log('Running from Meson, using local files'); + let bld = GLib.getenv('MESON_BUILD_ROOT'); + let src = GLib.getenv('MESON_SOURCE_ROOT'); + + pkglibdir = libpath = girpath = GLib.build_filenamev([bld, 'lib']); + pkgdatadir = GLib.build_filenamev([bld, 'data']); + localedir = GLib.build_filenamev([bld, 'po']); + + try { + let resource = Gio.Resource.load(GLib.build_filenamev([bld, 'src', + name + '.src.gresource'])); + resource._register(); + moduledir = 'resource://' + _makeNamePath(name) + '/js'; + } catch(e) { + moduledir = GLib.build_filenamev([src, 'src']); + } } else { _base = prefix; pkglibdir = GLib.build_filenamev([libdir, _pkgname]); |