List:Commits« Previous MessageNext Message »
From:Reggie Burnett Date:July 17 2008 9:40pm
Subject:bzr commit into mysql-5.1-wtf branch (reggie:2614)
View as plain text  
#At file:///D:/work/mysql/bzr/mysql-5.1-wtf/

 2614 Reggie Burnett	2008-07-17
      (no message)
modified:
  CMakeLists.txt
  libmysqld/CMakeLists.txt
  sql/CMakeLists.txt
  storage/archive/CMakeLists.txt
  storage/blackhole/CMakeLists.txt
  storage/example/CMakeLists.txt
  storage/federated/CMakeLists.txt
  storage/innobase/CMakeLists.txt
  storage/mysql_storage_engine.cmake
  win/create_def_file.js

=== modified file 'CMakeLists.txt'
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -30,19 +30,19 @@
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
 
 # Heap, MyISAM, Merge and CSV are always compiled in (static, mandatory)
-SET (REQUIRED_ENGINES HEAP MYISAM MYISAMMRG CSV)
-SET (OPTIONAL_ENGINES ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE)
+SET (REQUIRED_ENGINES heap myisam myisammrg csv)
+SET (OPTIONAL_ENGINES archive blackhole example federated innobase)
 
 # now we create an array of all included engines so we can write out our mysql_plugin_defs struct
 SET (INCLUDED_ENGINES ${REQUIRED_ENGINES})
 FOREACH(ENGINE ${OPTIONAL_ENGINES})
 	IF (WITH_${ENGINE}_STORAGE_ENGINE)
-		SET (INCLUDED_ENGINES ${INCLUDED_ENGINES} ${ENGINE})
+		SET (DEFINED_ENGINES ${DEFINED_ENGINES} ${ENGINE})
 	ENDIF(WITH_${ENGINE}_STORAGE_ENGINE)
 ENDFOREACH(ENGINE)
 		
 #Now write out our mysql_plugin_defs struct
-FOREACH(ENGINE ${INCLUDED_ENGINES} PARTITION)
+FOREACH(ENGINE ${REQUIRED_ENGINES} ${DEFINED_ENGINES} PARTITION)
 	ADD_DEFINITIONS(-DWITH_${ENGINE}_STORAGE_ENGINE)
 	STRING(TOLOWER ${ENGINE} LOWER_ENGINE)
 	SET (mysql_plugin_defs  "${mysql_plugin_defs},builtin_${LOWER_ENGINE}_plugin")
@@ -108,7 +108,6 @@
     STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT     ${CMAKE_CXX_FLAGS_DEBUG_INIT})
 
     # generate map files, set stack size (see bug#20815)
-    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
 
     # remove support for Exception handling
@@ -116,34 +115,29 @@
     STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS            ${CMAKE_CXX_FLAGS})
     STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_INIT       ${CMAKE_CXX_FLAGS_INIT})
     STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
-
-    # Disable automatic manifest generation.
-    STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS 
-    	   ${CMAKE_EXE_LINKER_FLAGS})
-    # Explicitly disable it since it is the default for newer versions of VS
-    STRING(REGEX MATCH "MANIFEST:NO" tmp_manifest ${CMAKE_EXE_LINKER_FLAGS})
-    IF(NOT tmp_manifest)
-        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
-    ENDIF(NOT tmp_manifest)
 ENDIF(MSVC)
 
 IF(WIN32)
   ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
 ENDIF(WIN32)
 
+# default to x86 platform.  We'll check for X64 in a bit
+SET (PLATFORM X86)
+
 # This definition is necessary to work around a bug with Intellisense described
 # here: http://tinyurl.com/2cb428.  Syntax highlighting is important for proper
 # debugger functionality.
 IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
     MESSAGE(STATUS "Detected 64-bit platform.")
     ADD_DEFINITIONS("-D_WIN64")
+	SET (PLATFORM X64)
 ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
 
 IF(EMBED_MANIFESTS)
     # Search for the tools (mt, makecat, signtool) necessary for embedding
     # manifests and signing executables with the MySQL AB authenticode cert.
     #
-    # CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH, 
+      # CMake will first search it's defaults (CMAKE_FRAMEWORK_PATH, 
     # CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and the system PATH) followed 
     # by the listed paths which are the current possible defaults and should be
     # updated when necessary.  

