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(); +}