diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-01 23:02:06 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-01 23:02:06 +0200 |
commit | 60cf41adab41f52e8e0c733280f7a1856a93070c (patch) | |
tree | 750ae75830c3f53204ea514d5a9fa8a391709647 /backends.py | |
parent | 775d86c0fa6a13ee21ffc3eee7e1fa4121e97f00 (diff) | |
download | meson-60cf41adab41f52e8e0c733280f7a1856a93070c.zip meson-60cf41adab41f52e8e0c733280f7a1856a93070c.tar.gz meson-60cf41adab41f52e8e0c733280f7a1856a93070c.tar.bz2 |
Can generate header files.
Diffstat (limited to 'backends.py')
-rwxr-xr-x | backends.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/backends.py b/backends.py index 6d6f68b..1c8844b 100755 --- a/backends.py +++ b/backends.py @@ -90,13 +90,16 @@ class Backend(): obj_list = [] if target.has_pch(): self.generate_pch(target, outfile) - for src in target.get_sources(): - if not self.environment.is_header(src): - obj_list.append(self.generate_single_compile(target, outfile, src)) + header_deps = [] for genlist in target.get_generated_sources(): for src in genlist.get_outfilelist(): if not self.environment.is_header(src): obj_list.append(self.generate_single_compile(target, outfile, src, True)) + else: + header_deps.append(src) + for src in target.get_sources(): + if not self.environment.is_header(src): + obj_list.append(self.generate_single_compile(target, outfile, src, False, header_deps)) elem = self.generate_link(target, outfile, outname, obj_list) self.generate_shlib_aliases(target, self.get_target_dir(target), outfile, elem) self.processed_targets[name] = True @@ -429,7 +432,7 @@ class NinjaBackend(Backend): base_args = generator.get_arglist() for i in range(len(infilelist)): infilename = os.path.join(self.build_to_src, infilelist[i]) - outfilename = os.path.join(self.get_target_dir(target), outfilelist[i]) + outfilename = os.path.join(self.get_target_private_dir(target), outfilelist[i]) args = [x.replace("@INPUT@", infilename).replace('@OUTPUT@', outfilename)\ for x in base_args] cmdlist = [exe_file] + args @@ -438,11 +441,12 @@ class NinjaBackend(Backend): elem.add_item('COMMAND', cmdlist) elem.write(outfile) - def generate_single_compile(self, target, outfile, src, is_generated=False): + def generate_single_compile(self, target, outfile, src, is_generated=False, header_deps=[]): compiler = self.get_compiler_for_source(src) commands = self.generate_basic_compiler_flags(target, compiler) + commands.append(compiler.get_include_arg(self.get_target_private_dir(target))) if is_generated: - abs_src = src + abs_src = os.path.join(self.get_target_private_dir(target), src) else: abs_src = os.path.join(self.build_to_src, target.get_source_subdir(), src) abs_obj = os.path.join(self.get_target_private_dir(target), src) @@ -471,6 +475,8 @@ class NinjaBackend(Backend): compiler_name = '%s_COMPILER' % compiler.get_language() element = NinjaBuildElement(abs_obj, compiler_name, abs_src) + if len(header_deps) > 0: + element.add_dep([os.path.join(self.get_target_private_dir(target), d) for d in header_deps]) element.add_orderdep(pch_dep) element.add_item('DEPFILE', dep_file) element.add_item('FLAGS', commands) |