summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-04-28 22:34:58 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-04-28 22:34:58 (GMT)
commit064ca3834b213152110ce8f2c099d1a2bb65eaff (patch)
treec440194823079fd1dd98d2e2b27d5ab3f2f497fb
parentcb3ea2328a72a82b6e6174bdc9055459a207c26f (diff)
downloadCMake-064ca3834b213152110ce8f2c099d1a2bb65eaff.zip
CMake-064ca3834b213152110ce8f2c099d1a2bb65eaff.tar.gz
CMake-064ca3834b213152110ce8f2c099d1a2bb65eaff.tar.bz2
ENH: Start working on command that will abstract generating of build command
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx50
-rw-r--r--Source/cmGlobalXCodeGenerator.h7
2 files changed, 20 insertions, 37 deletions
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 0168ebf..d139ce3 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -51,42 +51,39 @@ void cmGlobalXCodeGenerator::EnableLanguage(std::vector<std::string>const&
}
//----------------------------------------------------------------------------
-int cmGlobalXCodeGenerator::Build(
- const char *,
- const char *bindir,
- const char *projectName,
- const char *targetName,
- std::string *output,
- const char *makeCommandCSTR,
- const char *,
- bool clean)
+std::string cmGlobalXCodeGenerator::GenerateBuildCommand(const char* makeProgram,
+ const char *projectName, const char *targetName, const char* config)
{
// now build the test
- if(makeCommandCSTR == 0 || !strlen(makeCommandCSTR))
+ if(makeProgram == 0 || !strlen(makeProgram))
{
cmSystemTools::Error(
"Generator cannot find the appropriate make command.");
- return 1;
+ return "";
}
std::string makeCommand =
- cmSystemTools::ConvertToOutputPath(makeCommandCSTR);
+ cmSystemTools::ConvertToOutputPath(makeProgram);
std::string lowerCaseCommand = makeCommand;
cmSystemTools::LowerCase(lowerCaseCommand);
- /**
- * Run an executable command and put the stdout in output.
- */
- std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
- cmSystemTools::ChangeDirectory(bindir);
-
makeCommand += " -project ";
makeCommand += projectName;
makeCommand += ".xcode";
+ bool clean = false;
+ if ( targetName && strcmp(targetName, "clean") == 0 )
+ {
+ clean = true;
+ targetName = "ALL_BUILD";
+ }
if(clean)
{
- makeCommand += " clean ";
+ makeCommand += " clean";
+ }
+ else
+ {
+ makeCommand += " build";
}
- makeCommand += " build -target ";
+ makeCommand += " -target ";
if (targetName && strlen(targetName))
{
makeCommand += targetName;
@@ -96,18 +93,7 @@ int cmGlobalXCodeGenerator::Build(
makeCommand += "ALL_BUILD";
}
makeCommand += " -buildstyle Development ";
- int retVal;
- int timeout = cmGlobalGenerator::s_TryCompileTimeout;
- if (!cmSystemTools::RunSingleCommand(makeCommand.c_str(), output, &retVal,
- 0, false, timeout))
- {
- cmSystemTools::Error("Generator: execution of xcodebuild failed.");
- // return to the original directory
- cmSystemTools::ChangeDirectory(cwd.c_str());
- return 1;
- }
- cmSystemTools::ChangeDirectory(cwd.c_str());
- return retVal;
+ return makeCommand;
}
//----------------------------------------------------------------------------
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index 5588d1f..85cbea0 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -57,11 +57,8 @@ public:
* Try running cmake and building a file. This is used for dynalically
* loaded commands, not as part of the usual build process.
*/
- virtual int Build(const char *srcdir, const char *bindir,
- const char *projectName, const char *targetName,
- std::string *output,
- const char *makeProgram,
- const char *config, bool clean);
+ virtual std::string GenerateBuildCommand(const char* makeProgram,
+ const char *projectName, const char *targetName, const char* config);
/**
* Generate the all required files for building this project/tree. This