Commit f1146572 authored by Greg Ward's avatar Greg Ward

In compile/link methods: ensure that the directory we expect to be writing to

exists before calling the compiler/linker.
parent 013f0c86
...@@ -159,6 +159,8 @@ class UnixCCompiler (CCompiler): ...@@ -159,6 +159,8 @@ class UnixCCompiler (CCompiler):
if extra_postargs is None: if extra_postargs is None:
extra_postargs = [] extra_postargs = []
if output_dir is not None:
self.mkpath (output_dir)
for (source,object) in srcobj: for (source,object) in srcobj:
self.spawn ([self.cc] + cc_args + self.spawn ([self.cc] + cc_args +
[source, '-o', object] + [source, '-o', object] +
...@@ -167,7 +169,7 @@ class UnixCCompiler (CCompiler): ...@@ -167,7 +169,7 @@ class UnixCCompiler (CCompiler):
# Have to re-fetch list of object filenames, because we want to # Have to re-fetch list of object filenames, because we want to
# return *all* of them, including those that weren't recompiled on # return *all* of them, including those that weren't recompiled on
# this call! # this call!
return self.object_filenames (orig_sources, output_dir) return self.object_filenames (orig_sources, output_dir=output_dir)
def _fix_link_args (self, output_dir, libraries, library_dirs): def _fix_link_args (self, output_dir, libraries, library_dirs):
...@@ -226,6 +228,7 @@ class UnixCCompiler (CCompiler): ...@@ -226,6 +228,7 @@ class UnixCCompiler (CCompiler):
newer = newer_group (objects, output_filename) newer = newer_group (objects, output_filename)
if self.force or newer: if self.force or newer:
self.mkpath (os.path.dirname (output_filename))
self.spawn ([self.archiver, self.spawn ([self.archiver,
self.archiver_options, self.archiver_options,
output_filename] + output_filename] +
...@@ -298,6 +301,7 @@ class UnixCCompiler (CCompiler): ...@@ -298,6 +301,7 @@ class UnixCCompiler (CCompiler):
ld_args[:0] = extra_preargs ld_args[:0] = extra_preargs
if extra_postargs: if extra_postargs:
ld_args.extend (extra_postargs) ld_args.extend (extra_postargs)
self.mkpath (os.path.dirname (output_filename))
self.spawn ([self.ld_shared] + ld_args) self.spawn ([self.ld_shared] + ld_args)
else: else:
self.announce ("skipping %s (up-to-date)" % output_filename) self.announce ("skipping %s (up-to-date)" % output_filename)
...@@ -340,6 +344,7 @@ class UnixCCompiler (CCompiler): ...@@ -340,6 +344,7 @@ class UnixCCompiler (CCompiler):
ld_args[:0] = extra_preargs ld_args[:0] = extra_preargs
if extra_postargs: if extra_postargs:
ld_args.extend (extra_postargs) ld_args.extend (extra_postargs)
self.mkpath (os.path.dirname (output_filename))
self.spawn ([self.ld_exec] + ld_args) self.spawn ([self.ld_exec] + ld_args)
else: else:
self.announce ("skipping %s (up-to-date)" % output_filename) self.announce ("skipping %s (up-to-date)" % output_filename)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment