diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-27 19:01:00 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-06-27 19:01:00 +0300 |
commit | dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b (patch) | |
tree | c946eed90b0d07587de0d99c48dfffccc15d17b0 | |
parent | e4daad369ac1f5518e114561ca1c7349a4b309ae (diff) | |
parent | efef8f4f387db3f7f9322504fd1c73afb7ea3179 (diff) | |
download | meson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.zip meson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.tar.gz meson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.tar.bz2 |
Merged Genie support.
-rw-r--r-- | docs/markdown/Release-notes-for-0.42.0.md | 5 | ||||
-rw-r--r-- | docs/markdown/Vala.md | 6 | ||||
-rw-r--r-- | mesonbuild/backend/backends.py | 2 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 8 | ||||
-rw-r--r-- | mesonbuild/compilers/compilers.py | 2 | ||||
-rw-r--r-- | test cases/vala/19 genie/meson.build | 6 | ||||
-rw-r--r-- | test cases/vala/19 genie/prog.gs | 2 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/c_test_one.c | 5 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/c_test_two.c | 5 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/init.gs | 11 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/meson.build | 19 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/test_one.gs | 5 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/test_two.gs | 5 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/vala_test_one.vala | 7 | ||||
-rw-r--r-- | test cases/vala/20 genie multiple mixed sources/vala_test_two.vala | 7 |
15 files changed, 86 insertions, 9 deletions
diff --git a/docs/markdown/Release-notes-for-0.42.0.md b/docs/markdown/Release-notes-for-0.42.0.md index 7c66870..4b8fbe3 100644 --- a/docs/markdown/Release-notes-for-0.42.0.md +++ b/docs/markdown/Release-notes-for-0.42.0.md @@ -18,3 +18,8 @@ Meson will now check the keyword arguments used when calling any function and print a warning if any of the keyword arguments is not known. In the future this will become a hard error. +## Add support for Genie to Vala compiler + +The Vala compiler has an alternative syntax, Genie, that uses the `.gs` +file extension. Meson now recognises and uses Genie files. + diff --git a/docs/markdown/Vala.md b/docs/markdown/Vala.md index 7674cf3..22a260a 100644 --- a/docs/markdown/Vala.md +++ b/docs/markdown/Vala.md @@ -1,14 +1,14 @@ --- title: Vala -short-description: Compiling Vala programs +short-description: Compiling Vala and Genie programs ... # Compiling Vala applications -Meson has support for compiling Vala programs. A skeleton Vala file looks like this. +Meson has support for compiling Vala and Genie programs. A skeleton `meson.build` file for Vala looks like this: ```meson -project('valaprog', ['vala', 'c']) +project('valaprog', 'vala', 'c') glib_dep = dependency('glib-2.0') gobject_dep = dependency('gobject-2.0') diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 95b0026..d2ea467 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -307,7 +307,7 @@ class Backend: if isinstance(source, mesonlib.File): source = source.fname # foo.vala files compile down to foo.c and then foo.c.o, not foo.vala.o - if source.endswith('.vala'): + if source.endswith(('.vala', '.gs')): if is_unity: return source[:-5] + '.c.' + self.environment.get_object_suffix() source = os.path.join(self.get_target_private_dir(target), source[:-5] + '.c') diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index e8090e7..61b5f18 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1005,7 +1005,7 @@ int dummy; def split_vala_sources(self, t): """ - Splits the target's sources into .vala, .vapi, and other sources. + Splits the target's sources into .vala, .gs, .vapi, and other sources. Handles both pre-existing and generated sources. Returns a tuple (vala, vapi, others) each of which is a dictionary with @@ -1026,7 +1026,7 @@ int dummy; 'mesonlib.File, not {!r}'.format(t, s) raise InvalidArguments(msg) f = s.rel_to_builddir(self.build_to_src) - if s.endswith('.vala'): + if s.endswith(('.vala', '.gs')): srctype = vala elif s.endswith('.vapi'): srctype = vapi @@ -1037,7 +1037,7 @@ int dummy; for gensrc in t.get_generated_sources(): for s in gensrc.get_outputs(): f = self.get_target_generated_dir(t, gensrc, s) - if s.endswith('.vala'): + if s.endswith(('.vala', '.gs')): srctype = vala elif s.endswith('.vapi'): srctype = vapi @@ -1061,7 +1061,7 @@ int dummy; (vala_src, vapi_src, other_src) = self.split_vala_sources(target) extra_dep_files = [] if not vala_src: - msg = 'Vala library {!r} has no Vala source files.' + msg = 'Vala library {!r} has no Vala or Genie source files.' raise InvalidArguments(msg.format(target.name)) valac = target.compilers['vala'] diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index a200c07..579988f 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -39,7 +39,7 @@ lang_suffixes = { 'objc': ('m',), 'objcpp': ('mm',), 'rust': ('rs',), - 'vala': ('vala', 'vapi'), + 'vala': ('vala', 'vapi', 'gs'), 'cs': ('cs',), 'swift': ('swift',), 'java': ('java',), diff --git a/test cases/vala/19 genie/meson.build b/test cases/vala/19 genie/meson.build new file mode 100644 index 0000000..2bdb185 --- /dev/null +++ b/test cases/vala/19 genie/meson.build @@ -0,0 +1,6 @@ +project('genietest', 'vala', 'c') + +valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] + +e = executable('genieprog', 'prog.gs', dependencies : valadeps) +test('genietest', e) diff --git a/test cases/vala/19 genie/prog.gs b/test cases/vala/19 genie/prog.gs new file mode 100644 index 0000000..f206b09 --- /dev/null +++ b/test cases/vala/19 genie/prog.gs @@ -0,0 +1,2 @@ +init + print ("Genie is working.") diff --git a/test cases/vala/20 genie multiple mixed sources/c_test_one.c b/test cases/vala/20 genie multiple mixed sources/c_test_one.c new file mode 100644 index 0000000..d0b7e05 --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/c_test_one.c @@ -0,0 +1,5 @@ +#include <glib.h> + +gboolean c_test_one_is_true (void) { + return TRUE; +} diff --git a/test cases/vala/20 genie multiple mixed sources/c_test_two.c b/test cases/vala/20 genie multiple mixed sources/c_test_two.c new file mode 100644 index 0000000..596928b --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/c_test_two.c @@ -0,0 +1,5 @@ +#include <glib.h> + +gboolean c_test_two_is_true (void) { + return TRUE; +} diff --git a/test cases/vala/20 genie multiple mixed sources/init.gs b/test cases/vala/20 genie multiple mixed sources/init.gs new file mode 100644 index 0000000..14bfbf8 --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/init.gs @@ -0,0 +1,11 @@ +def extern c_test_one_is_true():bool +def extern c_test_two_is_true():bool + +init + assert( new Genie.TestOne().is_true() ) + assert( new Genie.TestTwo().is_true() ) + assert( new Vala.TestOne().is_true() ) + assert( new Vala.TestTwo().is_true() ) + assert( c_test_one_is_true() ) + assert( c_test_two_is_true() ) + diff --git a/test cases/vala/20 genie multiple mixed sources/meson.build b/test cases/vala/20 genie multiple mixed sources/meson.build new file mode 100644 index 0000000..148ce0e --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/meson.build @@ -0,0 +1,19 @@ +project( 'Genie multiple and mixed sources', 'vala', 'c' ) + +genie_deps = [ + dependency( 'glib-2.0' ), + dependency( 'gobject-2.0' ), +] + +sources = [ + 'init.gs', + 'test_one.gs', + 'test_two.gs', + 'vala_test_one.vala', + 'vala_test_two.vala', + 'c_test_one.c', + 'c_test_two.c', +] + +prog = executable( 'genie_prog', sources, dependencies: genie_deps ) +test( 'Given a Genie program when it is compiled from multiple mixed sources then it should work', prog ) diff --git a/test cases/vala/20 genie multiple mixed sources/test_one.gs b/test cases/vala/20 genie multiple mixed sources/test_one.gs new file mode 100644 index 0000000..af3b1ec --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/test_one.gs @@ -0,0 +1,5 @@ +namespace Genie + + class TestOne + def is_true():bool + return true diff --git a/test cases/vala/20 genie multiple mixed sources/test_two.gs b/test cases/vala/20 genie multiple mixed sources/test_two.gs new file mode 100644 index 0000000..0a0e03c --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/test_two.gs @@ -0,0 +1,5 @@ +namespace Genie + + class TestTwo + def is_true():bool + return true diff --git a/test cases/vala/20 genie multiple mixed sources/vala_test_one.vala b/test cases/vala/20 genie multiple mixed sources/vala_test_one.vala new file mode 100644 index 0000000..7044bc8 --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/vala_test_one.vala @@ -0,0 +1,7 @@ +namespace Vala { + public class TestOne { + public bool is_true() { + return true; + } + } +} diff --git a/test cases/vala/20 genie multiple mixed sources/vala_test_two.vala b/test cases/vala/20 genie multiple mixed sources/vala_test_two.vala new file mode 100644 index 0000000..b530efb --- /dev/null +++ b/test cases/vala/20 genie multiple mixed sources/vala_test_two.vala @@ -0,0 +1,7 @@ +namespace Vala { + public class TestTwo { + public bool is_true() { + return true; + } + } +} |