=== modified file 'libmysqld/CMakeLists.txt'
--- a/libmysqld/CMakeLists.txt	2008-04-01 22:43:17 +0000
+++ b/libmysqld/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -138,12 +138,10 @@
   ENDFOREACH(rpath)
 ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
 
-IF(WITH_CSV_STORAGE_ENGINE)
-  INCLUDE(${CMAKE_SOURCE_DIR}/storage/csv/CMakeLists.txt)
-  FOREACH(rpath ${CSV_SOURCES})
-    SET(LIB_SOURCES ${LIB_SOURCES} ../storage/csv/${rpath})
-  ENDFOREACH(rpath)
-ENDIF(WITH_CSV_STORAGE_ENGINE)
+INCLUDE(${CMAKE_SOURCE_DIR}/storage/csv/CMakeLists.txt)
+FOREACH(rpath ${CSV_SOURCES})
+SET(LIB_SOURCES ${LIB_SOURCES} ../storage/csv/${rpath})
+ENDFOREACH(rpath)
 
 SET(SOURCE_SUBLIBS FALSE)
                             

=== modified file 'sql/CMakeLists.txt'
--- a/sql/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/sql/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -82,49 +82,31 @@
                ${PROJECT_SOURCE_DIR}/include/mysql_version.h 
                ${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
                ${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
-SET (MYSQLD_LIBS heap myisam myisammrg mysys yassl zlib debug dbug yassl 
-                      taocrypt strings vio regex wsock32 ws2_32 csv)
-
-IF(WITH_ARCHIVE_STORAGE_ENGINE)
-  SET (MYSQLD_LIBS ${MYSQLD_LIBS} archive)
-ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
-IF(WITH_BLACKHOLE_STORAGE_ENGINE)
-  SET (MYSQLD_LIBS ${MYSQLD_LIBS} blackhole)
-ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
-IF(WITH_EXAMPLE_STORAGE_ENGINE)
-  SET (MYSQLD_LIBS ${MYSQLD_LIBS} example)
-ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
-IF(WITH_FEDERATED_STORAGE_ENGINE)
-  SET (MYSQLD_LIBS ${MYSQLD_LIBS} federated)
-ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
-IF(WITH_INNOBASE_STORAGE_ENGINE)
-  SET (MYSQLD_LIBS ${MYSQLD_LIBS} innobase)
-ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+SET (MYSQLD_CORE_LIBS mysys yassl zlib dbug taocrypt strings vio regex)
 
 ADD_EXECUTABLE(mysqld ${MYSQLD_SOURCE})
-TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_LIBS})
-SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
-SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/implib:mysqld${MYSQLD_EXE_SUFFIX}.lib")
+SET_PROPERTY(TARGET mysqld PROPERTY ENABLE_EXPORTS TRUE)
+TARGET_LINK_LIBRARIES(mysqld ${MYSQLD_CORE_LIBS} debug wsock32 ws2_32)
+TARGET_LINK_LIBRARIES(mysqld ${REQUIRED_ENGINES})
+TARGET_LINK_LIBRARIES(mysqld ${DEFINED_ENGINES})
 SET_TARGET_PROPERTIES(mysqld PROPERTIES LINK_FLAGS "/DEF:mysqld.def")
 
