aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-08 23:49:25 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-08 23:49:25 +0200
commit7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa (patch)
tree7e41326c397d7e9c411bd98e195ac0d6d4c35106
parentb0515379bf562fe7c728cd443e843e8b839146fc (diff)
downloadmeson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.zip
meson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.tar.gz
meson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.tar.bz2
Generate shared library symlinks with Ninja.
-rwxr-xr-xbuilder_install.py3
-rwxr-xr-xgenerators.py15
2 files changed, 14 insertions, 4 deletions
diff --git a/builder_install.py b/builder_install.py
index d899d51..67537db 100755
--- a/builder_install.py
+++ b/builder_install.py
@@ -69,11 +69,14 @@ def install_targets(d):
fullfilename = t[0]
outdir = t[1]
fname = os.path.split(fullfilename)[1]
+ aliases = t[2]
outname = os.path.join(outdir, fname)
print('Installing %s to %s' % (fname, outdir))
os.makedirs(outdir, exist_ok=True)
shutil.copyfile(fullfilename, outname)
shutil.copystat(fullfilename, outname)
+ for alias in aliases:
+ os.symlink(fname, os.path.join(outdir, alias))
p = subprocess.Popen([d.depfixer, outname, d.dep_prefix], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
(stdo, stde) = p.communicate()
diff --git a/generators.py b/generators.py
index eb8d1d6..e177424 100755
--- a/generators.py
+++ b/generators.py
@@ -189,7 +189,7 @@ class NinjaGenerator(Generator):
outdir = bindir
else:
outdir = libdir
- i = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(t)), outdir]
+ i = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(t)), outdir, t.get_aliaslist()]
d.targets.append(i)
def generate_header_install(self, d):
@@ -268,7 +268,7 @@ class NinjaGenerator(Generator):
for compiler in self.build.compilers:
langname = compiler.get_language()
rule = 'rule %s_LINKER\n' % langname
- command = ' command = %s $FLAGS %s $out $in $LINK_FLAGS\n' % \
+ command = ' command = %s $FLAGS %s $out $in $LINK_FLAGS $aliasing\n' % \
(' '.join(compiler.get_exelist()),\
' '.join(compiler.get_output_flags()))
description = ' description = Linking target $out'
@@ -375,12 +375,19 @@ class NinjaGenerator(Generator):
build = 'build %s: %s %s %s\n' % \
(ninja_quote(outname), linker_rule, ' '.join([ninja_quote(i) for i in obj_list]),
dep_targets)
- flags = ' LINK_FLAGS = %s\n\n' % ' '.join([ninja_quote(a) for a in commands])
+ flags = ' LINK_FLAGS = %s\n' % ' '.join([ninja_quote(a) for a in commands])
outfile.write(build)
outfile.write(flags)
def generate_shlib_aliases(self, target, outdir, outfile):
- pass
+ basename = target.get_filename()
+ aliases = target.get_aliaslist()
+ aliascmd = ''
+ for alias in aliases:
+ aliasfile = os.path.join(outdir, alias)
+ cmd = " && ln -s -f '%s' '%s'" % (ninja_quote(basename), ninja_quote(aliasfile))
+ aliascmd += cmd
+ outfile.write(' aliasing =%s\n\n' % aliascmd)
def generate_ending(self, outfile):
targetlist = [self.get_target_filename(t) for t in self.build.get_targets().values()]