diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-06 21:15:49 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-06 21:15:49 +0200 |
commit | affe28271a5e4f1d20fb61cea24e6de9695019fe (patch) | |
tree | cae5aa00a97d5861095df3bf26827417a27d53a5 | |
parent | f5f783b382ef2325c98350c600e076fe719a60e4 (diff) | |
download | meson-affe28271a5e4f1d20fb61cea24e6de9695019fe.zip meson-affe28271a5e4f1d20fb61cea24e6de9695019fe.tar.gz meson-affe28271a5e4f1d20fb61cea24e6de9695019fe.tar.bz2 |
Moved code to base class.~
-rwxr-xr-x | generators.py | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/generators.py b/generators.py index 2a11170..a24b5f8 100755 --- a/generators.py +++ b/generators.py @@ -68,6 +68,28 @@ class Generator(): os.makedirs(dirname, exist_ok=True) return dirname + def generate_target(self, target, outfile): + name = target.get_basename() + if name in self.processed_targets: + return + self.process_target_dependencies(target, outfile) + print('Generating target', name) + outname = self.get_target_filename(target) + obj_list = [] + if target.has_pch(): + self.generate_pch(target, outfile) + for src in target.get_sources(): + obj_list.append(self.generate_single_compile(target, outfile, src)) + self.generate_link(target, outfile, outname, obj_list) + self.generate_shlib_aliases(target, self.get_target_dir(target), outfile) + self.processed_targets[name] = True + + def process_target_dependencies(self, target, outfile): + for t in target.get_dependencies(): + tname = t.get_basename() + if not tname in self.processed_targets: + self.generate_target(t, outfile) + class NinjaGenerator(Generator): def __init__(self, build, interp): @@ -80,6 +102,9 @@ class NinjaGenerator(Generator): outfile.write('# This is the build file for project "%s"\n' % self.build.get_project()) outfile.write('# It is autogenerated. Do not edit by hand.\n\n') self.generate_rules(outfile) + outfile.write('# Build rules for targets\n\n') + [self.generate_target(outfile, t[1]) for t in self.build.get_targets()] + outfile.write('# Suffix\n\n') self.generate_ending(outfile) def generate_rules(self, outfile): @@ -88,7 +113,6 @@ class NinjaGenerator(Generator): outfile.write('# Rules for linking.\n\n') self.generate_static_link_rules(outfile) self.generate_dynamic_link_rules(outfile) - [self.generate_target(outfile, t[1]) for t in self.build.get_targets()] def generate_static_link_rules(self, outfile): static_linker = self.build.static_linker @@ -131,7 +155,7 @@ class NinjaGenerator(Generator): outfile.write('\n') outfile.write('\n') - def generate_target(self, outfile, target): + def generate_target(self, target, outfile): pass def generate_ending(self, outfile): @@ -203,7 +227,7 @@ echo Run compile.sh before this or bad things will happen. cpcommand = ['cp', filename, outdir] cpcommand = ' '.join(shell_quote(cpcommand)) + ' || exit\n' outfile.write(cpcommand) - + def generate_configure_files(self): for cf in self.build.get_configure_files(): infile = os.path.join(self.environment.get_source_dir(), @@ -400,12 +424,6 @@ echo Run compile.sh before this or bad things will happen. target = i[1] self.generate_target(target, outfile) - def process_target_dependencies(self, target, outfile): - for t in target.get_dependencies(): - tname = t.get_basename() - if not tname in self.processed_targets: - self.generate_target(t, outfile) - def generate_pch(self, target, outfile): print('Generating pch for "%s"' % target.get_basename()) @@ -433,22 +451,6 @@ echo Run compile.sh before this or bad things will happen. cmd = ['ln', '-s', '-f', basename, aliasfile] outfile.write(' '.join(shell_quote(cmd)) + '|| exit\n') - def generate_target(self, target, outfile): - name = target.get_basename() - if name in self.processed_targets: - return - self.process_target_dependencies(target, outfile) - print('Generating target', name) - outname = self.get_target_filename(target) - obj_list = [] - if target.has_pch(): - self.generate_pch(target, outfile) - for src in target.get_sources(): - obj_list.append(self.generate_single_compile(target, outfile, src)) - self.generate_link(target, outfile, outname, obj_list) - self.generate_shlib_aliases(target, self.get_target_dir(target), outfile) - self.processed_targets[name] = True - if __name__ == '__main__': code = """ project('simple generator') |