aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-06 18:40:32 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-06 18:40:32 +0200
commitb9f3ab1c4865f9cba3923b661d999ad75d60d3ee (patch)
treeb8c3a5cc3d4c502a5900bf86cd28777de40251c7
parent216a8ca1ea84165adc8088129c6171f5264ba534 (diff)
downloadmeson-b9f3ab1c4865f9cba3923b661d999ad75d60d3ee.zip
meson-b9f3ab1c4865f9cba3923b661d999ad75d60d3ee.tar.gz
meson-b9f3ab1c4865f9cba3923b661d999ad75d60d3ee.tar.bz2
Can link against shared libraries.
-rwxr-xr-xshellgenerator.py8
-rw-r--r--test cases/6 linkshared/builder.txt5
-rw-r--r--test cases/6 linkshared/libfile.c3
-rw-r--r--test cases/6 linkshared/main.c5
4 files changed, 17 insertions, 4 deletions
diff --git a/shellgenerator.py b/shellgenerator.py
index f115fbe..2f04ecd 100755
--- a/shellgenerator.py
+++ b/shellgenerator.py
@@ -70,13 +70,13 @@ class ShellGenerator():
outfile.write('\necho Compiling \\"%s\\"\n' % src)
outfile.write(' '.join(quoted) + ' || exit\n')
return abs_obj
-
+
def build_target_link_arguments(self, deps):
args = []
for d in deps:
- if not isinstance(d, interpreter.StaticLibrary):
- print(d)
- raise RuntimeError('Only static libraries supported ATM.')
+ if not isinstance(d, interpreter.StaticLibrary) and\
+ not isinstance(d, interpreter.SharedLibrary):
+ raise RuntimeError('Tried to link with a non-library target "%s".' % d.get_basename())
args.append(self.get_target_filename(d))
return args
diff --git a/test cases/6 linkshared/builder.txt b/test cases/6 linkshared/builder.txt
new file mode 100644
index 0000000..fbbac85
--- /dev/null
+++ b/test cases/6 linkshared/builder.txt
@@ -0,0 +1,5 @@
+project('shared library linking test')
+language('c')
+lib = shared_library('mylib', 'libfile.c')
+exe = executable('prog', 'main.c')
+exe.link(lib)
diff --git a/test cases/6 linkshared/libfile.c b/test cases/6 linkshared/libfile.c
new file mode 100644
index 0000000..6f1c172
--- /dev/null
+++ b/test cases/6 linkshared/libfile.c
@@ -0,0 +1,3 @@
+int func() {
+ return 0;
+}
diff --git a/test cases/6 linkshared/main.c b/test cases/6 linkshared/main.c
new file mode 100644
index 0000000..8aadb0c
--- /dev/null
+++ b/test cases/6 linkshared/main.c
@@ -0,0 +1,5 @@
+int func();
+
+int main(int argc, char **arg) {
+ return func();
+}