|
|
@@ -82,11 +82,31 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
|
|
|
// be translated.
|
|
|
std::string exe = command[0];
|
|
|
cmMakefile* mf = this->Test->GetMakefile();
|
|
|
+ cmLocalGenerator* lg = mf->GetLocalGenerator();
|
|
|
cmTarget* target = mf->FindTargetToUse(exe);
|
|
|
if(target && target->GetType() == cmTarget::EXECUTABLE)
|
|
|
{
|
|
|
// Use the target file on disk.
|
|
|
exe = target->GetFullPath(config);
|
|
|
+
|
|
|
+ // Prepend with the emulator when cross compiling if required.
|
|
|
+ const char * emulator =
|
|
|
+ target->GetProperty("CROSSCOMPILING_EMULATOR");
|
|
|
+ if (emulator != 0)
|
|
|
+ {
|
|
|
+ std::vector<std::string> emulatorWithArgs;
|
|
|
+ cmSystemTools::ExpandListArgument(emulator, emulatorWithArgs);
|
|
|
+ std::string emulatorExe(emulatorWithArgs[0]);
|
|
|
+ cmSystemTools::ConvertToUnixSlashes(emulatorExe);
|
|
|
+ os << lg->EscapeForCMake(emulatorExe) << " ";
|
|
|
+ for(std::vector<std::string>::const_iterator ei =
|
|
|
+ emulatorWithArgs.begin()+1;
|
|
|
+ ei != emulatorWithArgs.end();
|
|
|
+ ++ei)
|
|
|
+ {
|
|
|
+ os << lg->EscapeForCMake(*ei) << " ";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -96,7 +116,6 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
|
|
|
}
|
|
|
|
|
|
// Generate the command line with full escapes.
|
|
|
- cmLocalGenerator* lg = mf->GetLocalGenerator();
|
|
|
os << lg->EscapeForCMake(exe);
|
|
|
for(std::vector<std::string>::const_iterator ci = command.begin()+1;
|
|
|
ci != command.end(); ++ci)
|