summaryrefslogtreecommitdiffstats
path: root/Source/cmSourceFile.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmSourceFile.cxx')
-rw-r--r--Source/cmSourceFile.cxx208
1 files changed, 82 insertions, 126 deletions
diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx
index b31bc74..5b0acee 100644
--- a/Source/cmSourceFile.cxx
+++ b/Source/cmSourceFile.cxx
@@ -16,13 +16,13 @@
#include "cmSystemTools.h"
#include "cmake.h"
-cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name):
- Location(mf, name)
+cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name)
+ : Location(mf, name)
{
this->CustomCommand = 0;
this->FindFullPathFailed = false;
- this->IsUiFile = (".ui" ==
- cmSystemTools::GetFilenameLastExtension(this->Location.GetName()));
+ this->IsUiFile = (".ui" == cmSystemTools::GetFilenameLastExtension(
+ this->Location.GetName()));
}
cmSourceFile::~cmSourceFile()
@@ -50,34 +50,29 @@ std::string cmSourceFile::GetObjectLibrary() const
std::string cmSourceFile::GetLanguage()
{
// If the language was set explicitly by the user then use it.
- if(const char* lang = this->GetProperty(propLANGUAGE))
- {
+ if (const char* lang = this->GetProperty(propLANGUAGE)) {
return lang;
- }
+ }
// Perform computation needed to get the language if necessary.
- if(this->FullPath.empty() && this->Language.empty())
- {
+ if (this->FullPath.empty() && this->Language.empty()) {
// If a known extension is given or a known full path is given
// then trust that the current extension is sufficient to
// determine the language. This will fail only if the user
// specifies a full path to the source but leaves off the
// extension, which is kind of weird.
- if(this->Location.ExtensionIsAmbiguous() &&
- this->Location.DirectoryIsAmbiguous())
- {
+ if (this->Location.ExtensionIsAmbiguous() &&
+ this->Location.DirectoryIsAmbiguous()) {
// Finalize the file location to get the extension and set the
// language.
this->GetFullPath();
- }
- else
- {
+ } else {
// Use the known extension to get the language if possible.
std::string ext =
cmSystemTools::GetFilenameLastExtension(this->Location.GetName());
this->CheckLanguage(ext);
- }
}
+ }
// Now try to determine the language.
return static_cast<cmSourceFile const*>(this)->GetLanguage();
@@ -86,16 +81,14 @@ std::string cmSourceFile::GetLanguage()
std::string cmSourceFile::GetLanguage() const
{
// If the language was set explicitly by the user then use it.
- if(const char* lang = this->GetProperty(propLANGUAGE))
- {
+ if (const char* lang = this->GetProperty(propLANGUAGE)) {
return lang;
- }
+ }
// If the language was determined from the source file extension use it.
- if(!this->Language.empty())
- {
+ if (!this->Language.empty()) {
return this->Language;
- }
+ }
// The language is not known.
return "";
@@ -103,18 +96,16 @@ std::string cmSourceFile::GetLanguage() const
cmSourceFileLocation const& cmSourceFile::GetLocation() const
{
- return this->Location;
+ return this->Location;
}
std::string const& cmSourceFile::GetFullPath(std::string* error)
{
- if(this->FullPath.empty())
- {
- if(this->FindFullPath(error))
- {
+ if (this->FullPath.empty()) {
+ if (this->FindFullPath(error)) {
this->CheckExtension();
- }
}
+ }
return this->FullPath;
}
@@ -126,15 +117,13 @@ std::string const& cmSourceFile::GetFullPath() const
bool cmSourceFile::FindFullPath(std::string* error)
{
// If thie method has already failed once do not try again.
- if(this->FindFullPathFailed)
- {
+ if (this->FindFullPathFailed) {
return false;
- }
+ }
// If the file is generated compute the location without checking on
// disk.
- if(this->GetPropertyAsBool("GENERATED"))
- {
+ if (this->GetPropertyAsBool("GENERATED")) {
// The file is either already a full path or is relative to the
// build directory for the target.
this->Location.DirectoryUseBinary();
@@ -142,99 +131,80 @@ bool cmSourceFile::FindFullPath(std::string* error)
this->FullPath += "/";
this->FullPath += this->Location.GetName();
return true;
- }
+ }
// The file is not generated. It must exist on disk.
cmMakefile const* mf = this->Location.GetMakefile();
- const char* tryDirs[3] = {0, 0, 0};
- if(this->Location.DirectoryIsAmbiguous())
- {
+ const char* tryDirs[3] = { 0, 0, 0 };
+ if (this->Location.DirectoryIsAmbiguous()) {
tryDirs[0] = mf->GetCurrentSourceDirectory();
tryDirs[1] = mf->GetCurrentBinaryDirectory();
- }
- else
- {
+ } else {
tryDirs[0] = "";
- }
+ }
const std::vector<std::string>& srcExts =
- mf->GetCMakeInstance()->GetSourceExtensions();
+ mf->GetCMakeInstance()->GetSourceExtensions();
std::vector<std::string> hdrExts =
- mf->GetCMakeInstance()->GetHeaderExtensions();
- for(const char* const* di = tryDirs; *di; ++di)
- {
+ mf->GetCMakeInstance()->GetHeaderExtensions();
+ for (const char* const* di = tryDirs; *di; ++di) {
std::string tryPath = this->Location.GetDirectory();
- if(!tryPath.empty())
- {
+ if (!tryPath.empty()) {
tryPath += "/";
- }
+ }
tryPath += this->Location.GetName();
tryPath = cmSystemTools::CollapseFullPath(tryPath, *di);
- if(this->TryFullPath(tryPath, ""))
- {
+ if (this->TryFullPath(tryPath, "")) {
return true;
- }
- for(std::vector<std::string>::const_iterator ei = srcExts.begin();
- ei != srcExts.end(); ++ei)
- {
- if(this->TryFullPath(tryPath, *ei))
- {
+ }
+ for (std::vector<std::string>::const_iterator ei = srcExts.begin();
+ ei != srcExts.end(); ++ei) {
+ if (this->TryFullPath(tryPath, *ei)) {
return true;
- }
}
- for(std::vector<std::string>::const_iterator ei = hdrExts.begin();
- ei != hdrExts.end(); ++ei)
- {
- if(this->TryFullPath(tryPath, *ei))
- {
+ }
+ for (std::vector<std::string>::const_iterator ei = hdrExts.begin();
+ ei != hdrExts.end(); ++ei) {
+ if (this->TryFullPath(tryPath, *ei)) {
return true;
- }
}
}
+ }
std::ostringstream e;
std::string missing = this->Location.GetDirectory();
- if(!missing.empty())
- {
+ if (!missing.empty()) {
missing += "/";
- }
+ }
missing += this->Location.GetName();
e << "Cannot find source file:\n " << missing << "\nTried extensions";
- for(std::vector<std::string>::const_iterator ext = srcExts.begin();
- ext != srcExts.end(); ++ext)
- {
+ for (std::vector<std::string>::const_iterator ext = srcExts.begin();
+ ext != srcExts.end(); ++ext) {
e << " ." << *ext;
- }
- for(std::vector<std::string>::const_iterator ext = hdrExts.begin();
- ext != hdrExts.end(); ++ext)
- {
+ }
+ for (std::vector<std::string>::const_iterator ext = hdrExts.begin();
+ ext != hdrExts.end(); ++ext) {
e << " ." << *ext;
- }
- if(error)
- {
+ }
+ if (error) {
*error = e.str();
- }
- else
- {
+ } else {
this->Location.GetMakefile()->IssueMessage(cmake::FATAL_ERROR, e.str());
- }
+ }
this->FindFullPathFailed = true;
return false;
}
-bool cmSourceFile::TryFullPath(const std::string& path,
- const std::string& ext)
+bool cmSourceFile::TryFullPath(const std::string& path, const std::string& ext)
{
std::string tryPath = path;
- if(!ext.empty())
- {
+ if (!ext.empty()) {
tryPath += ".";
tryPath += ext;
- }
- if(cmSystemTools::FileExists(tryPath.c_str()))
- {
+ }
+ if (cmSystemTools::FileExists(tryPath.c_str())) {
this->FullPath = tryPath;
return true;
- }
+ }
return false;
}
@@ -243,25 +213,21 @@ void cmSourceFile::CheckExtension()
// Compute the extension.
std::string realExt =
cmSystemTools::GetFilenameLastExtension(this->FullPath);
- if(!realExt.empty())
- {
+ if (!realExt.empty()) {
// Store the extension without the leading '.'.
this->Extension = realExt.substr(1);
- }
+ }
// Look for object files.
- if(this->Extension == "obj" ||
- this->Extension == "o" ||
- this->Extension == "lo")
- {
+ if (this->Extension == "obj" || this->Extension == "o" ||
+ this->Extension == "lo") {
this->SetProperty("EXTERNAL_OBJECT", "1");
- }
+ }
// Try to identify the source file language from the extension.
- if(this->Language.empty())
- {
+ if (this->Language.empty()) {
this->CheckLanguage(this->Extension);
- }
+ }
}
void cmSourceFile::CheckLanguage(std::string const& ext)
@@ -270,10 +236,9 @@ void cmSourceFile::CheckLanguage(std::string const& ext)
cmMakefile const* mf = this->Location.GetMakefile();
cmGlobalGenerator* gg = mf->GetGlobalGenerator();
std::string l = gg->GetLanguageFromExtension(ext.c_str());
- if(!l.empty())
- {
+ if (!l.empty()) {
this->Language = l;
- }
+ }
}
bool cmSourceFile::Matches(cmSourceFileLocation const& loc)
@@ -285,14 +250,12 @@ void cmSourceFile::SetProperty(const std::string& prop, const char* value)
{
this->Properties.SetProperty(prop, value);
- if (this->IsUiFile)
- {
+ if (this->IsUiFile) {
cmMakefile const* mf = this->Location.GetMakefile();
- if (prop == "AUTOUIC_OPTIONS")
- {
+ if (prop == "AUTOUIC_OPTIONS") {
const_cast<cmMakefile*>(mf)->AddQtUiFileWithOptions(this);
- }
}
+ }
}
void cmSourceFile::AppendProperty(const std::string& prop, const char* value,
@@ -317,11 +280,10 @@ const char* cmSourceFile::GetPropertyForUser(const std::string& prop)
// cmSourceFileLocation class to commit to a particular full path to
// the source file as late as possible. If the users requests the
// LOCATION property we must commit now.
- if(prop == "LOCATION")
- {
+ if (prop == "LOCATION") {
// Commit to a location.
this->GetFullPath();
- }
+ }
// Perform the normal property lookup.
return this->GetProperty(prop);
@@ -330,29 +292,23 @@ const char* cmSourceFile::GetPropertyForUser(const std::string& prop)
const char* cmSourceFile::GetProperty(const std::string& prop) const
{
// Check for computed properties.
- if(prop == "LOCATION")
- {
- if(this->FullPath.empty())
- {
+ if (prop == "LOCATION") {
+ if (this->FullPath.empty()) {
return 0;
- }
- else
- {
+ } else {
return this->FullPath.c_str();
- }
}
+ }
- const char *retVal = this->Properties.GetPropertyValue(prop);
- if (!retVal)
- {
+ const char* retVal = this->Properties.GetPropertyValue(prop);
+ if (!retVal) {
cmMakefile const* mf = this->Location.GetMakefile();
- const bool chain = mf->GetState()->
- IsPropertyChained(prop, cmProperty::SOURCE_FILE);
- if (chain)
- {
+ const bool chain =
+ mf->GetState()->IsPropertyChained(prop, cmProperty::SOURCE_FILE);
+ if (chain) {
return mf->GetProperty(prop, chain);
- }
}
+ }
return retVal;
}