aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-06-27 19:01:00 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-06-27 19:01:00 +0300
commitdfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b (patch)
treec946eed90b0d07587de0d99c48dfffccc15d17b0
parente4daad369ac1f5518e114561ca1c7349a4b309ae (diff)
parentefef8f4f387db3f7f9322504fd1c73afb7ea3179 (diff)
downloadmeson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.zip
meson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.tar.gz
meson-dfb0414d9c78cbea9faf1a4bf42059a55eb2dd4b.tar.bz2
Merged Genie support.
-rw-r--r--docs/markdown/Release-notes-for-0.42.0.md5
-rw-r--r--docs/markdown/Vala.md6
-rw-r--r--mesonbuild/backend/backends.py2
-rw-r--r--mesonbuild/backend/ninjabackend.py8
-rw-r--r--mesonbuild/compilers/compilers.py2
-rw-r--r--test cases/vala/19 genie/meson.build6
-rw-r--r--test cases/vala/19 genie/prog.gs2
-rw-r--r--test cases/vala/20 genie multiple mixed sources/c_test_one.c5
-rw-r--r--test cases/vala/20 genie multiple mixed sources/c_test_two.c5
-rw-r--r--test cases/vala/20 genie multiple mixed sources/init.gs11
-rw-r--r--test cases/vala/20 genie multiple mixed sources/meson.build19
-rw-r--r--test cases/vala/20 genie multiple mixed sources/test_one.gs5
-rw-r--r--test cases/vala/20 genie multiple mixed sources/test_two.gs5
-rw-r--r--test cases/vala/20 genie multiple mixed sources/vala_test_one.vala7
-rw-r--r--test cases/vala/20 genie multiple mixed sources/vala_test_two.vala7
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;
+ }
+ }
+}