aboutsummaryrefslogtreecommitdiff
path: root/shellgenerator.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-05 18:13:38 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-05 18:13:38 +0200
commitea99126496867bebb764ffc237a7c3d92173531e (patch)
tree0553aa0934071452c360b6db80338a6425fea635 /shellgenerator.py
parent715b83c13499615dac9fdd8cdd7a9b6a9cd003c4 (diff)
downloadmeson-ea99126496867bebb764ffc237a7c3d92173531e.zip
meson-ea99126496867bebb764ffc237a7c3d92173531e.tar.gz
meson-ea99126496867bebb764ffc237a7c3d92173531e.tar.bz2
Can build static libraries.
Diffstat (limited to 'shellgenerator.py')
-rwxr-xr-xshellgenerator.py18
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 = []