summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/CPack/cmCPackDragNDropGenerator.cxx7
-rw-r--r--Source/CTest/cmCTestScriptHandler.cxx63
-rw-r--r--Source/CTest/cmCTestScriptHandler.h3
-rw-r--r--Source/cmGeneratorTarget.cxx23
-rw-r--r--Source/cmGeneratorTarget.h20
-rw-r--r--Source/cmTarget.cxx14
-rw-r--r--Source/cmTarget.h14
8 files changed, 106 insertions, 40 deletions
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index a9c3b98..47caddd 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -2,5 +2,5 @@
set(CMake_VERSION_MAJOR 2)
set(CMake_VERSION_MINOR 8)
set(CMake_VERSION_PATCH 12)
-set(CMake_VERSION_TWEAK 20131102)
+set(CMake_VERSION_TWEAK 20131104)
#set(CMake_VERSION_RC 1)
diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx
index d973c01..dfb2f15 100644
--- a/Source/CPack/cmCPackDragNDropGenerator.cxx
+++ b/Source/CPack/cmCPackDragNDropGenerator.cxx
@@ -474,7 +474,7 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
udco_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL");
udco_image_command << " convert \"" << temp_image << "\"";
udco_image_command << " -format UDCO";
- udco_image_command << " -o \"" << temp_udco << "\"";
+ udco_image_command << " -ov -o \"" << temp_udco << "\"";
std::string error;
if(!this->RunCommand(udco_image_command, &error))
@@ -504,6 +504,11 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
// Rez the SLA
cmOStringStream embed_sla_command;
embed_sla_command << this->GetOption("CPACK_COMMAND_REZ");
+ const char* sysroot = this->GetOption("CPACK_OSX_SYSROOT");
+ if(sysroot && sysroot[0] != '\0')
+ {
+ embed_sla_command << " -isysroot \"" << sysroot << "\"";
+ }
embed_sla_command << " \"" << sla_r << "\"";
embed_sla_command << " -a -o ";
embed_sla_command << "\"" << temp_udco << "\"";
diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx
index 64bcd59..7d33cf3 100644
--- a/Source/CTest/cmCTestScriptHandler.cxx
+++ b/Source/CTest/cmCTestScriptHandler.cxx
@@ -22,6 +22,7 @@
//#include <cmsys/RegularExpression.hxx>
#include <cmsys/Process.h>
+#include <cmsys/Directory.hxx>
// used for sleep
#ifdef _WIN32
@@ -1056,15 +1057,71 @@ bool cmCTestScriptHandler::EmptyBinaryDirectory(const char *sname)
return false;
}
+ // consider non existing target directory a success
+ if(!cmSystemTools::FileExists(sname))
+ {
+ return true;
+ }
+
// try to avoid deleting directories that we shouldn't
std::string check = sname;
check += "/CMakeCache.txt";
- if(cmSystemTools::FileExists(check.c_str()) &&
- !cmSystemTools::RemoveADirectory(sname))
+
+ if(!cmSystemTools::FileExists(check.c_str()))
{
return false;
}
- return true;
+
+ for(int i = 0; i < 5; ++i)
+ {
+ if(TryToRemoveBinaryDirectoryOnce(sname))
+ {
+ return true;
+ }
+ cmSystemTools::Delay(100);
+ }
+
+ return false;
+}
+
+//-------------------------------------------------------------------------
+bool cmCTestScriptHandler::TryToRemoveBinaryDirectoryOnce(
+ const std::string& directoryPath)
+{
+ cmsys::Directory directory;
+ directory.Load(directoryPath.c_str());
+
+ for(unsigned long i = 0; i < directory.GetNumberOfFiles(); ++i)
+ {
+ std::string path = directory.GetFile(i);
+
+ if(path == "." || path == ".." || path == "CMakeCache.txt")
+ {
+ continue;
+ }
+
+ std::string fullPath = directoryPath + std::string("/") + path;
+
+ bool isDirectory = cmSystemTools::FileIsDirectory(fullPath.c_str()) &&
+ !cmSystemTools::FileIsSymlink(fullPath.c_str());
+
+ if(isDirectory)
+ {
+ if(!cmSystemTools::RemoveADirectory(fullPath.c_str()))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ if(!cmSystemTools::RemoveFile(fullPath.c_str()))
+ {
+ return false;
+ }
+ }
+ }
+
+ return cmSystemTools::RemoveADirectory(directoryPath.c_str());
}
//-------------------------------------------------------------------------
diff --git a/Source/CTest/cmCTestScriptHandler.h b/Source/CTest/cmCTestScriptHandler.h
index 80d5831..44e9dd0 100644
--- a/Source/CTest/cmCTestScriptHandler.h
+++ b/Source/CTest/cmCTestScriptHandler.h
@@ -135,6 +135,9 @@ private:
// Add ctest command
void AddCTestCommand(cmCTestCommand* command);
+ // Try to remove the binary directory once
+ static bool TryToRemoveBinaryDirectoryOnce(const std::string& directoryPath);
+
std::vector<cmStdString> ConfigurationScripts;
std::vector<bool> ScriptProcessScope;
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index b512675..b964f71 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -42,16 +42,16 @@ const char *cmGeneratorTarget::GetName() const
}
//----------------------------------------------------------------------------
-const char *cmGeneratorTarget::GetProperty(const char *prop)
+const char *cmGeneratorTarget::GetProperty(const char *prop) const
{
return this->Target->GetProperty(prop);
}
//----------------------------------------------------------------------------
std::vector<cmSourceFile*> const*
-cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf)
+cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf) const
{
- SourceEntriesType::iterator i = this->SourceEntries.find(sf);
+ SourceEntriesType::const_iterator i = this->SourceEntries.find(sf);
if(i != this->SourceEntries.end())
{
return &i->second.Depends;
@@ -61,7 +61,7 @@ cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf)
//----------------------------------------------------------------------------
bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
- const char *config)
+ const char *config) const
{
std::string config_upper;
if(config && *config)
@@ -70,7 +70,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
}
typedef std::map<std::string, std::vector<std::string> > IncludeCacheType;
- IncludeCacheType::iterator iter =
+ IncludeCacheType::const_iterator iter =
this->SystemIncludesCache.find(config_upper);
if (iter == this->SystemIncludesCache.end())
@@ -111,13 +111,13 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
}
//----------------------------------------------------------------------------
-bool cmGeneratorTarget::GetPropertyAsBool(const char *prop)
+bool cmGeneratorTarget::GetPropertyAsBool(const char *prop) const
{
return this->Target->GetPropertyAsBool(prop);
}
//----------------------------------------------------------------------------
-std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles()
+std::vector<cmSourceFile*> const& cmGeneratorTarget::GetSourceFiles() const
{
return this->Target->GetSourceFiles();
}
@@ -270,7 +270,8 @@ void cmGeneratorTarget::LookupObjectLibraries()
}
//----------------------------------------------------------------------------
-void cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs)
+void
+cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs) const
{
for(std::vector<cmTarget*>::const_iterator
ti = this->ObjectLibraries.begin();
@@ -571,7 +572,7 @@ void cmGeneratorTarget::TraceDependencies()
//----------------------------------------------------------------------------
void cmGeneratorTarget::GetAppleArchs(const char* config,
- std::vector<std::string>& archVec)
+ std::vector<std::string>& archVec) const
{
const char* archs = 0;
if(config && *config)
@@ -591,7 +592,7 @@ void cmGeneratorTarget::GetAppleArchs(const char* config,
}
//----------------------------------------------------------------------------
-const char* cmGeneratorTarget::GetCreateRuleVariable()
+const char* cmGeneratorTarget::GetCreateRuleVariable() const
{
switch(this->GetType())
{
@@ -617,7 +618,7 @@ std::vector<std::string> cmGeneratorTarget::GetIncludeDirectories(
}
//----------------------------------------------------------------------------
-void cmGeneratorTarget::GenerateTargetManifest(const char* config)
+void cmGeneratorTarget::GenerateTargetManifest(const char* config) const
{
if (this->Target->IsImported())
{
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index a99f54b..177bc25 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -28,9 +28,9 @@ public:
int GetType() const;
const char *GetName() const;
- const char *GetProperty(const char *prop);
- bool GetPropertyAsBool(const char *prop);
- std::vector<cmSourceFile*> const& GetSourceFiles();
+ const char *GetProperty(const char *prop) const;
+ bool GetPropertyAsBool(const char *prop) const;
+ std::vector<cmSourceFile*> const& GetSourceFiles() const;
cmTarget* Target;
cmMakefile* Makefile;
@@ -60,22 +60,22 @@ public:
std::vector<cmTarget*> ObjectLibraries;
- void UseObjectLibraries(std::vector<std::string>& objs);
+ void UseObjectLibraries(std::vector<std::string>& objs) const;
void GetAppleArchs(const char* config,
- std::vector<std::string>& archVec);
+ std::vector<std::string>& archVec) const;
///! Return the rule variable used to create this type of target,
// need to add CMAKE_(LANG) for full name.
- const char* GetCreateRuleVariable();
+ const char* GetCreateRuleVariable() const;
/** Get the include directories for this target. */
std::vector<std::string> GetIncludeDirectories(const char *config);
- bool IsSystemIncludeDirectory(const char *dir, const char *config);
+ bool IsSystemIncludeDirectory(const char *dir, const char *config) const;
/** Add the target output files to the global generator manifest. */
- void GenerateTargetManifest(const char* config);
+ void GenerateTargetManifest(const char* config) const;
/**
* Trace through the source files in this target and add al source files
@@ -87,14 +87,14 @@ public:
void LookupObjectLibraries();
/** Get sources that must be built before the given source. */
- std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile* sf);
+ std::vector<cmSourceFile*> const* GetSourceDepends(cmSourceFile* sf) const;
struct SourceEntry { std::vector<cmSourceFile*> Depends; };
typedef std::map<cmSourceFile*, SourceEntry> SourceEntriesType;
SourceEntriesType SourceEntries;
private:
- std::map<std::string, std::vector<std::string> > SystemIncludesCache;
+ mutable std::map<std::string, std::vector<std::string> > SystemIncludesCache;
cmGeneratorTarget(cmGeneratorTarget const&);
void operator=(cmGeneratorTarget const&);
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 7e87514..d0390f7 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -510,7 +510,7 @@ bool cmTarget::FindSourceFiles()
}
//----------------------------------------------------------------------------
-std::vector<cmSourceFile*> const& cmTarget::GetSourceFiles()
+std::vector<cmSourceFile*> const& cmTarget::GetSourceFiles() const
{
return this->SourceFiles;
}
@@ -3078,7 +3078,7 @@ std::string cmTarget::GetSOName(const char* config) const
}
//----------------------------------------------------------------------------
-bool cmTarget::HasMacOSXRpath(const char* config)
+bool cmTarget::HasMacOSXRpath(const char* config) const
{
bool install_name_is_rpath = false;
bool macosx_rpath = this->GetPropertyAsBool("MACOSX_RPATH");
@@ -3225,7 +3225,7 @@ cmTarget::GetFullNameImported(const char* config, bool implib) const
//----------------------------------------------------------------------------
void cmTarget::GetFullNameComponents(std::string& prefix, std::string& base,
std::string& suffix, const char* config,
- bool implib)
+ bool implib) const
{
this->GetFullNameInternal(config, implib, prefix, base, suffix);
}
@@ -3661,7 +3661,7 @@ bool cmTarget::HaveInstallTreeRPATH() const
}
//----------------------------------------------------------------------------
-bool cmTarget::NeedRelinkBeforeInstall(const char* config)
+bool cmTarget::NeedRelinkBeforeInstall(const char* config) const
{
// Only executables and shared libraries can have an rpath and may
// need relinking.
@@ -3724,7 +3724,7 @@ bool cmTarget::NeedRelinkBeforeInstall(const char* config)
}
//----------------------------------------------------------------------------
-std::string cmTarget::GetInstallNameDirForBuildTree(const char* config)
+std::string cmTarget::GetInstallNameDirForBuildTree(const char* config) const
{
// If building directly for installation then the build tree install_name
// is the same as the install tree.
@@ -3757,7 +3757,7 @@ std::string cmTarget::GetInstallNameDirForBuildTree(const char* config)
}
//----------------------------------------------------------------------------
-std::string cmTarget::GetInstallNameDirForInstallTree()
+std::string cmTarget::GetInstallNameDirForInstallTree() const
{
if(this->Makefile->IsOn("CMAKE_PLATFORM_HAS_INSTALLNAME"))
{
@@ -5774,7 +5774,7 @@ std::string cmTarget::BuildMacContentDirectory(const std::string& base,
//----------------------------------------------------------------------------
std::string cmTarget::GetMacContentDirectory(const char* config,
- bool implib)
+ bool implib) const
{
// Start with the output directory for the target.
std::string fpath = this->GetDirectory(config, implib);
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index eae5009..fbb4914 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -124,7 +124,7 @@ public:
/**
* Get the list of the source files used by this target
*/
- std::vector<cmSourceFile*> const& GetSourceFiles();
+ std::vector<cmSourceFile*> const& GetSourceFiles() const;
void AddSourceFile(cmSourceFile* sf);
std::vector<std::string> const& GetObjectLibraries() const
{
@@ -361,7 +361,7 @@ public:
std::string GetFullName(const char* config=0, bool implib = false) const;
void GetFullNameComponents(std::string& prefix,
std::string& base, std::string& suffix,
- const char* config=0, bool implib = false);
+ const char* config=0, bool implib = false) const;
/** Get the name of the pdb file for the target. */
std::string GetPDBName(const char* config=0) const;
@@ -373,7 +373,7 @@ public:
std::string GetSOName(const char* config) const;
/** Whether this library has \@rpath and platform supports it. */
- bool HasMacOSXRpath(const char* config);
+ bool HasMacOSXRpath(const char* config) const;
/** Test for special case of a third-party shared library that has
no soname at all. */
@@ -409,7 +409,7 @@ public:
/**
* Compute whether this target must be relinked before installing.
*/
- bool NeedRelinkBeforeInstall(const char* config);
+ bool NeedRelinkBeforeInstall(const char* config) const;
bool HaveBuildTreeRPATH(const char *config) const;
bool HaveInstallTreeRPATH() const;
@@ -420,11 +420,11 @@ public:
/** Return the install name directory for the target in the
* build tree. For example: "\@rpath/", "\@loader_path/",
* or "/full/path/to/library". */
- std::string GetInstallNameDirForBuildTree(const char* config);
+ std::string GetInstallNameDirForBuildTree(const char* config) const;
/** Return the install name directory for the target in the
* install tree. For example: "\@rpath/" or "\@loader_path/". */
- std::string GetInstallNameDirForInstallTree();
+ std::string GetInstallNameDirForInstallTree() const;
cmComputeLinkInformation* GetLinkInformation(const char* config,
cmTarget const* head = 0) const;
@@ -497,7 +497,7 @@ public:
/** @return the mac content directory for this target. */
std::string GetMacContentDirectory(const char* config,
- bool implib);
+ bool implib) const;
/** @return whether this target have a well defined output file name. */
bool HaveWellDefinedOutputFiles() const;