From: Gert D. <dri...@us...> - 2008-02-10 10:19:43
|
Update of /cvsroot/nant/nant/src/NAnt.VisualCpp/Tasks In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv32258 Modified Files: LinkTask.cs Log Message: Added support for module definition file. Index: LinkTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.VisualCpp/Tasks/LinkTask.cs,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** LinkTask.cs 15 Jul 2005 15:42:59 -0000 1.27 --- LinkTask.cs 10 Feb 2008 10:19:45 -0000 1.28 *************** *** 63,66 **** --- 63,67 ---- private FileInfo _outputFile; private FileInfo _pdbFile; + private FileInfo _moduleDefinition; private bool _debug; private FileSet _sources = new FileSet(); *************** *** 121,124 **** --- 122,136 ---- /// <summary> + /// The name of a module-definition file (.def) to be passed to the + /// linker. + /// </summary> + [TaskAttribute("moduledefinition")] + public FileInfo ModuleDefinition { + get { return _moduleDefinition; } + set { _moduleDefinition = value; } + } + + + /// <summary> /// Specified DLLs for delay loading. /// </summary> *************** *** 246,249 **** --- 258,266 ---- writer.WriteLine(Options); } + + // module definition file + if (ModuleDefinition != null) { + writer.WriteLine("/DEF:\"{0}\"", ModuleDefinition.FullName); + } // write each of the libdirs *************** *** 331,334 **** --- 348,353 ---- /// </summary> protected virtual bool NeedsLinking() { + string fileName; + // return true as soon as we know we need to compile if (ProgramDatabaseFile != null) { *************** *** 340,344 **** // check if sources were updated ! string fileName = FileSet.FindMoreRecentLastWriteTime(Sources.FileNames, ProgramDatabaseFile.LastWriteTime); if (fileName != null) { Log(Level.Verbose, "'{0}' has been updated, relinking.", fileName); --- 359,363 ---- // check if sources were updated ! fileName = FileSet.FindMoreRecentLastWriteTime(Sources.FileNames, ProgramDatabaseFile.LastWriteTime); if (fileName != null) { Log(Level.Verbose, "'{0}' has been updated, relinking.", fileName); *************** *** 347,361 **** } ! if (OutputFile != null) { ! if (!OutputFile.Exists) { ! Log(Level.Verbose, "Output file '{0}' does not exist, relinking.", ! OutputFile.FullName); ! return true; ! } ! // check if sources were updated ! string fileName = FileSet.FindMoreRecentLastWriteTime(Sources.FileNames, OutputFile.LastWriteTime); if (fileName != null) { ! Log(Level.Verbose, "'{0}' has been updated, relinking.", fileName); return true; } --- 366,387 ---- } ! if (!OutputFile.Exists) { ! Log(Level.Verbose, "Output file '{0}' does not exist, relinking.", ! OutputFile.FullName); ! return true; ! } ! // check if sources were updated ! fileName = FileSet.FindMoreRecentLastWriteTime(Sources.FileNames, OutputFile.LastWriteTime); ! if (fileName != null) { ! Log(Level.Verbose, "'{0}' has been updated, relinking.", fileName); ! return true; ! } ! ! if (ModuleDefinition != null) { ! fileName = FileSet.FindMoreRecentLastWriteTime(ModuleDefinition.FullName, OutputFile.LastWriteTime); if (fileName != null) { ! Log(Level.Verbose, ResourceUtils.GetString("String_FileHasBeenUpdated"), ! fileName); return true; } |