// // Vivado(TM) // ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6 // Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved. // // GLOBAL VARIABLES var ISEShell = new ActiveXObject( "WScript.Shell" ); var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" ); var ISERunDir = ""; var ISELogFile = "runme.log"; var ISELogFileStr = null; var ISELogEcho = true; var ISEOldVersionWSH = false; // BOOTSTRAP ISEInit(); // // ISE FUNCTIONS // function ISEInit() { // 1. RUN DIR setup var ISEScrFP = WScript.ScriptFullName; var ISEScrN = WScript.ScriptName; ISERunDir = ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 ); // 2. LOG file setup ISELogFileStr = ISEOpenFile( ISELogFile ); // 3. LOG echo? var ISEScriptArgs = WScript.Arguments; for ( var loopi=0; loopi> " + ISELogFile + " 2>&1"; ISEExitCode = ISEShell.Run( ISECmdLine, 0, true ); ISELogFileStr = ISEOpenFile( ISELogFile ); } else { // WSH 5.6 // LAUNCH! ISEShell.CurrentDirectory = ISERunDir; // Redirect STDERR to STDOUT ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1"; var ISEProcess = ISEShell.Exec( ISECmdLine ); // BEGIN file creation var ISENetwork = WScript.CreateObject( "WScript.Network" ); var ISEHost = ISENetwork.ComputerName; var ISEUser = ISENetwork.UserName; var ISEPid = ISEProcess.ProcessID; var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" ); ISEBeginFile.WriteLine( "" ); ISEBeginFile.WriteLine( "" ); ISEBeginFile.WriteLine( " " ); ISEBeginFile.WriteLine( " " ); ISEBeginFile.WriteLine( "" ); ISEBeginFile.Close(); var ISEOutStr = ISEProcess.StdOut; var ISEErrStr = ISEProcess.StdErr; // WAIT for ISEStep to finish while ( ISEProcess.Status == 0 ) { // dump stdout then stderr - feels a little arbitrary while ( !ISEOutStr.AtEndOfStream ) { ISEStdOut( ISEOutStr.ReadLine() ); } WScript.Sleep( 100 ); } ISEExitCode = ISEProcess.ExitCode; } // END/ERROR file creation if ( ISEExitCode != 0 ) { ISETouchFile( ISEStep, "error" ); } else { ISETouchFile( ISEStep, "end" ); } return ISEExitCode; } // // UTILITIES // function ISEStdOut( ISELine ) { ISELogFileStr.WriteLine( ISELine ); if ( ISELogEcho ) { WScript.StdOut.WriteLine( ISELine ); } } function ISEStdErr( ISELine ) { ISELogFileStr.WriteLine( ISELine ); if ( ISELogEcho ) { WScript.StdErr.WriteLine( ISELine ); } } function ISETouchFile( ISERoot, ISEStatus ) { var ISETFile = ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" ); ISETFile.close(); } function ISEOpenFile( ISEFilename ) { var ISEFullPath = ISERunDir + "/" + ISEFilename; return ISEFileSys.OpenTextFile( ISEFullPath, 8, true ); }