summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CTestCustom.cmake.in1
-rw-r--r--Modules/FindQt3.cmake6
-rw-r--r--Source/cmGlobalGenerator.cxx5
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx78
-rw-r--r--Source/cmGlobalVisualStudio8Generator.cxx14
-rw-r--r--Source/cmGlobalVisualStudio8Generator.h2
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx7
-rw-r--r--Source/cmVisualStudioGeneratorOptions.cxx51
-rw-r--r--Source/cmVisualStudioGeneratorOptions.h5
-rw-r--r--Source/kwsys/kwsysDateStamp.cmake2
-rw-r--r--Tests/VSExternalInclude/CMakeLists.txt8
11 files changed, 133 insertions, 46 deletions
diff --git a/CTestCustom.cmake.in b/CTestCustom.cmake.in
index d5789ed..882fa4c 100644
--- a/CTestCustom.cmake.in
+++ b/CTestCustom.cmake.in
@@ -24,6 +24,7 @@ SET(CTEST_CUSTOM_WARNING_EXCEPTION
"is not used for resolving any symbol"
"Clock skew detected"
"remark\\(1209"
+ "remark: .*LOOP WAS VECTORIZED"
"LINK : warning LNK4089: all references to.*ADVAPI32.dll.*discarded by /OPT:REF"
"LINK : warning LNK4089: all references to.*USER32.dll.*discarded by /OPT:REF"
"Warning: library was too large for page size.*"
diff --git a/Modules/FindQt3.cmake b/Modules/FindQt3.cmake
index 3606a5f..1319de2 100644
--- a/Modules/FindQt3.cmake
+++ b/Modules/FindQt3.cmake
@@ -242,9 +242,9 @@ IF (QT_MIN_VERSION)
ENDIF (QT_MIN_VERSION)
# if the include a library are found then we have it
-IF(QT_INCLUDE_DIR AND QT_QT_LIBRARY)
- SET( QT_FOUND "YES" )
-ENDIF(QT_INCLUDE_DIR AND QT_QT_LIBRARY)
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt3 DEFAULT_MSG QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE)
+SET(QT_FOUND ${QT3_FOUND} )
IF(QT_FOUND)
SET( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 0def336..15abd02 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -699,9 +699,8 @@ bool cmGlobalGenerator::IsDependedOn(const char* project,
l != targets.end(); l++)
{
cmTarget& target = l->second;
- std::set<cmStdString>::const_iterator pos =
- target.GetUtilities().find(targetIn->GetName());
- if(pos != target.GetUtilities().end())
+ TargetDependSet const& tgtdeps = this->GetTargetDirectDepends(target);
+ if(tgtdeps.count(targetIn))
{
return true;
}
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 2b9e5ba..45d6a74 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -279,6 +279,8 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
projectTargets.begin(); tt != projectTargets.end(); ++tt)
{
cmTarget* target = *tt;
+ bool written = false;
+
// handle external vc project files
const char* expath = target->GetProperty("EXTERNAL_MSPROJECT");
if(expath)
@@ -287,6 +289,7 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
std::string location = expath;
this->WriteExternalProject(fout, project.c_str(),
location.c_str(), target->GetUtilities());
+ written = true;
}
else
{
@@ -300,47 +303,48 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution(
cmLocalGenerator::START_OUTPUT);
this->WriteProject(fout, vcprojName, dir.c_str(),
*target);
+ written = true;
+ }
+ }
- // Create "solution folder" information from FOLDER target property
- //
- if (this->UseFolderProperty())
+ // Create "solution folder" information from FOLDER target property
+ //
+ if (written && this->UseFolderProperty())
+ {
+ const char *targetFolder = target->GetProperty("FOLDER");
+ if (targetFolder)
+ {
+ std::vector<cmsys::String> tokens =
+ cmSystemTools::SplitString(targetFolder, '/', false);
+
+ std::string cumulativePath = "";
+
+ for(std::vector<cmsys::String>::iterator iter = tokens.begin();
+ iter != tokens.end(); ++iter)
{
- const char *targetFolder = target->GetProperty("FOLDER");
- if (targetFolder)
+ if(!iter->size())
{
- std::vector<cmsys::String> tokens =
- cmSystemTools::SplitString(targetFolder, '/', false);
-
- std::string cumulativePath = "";
-
- for(std::vector<cmsys::String>::iterator iter = tokens.begin();
- iter != tokens.end(); ++iter)
- {
- if(!iter->size())
- {
- continue;
- }
-
- if (cumulativePath.empty())
- {
- cumulativePath = "CMAKE_FOLDER_GUID_" + *iter;
- }
- else
- {
- VisualStudioFolders[cumulativePath].insert(
- cumulativePath + "/" + *iter);
-
- cumulativePath = cumulativePath + "/" + *iter;
- }
-
- this->CreateGUID(cumulativePath.c_str());
- }
-
- if (!cumulativePath.empty())
- {
- VisualStudioFolders[cumulativePath].insert(target->GetName());
- }
+ continue;
}
+
+ if (cumulativePath.empty())
+ {
+ cumulativePath = "CMAKE_FOLDER_GUID_" + *iter;
+ }
+ else
+ {
+ VisualStudioFolders[cumulativePath].insert(
+ cumulativePath + "/" + *iter);
+
+ cumulativePath = cumulativePath + "/" + *iter;
+ }
+
+ this->CreateGUID(cumulativePath.c_str());
+ }
+
+ if (!cumulativePath.empty())
+ {
+ VisualStudioFolders[cumulativePath].insert(target->GetName());
}
}
}
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index 7c65c32..76d01e7 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -289,6 +289,20 @@ cmGlobalVisualStudio8Generator
}
//----------------------------------------------------------------------------
+void cmGlobalVisualStudio8Generator::WriteProjectDepends(
+ std::ostream& fout, const char*, const char*, cmTarget& t)
+{
+ TargetDependSet const& unordered = this->GetTargetDirectDepends(t);
+ OrderedTargetDependSet depends(unordered);
+ for(OrderedTargetDependSet::const_iterator i = depends.begin();
+ i != depends.end(); ++i)
+ {
+ std::string guid = this->GetGUID((*i)->GetName());
+ fout << "\t\t{" << guid << "} = {" << guid << "}\n";
+ }
+}
+
+//----------------------------------------------------------------------------
bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies(
cmTarget& target)
{
diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h
index e0d5d80..95b6a17 100644
--- a/Source/cmGlobalVisualStudio8Generator.h
+++ b/Source/cmGlobalVisualStudio8Generator.h
@@ -78,6 +78,8 @@ protected:
virtual void WriteProjectConfigurations(std::ostream& fout,
const char* name,
bool partOfDefaultBuild);
+ virtual void WriteProjectDepends(std::ostream& fout, const char* name,
+ const char* path, cmTarget &t);
const char* ArchitectureId;
};
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index cb34bb6..7fd7fd2 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -669,6 +669,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.FixExceptionHandlingDefault();
targetOptions.Parse(flags.c_str());
targetOptions.Parse(defineFlags.c_str());
+ targetOptions.ParseFinish();
targetOptions.AddDefines
(this->Makefile->GetProperty("COMPILE_DEFINITIONS"));
targetOptions.AddDefines(target.GetProperty("COMPILE_DEFINITIONS"));
@@ -1098,11 +1099,13 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
}
if ( target.GetPropertyAsBool("WIN32_EXECUTABLE") )
{
- fout << "\t\t\t\tSubSystem=\"2\"\n";
+ fout << "\t\t\t\tSubSystem=\""
+ << (this->FortranProject? "subSystemWindows" : "2") << "\"\n";
}
else
{
- fout << "\t\t\t\tSubSystem=\"1\"\n";
+ fout << "\t\t\t\tSubSystem=\""
+ << (this->FortranProject? "subSystemConsole" : "1") << "\"\n";
}
std::string stackVar = "CMAKE_";
stackVar += linkLanguage;
diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx
index 972af95..f1bad9c 100644
--- a/Source/cmVisualStudioGeneratorOptions.cxx
+++ b/Source/cmVisualStudioGeneratorOptions.cxx
@@ -45,6 +45,10 @@ cmVisualStudioGeneratorOptions
// Slash options are allowed for VS.
this->AllowSlash = true;
+
+ this->FortranRuntimeDebug = false;
+ this->FortranRuntimeDLL = false;
+ this->FortranRuntimeMT = false;
}
//----------------------------------------------------------------------------
@@ -133,8 +137,55 @@ void cmVisualStudioGeneratorOptions::Parse(const char* flags)
}
//----------------------------------------------------------------------------
+void cmVisualStudioGeneratorOptions::ParseFinish()
+{
+ if(this->CurrentTool == FortranCompiler)
+ {
+ // "RuntimeLibrary" attribute values:
+ // "rtMultiThreaded", "0", /threads /libs:static
+ // "rtMultiThreadedDLL", "2", /threads /libs:dll
+ // "rtMultiThreadedDebug", "1", /threads /dbglibs /libs:static
+ // "rtMultiThreadedDebugDLL", "3", /threads /dbglibs /libs:dll
+ // These seem unimplemented by the IDE:
+ // "rtSingleThreaded", "4", /libs:static
+ // "rtSingleThreadedDLL", "10", /libs:dll
+ // "rtSingleThreadedDebug", "5", /dbglibs /libs:static
+ // "rtSingleThreadedDebugDLL", "11", /dbglibs /libs:dll
+ std::string rl = "rtMultiThreaded";
+ rl += this->FortranRuntimeDebug? "Debug" : "";
+ rl += this->FortranRuntimeDLL? "DLL" : "";
+ this->FlagMap["RuntimeLibrary"] = rl;
+ }
+}
+
+//----------------------------------------------------------------------------
void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag)
{
+ // Look for Intel Fortran flags that do not map well in the flag table.
+ if(this->CurrentTool == FortranCompiler)
+ {
+ if(strcmp(flag, "/dbglibs") == 0)
+ {
+ this->FortranRuntimeDebug = true;
+ return;
+ }
+ if(strcmp(flag, "/threads") == 0)
+ {
+ this->FortranRuntimeMT = true;
+ return;
+ }
+ if(strcmp(flag, "/libs:dll") == 0)
+ {
+ this->FortranRuntimeDLL = true;
+ return;
+ }
+ if(strcmp(flag, "/libs:static") == 0)
+ {
+ this->FortranRuntimeDLL = false;
+ return;
+ }
+ }
+
// This option is not known. Store it in the output flags.
this->FlagString += " ";
this->FlagString +=
diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h
index f7d1a02..8619ba0 100644
--- a/Source/cmVisualStudioGeneratorOptions.h
+++ b/Source/cmVisualStudioGeneratorOptions.h
@@ -39,6 +39,7 @@ public:
// Store options from command line flags.
void Parse(const char* flags);
+ void ParseFinish();
// Fix the ExceptionHandling option to default to off.
void FixExceptionHandlingDefault();
@@ -67,6 +68,10 @@ private:
Tool CurrentTool;
cmVisualStudio10TargetGenerator* TargetGenerator;
+ bool FortranRuntimeDebug;
+ bool FortranRuntimeDLL;
+ bool FortranRuntimeMT;
+
virtual void StoreUnknownFlag(const char* flag);
};
diff --git a/Source/kwsys/kwsysDateStamp.cmake b/Source/kwsys/kwsysDateStamp.cmake
index 9771f55..a47550b 100644
--- a/Source/kwsys/kwsysDateStamp.cmake
+++ b/Source/kwsys/kwsysDateStamp.cmake
@@ -18,4 +18,4 @@ SET(KWSYS_DATE_STAMP_YEAR 2010)
SET(KWSYS_DATE_STAMP_MONTH 11)
# KWSys version date day component. Format is DD.
-SET(KWSYS_DATE_STAMP_DAY 11)
+SET(KWSYS_DATE_STAMP_DAY 16)
diff --git a/Tests/VSExternalInclude/CMakeLists.txt b/Tests/VSExternalInclude/CMakeLists.txt
index 931e636..1e68968 100644
--- a/Tests/VSExternalInclude/CMakeLists.txt
+++ b/Tests/VSExternalInclude/CMakeLists.txt
@@ -50,3 +50,11 @@ IF(MSVC10)
ADD_DEPENDENCIES(VSExternalInclude lib1)
ENDIF()
+# Interaction testing between the FOLDER target property and
+# INCLUDE_EXTERNAL_MSPROJECT targets:
+set_target_properties(VSExternalInclude PROPERTIES FOLDER folder1/folder2)
+set_target_properties(lib1 PROPERTIES FOLDER folder1/folder2)
+set_target_properties(lib2 PROPERTIES FOLDER folder1/folder2)
+add_custom_target(EmptyCustomTarget)
+set_target_properties(EmptyCustomTarget PROPERTIES FOLDER folder1/folder2)
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)