oops! - looks like my mail editor might have hard wrapped lines in the diff.  Here they are as an attachment just in case...

Simon



----- Original Message -----
From: "Simon Keary" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Fw: RE: [nant-dev] How to contribute task fixes
Date: Sat, 20 Nov 2004 20:41:16 +0800

>
>
> Hi Gert,
>
> Below is a diff of the changes. If you have any suggestions for improvements or aren't sure of what all the modifications do just let me know.
>
> I think there may also be an additional problem to do with configurations that I haven't fixed. Basically, the task assumes that for a given solution configuration each project will have a configuration of the same name. Usually this is true as there are "debug" and "release" configurations for the solution and for each project. However this isn't always the case. For example, I added a "debugall" and "releaseall" solution configuration that just use the "debug" and "release" project configurations, respectively. I'll try and fix this and if I get it working send the changes a bit later.
>
> Regards,
> Simon
>
>
> diff -r -w nant-0.85-nightly/src/NAnt.VSNet/ConfigurationBase.cs nantchanges/nant-0.85-nightly/src/NAnt.VSNet/ConfigurationBase.cs
> 155a156,157
> .....


diff -r -w nant-0.85-nightly/src/NAnt.VSNet/ConfigurationBase.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/ConfigurationBase.cs
155a156,157
>                               case "noinherit":
>                                       return "";
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/ProjectBase.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/ProjectBase.cs
46a47
>                       _projectDependencies = new ArrayList();
149a151,155
> 
>               public ArrayList ProjectDependencies {
>                       get { return _projectDependencies; }
>               }
> 
390a397
>               private ArrayList _projectDependencies;
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/Reference.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/Reference.cs
89a90,93
>                       string referencedProjectGuid = 
> elemReference.Attributes["Project"];
>                       if (referencedProjectGuid == null) {
>                               referencedProjectGuid = 
> elemReference.Attributes["ReferencedProjectIdentifier"];
>                       }
91c95
<             if (elemReference.Attributes["Project"] != null) {
---
>                       if (referencedProjectGuid != null) {
98c102
<                 string projectFile = 
solution.GetProjectFileFromGuid(elemReference.GetAttribute("Project"));
---
>                               string projectFile = 
> solution.GetProjectFileFromGuid(referencedProjectGuid);
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/Solution.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/Solution.cs
652a653,663
> 
>                               // Now go through all the project dependencies 
> and store them in
>                               // the project so they are available for later 
> use (such as link time).
>                               string[] dependencies = 
> GetProjectDependencies(projectGuid);
> 
>                               foreach (string dependency in dependencies) {
>                               ProjectBase dependencyProject = 
> GetProjectFromGuid(dependency);
>                                       if (dependencyProject != null) {
>                                               
> project.ProjectDependencies.Add(dependencyProject);
>                                       }
>                               }
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/VcArgumentMap.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/VcArgumentMap.cs
69,85c69,85
<             map.AddEnum("AssemblerOutput", null, null, "FA", "FAcs", "FAc", 
"FAs");
<             map.AddBool("BufferSecurityCheck", "GS");
<             map.AddEnum("CompileAs", null, null, "TC", "TP");
<             map.AddEnum("DebugInformationFormat", null, null, "Z7", "Zd", 
"Zi", "ZI");
<             map.AddBool("EnableFunctionLevelLinking", "Gy");
<             map.AddBool("EnableIntrinsicFunctions", "Oi");
<             map.AddBool("ExceptionHandling", "EHsc");
<             map.AddEnum("FavorSizeOrSpeed", null, null, "Ot", "Os");
<             map.AddBool("GlobalOptimizations", "Og");
<             map.AddEnum("InlineFunctionExpansion", null, "Ob0", "Ob1", "Ob2");
<             map.AddBool("OmitFramePointers", "Oy");
<             map.AddEnum("Optimization", null, "Od", "O1", "O2", "Ox");
<             map.AddEnum("RuntimeLibrary", null, "MT", "MTd", "MD", "MDd", 
"ML", "MLd");
<             map.AddBool("StringPooling", "GF");
<             map.AddEnum("StructMemberAlignment", null, null, "Zp1", "Zp2", 
"Zp4", "Zp8", "Zp16");
<             map.AddEnum("UsePrecompiledHeader", null, null, "Yc", "YX", "Yu");
<             map.AddEnum("WarningLevel", null, "W0", "W1", "W2", "W3", "W4");
---
>             map.AddEnum("AssemblerOutput", null, null, "/FA", "/FAcs", 
> "/FAc", "/FAs");
>             map.AddBool("BufferSecurityCheck", "/GS");
>             map.AddEnum("CompileAs", null, null, "/TC", "/TP");
>             map.AddEnum("DebugInformationFormat", null, null, "/Z7", "/Zd", 
> "/Zi", "/ZI");
>             map.AddBool("EnableFunctionLevelLinking", "/Gy");
>             map.AddBool("EnableIntrinsicFunctions", "/Oi");
>             map.AddBool("ExceptionHandling", "/EHsc");
>             map.AddEnum("FavorSizeOrSpeed", null, null, "/Ot", "/Os");
>             map.AddBool("GlobalOptimizations", "/Og");
>             map.AddEnum("InlineFunctionExpansion", null, "/Ob0", "/Ob1", 
> "/Ob2");
>             map.AddBool("OmitFramePointers", "/Oy");
>             map.AddEnum("Optimization", null, "/Od", "/O1", "/O2", "/Ox");
>             map.AddEnum("RuntimeLibrary", null, "/MT", "/MTd", "/MD", "/MDd", 
> "/ML", "/MLd");
>             map.AddBool("StringPooling", "/GF");
>             map.AddEnum("StructMemberAlignment", null, null, "/Zp1", "/Zp2", 
> "/Zp4", "/Zp8", "/Zp16");
>             map.AddEnum("UsePrecompiledHeader", null, "", "/Yc", "/YX", 
> "/Yu");
>             map.AddEnum("WarningLevel", null, "/W0", "/W1", "/W2", "/W3", 
> "/W4");
91,95c91,95
<             map.AddBool("GenerateDebugInformation", "DEBUG");
<             map.AddEnum("LinkIncremental", null, null, "INCREMENTAL:NO", 
"INCREMENTAL");
<             map.AddString("ModuleDefinitionFile", "DEF:");
<             map.AddEnum("OptimizeForWindows98", "OPT:", null, "NOWIN98", 
"WIN98");
<             map.AddEnum("SubSystem", "SUBSYSTEM:", null, "CONSOLE", 
"WINDOWS");
---
>             map.AddBool("GenerateDebugInformation", "/DEBUG");
>             map.AddEnum("LinkIncremental", null, null, "/INCREMENTAL:NO", 
> "/INCREMENTAL");
>             map.AddString("ModuleDefinitionFile", "/DEF:");
>             map.AddEnum("OptimizeForWindows98", "/OPT:", null, "NOWIN98", 
> "WIN98");
>             map.AddEnum("SubSystem", "/SUBSYSTEM:", null, "CONSOLE", 
> "WINDOWS");
118c118
<                     return "/" + value;
---
>                     return value;
120c120
<                 return "/" + _name + value;
---
>                 return _name + value;
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/VcConfiguration.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/VcConfiguration.cs
155c155
<                     return Path.Combine(OutputDir.FullName, linkOutput);
---
>                     return Path.Combine(ProjectDir.FullName, linkOutput);
160c160
<                     return Path.Combine(OutputDir.FullName, librarianOutput);
---
>                     return Path.Combine(ProjectDir.FullName, librarianOutput);
diff -r -w nant-0.85-nightly/src/NAnt.VSNet/VcProject.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VSNet/VcProject.cs
135a136,156
> 
>                       VcConfiguration stdafxConfig = null;
> 
>                       // If VC project uses precompiled headers then the 
> precompiled header
>                       // output (.pch file) must be generated before 
> compiling any other
>                       // source files.
>                       foreach (VcConfiguration config in buildConfigs.Keys) {
>                               const string compilerTool = "VCCLCompilerTool";
>                               Hashtable compilerArgs = 
> config.GetToolArguments(compilerTool, _clArgMap);   
> 
>                               object o = compilerArgs["UsePrecompiledHeader"];
> 
>                               if (o != null) {
>                                       string arg = o as string;
>                                       if (arg.Equals("/Yc")) {
>                                               BuildCPPFiles((ArrayList) 
> buildConfigs[config], baseConfig, config);
>                                               stdafxConfig = config;
>                                       }
>                               }
>                       }
> 
136a158
>                               if (config != stdafxConfig) {
138a161
>             }
342a366,368
>                                       if (metadataDir.Equals("$(NOINHERIT)")) 
> {
>                                               
> clTask.MetaDataIncludeDirs.DirectoryNames.Clear();
>                                       } else {
346a373
>             }
382c409,438
<             if (IsOutputDll(fileConfig)) {
---
>                       string undefinePreprocessorDefs = 
> fileConfig.GetToolSetting(compilerTool, "UndefinePreprocessorDefinitions");
>                       if 
> (!StringUtils.IsNullOrEmpty(undefinePreprocessorDefs)) { 
>                               foreach (string def in 
> undefinePreprocessorDefs.Split(';', ',')) { 
>                                       clTask.Arguments.Add(new 
> Argument("/U"));
>                                       clTask.Arguments.Add(new Argument(def));
>                               }
>                       }
> 
> 
>                       string addOptions = 
> baseConfig.GetToolSetting(compilerTool, "AdditionalOptions");
>                       if (addOptions != null) {
>                               StringReader reader = new 
> StringReader(addOptions);
>                               string addOptionsLine = reader.ReadLine();
>                               while (addOptionsLine != null) {
>                                       foreach(string addOption in 
> addOptionsLine.Split(' '))  {
>                                               clTask.Arguments.Add(new 
> Argument(addOption));
>                                       }
> 
>                                       addOptionsLine = reader.ReadLine();
>                               }
>                       }
> 
>                       string exceptionHandling = 
> baseConfig.GetToolSetting(compilerTool, "ExceptionHandling");
>                       if (exceptionHandling == null || 
> exceptionHandling.ToUpper().Equals("TRUE")) {
>                               clTask.Arguments.Add(new Argument("/EHsc"));
>                       }
> 
> 
>             if (IsOutputDll(fileConfig)) 
>                       {
399a456,460
>                                               string arg = 
> compilerArgs["UsePrecompiledHeader"] as string;
> 
>                                               // if arg.length == 0 then this 
> configuration explicitly turns
>                                               // OFF use of precompiled 
> headers - even if parent config uses it.
>                                               if (arg == null || arg.Length > 
> 0) {
411a473
>                                               }
529a592,604
>                       foreach (ProjectBase dependency in ProjectDependencies) 
> {
>                               if (dependency is VcProject) {
>                                       VcConfiguration vcConfig = 
> dependency.ProjectConfigurations[baseConfig.Name] as VcConfiguration;
> 
>                                       string libraryName = 
> vcConfig.GetToolSetting("VCLibrarianTool", "OutputFile");
>                                       if (libraryName != null) {
>                                               string libOutFile = new 
> FileInfo(Path.Combine(
>                                                       
> dependency.ProjectDirectory.FullName, libraryName)).FullName;
>                                               
> linkTask.Sources.FileNames.Add(libOutFile);
>                                       }
>                               }
>                       }
> 
555c630,633
<                 foreach(string addOption in addOptions.Split(' ')) {
---
>                               StringReader reader = new 
> StringReader(addOptions);
>                               string addOptionsLine = reader.ReadLine();
>                               while (addOptionsLine != null) {
>                                       foreach(string addOption in 
> addOptionsLine.Split(' '))  {
557a636,638
> 
>                                       addOptionsLine = reader.ReadLine();
>                               }
diff -r -w nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/ClTask.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/ClTask.cs
92c92
<             get { return (_pchFile != null) ? 
Path.Combine(OutputDir.FullName, _pchFile) : null; }
---
>             get { return (_pchFile != null) ? 
> Path.Combine(OutputDir.Parent.FullName, _pchFile) : null; }
336,340d335
<                     // specify pch file, if user specified one
<                     if (PchFile != null) {
<                         writer.WriteLine("/Fp\"{0}\"", PchFile);
<                     }
< 
diff -r -w nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/LibTask.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/LibTask.cs
160a161
>                                       if (libdir.Length > 0) {
162a164
>                 }
diff -r -w nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/LinkTask.cs 
nantchanges/nant-0.85-nightly/src/NAnt.VisualCpp/Tasks/LinkTask.cs
188a189
>                                          if (libdir.Length > 0) {
190a192
>                    }

Reply via email to