aboutsummaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorJordan Justen <jljusten@gmail.com>2021-02-19 21:23:19 -0800
committerDylan Baker <dylan@pnwbakers.com>2021-02-23 11:31:05 -0800
commit5edbc0acd717bd3bd4268c5d3a43fb07d6593f54 (patch)
tree9439b0c1e476d00f7434f16bb7c1aec825171aa2 /test cases
parent4c1a0c400f4a57bb51d663fcc3aa90014dd47df3 (diff)
downloadmeson-5edbc0acd717bd3bd4268c5d3a43fb07d6593f54.zip
meson-5edbc0acd717bd3bd4268c5d3a43fb07d6593f54.tar.gz
meson-5edbc0acd717bd3bd4268c5d3a43fb07d6593f54.tar.bz2
tests/rust: Add rust case linking to zlib dependency
Reworks: * Add MESON_SKIP_TEST error for darwin from polyglot test * Remove dependencies from executable Dylan's changes: * Add support for both static and shared testing * Test with pkg-config, cmake, and system * reformat to meson's style Co-authored-by: Dylan Baker <dylan@pnwbakers.com>
Diffstat (limited to 'test cases')
-rw-r--r--test cases/rust/13 external c dependencies/c_accessing_zlib.c10
-rw-r--r--test cases/rust/13 external c dependencies/meson.build23
-rw-r--r--test cases/rust/13 external c dependencies/meson_options.txt2
-rw-r--r--test cases/rust/13 external c dependencies/prog.rs9
-rw-r--r--test cases/rust/13 external c dependencies/test.json15
5 files changed, 59 insertions, 0 deletions
diff --git a/test cases/rust/13 external c dependencies/c_accessing_zlib.c b/test cases/rust/13 external c dependencies/c_accessing_zlib.c
new file mode 100644
index 0000000..358b989
--- /dev/null
+++ b/test cases/rust/13 external c dependencies/c_accessing_zlib.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+#include <string.h>
+#include <zlib.h>
+
+void c_accessing_zlib(void) {
+ struct z_stream_s zstream;
+ printf("Hello from C!\n");
+ memset(&zstream, 0, sizeof(zstream));
+ inflateInit(&zstream);
+}
diff --git a/test cases/rust/13 external c dependencies/meson.build b/test cases/rust/13 external c dependencies/meson.build
new file mode 100644
index 0000000..e5caf70
--- /dev/null
+++ b/test cases/rust/13 external c dependencies/meson.build
@@ -0,0 +1,23 @@
+project('rust linking to c using dependency', 'c', 'rust')
+
+if host_machine.system() == 'darwin'
+ error('MESON_SKIP_TEST: doesnt work right on macos, please fix!')
+endif
+
+dep_zlib = dependency('zlib', static : get_option('static'), method : get_option('method'), required : false)
+if not dep_zlib.found()
+ error('MESON_SKIP_TEST: Could not find a @0@ zlib'.format(get_option('static') ? 'static' : 'shared'))
+endif
+
+l = static_library(
+ 'c_accessing_zlib',
+ 'c_accessing_zlib.c',
+ dependencies: [dep_zlib],
+)
+
+e = executable(
+ 'prog', 'prog.rs',
+ link_with : l,
+)
+
+test('cdepstest', e)
diff --git a/test cases/rust/13 external c dependencies/meson_options.txt b/test cases/rust/13 external c dependencies/meson_options.txt
new file mode 100644
index 0000000..f501348
--- /dev/null
+++ b/test cases/rust/13 external c dependencies/meson_options.txt
@@ -0,0 +1,2 @@
+option('static', type : 'boolean')
+option('method', type : 'string')
diff --git a/test cases/rust/13 external c dependencies/prog.rs b/test cases/rust/13 external c dependencies/prog.rs
new file mode 100644
index 0000000..b30ec24
--- /dev/null
+++ b/test cases/rust/13 external c dependencies/prog.rs
@@ -0,0 +1,9 @@
+extern "C" {
+ fn c_accessing_zlib();
+}
+
+fn main() {
+ unsafe {
+ c_accessing_zlib();
+ }
+}
diff --git a/test cases/rust/13 external c dependencies/test.json b/test cases/rust/13 external c dependencies/test.json
new file mode 100644
index 0000000..ad0e79a
--- /dev/null
+++ b/test cases/rust/13 external c dependencies/test.json
@@ -0,0 +1,15 @@
+{
+ "matrix": {
+ "options": {
+ "static": [
+ { "val": true },
+ { "val": false }
+ ],
+ "method": [
+ { "val": "pkg-config" },
+ { "val": "cmake" },
+ { "val": "system" }
+ ]
+ }
+ }
+}