aboutsummaryrefslogtreecommitdiff
path: root/shellgenerator.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-05 21:08:08 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-05 21:08:08 +0200
commit20e43ff7f9794dac67a0dfabfdefdecb6f08d7ee (patch)
treeffa7c82b92f1c26286fa403d89786f2fbf9fbb1c /shellgenerator.py
parent5683f904fb31dfe3e3ca5034669508389e836d9a (diff)
downloadmeson-20e43ff7f9794dac67a0dfabfdefdecb6f08d7ee.zip
meson-20e43ff7f9794dac67a0dfabfdefdecb6f08d7ee.tar.gz
meson-20e43ff7f9794dac67a0dfabfdefdecb6f08d7ee.tar.bz2
Can build shared libraries.
Diffstat (limited to 'shellgenerator.py')
-rwxr-xr-xshellgenerator.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/shellgenerator.py b/shellgenerator.py
index d030af5..2d4af7c 100755
--- a/shellgenerator.py
+++ b/shellgenerator.py
@@ -58,6 +58,8 @@ class ShellGenerator():
commands += compiler.get_debug_flags()
commands += compiler.get_std_warn_flags()
commands += compiler.get_compile_only_flags()
+ if isinstance(target, interpreter.SharedLibrary):
+ commands += compiler.get_pic_flags()
for dep in target.get_external_deps():
commands += dep.get_compile_flags()
commands.append(abs_src)
@@ -75,7 +77,14 @@ class ShellGenerator():
linker = self.interpreter.compilers[0] # Fixme.
commands = []
commands += linker.get_exelist()
- commands += linker.get_std_link_flags()
+ if isinstance(target, interpreter.Executable):
+ commands += linker.get_std_exe_link_flags()
+ elif isinstance(target, interpreter.SharedLibrary):
+ commands += linker.get_std_shared_lib_link_flags()
+ elif isinstance(target, interpreter.StaticLibrary):
+ commands += linker.get_std_link_flags()
+ else:
+ raise RuntimeError('Unknown build target type.')
for dep in target.get_external_deps():
commands += dep.get_link_flags()
commands += linker.get_output_flags()
@@ -96,12 +105,16 @@ class ShellGenerator():
target = i[1]
print('Generating target', name)
targetdir = self.get_target_dir(target)
+ prefix = ''
+ 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()
+ elif isinstance(target, interpreter.SharedLibrary):
+ prefix = self.environment.get_shared_lib_prefix()
+ suffix = self.environment.get_shared_lib_suffix()
outname = os.path.join(targetdir, prefix + target.get_basename())
if suffix != '':
outname = outname + '.' + suffix
@@ -116,7 +129,7 @@ if __name__ == '__main__':
language('c')
executable('prog', 'prog.c', 'dep.c')
"""
- import interpreter, environment
+ import environment
os.chdir(os.path.split(__file__)[0])
envir = environment.Environment('.', 'work area')
intpr = interpreter.Interpreter(code, envir)