-GET_TARGET_PROPERTY(MYSYS_LIB_LOCATION mysys LOCATION)
-GET_TARGET_PROPERTY(STRINGS_LIB_LOCATION strings LOCATION)
-GET_TARGET_PROPERTY(DBUG_LIB_LOCATION dbug LOCATION)
-
-# command to morph the map file into a def file	
+FOREACH (LIB ${MYSQLD_CORE_LIBS})
+    GET_TARGET_PROPERTY(LOC ${LIB} LOCATION)
+    SET (LIB_LOCATIONS ${LIB_LOCATIONS} ${LOC}) 
+ENDFOREACH (LIB)
+
+# command to process obj and lib files into a def file	
+IF(CMAKE_GENERATOR MATCHES "Visual Studio")
+  SET (MYSQLD_OBJDIR $(IntDir))
+ELSE(CMAKE_GENERATOR MATCHES "Visual Studio")
+  SET (MYSQLD_OBJDIR CMakeFiles/mysqld.dir)
+ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")
+FILE(TO_NATIVE_PATH ${MYSQLD_OBJDIR} MYSQLD_OBJDIR)
+
 ADD_CUSTOM_COMMAND(TARGET mysqld PRE_LINK
-    COMMAND ${PROJECT_SOURCE_DIR}/win/create_def_file.js $(IntDir) 
-	${MYSYS_LIB_LOCATION} ${STRINGS_LIB_LOCATION} ${DBUG_LIB_LOCATION}
-	WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
-	
-IF(cmake_version EQUAL 20406)
-# Work around for 2.4.6 bug, OUTPUT_NAME will not set the right .PDB
-# file name. Note that COMPILE_FLAGS set some temporary pdb during build,
-# LINK_FLAGS sets the real one.
-SET_TARGET_PROPERTIES(mysqld PROPERTIES
-                      COMPILE_FLAGS "/Fd${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb"
-                      LINK_FLAGS  "/PDB:${CMAKE_CFG_INTDIR}/mysqld${MYSQLD_EXE_SUFFIX}.pdb")
-ENDIF(cmake_version EQUAL 20406)
+    COMMAND cscript ${PROJECT_SOURCE_DIR}/win/create_def_file.js ${PLATFORM} ${MYSQLD_OBJDIR} ${LIB_LOCATIONS}
+    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/sql)
 
 IF(EMBED_MANIFESTS)
   MYSQL_EMBED_MANIFEST("mysqld" "asInvoker")

=== modified file 'storage/archive/CMakeLists.txt'
--- a/storage/archive/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/storage/archive/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 

=== modified file 'storage/blackhole/CMakeLists.txt'
--- a/storage/blackhole/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/storage/blackhole/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 

=== modified file 'storage/example/CMakeLists.txt'
--- a/storage/example/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/storage/example/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 

=== modified file 'storage/federated/CMakeLists.txt'
--- a/storage/federated/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/storage/federated/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 

=== modified file 'storage/innobase/CMakeLists.txt'
--- a/storage/innobase/CMakeLists.txt	2008-07-10 22:18:55 +0000
+++ b/storage/innobase/CMakeLists.txt	2008-07-17 19:39:52 +0000
@@ -13,7 +13,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-INCLUDE("../mysql_storage_engine.cmake")
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
 SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
 ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -D_LIB)

=== modified file 'storage/mysql_storage_engine.cmake'
--- a/storage/mysql_storage_engine.cmake	2008-07-10 22:18:55 +0000
+++ b/storage/mysql_storage_engine.cmake	2008-07-17 19:39:52 +0000
@@ -2,8 +2,7 @@
 # MYSQL_STORAGE_ENGINE Macro creates a project to build storage engine
 # library. 
 # WITH_${_engine}_STORAGE_ENGINE will build static library  named $engine.lib
-# WITH_${_engine}_STORAGE_ENGINE_SHARED will build dynamic library ha_$engine.dll is build
-# It is possible to give both parameters, to build both static and dynamic libraries.
+# A dynamic version of the engine named ha_$engine.dll is always built
 #
 # Parameters:
 # _engine - storage engine name. Must be uppercase
@@ -13,29 +12,26 @@
 # calling this macro
 
 IF(NOT SOURCE_SUBLIBS)
-	STRING(TOLOWER ${engine} libname)
-	#Create a DLL.The name of the dll is ha_<storage_engine>.dll
+    STRING(TOLOWER ${engine} libname)
+    #Create a DLL.The name of the dll is ha_<storage_engine>.dll
     
