diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-20 14:08:48 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-09-20 14:08:48 +0300 |
commit | 77c14525c39b9f1e020cd48827127d0a65deb59c (patch) | |
tree | adf11d03c5f00c371b6e6dff73025d586cfb0af0 /ninjabackend.py | |
parent | dbb72bfd1293eb7d6e0698f6205ed0cbff0cbf6f (diff) | |
download | meson-77c14525c39b9f1e020cd48827127d0a65deb59c.zip meson-77c14525c39b9f1e020cd48827127d0a65deb59c.tar.gz meson-77c14525c39b9f1e020cd48827127d0a65deb59c.tar.bz2 |
Autodetect runnable commands on unix (where chmod values might be wrong) and Windows (where files with weird suffixes are unrunnable.
Diffstat (limited to 'ninjabackend.py')
-rw-r--r-- | ninjabackend.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/ninjabackend.py b/ninjabackend.py index 2b2a155..616041e 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -200,8 +200,6 @@ class NinjaBackend(backends.Backend): if isinstance(gensource, build.CustomTarget): for src in gensource.output: src = os.path.join(gensource.subdir, src) - if self.environment.is_header(src): - header_deps.append(RawFilename(src)) if self.environment.is_source(src) and not self.environment.is_header(src): if is_unity: unity_deps.append(os.path.join(self.environment.get_build_dir(), RawFilename(src))) @@ -209,7 +207,10 @@ class NinjaBackend(backends.Backend): obj_list.append(self.generate_single_compile(target, outfile, RawFilename(src), True, header_deps)) else: - pass # perhaps print warning about the unknown file? + # Assume anything not specifically a source file is a header. This is because + # people generate files with weird suffixes (.inc, .fh) that they then include + # in their source files. + header_deps.append(RawFilename(src)) break # just to cut down on indentation size for src in gensource.get_outfilelist(): if self.environment.is_object(src): @@ -275,7 +276,7 @@ class NinjaBackend(backends.Backend): ofilenames = [os.path.join(target.subdir, i) for i in target.output] # FIXME, should not grab element at zero but rather expand all. deps = [os.path.join(i.get_subdir(), self.hackety_hack(i.get_filename())) for i in target.get_dependencies()] - srcs = [os.path.join(self.build_to_src, target.subdir, i) for i in target.sources] + srcs = [os.path.join(self.build_to_src, target.subdir, i) for i in target.sources] deps += srcs elem = NinjaBuildElement(ofilenames, 'CUSTOM_COMMAND', deps) cmd = [] @@ -976,9 +977,9 @@ rule FORTRAN_DEP_HACK infilelist = genlist.get_infilelist() outfilelist = genlist.get_outfilelist() if isinstance(exe, build.BuildTarget): - exe_file = os.path.join(self.environment.get_build_dir(), self.get_target_filename(exe)) + exe_arr = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(exe))] else: - exe_file = exe.get_command() + exe_arr = exe.get_command() base_args = generator.get_arglist() for i in range(len(infilelist)): if len(generator.outputs) == 1: @@ -994,7 +995,7 @@ rule FORTRAN_DEP_HACK args = self.replace_outputs(args, self.get_target_private_dir(target), outfilelist) args = [x.replace("@SOURCE_DIR@", self.environment.get_source_dir()).replace("@BUILD_DIR@", self.get_target_private_dir(target)) for x in args] - cmdlist = [exe_file] + args + cmdlist = exe_arr + args elem = NinjaBuildElement(outfiles, 'CUSTOM_COMMAND', infilename) elem.add_item('DESC', 'Generating $out') if isinstance(exe, build.BuildTarget): |