aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/common/42 subproject
diff options
context:
space:
mode:
Diffstat (limited to 'meson/test cases/common/42 subproject')
-rw-r--r--meson/test cases/common/42 subproject/meson.build28
-rw-r--r--meson/test cases/common/42 subproject/subprojects/sublib/include/subdefs.h21
-rw-r--r--meson/test cases/common/42 subproject/subprojects/sublib/meson.build19
-rw-r--r--meson/test cases/common/42 subproject/subprojects/sublib/simpletest.c5
-rw-r--r--meson/test cases/common/42 subproject/subprojects/sublib/sublib.c5
-rw-r--r--meson/test cases/common/42 subproject/test.json7
-rw-r--r--meson/test cases/common/42 subproject/user.c16
7 files changed, 101 insertions, 0 deletions
diff --git a/meson/test cases/common/42 subproject/meson.build b/meson/test cases/common/42 subproject/meson.build
new file mode 100644
index 000000000..2b939d19b
--- /dev/null
+++ b/meson/test cases/common/42 subproject/meson.build
@@ -0,0 +1,28 @@
+project('subproj user', 'c',
+ version : '2.3.4',
+ license : 'mylicense')
+
+assert(meson.project_name() == 'subproj user', 'Incorrect project name')
+
+sub = subproject('sublib', version : '1.0.0')
+
+if meson.project_version() != '2.3.4'
+ error('Incorrect master project version string:' + meson.project_version())
+endif
+
+if meson.is_subproject()
+ error('Claimed to be a subproject even though we are the master project.')
+endif
+
+inc = sub.get_variable('i')
+lib = sub.get_variable('l')
+
+e = executable('user', 'user.c', include_directories : inc, link_with : lib, install : true)
+test('subdirtest', e)
+
+meson.install_dependency_manifest('share/sublib/sublib.depmf')
+
+unknown_var = sub.get_variable('does-not-exist', [])
+if unknown_var != []
+ error ('unexpetced fallback value for subproject.get_variable()')
+endif
diff --git a/meson/test cases/common/42 subproject/subprojects/sublib/include/subdefs.h b/meson/test cases/common/42 subproject/subprojects/sublib/include/subdefs.h
new file mode 100644
index 000000000..6ae8462f6
--- /dev/null
+++ b/meson/test cases/common/42 subproject/subprojects/sublib/include/subdefs.h
@@ -0,0 +1,21 @@
+#ifndef SUBDEFS_H_
+#define SUBDEFS_H_
+
+#if defined _WIN32 || defined __CYGWIN__
+#if defined BUILDING_SUB
+ #define DLL_PUBLIC __declspec(dllexport)
+#else
+ #define DLL_PUBLIC __declspec(dllimport)
+#endif
+#else
+ #if defined __GNUC__
+ #define DLL_PUBLIC __attribute__ ((visibility("default")))
+ #else
+ #pragma message ("Compiler does not support symbol visibility.")
+ #define DLL_PUBLIC
+ #endif
+#endif
+
+int DLL_PUBLIC subfunc(void);
+
+#endif
diff --git a/meson/test cases/common/42 subproject/subprojects/sublib/meson.build b/meson/test cases/common/42 subproject/subprojects/sublib/meson.build
new file mode 100644
index 000000000..acaf1bf38
--- /dev/null
+++ b/meson/test cases/common/42 subproject/subprojects/sublib/meson.build
@@ -0,0 +1,19 @@
+project('subproject', 'c',
+ version : '1.0.0',
+ license : ['sublicense1', 'sublicense2'])
+
+if not meson.is_subproject()
+ error('Claimed to be master project even though we are a subproject.')
+endif
+
+assert(meson.project_name() == 'subproject', 'Incorrect subproject name')
+
+if meson.project_version() != '1.0.0'
+ error('Incorrect version string in subproject.')
+endif
+
+i = include_directories('include')
+l = shared_library('sublib', 'sublib.c', include_directories : i, install : false,
+ c_args : '-DBUILDING_SUB=2')
+t = executable('simpletest', 'simpletest.c', include_directories : i, link_with : l)
+test('plain', t)
diff --git a/meson/test cases/common/42 subproject/subprojects/sublib/simpletest.c b/meson/test cases/common/42 subproject/subprojects/sublib/simpletest.c
new file mode 100644
index 000000000..2184bc68c
--- /dev/null
+++ b/meson/test cases/common/42 subproject/subprojects/sublib/simpletest.c
@@ -0,0 +1,5 @@
+#include<subdefs.h>
+
+int main(void) {
+ return subfunc() == 42 ? 0 : 1;
+}
diff --git a/meson/test cases/common/42 subproject/subprojects/sublib/sublib.c b/meson/test cases/common/42 subproject/subprojects/sublib/sublib.c
new file mode 100644
index 000000000..f71564f14
--- /dev/null
+++ b/meson/test cases/common/42 subproject/subprojects/sublib/sublib.c
@@ -0,0 +1,5 @@
+#include<subdefs.h>
+
+int DLL_PUBLIC subfunc(void) {
+ return 42;
+}
diff --git a/meson/test cases/common/42 subproject/test.json b/meson/test cases/common/42 subproject/test.json
new file mode 100644
index 000000000..a56106fe1
--- /dev/null
+++ b/meson/test cases/common/42 subproject/test.json
@@ -0,0 +1,7 @@
+{
+ "installed": [
+ {"type": "exe", "file": "usr/bin/user"},
+ {"type": "pdb", "file": "usr/bin/user"},
+ {"type": "file", "file": "usr/share/sublib/sublib.depmf"}
+ ]
+}
diff --git a/meson/test cases/common/42 subproject/user.c b/meson/test cases/common/42 subproject/user.c
new file mode 100644
index 000000000..918162266
--- /dev/null
+++ b/meson/test cases/common/42 subproject/user.c
@@ -0,0 +1,16 @@
+#include<subdefs.h>
+#include<stdio.h>
+
+
+int main(void) {
+ int res;
+ printf("Calling into sublib now.\n");
+ res = subfunc();
+ if(res == 42) {
+ printf("Everything is fine.\n");
+ return 0;
+ } else {
+ printf("Something went wrong.\n");
+ return 1;
+ }
+}