aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-04-08 23:32:31 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-04-08 23:32:31 +0300
commitd532dbef4254638ea09706678160a009f3b26ab2 (patch)
tree2d5366963c2bd8ee6e42b125644b7b29377ca6fe
parente3b72045c42e11b372d468899e570be229b24fc4 (diff)
downloadmeson-d532dbef4254638ea09706678160a009f3b26ab2.zip
meson-d532dbef4254638ea09706678160a009f3b26ab2.tar.gz
meson-d532dbef4254638ea09706678160a009f3b26ab2.tar.bz2
Fix use of shared subprojects.
-rw-r--r--contributing.txt11
-rw-r--r--interpreter.py3
-rw-r--r--test cases/common/79 shared subproject/a.c13
-rw-r--r--test cases/common/79 shared subproject/meson.build3
-rw-r--r--test cases/common/79 shared subproject/subprojects/B/b.c12
-rw-r--r--test cases/common/79 shared subproject/subprojects/C/c.c6
6 files changed, 37 insertions, 11 deletions
diff --git a/contributing.txt b/contributing.txt
index 50446e4..0e7a7ff 100644
--- a/contributing.txt
+++ b/contributing.txt
@@ -6,7 +6,7 @@ mailing list. Remember to add your name to the list of contributors
in authors.txt.
-Coding style
+Python Coding style
Meson follows the basic Python coding style. Additional rules are the
following:
@@ -20,6 +20,15 @@ following:
a big feature)
+C/C++ coding style
+
+Meson has a bunch of test code in several languages. The rules for
+those are simple.
+
+- indent 4 spaces, no tabs ever
+- brace always on the same line as if/for/else/function definition
+
+
External dependencies
The goal of Meson is to be as easily usable as possible. The user
diff --git a/interpreter.py b/interpreter.py
index f14e981..d140c19 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1020,7 +1020,7 @@ class Interpreter():
fullstack = self.subproject_stack + [dirname]
incpath = ' => '.join(fullstack)
raise InterpreterException('Recursive include of subprojects: %s.' % incpath)
- if dirname == self.subprojects:
+ if dirname in self.subprojects:
return self.subprojects[dirname]
subdir = os.path.join('subprojects', dirname)
r = wrap.Resolver(os.path.join(self.build.environment.get_source_dir(), 'subprojects'))
@@ -1037,6 +1037,7 @@ class Interpreter():
subi.run()
mlog.log('\nSubproject', mlog.bold(dirname), 'finished.')
self.build.subprojects[dirname] = True
+ self.subprojects.update(subi.subprojects)
self.subprojects[dirname] = SubprojectHolder(subi)
self.build_def_files += subi.build_def_files
return self.subprojects[dirname]
diff --git a/test cases/common/79 shared subproject/a.c b/test cases/common/79 shared subproject/a.c
new file mode 100644
index 0000000..6ed96fa
--- /dev/null
+++ b/test cases/common/79 shared subproject/a.c
@@ -0,0 +1,13 @@
+#include<assert.h>
+char func_b();
+char func_c();
+
+int main(int argc, char **argv) {
+ if(func_b() != 'b') {
+ return 1;
+ }
+ if(func_c() != 'c') {
+ return 2;
+ }
+ return 0;
+}
diff --git a/test cases/common/79 shared subproject/meson.build b/test cases/common/79 shared subproject/meson.build
index ee4c09f..92b1c8f 100644
--- a/test cases/common/79 shared subproject/meson.build
+++ b/test cases/common/79 shared subproject/meson.build
@@ -6,4 +6,5 @@ b = B.get_variable('b')
C = subproject('C')
c = B.get_variable('c')
-a = executable('a', 'a.c', link_with : [ b, c ])
+a = executable('a', 'a.c', link_with : [b, c])
+test('a test', a)
diff --git a/test cases/common/79 shared subproject/subprojects/B/b.c b/test cases/common/79 shared subproject/subprojects/B/b.c
index 2ee5a42..03b0cc7 100644
--- a/test cases/common/79 shared subproject/subprojects/B/b.c
+++ b/test cases/common/79 shared subproject/subprojects/B/b.c
@@ -1,5 +1,9 @@
-char
-func_b()
-{
- return 'b';
+#include<stdlib.h>
+char func_c();
+
+char func_b() {
+ if(func_c() != 'c') {
+ exit(3);
+ }
+ return 'b';
}
diff --git a/test cases/common/79 shared subproject/subprojects/C/c.c b/test cases/common/79 shared subproject/subprojects/C/c.c
index ff47251..3bbac08 100644
--- a/test cases/common/79 shared subproject/subprojects/C/c.c
+++ b/test cases/common/79 shared subproject/subprojects/C/c.c
@@ -1,5 +1,3 @@
-char
-func_c()
-{
- return 'c';
+char func_c() {
+ return 'c';
}