-	SET(dyn_libname ha_${libname})
-	ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
-
-	#Workaround for CMake's inability to link a dll to an exe.
-	#The intention is to do TARGET_LINK_LIBRARIES( ${dyn_libname} mysqld_export_symbols)
-	#CMake complains that mysqld_export_symbols does not produce a DLL, so we are forced to
-	#explicitely specify the library name and to add the dependency
-
-	GET_TARGET_PROPERTY(MYSQLD_EXE mysqld LOCATION)
-	STRING(REPLACE ".exe"  ".lib"  MYSQLD_LIB  ${MYSQLD_EXE})
-
-	TARGET_LINK_LIBRARIES (${dyn_libname} ${MYSQLD_LIB} zlib regex)
-	SET_TARGET_PROPERTIES (${dyn_libname} PROPERTIES COMPILE_FLAGS  "-DMYSQL_DYNAMIC_PLUGIN")
-	ADD_DEPENDENCIES (${dyn_libname} mysqld)
+    SET(dyn_libname ha_${libname})
+    ADD_LIBRARY(${dyn_libname} SHARED ${${engine}_SOURCES})
+
+    #Workaround for CMake's inability to link a dll to an exe.
+    #The intention is to do TARGET_LINK_LIBRARIES( ${dyn_libname} mysqld)
+    #CMake complains that mysqld does not produce a DLL, so we are forced to
+    #explicitely specify the library name and to add the dependency
+
+    TARGET_LINK_LIBRARIES (${dyn_libname} ${MYSQLD_LIB} mysqld)
+    SET_TARGET_PROPERTIES (${dyn_libname} PROPERTIES COMPILE_FLAGS  "-DMYSQL_DYNAMIC_PLUGIN")
+    ADD_DEPENDENCIES (${dyn_libname} mysqld)
   
-	IF(WITH_${engine}_STORAGE_ENGINE)
-		#Create static library. The name of the library is <storage_engine>.lib
-		ADD_LIBRARY(${libname} ${${engine}_SOURCES})
-		ADD_DEPENDENCIES(${libname} GenError)
-	ENDIF(WITH_${engine}_STORAGE_ENGINE)
+    IF(WITH_${engine}_STORAGE_ENGINE)
+        #Create static library. The name of the library is <storage_engine>.lib
+        ADD_LIBRARY(${libname} ${${engine}_SOURCES})
+        ADD_DEPENDENCIES(${libname} GenError)
+    ENDIF(WITH_${engine}_STORAGE_ENGINE)
 
 ENDIF(NOT SOURCE_SUBLIBS)
 ENDMACRO(MYSQL_STORAGE_ENGINE)

=== modified file 'win/create_def_file.js'
--- a/win/create_def_file.js	2008-07-10 22:18:55 +0000
+++ b/win/create_def_file.js	2008-07-17 19:39:52 +0000
@@ -15,9 +15,6 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/*
-*/
-
 ForReading = 1;
 ForWriting = 2;
 ForAppending = 8;
