diff options
| author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-06-05 17:37:02 +0530 |
|---|---|---|
| committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-18 06:33:23 +0000 |
| commit | 5467eed186c0576704b3d6de2e8d2d8a8ca6ad35 (patch) | |
| tree | 7a34518aa7a5948647d7e8c59b771e99902f7dfe /test cases/unit | |
| parent | 6e2ee246197a8dd12e8f147975b79599dc881360 (diff) | |
| download | meson-5467eed186c0576704b3d6de2e8d2d8a8ca6ad35.tar.gz | |
Test that binaries that use external libraries work
When we link to an external library either with find_library() without
any dirs:, or with dependency(), we should be able to run uninstalled
out of the box without having to set any environment variables or other
shenanigans.
This is especially important on macOS because only the system frameworks
directory is in the default runtime path, and all other frameworks and
libraries need to be found with RPATH or absolute path to the dylib.
Diffstat (limited to 'test cases/unit')
7 files changed, 43 insertions, 0 deletions
diff --git a/test cases/unit/33 external, internal library rpath/built library/bar.c b/test cases/unit/33 external, internal library rpath/built library/bar.c new file mode 100644 index 000000000..4f5662ebd --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/built library/bar.c @@ -0,0 +1,7 @@ +int foo_system_value (void); +int faa_system_value (void); + +int bar_built_value (int in) +{ + return faa_system_value() + foo_system_value() + in; +} diff --git a/test cases/unit/33 external, internal library rpath/built library/meson.build b/test cases/unit/33 external, internal library rpath/built library/meson.build new file mode 100644 index 000000000..cb58f09c4 --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/built library/meson.build @@ -0,0 +1,11 @@ +project('built library', 'c') + +cc = meson.get_compiler('c') +foo_system_dep = cc.find_library('foo_in_system') +faa_pkg_dep = dependency('faa_pkg') + +l = shared_library('bar_built', 'bar.c', + dependencies : [foo_system_dep, faa_pkg_dep]) + +e = executable('prog', 'prog.c', link_with: l) +test('testprog', e) diff --git a/test cases/unit/33 external, internal library rpath/built library/meson_options.txt b/test cases/unit/33 external, internal library rpath/built library/meson_options.txt new file mode 100644 index 000000000..aa1d2ec9b --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/built library/meson_options.txt @@ -0,0 +1 @@ +option('foo_system_path', type: 'string', value: '') diff --git a/test cases/unit/33 external, internal library rpath/built library/prog.c b/test cases/unit/33 external, internal library rpath/built library/prog.c new file mode 100644 index 000000000..e3d4cf63f --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/built library/prog.c @@ -0,0 +1,7 @@ +int bar_built_value (int in); + +int main (int argc, char *argv[]) +{ + // this will evaluate to 0 + return bar_built_value(10) - (42 + 1969 + 10); +} diff --git a/test cases/unit/33 external, internal library rpath/external library/faa.c b/test cases/unit/33 external, internal library rpath/external library/faa.c new file mode 100644 index 000000000..473357516 --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/external library/faa.c @@ -0,0 +1,4 @@ +int faa_system_value (void) +{ + return 1969; +} diff --git a/test cases/unit/33 external, internal library rpath/external library/foo.c b/test cases/unit/33 external, internal library rpath/external library/foo.c new file mode 100644 index 000000000..a34e4a885 --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/external library/foo.c @@ -0,0 +1,4 @@ +int foo_system_value (void) +{ + return 42; +} diff --git a/test cases/unit/33 external, internal library rpath/external library/meson.build b/test cases/unit/33 external, internal library rpath/external library/meson.build new file mode 100644 index 000000000..0e9f443f4 --- /dev/null +++ b/test cases/unit/33 external, internal library rpath/external library/meson.build @@ -0,0 +1,9 @@ +project('system library', 'c') + +shared_library('foo_in_system', 'foo.c', install : true) +l = shared_library('faa_pkg', 'faa.c', install: true) + +pkg = import('pkgconfig') +pkg.generate(name: 'faa_pkg', + libraries: l, + description: 'FAA, a pkg-config test library') |
