aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-02 00:00:24 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-02 00:00:24 +0200
commit8db898928b0bce1b15f0ef8ad8c1e4936a9d0af9 (patch)
treeb10862c7e22f085fb87a770a24f8f4f14d42714f
parent53cddaec8cf8af941d1c2d5f9f5b71ae8c24ca5e (diff)
downloadmeson-8db898928b0bce1b15f0ef8ad8c1e4936a9d0af9.zip
meson-8db898928b0bce1b15f0ef8ad8c1e4936a9d0af9.tar.gz
meson-8db898928b0bce1b15f0ef8ad8c1e4936a9d0af9.tar.bz2
Put all outputs to target directories.
-rwxr-xr-xinterpreter.py2
-rwxr-xr-xshellgenerator.py18
-rw-r--r--test cases/1 trivial/trivial.c2
3 files changed, 14 insertions, 8 deletions
diff --git a/interpreter.py b/interpreter.py
index 0425f2e..601c5d0 100755
--- a/interpreter.py
+++ b/interpreter.py
@@ -38,7 +38,7 @@ class BuildTarget(InterpreterObject):
self.name = name
self.sources = sources
self.external_deps = []
-
+
def get_basename(self):
return self.name
diff --git a/shellgenerator.py b/shellgenerator.py
index 1fe5bee..3ce2080 100755
--- a/shellgenerator.py
+++ b/shellgenerator.py
@@ -50,7 +50,7 @@ class ShellGenerator():
if compiler is None:
raise RuntimeError('No specified compiler can handle file ' + src)
abs_src = os.path.join(self.environment.get_source_dir(), src)
- abs_obj = os.path.join(self.environment.get_build_dir(), src)
+ abs_obj = os.path.join(self.get_target_dir(target), src)
abs_obj += '.' + self.environment.get_object_suffix()
commands = []
commands += compiler.get_exelist()
@@ -80,19 +80,25 @@ class ShellGenerator():
outfile.write('\necho Linking \\"%s\\".\n' % outname)
outfile.write(' '.join(quoted) + ' || exit\n')
+ def get_target_dir(self, target):
+ dirname = os.path.join(self.environment.get_build_dir(), target.get_basename())
+ os.makedirs(dirname, exist_ok=True)
+ return dirname
+
def generate_commands(self, outfile):
for i in self.interpreter.get_targets().items():
name = i[0]
- e = i[1]
+ target = i[1]
print('Generating target', name)
- outname = os.path.join(self.environment.get_build_dir(), e.get_basename())
+ targetdir = self.get_target_dir(target)
+ outname = os.path.join(targetdir, target.get_basename())
suffix = self.environment.get_exe_suffix()
if suffix != '':
outname = outname + '.' + suffix
obj_list = []
- for src in e.get_sources():
- obj_list.append(self.generate_single_compile(e, outfile, src))
- self.generate_link(e, outfile, outname, obj_list)
+ for src in target.get_sources():
+ obj_list.append(self.generate_single_compile(target, outfile, src))
+ self.generate_link(target, outfile, outname, obj_list)
if __name__ == '__main__':
code = """
diff --git a/test cases/1 trivial/trivial.c b/test cases/1 trivial/trivial.c
index 363dac3..5c2fa9b 100644
--- a/test cases/1 trivial/trivial.c
+++ b/test cases/1 trivial/trivial.c
@@ -1,3 +1,3 @@
-int main(int argv, char **argv) {
+int main(int argc, char **argv) {
return 0;
}