summaryrefslogtreecommitdiff
path: root/test cases/unit
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2018-06-05 17:37:02 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-06-18 06:33:23 +0000
commit5467eed186c0576704b3d6de2e8d2d8a8ca6ad35 (patch)
tree7a34518aa7a5948647d7e8c59b771e99902f7dfe /test cases/unit
parent6e2ee246197a8dd12e8f147975b79599dc881360 (diff)
downloadmeson-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')
-rw-r--r--test cases/unit/33 external, internal library rpath/built library/bar.c7
-rw-r--r--test cases/unit/33 external, internal library rpath/built library/meson.build11
-rw-r--r--test cases/unit/33 external, internal library rpath/built library/meson_options.txt1
-rw-r--r--test cases/unit/33 external, internal library rpath/built library/prog.c7
-rw-r--r--test cases/unit/33 external, internal library rpath/external library/faa.c4
-rw-r--r--test cases/unit/33 external, internal library rpath/external library/foo.c4
-rw-r--r--test cases/unit/33 external, internal library rpath/external library/meson.build9
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')