diff options
author | Jordan Justen <jljusten@gmail.com> | 2021-02-19 21:23:19 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-02-23 11:31:05 -0800 |
commit | 5edbc0acd717bd3bd4268c5d3a43fb07d6593f54 (patch) | |
tree | 9439b0c1e476d00f7434f16bb7c1aec825171aa2 /test cases | |
parent | 4c1a0c400f4a57bb51d663fcc3aa90014dd47df3 (diff) | |
download | meson-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')
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" } + ] + } + } +} |