diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-08 23:49:25 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-08 23:49:25 +0200 |
commit | 7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa (patch) | |
tree | 7e41326c397d7e9c411bd98e195ac0d6d4c35106 | |
parent | b0515379bf562fe7c728cd443e843e8b839146fc (diff) | |
download | meson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.zip meson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.tar.gz meson-7ea37a733e6fe6ca36c98d57bbaba3b8f9d2bbfa.tar.bz2 |
Generate shared library symlinks with Ninja.
-rwxr-xr-x | builder_install.py | 3 | ||||
-rwxr-xr-x | generators.py | 15 |
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()] |