diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-05 18:13:38 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-01-05 18:13:38 +0200 |
commit | ea99126496867bebb764ffc237a7c3d92173531e (patch) | |
tree | 0553aa0934071452c360b6db80338a6425fea635 /shellgenerator.py | |
parent | 715b83c13499615dac9fdd8cdd7a9b6a9cd003c4 (diff) | |
download | meson-ea99126496867bebb764ffc237a7c3d92173531e.zip meson-ea99126496867bebb764ffc237a7c3d92173531e.tar.gz meson-ea99126496867bebb764ffc237a7c3d92173531e.tar.bz2 |
Can build static libraries.
Diffstat (limited to 'shellgenerator.py')
-rwxr-xr-x | shellgenerator.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/shellgenerator.py b/shellgenerator.py index 872b996..d030af5 100755 --- a/shellgenerator.py +++ b/shellgenerator.py @@ -15,6 +15,7 @@ # limitations under the License. import os, stat +import interpreter def shell_quote(cmdlist): return ["'" + x + "'" for x in cmdlist] @@ -68,14 +69,18 @@ class ShellGenerator(): return abs_obj def generate_link(self, target, outfile, outname, obj_list): - linker = self.interpreter.compilers[0] # Fixme. + if isinstance(target, interpreter.StaticLibrary): + linker = self.interpreter.static_linker + else: + linker = self.interpreter.compilers[0] # Fixme. commands = [] commands += linker.get_exelist() - commands += obj_list + commands += linker.get_std_link_flags() for dep in target.get_external_deps(): commands += dep.get_link_flags() commands += linker.get_output_flags() commands.append(outname) + commands += obj_list quoted = shell_quote(commands) outfile.write('\necho Linking \\"%s\\".\n' % target.get_basename()) outfile.write(' '.join(quoted) + ' || exit\n') @@ -91,8 +96,13 @@ class ShellGenerator(): target = i[1] print('Generating target', name) targetdir = self.get_target_dir(target) - outname = os.path.join(targetdir, target.get_basename()) - suffix = self.environment.get_exe_suffix() + if isinstance(target, interpreter.Executable): + prefix = '' + suffix = self.environment.get_exe_suffix() + elif isinstance(target, interpreter.StaticLibrary): + prefix = self.environment.get_static_lib_prefix() + suffix = self.environment.get_static_lib_suffix() + outname = os.path.join(targetdir, prefix + target.get_basename()) if suffix != '': outname = outname + '.' + suffix obj_list = [] |