aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compilers.py11
-rw-r--r--interpreter.py2
-rw-r--r--ninjabackend.py4
3 files changed, 13 insertions, 4 deletions
diff --git a/compilers.py b/compilers.py
index ec618e9..72e9f30 100644
--- a/compilers.py
+++ b/compilers.py
@@ -263,7 +263,16 @@ class CCompiler(Compiler):
ofile = open(source_name, 'w')
ofile.write('int main(int argc, char **argv) { int class=0; return class; }\n')
ofile.close()
- pc = subprocess.Popen(self.exelist + [source_name, '-o', binary_name])
+ if self.is_cross and self.exe_wrapper is None:
+ # Linking cross built apps is painful. You can't really
+ # tell if you should use -nostdlib or not and for example
+ # on OSX the compiler binary is the same but you need
+ # a ton of compiler flags to differentiate between
+ # arm and x86_64. So just compile.
+ extra_flags = ['-c']
+ else:
+ extra_flags = []
+ pc = subprocess.Popen(self.exelist + extra_flags + [source_name, '-o', binary_name])
pc.wait()
if pc.returncode != 0:
raise EnvironmentException('Compiler %s can not compile programs.' % self.name_string())
diff --git a/interpreter.py b/interpreter.py
index 9e494f0..70ce271 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1526,7 +1526,7 @@ class Interpreter():
i = i.held_object
except AttributeError:
pass
- if not isinstance(i, (str, build.BuildTarget)):
+ if not isinstance(i, (str, build.BuildTarget, build.CustomTarget)):
mlog.debug('Wrong type:', str(i))
raise InterpreterException('Invalid argument to run_target.')
cleaned_args.append(i)
diff --git a/ninjabackend.py b/ninjabackend.py
index bd074bf..f948328 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -354,13 +354,13 @@ class NinjaBackend(backends.Backend):
for i in target.args:
if isinstance(i, str):
arg_strings.append(i)
- elif isinstance(i, build.BuildTarget):
+ elif isinstance(i, (build.BuildTarget, build.CustomTarget)):
relfname = self.get_target_filename(i)
deps.append(relfname)
arg_strings.append(os.path.join(self.environment.get_build_dir(), relfname))
else:
mlog.debug(str(i))
- raise MesonException('Unreachable code.')
+ raise MesonException('Unreachable code in generate_run_target.')
elem = NinjaBuildElement(target.name, 'CUSTOM_COMMAND', deps)
cmd = [sys.executable, runnerscript, self.environment.get_source_dir(), self.environment.get_build_dir(), target.subdir]
texe = target.command