From: Gert D. <dri...@us...> - 2005-04-07 07:39:24
|
Update of /cvsroot/nant/nant/src/NAnt.VSNet In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22114/src/NAnt.VSNet Modified Files: VcArgumentMap.cs VcProject.cs Log Message: Fix for bug #1178007: "Inherit project defaults" setting is ignored for Additional Dependencies of Linker. Fix for bug #1177228: Solution task fails to read VC++ Force Symbol References. Index: VcArgumentMap.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/VcArgumentMap.cs,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** VcArgumentMap.cs 11 Mar 2005 17:33:45 -0000 1.15 --- VcArgumentMap.cs 7 Apr 2005 07:39:15 -0000 1.16 *************** *** 377,388 **** /// <item> /// <term>Input</term> - /// <description>Ignore Specific Library (/NODEFAULTLIB:[name, name, ...])</description> - /// </item> - /// <item> - /// <term>Input</term> - /// <description>Force Symbol References (/INCLUDE:[symbol])</description> - /// </item> - /// <item> - /// <term>Input</term> /// <description>Delay Loaded DLLs (/DELAYLOAD:[dll_name])</description> /// </item> --- 377,380 ---- Index: VcProject.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VSNet/VcProject.cs,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** VcProject.cs 4 Apr 2005 18:35:47 -0000 1.63 --- VcProject.cs 7 Apr 2005 07:39:15 -0000 1.64 *************** *** 36,39 **** --- 36,40 ---- using NAnt.VisualCpp.Tasks; + using NAnt.VisualCpp.Types; using NAnt.VSNet.Tasks; *************** *** 1259,1270 **** } ! // Ignore Specific Library ! // TODO // Export Named Functions // TODO ! // Force Symbol References ! // TODO // execute the task --- 1260,1282 ---- } ! // Ignore Specific Libraries ! string ignoreDefaultLibraries = projectConfig.GetToolSetting(libTool, "IgnoreDefaultLibraryNames"); ! if (!StringUtils.IsNullOrEmpty(ignoreDefaultLibraries)) { ! foreach (string ignoreLibrary in ignoreDefaultLibraries.Split(';')) { ! libTask.IgnoreLibraries.Add(new Library(ignoreLibrary)); ! } ! } // Export Named Functions // TODO ! // Forced Symbol References ! string symbolReferences = projectConfig.GetToolSetting(libTool, ! "ForceSymbolReferences"); ! if (!StringUtils.IsNullOrEmpty(symbolReferences)) { ! foreach (string symbol in symbolReferences.Split(';')) { ! libTask.Symbols.Add(new Symbol(symbol)); ! } ! } // execute the task *************** *** 1274,1277 **** --- 1286,1290 ---- private void RunLinker(string solutionConfiguration) { const string linkerTool = "VCLinkerTool"; + const string noinherit = "$(noinherit)"; // check if linking needs to be performed *************** *** 1328,1337 **** string addDeps = projectConfig.GetToolSetting(linkerTool, "AdditionalDependencies"); if (!StringUtils.IsNullOrEmpty(addDeps)) { int insertedDeps = 0; foreach (string addDep in addDeps.Split(' ')) { if (Path.GetExtension(addDep) == ".obj") { _objFiles.Insert(insertedDeps++, addDep); } - linkTask.Sources.FileNames.Add(addDep); } } --- 1341,1359 ---- string addDeps = projectConfig.GetToolSetting(linkerTool, "AdditionalDependencies"); if (!StringUtils.IsNullOrEmpty(addDeps)) { + // only include default libraries if noinherit is not set + if (addDeps.ToLower(CultureInfo.InvariantCulture).IndexOf(noinherit) == -1) { + foreach (string defaultLib in _defaultLibraries) { + linkTask.Sources.FileNames.Add(defaultLib); + } + } else { + addDeps = addDeps.Remove(addDeps.ToLower(CultureInfo.InvariantCulture).IndexOf(noinherit), noinherit.Length); + } int insertedDeps = 0; foreach (string addDep in addDeps.Split(' ')) { if (Path.GetExtension(addDep) == ".obj") { _objFiles.Insert(insertedDeps++, addDep); + } else { + linkTask.Sources.FileNames.Add(addDep); } } } *************** *** 1341,1348 **** } - foreach (string defaultLib in _defaultLibraries) { - linkTask.Sources.FileNames.Add(defaultLib); - } - string extension = null; switch (projectConfig.Type) { --- 1363,1366 ---- *************** *** 1416,1419 **** --- 1434,1455 ---- } + // Ignore Specific Libraries + string ignoreDefaultLibraries = projectConfig.GetToolSetting(linkerTool, + "IgnoreDefaultLibraryNames"); + if (!StringUtils.IsNullOrEmpty(ignoreDefaultLibraries)) { + foreach (string ignoreLibrary in ignoreDefaultLibraries.Split(';')) { + linkTask.IgnoreLibraries.Add(new Library(ignoreLibrary)); + } + } + + // Forced Symbol References + string symbolReferences = projectConfig.GetToolSetting(linkerTool, + "ForceSymbolReferences"); + if (!StringUtils.IsNullOrEmpty(symbolReferences)) { + foreach (string symbol in symbolReferences.Split(';')) { + linkTask.Symbols.Add(new Symbol(symbol)); + } + } + // generation of map file during linking bool generateMapFile = bool.Parse(projectConfig.GetToolSetting(linkerTool, "GenerateMapFile", "FALSE")); *************** *** 1578,1584 **** if (settingValue != null) { if (settingValue.ToLower(CultureInfo.InvariantCulture).IndexOf(noinherit) == -1) { ! string baseSettingValue = projectConfig.GetToolSetting(tool, setting); ! if (!StringUtils.IsNullOrEmpty(baseSettingValue)) { ! settingValue += ";" + baseSettingValue; } } else { --- 1614,1624 ---- if (settingValue != null) { if (settingValue.ToLower(CultureInfo.InvariantCulture).IndexOf(noinherit) == -1) { ! // only add project-level setting to value if noherit if ! // "fileConfig" is not actually the project config ! if (!object.ReferenceEquals(projectConfig, fileConfig)) { ! string baseSettingValue = projectConfig.GetToolSetting(tool, setting); ! if (!StringUtils.IsNullOrEmpty(baseSettingValue)) { ! settingValue += ";" + baseSettingValue; ! } } } else { |