From b9f3ab1c4865f9cba3923b661d999ad75d60d3ee Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 6 Jan 2013 18:40:32 +0200 Subject: [PATCH] Can link against shared libraries. --- shellgenerator.py | 8 ++++---- test cases/6 linkshared/builder.txt | 5 +++++ test cases/6 linkshared/libfile.c | 3 +++ test cases/6 linkshared/main.c | 5 +++++ 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 test cases/6 linkshared/builder.txt create mode 100644 test cases/6 linkshared/libfile.c create mode 100644 test cases/6 linkshared/main.c diff --git a/shellgenerator.py b/shellgenerator.py index f115fbe94..2f04ecd57 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 000000000..fbbac858e --- /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 000000000..6f1c172d6 --- /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 000000000..8aadb0c7c --- /dev/null +++ b/test cases/6 linkshared/main.c @@ -0,0 +1,5 @@ +int func(); + +int main(int argc, char **arg) { + return func(); +}