From Joran Jessurun, updated to look for lib/win32.

This commit is contained in:
Robert Osfield 2006-08-22 12:46:13 +00:00
parent 26e3424195
commit 794a36f30f

View File

@ -1,51 +1,102 @@
/* collect_mangled_names - Copyright (C) 2006 Joran Jessurun /* collect_mangled_names - Copyright (C) 2006 Joran Jessurun
* *
* This library is open source and may be redistributed and/or modified under * This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file * (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website. * included with this distribution, and on the openscenegraph.org website.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details. * OpenSceneGraph Public License for more details.
* *
* Made by Joran Jessurun (A.J.Jessurun@tue.nl) * Made by Joran Jessurun (A.J.Jessurun@tue.nl)
*/ */
var dumpbin="dumpbin"; var dumpbin="dumpbin";
var fso=WScript.createObject("Scripting.FileSystemObject"); var fso=WScript.createObject("Scripting.FileSystemObject");
var ForReading=1; var ForReading=1;
var ForWriting=2; var ForWriting=2;
var shell=WScript.createObject("WScript.Shell"); var shell=WScript.createObject("WScript.Shell");
function process(file) { function process(file) {
WScript.echo("Processing: "+file); WScript.echo("Processing: "+file);
var txt=""; var txt="";
var exec=shell.exec(dumpbin+' /linkermember:1 "'+file+'"'); var exec=shell.exec(dumpbin+' /linkermember:1 "'+file+'"');
while(!exec.stdOut.atEndOfStream) while(!exec.stdOut.atEndOfStream)
{ {
var line=exec.stdOut.readLine(); var line=exec.stdOut.readLine();
if(/3V\?\$RegisterReaderWriterProxy/.test(line) if(/3V\?\$RegisterReaderWriterProxy/.test(line)
|| /3VRegisterDotOsgWrapperProxy/.test(line)) || /3VRegisterDotOsgWrapperProxy/.test(line))
{ {
txt+=line.substr(10)+"\n"; txt+=line.substr(10)+"\n";
} }
} }
while(exec.status!=1) WScript.sleep(100); while(exec.status!=1) WScript.sleep(100);
if(txt!="") { if(txt!="") {
file=file.replace(/\.lib$/m,".sym"); file=file.replace(/\.lib$/m,".sym");
var f=fso.openTextFile(file,ForWriting,true); var f=fso.openTextFile(file,ForWriting,true);
f.write(txt); f.write(txt);
f.close(); f.close();
WScript.echo("Created: "+file); WScript.echo("Created: "+file);
} }
} }
WScript.echo("Collecting mangled names"); WScript.echo("Collecting mangled names");
var files=new Enumerator(fso.getFolder("..\\lib").Files);
var files=new Enumerator(fso.getFolder("..\\lib\\win32").Files);
for(;!files.atEnd();files.moveNext()) { for(;!files.atEnd();files.moveNext()) {
if(/_s\.lib$/.test(files.item())) { if(/_s\.lib$/.test(files.item())) {
process(""+files.item()); process(""+files.item());
} }
} }