@@ -25,33 +22,41 @@
 try 
 {
   var args = WScript.Arguments;
-  var intDir = args.Item(0);
-  
+  
+  // check that we got proper arguments
+  if (args.length < 2)
+  {
+    WScript.Echo("Usage: create_def_file <X86|X64> <mysqld obj dir> [libdir1|libdir2|libdir3]");
+    WScript.Quit(1);
+  }
+  
+  var is64 = args.Item(0).toLowerCase() == "x64";
   var shell = new ActiveXObject("WScript.Shell");
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   
   var defFile = fso.CreateTextFile("mysqld.def", true);
   defFile.WriteLine("EXPORTS");
+  WScript.Echo("exporting symbols");
   
-  var index = 0;
+  var index = 1;
   for (; index < args.length; index++)
   {
-	var name = args.Item(index).toLowerCase();
-	if (name.indexOf(".lib") == -1 && name.indexOf(".obj") == -1)
-	{
-		var objFolder = fso.GetFolder(args.Item(index));
-		var filesEnumerator = new Enumerator(objFolder.files);
-		for (; !filesEnumerator.atEnd(); filesEnumerator.moveNext())
-		{
-			var file = filesEnumerator.item();
-			var filename = file.Path.toLowerCase();
-			if (filename.indexOf(".obj") != -1 ||
-				filename.indexOf(".lib") != -1)
-				ProcessObjectFile(filename);
-		}
-	}
-	else
-		ProcessObjectFile(name);
+    var name = args.Item(index).toLowerCase();
+    if (name.indexOf(".lib") == -1 && name.indexOf(".obj") == -1)
+    {
+        var objFolder = fso.GetFolder(args.Item(index));
+        var filesEnumerator = new Enumerator(objFolder.files);
+        for (; !filesEnumerator.atEnd(); filesEnumerator.moveNext())
+        {
+            var file = filesEnumerator.item();
+            var filename = file.Path.toLowerCase();
+            if (filename.indexOf(".obj") != -1 ||
+                filename.indexOf(".lib") != -1)
+                ProcessObjectFile(filename);
+        }
+    }
+    else
+        ProcessObjectFile(name);
   }
   defFile.WriteLine("all_charsets");
   
@@ -64,60 +69,63 @@
 
 function ProcessObjectFile(objFile)
 {
-  WScript.Echo("exporting symbols from " + objFile);
-
   shell.Run("dumpbin /OUT:symbolfile.txt /SYMBOLS " + objFile, 0, true);
   ProcessDumpFile();
 }
 
 function ProcessDumpFile()
 {
-	var dumpFile = fso.OpenTextFile("symbolfile.txt", ForReading);
-	
-	while (!dumpFile.AtEndOfStream)
-	{
-		var line = dumpFile.ReadLine();
-		if (line.indexOf("External") == -1) continue;
-		if (line.indexOf("UNDEF") != -1) continue;
-
-		var parts = line.split(" ");
-		var index = 0;
-		for (; index < parts.length; index++)
-			if (parts[index] == "|") break;
-		
-		var symbol = parts[index + 1];
-		var firstSpace = symbol.indexOf(" ");
-		if (firstSpace != -1)
-			symbol = symbol.substring(0, firstSpace-1)
-			
-		if (symbol.indexOf("__real@") != -1) continue;
-		if (symbol.indexOf("_RTC_") != -1) continue;
-		if (symbol.indexOf("??_C@_") != -1) continue;
-		if (symbol.indexOf("??_R") != -1) continue;
-		if (symbol.indexOf("??_7") != -1) continue;
-		if (symbol.indexOf("?_G") != -1) continue;    // scalar deleting destructor
-		if (symbol.indexOf("?_E") != -1) continue;    // vector deleting destructor
-		
-		// if it starts with a _ then we need to trim it
-		var trimLeading = false;
-		if (symbol.charAt(0) == "_")
-		{
-			trimLeading = true;
-			var atSign = symbol.indexOf("@");
-			if (atSign != -1)
-			{
-				var paramSize = symbol.substring(atSign+1, symbol.Length);
-				if (paramSize.match("[0-9]+$"))
-					trimLeading = false;
-			}
-		}
-		if (trimLeading)
-			symbol = symbol.substring(1, symbol.length);
-
-		if (line.indexOf("notype () ") == -1)
-			symbol = symbol + " DATA";
-		defFile.WriteLine(symbol);
-	}
-	
-	dumpFile.Close();
+    var dumpFile = fso.OpenTextFile("symbolfile.txt", ForReading);
+    
+    while (!dumpFile.AtEndOfStream)
+    {
+        var line = dumpFile.ReadLine();
+        if (line.indexOf("External") == -1) continue;
+        if (line.indexOf("UNDEF") != -1) continue;
+
+        var parts = line.split(" ");
+        var index = 0;
+        for (; index < parts.length; index++)
+            if (parts[index] == "|") break;
+        
+        var symbol = parts[index + 1];
+        var firstSpace = symbol.indexOf(" ");
+        if (firstSpace != -1)
+            symbol = symbol.substring(0, firstSpace-1)
+        if (IsCompilerDefinedSymbol(symbol)) continue;
+        
+        symbol = ScrubSymbol(symbol);
+        
+        if (line.indexOf("notype () ") == -1)
+            symbol = symbol + " DATA";
+        defFile.WriteLine(symbol);
+    }
+    
+    dumpFile.Close();
+}
+
+function ScrubSymbol(symbol)
+{
+    if (is64) return symbol;
+    if (symbol.charAt(0) != "_") return symbol;
+    
+    var atSign = symbol.indexOf("@");
+    if (atSign != -1)
+    {
+        var paramSize = symbol.substring(atSign+1, symbol.Length);
+        if (paramSize.match("[0-9]+$")) return symbol;
+    }
+    
+    return symbol.substring(1, symbol.length);
+}
+
+function IsCompilerDefinedSymbol(symbol)
+{
+    return ((symbol.indexOf("__real@") != -1) ||
+    (symbol.indexOf("_RTC_") != -1) || 
+    (symbol.indexOf("??_C@_") != -1) ||
+    (symbol.indexOf("??_R") != -1) ||
+    (symbol.indexOf("??_7") != -1)  ||
+    (symbol.indexOf("?_G") != -1) ||           // scalar deleting destructor
+    (symbol.indexOf("?_E") != -1));            // vector deleting destructor
 }

Thread
bzr commit into mysql-5.1-wtf branch (reggie:2614) Reggie Burnett17 Jul