Commit 645f2853 authored by unknown's avatar unknown
Browse files

Clean up CMake configuration following review.


BitKeeper/deleted/.del-config-version.js~b31bb5a8:
  Delete: win/config-version.js
BitKeeper/deleted/.del-config-handlerton.js~553d3402:
  Delete: win/config-handlerton.js
cmakelists.txt:
  Clean up configuration, better integration with CMake.
sql/cmakelists.txt:
  Only build ha_xxx.cc for configured storage engines.
  Only link with configured storage engine projects.
win/configure.js:
  Move the task of config-version.js into configure.js.
parent fa780d44
Loading
Loading
Loading
Loading
+32 −4
Original line number Diff line number Diff line
PROJECT(MySql)

EXEC_PROGRAM(cscript.exe win ARGS config-version.js OUT_VARIABLE out)
# This reads user configuration, generated by configure.js.
INCLUDE(win/configure.data)

CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in ${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)

# in some places we use DBUG_OFF
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D DBUG_OFF")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D DBUG_OFF")
@@ -32,6 +34,32 @@ ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR CMAKE_GENERATOR MATCHES "Visu

ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D _CRT_SECURE_NO_DEPRECATE")

SUBDIRS(vio dbug strings regex mysys extra/yassl extra/yassl/taocrypt extra 
        zlib storage/heap storage/myisam storage/myisammrg client 
	${se_subdirs} sql server-tools/instance-manager libmysql tests)
ADD_SUBDIRECTORY(vio)
ADD_SUBDIRECTORY(dbug)
ADD_SUBDIRECTORY(strings)
ADD_SUBDIRECTORY(regex)
ADD_SUBDIRECTORY(mysys)
ADD_SUBDIRECTORY(extra/yassl)
ADD_SUBDIRECTORY(extra/yassl/taocrypt)
ADD_SUBDIRECTORY(extra)
ADD_SUBDIRECTORY(zlib)
ADD_SUBDIRECTORY(storage/heap)
ADD_SUBDIRECTORY(storage/myisam)
ADD_SUBDIRECTORY(storage/myisammrg)
ADD_SUBDIRECTORY(client)
IF(WITH_ARCHIVE_STORAGE_ENGINE)
  ADD_SUBDIRECTORY(storage/archive)
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_BERKELEY_STORAGE_ENGINE)
  ADD_SUBDIRECTORY(storage/bdb)
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
  ADD_SUBDIRECTORY(storage/example)
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
IF(WITH_INNOBASE_STORAGE_ENGINE)
  ADD_SUBDIRECTORY(storage/innobase)
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
ADD_SUBDIRECTORY(sql)
ADD_SUBDIRECTORY(server-tools/instance-manager)
ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(tests)
+25 −2
Original line number Diff line number Diff line
@@ -24,11 +24,13 @@ IF(WITH_ARCHIVE_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_ARCHIVE_STORAGE_ENGINE)
  SET (mysql_se_htons "${mysql_se_htons}, &archive_hton")
  SET (mysql_se_decls "${mysql_se_decls}, archive_hton")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_archive.cc")
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_BLACKHOLE_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_BLACKHOLE_STORAGE_ENGINE)
  SET (mysql_se_htons "${mysql_se_htons}, &blackhole_hton")
  SET (mysql_se_decls "${mysql_se_decls}, blackhole_hton")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_blackhole.cc")
ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_EXAMPLE_STORAGE_ENGINE)
@@ -44,27 +46,35 @@ IF(WITH_PARTITION_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_PARTITION_STORAGE_ENGINE)
  SET (mysql_se_htons "${mysql_se_htons}, &partition_hton")
  SET (mysql_se_decls "${mysql_se_decls}, partition_hton")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_innodb.cc")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_partition.cc")
ENDIF(WITH_PARTITION_STORAGE_ENGINE)
IF(WITH_FEDERATED_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_FEDERATED_STORAGE_ENGINE)
  SET (mysql_se_htons "${mysql_se_htons}, &federated_hton")
  SET (mysql_se_decls "${mysql_se_decls}, federated_hton")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_federated.cc")
ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
IF(WITH_BERKELEY_STORAGE_ENGINE)
  ADD_DEFINITIONS(-D WITH_BERKELEY_STORAGE_ENGINE)
  SET (mysql_se_htons "${mysql_se_htons}, &berkeley_hton")
  SET (mysql_se_decls "${mysql_se_decls}, berkeley_hton")
  SET (mysql_se_ha_src "${mysql_se_ha_src} ha_berkeley.cc")
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)
IF(__NT__)
  ADD_DEFINITIONS(-D __NT__)
ENDIF(__NT__)
IF(CYBOZU)
  ADD_DEFINITIONS(-D CYBOZU)
ENDIF(CYBOZU)
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/handlerton.cc.in ${CMAKE_SOURCE_DIR}/sql/handlerton.cc @ONLY)

ADD_DEFINITIONS(-DHAVE_ROW_BASED_REPLICATION -DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN)

SEPARATE_ARGUMENTS(mysql_se_ha_src)
ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc discover.cc ../libmysql/errmsg.c field.cc
					  field_conv.cc filesort.cc gstream.cc  ha_heap.cc ha_myisam.cc ha_myisammrg.cc
					  ${handlertons} handler.cc hash_filo.cc hash_filo.h hostname.cc
					  ${mysql_se_ha_src} handler.cc hash_filo.cc hash_filo.h hostname.cc
					  init.cc item.cc item_buff.cc item_cmpfunc.cc item_create.cc item_func.cc item_geofunc.cc
					  item_row.cc item_strfunc.cc item_subselect.cc item_sum.cc item_timefunc.cc item_uniq.cc
					  key.cc log.cc lock.cc log_event.cc message.rc message.h mf_iocache.cc 
@@ -89,7 +99,20 @@ ADD_EXECUTABLE(mysqld ../sql-common/client.c derror.cc des_key_file.cc discover.
					  ${PROJECT_SOURCE_DIR}/include/mysql_version.h 
					  ${PROJECT_SOURCE_DIR}/sql/handlerton.cc
					  ${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg ${se_deps} mysys yassl zlib dbug yassl taocrypt strings vio regex wsock32)
TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg mysys yassl zlib dbug yassl taocrypt strings vio regex wsock32)
IF(WITH_ARCHIVE_STORAGE_ENGINE)
  TARGET_LINK_LIBRARIES(mysqld archive)
ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
IF(WITH_EXAMPLE_STORAGE_ENGINE)
  TARGET_LINK_LIBRARIES(mysqld example)
ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
IF(WITH_INNOBASE_STORAGE_ENGINE)
  TARGET_LINK_LIBRARIES(mysqld innobase)
ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
IF(WITH_BERKELEY_STORAGE_ENGINE)
  TARGET_LINK_LIBRARIES(mysqld bdb)
ENDIF(WITH_BERKELEY_STORAGE_ENGINE)

ADD_DEPENDENCIES(mysqld GenError)

# Sql Parser custom command

win/config-handlerton.js

deleted100644 → 0
+0 −196
Original line number Diff line number Diff line
// Configure.js

ForReading = 1;
ForWriting = 2;
ForAppending = 8;

try 
{
	// first we attempt to open the main configure.in file
    var fso = new ActiveXObject("Scripting.FileSystemObject");

	var args = WScript.Arguments

    var datafile = fso.OpenTextFile(args.Item(0), ForReading);
	var extern_line = '';
	var address_line = '';
	while (! datafile.AtEndOfStream)
	{
		var line = datafile.ReadLine();
		if (line == "WITH_INNOBASE_STORAGE_ENGINE")
		{
			extern_line += ",innobase_hton";
			address_line += ",&innobase_hton";
		}
		else if (line == "WITH_PARTITION_STORAGE_ENGINE")
		{
			extern_line += ",partition_hton";
			address_line += ",&partition_hton";
		}
		else if (line == "WITH_ARCHIVE_STORAGE_ENGINE")
		{
			extern_line += ",archive_hton";
			address_line += ",&archive_hton";
		}
		else if (line == "WITH_BERKELEY_STORAGE_ENGINE")
		{
			extern_line += ",berkeley_hton";
			address_line += ",&berkeley_hton";
		}
		else if (line == "WITH_BLACKHOLE_STORAGE_ENGINE")
		{
			extern_line += ",blackhole_hton";
			address_line += ",&blackhole_hton";
		}
		else if (line == "WITH_EXAMPLE_STORAGE_ENGINE")
		{
			extern_line += ",example_hton";
			address_line += ",&example_hton";
		}
		else if (line == "WITH_FEDERATED_STORAGE_ENGINE")
		{
			extern_line += ",federated_hton";
			address_line += ",&federated_hton";
		}
	}
	datafile.Close();
	
    var infile = fso.OpenTextFile("..\\sql\\handlerton.cc.in", ForReading);
    var infile_contents = infile.ReadAll();
    infile.Close();
    infile_contents = infile_contents.replace("@mysql_se_decls@", extern_line);
    infile_contents = infile_contents.replace("@mysql_se_htons@", address_line);
    
    var outfile = fso.CreateTextFile("..\\sql\\handlerton.cc", true)
    outfile.Write(infile_contents);
    outfile.Close();
	
	fso = null;

    WScript.Echo("done!");
}
catch (e)
{
    WScript.Echo("Error: " + e.description);
}

function ConfigureBDB() 
{
    // read in the Unix configure.in file
    var dbIncTS = fso.OpenTextFile("..\\bdb\\dbinc\\db.in", ForReading);
    var dbIn = dbIncTS.ReadAll();
    dbIncTS.Close();

	dbIn = dbIn.replace("@DB_VERSION_MAJOR@", "$DB_VERSION_MAJOR");
	dbIn = dbIn.replace("@DB_VERSION_MINOR@", "$DB_VERSION_MINOR");
	dbIn = dbIn.replace("@DB_VERSION_PATCH@", "$DB_VERSION_PATCH");
	dbIn = dbIn.replace("@DB_VERSION_STRING@", "$DB_VERSION_STRING");

	dbIn = dbIn.replace("@u_int8_decl@", "typedef unsigned char u_int8_t;");
	dbIn = dbIn.replace("@int16_decl@", "typedef short int16_t;");
	dbIn = dbIn.replace("@u_int16_decl@", "typedef unsigned short u_int16_t;");
	dbIn = dbIn.replace("@int32_decl@", "typedef int int32_t;");
	dbIn = dbIn.replace("@u_int32_decl@", "typedef unsigned int u_int32_t;");

	dbIn = dbIn.replace("@u_char_decl@", "{\r\n#if !defined(_WINSOCKAPI_)\r\n" +
		"typedef unsigned char u_char;");
	dbIn = dbIn.replace("@u_short_decl@", "typedef unsigned short u_short;");
	dbIn = dbIn.replace("@u_int_decl@", "typedef unsigned int u_int;");
	dbIn = dbIn.replace("@u_long_decl@", "typedef unsigned long u_long;");
	
	dbIn = dbIn.replace("@ssize_t_decl@", "#endif\r\n#if defined(_WIN64)\r\n" +
		"typedef __int64 ssize_t;\r\n#else\r\n" +
		"typedef int ssize_t;\r\n#endif");
}

function ConfigureMySqlVersion()
{
    // read in the Unix configure.in file
    var configureInTS = fso.OpenTextFile("..\\configure.in", ForReading);
    var configureIn = configureInTS.ReadAll();
    configureInTS.Close();
    
    // read in the mysql_version.h.in file
    var mysqlTS = fso.OpenTextFile("..\\include\\mysql_version.h.in", ForReading);
    var mysqlin = mysqlTS.ReadAll();
    mysqlTS.Close();
    
    mysqlin = mysqlin.replace("@PROTOCOL_VERSION@", GetValue(configureIn, "PROTOCOL_VERSION"));
    mysqlin = mysqlin.replace("@DOT_FRM_VERSION@", GetValue(configureIn, "DOT_FRM_VERSION"));
    mysqlin = mysqlin.replace("@MYSQL_TCP_PORT@", GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT"));
    mysqlin = mysqlin.replace("@MYSQL_UNIX_ADDR@", GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT"));
    mysqlin = mysqlin.replace("@MYSQL_SERVER_SUFFIX@", '');
    mysqlin = mysqlin.replace("@COMPILATION_COMMENT@", 'Source distribution');


    var version = GetVersion(configureIn);
    mysqlin = mysqlin.replace("@VERSION@", version);
    mysqlin = mysqlin.replace("@MYSQL_BASE_VERSION@", GetBaseVersion(version));
    mysqlin = mysqlin.replace("@MYSQL_VERSION_ID@", GetVersionId(version));


    var mysqlfile = fso.CreateTextFile("..\\include\\mysql_version.h", true);
    mysqlfile.Write(mysqlin);
    mysqlfile.Close();

}

function GetValue(str, key)
{
    var pos = str.indexOf(key+'=');
    if (pos == -1) return null;
    pos += key.length + 1;
    var end = str.indexOf("\n", pos);
    if (str.charAt(pos) == "\"")
		pos++;
	if (str.charAt(end-1) == "\"")
		end--;
    return str.substring(pos, end);    
}

function GetVersion(str)
{
    var key = "AM_INIT_AUTOMAKE(mysql, ";
    var pos = str.indexOf(key); //5.0.6-beta)
    if (pos == -1) return null;
    pos += key.length;
    var end = str.indexOf(")", pos);
    if (end == -1) return null;
    return str.substring(pos, end);
}

function GetBaseVersion(version)
{
    var dot = version.indexOf(".");
    if (dot == -1) return null;
    dot = version.indexOf(".", dot+1);
    if (dot == -1) dot = version.length;
    return version.substring(0, dot);
}

function GetVersionId(version)
{
    var dot = version.indexOf(".");
    if (dot == -1) return null;
    var major = parseInt(version.substring(0, dot), 10);
    
    dot++;
    var nextdot = version.indexOf(".", dot);
    if (nextdot == -1) return null;
    var minor = parseInt(version.substring(dot, nextdot), 10);
    dot = nextdot+1;
    
    var stop = version.indexOf("-", dot);
    if (stop == -1) stop = version.length;
    var build = parseInt(version.substring(dot, stop), 10);
    
    var id = major;
    if (minor < 10)
        id += '0';
    id += minor;
    if (build < 10)
        id += '0';
    id += build;
    return id;
}

win/config-version.js

deleted100644 → 0
+0 −223
Original line number Diff line number Diff line
// Configure.js

ForReading = 1;
ForWriting = 2;
ForAppending = 8;

try 
{
	// first we attempt to open the main configure.in file
    var fso = new ActiveXObject("Scripting.FileSystemObject");

	var args = WScript.Arguments

    // Find any configured MYSQL_SERVER_SUFFIX.
    // Find any extra preprocessor definitions.
    var datafile = fso.OpenTextFile(args.Item(0), ForReading);
    var server_suffix = '';
    var server_comment = 'Source distribution';
    var server_port = '';
    var defs = '';
    var htons = '';
    var subdirs = '';
    var depends = '';
    while (! datafile.AtEndOfStream)
    {
        var line = datafile.ReadLine();
        if (line.indexOf("MYSQL_SERVER_SUFFIX=") == 0)
        {
            server_suffix = line.substring(20, line.length);
        }
        else if (line.indexOf("COMPILATION_COMMENT=") == 0)
        {
            server_comment = line.substring(20, line.length);
        }
        else if (line.indexOf("MYSQL_TCP_PORT=") == 0)
        {
            server_port = line.substring(15, line.length);
        }
        else if (line == "WITH_ARCHIVE_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_archive.cc";
             subdirs += " storage/archive";
             depends += " archive";
      	}
        else if (line == "WITH_BERKELEY_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_berkeley.cc";
             subdirs += " storage/bdb";
             depends += " bdb";
        }
        else if (line == "WITH_BLACKHOLE_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_blackhole.cc";
        }
        else if (line == "WITH_EXAMPLE_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             subdirs += " storage/example";
             depends += " example";
        }
        else if (line == "WITH_FEDERATED_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_federated.cc";
        }
        else if (line == "WITH_INNOBASE_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_innodb.cc";
             subdirs += " storage/innobase";
             depends += " innobase";
        }
        else if (line == "WITH_PARTITION_STORAGE_ENGINE")
        {
             defs += " -D" + line;
             htons += " ha_partition.cc";
        }
        else if (line == "__NT__" ||
                 line == "CYBOZU" ||
                 line.indexOf("LICENSE=") == 0) {
             defs += " -D" + line;
        }
    }
    datafile.Close();

	ConfigureMySqlVersion();
	//ConfigureBDB();
	fso = null;

    WScript.Echo("DEFINITIONS@" + defs + "@");
    WScript.Echo("HANDLERTONS@" + htons + "@");
    WScript.Echo("DEPENDS@" + depends + "@");
    WScript.Echo("SUBDIRS@" + subdirs + "@");
}
catch (e)
{
    WScript.Echo("Error: " + e.description);
}

function ConfigureBDB() 
{
    // read in the Unix configure.in file
    var dbIncTS = fso.OpenTextFile("..\\bdb\\dbinc\\db.in", ForReading);
    var dbIn = dbIncTS.ReadAll();
    dbIncTS.Close();

	dbIn = dbIn.replace("@DB_VERSION_MAJOR@", "$DB_VERSION_MAJOR");
	dbIn = dbIn.replace("@DB_VERSION_MINOR@", "$DB_VERSION_MINOR");
	dbIn = dbIn.replace("@DB_VERSION_PATCH@", "$DB_VERSION_PATCH");
	dbIn = dbIn.replace("@DB_VERSION_STRING@", "$DB_VERSION_STRING");

	dbIn = dbIn.replace("@u_int8_decl@", "typedef unsigned char u_int8_t;");
	dbIn = dbIn.replace("@int16_decl@", "typedef short int16_t;");
	dbIn = dbIn.replace("@u_int16_decl@", "typedef unsigned short u_int16_t;");
	dbIn = dbIn.replace("@int32_decl@", "typedef int int32_t;");
	dbIn = dbIn.replace("@u_int32_decl@", "typedef unsigned int u_int32_t;");

	dbIn = dbIn.replace("@u_char_decl@", "{\r\n#if !defined(_WINSOCKAPI_)\r\n" +
		"typedef unsigned char u_char;");
	dbIn = dbIn.replace("@u_short_decl@", "typedef unsigned short u_short;");
	dbIn = dbIn.replace("@u_int_decl@", "typedef unsigned int u_int;");
	dbIn = dbIn.replace("@u_long_decl@", "typedef unsigned long u_long;");
	
	dbIn = dbIn.replace("@ssize_t_decl@", "#endif\r\n#if defined(_WIN64)\r\n" +
		"typedef __int64 ssize_t;\r\n#else\r\n" +
		"typedef int ssize_t;\r\n#endif");
}

function ConfigureMySqlVersion()
{
    // read in the Unix configure.in file
    var configureInTS = fso.OpenTextFile("..\\configure.in", ForReading);
    var configureIn = configureInTS.ReadAll();
    configureInTS.Close();
    
    // read in the mysql_version.h.in file
    var mysqlTS = fso.OpenTextFile("..\\include\\mysql_version.h.in", ForReading);
    var mysqlin = mysqlTS.ReadAll();
    mysqlTS.Close();
    
    mysqlin = mysqlin.replace("@PROTOCOL_VERSION@", GetValue(configureIn, "PROTOCOL_VERSION"));
    mysqlin = mysqlin.replace("@DOT_FRM_VERSION@", GetValue(configureIn, "DOT_FRM_VERSION"));
    if (server_port == '') { server_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT"); }
    mysqlin = mysqlin.replace("@MYSQL_TCP_PORT@", server_port);
    mysqlin = mysqlin.replace("@MYSQL_UNIX_ADDR@", GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT"));
    mysqlin = mysqlin.replace("@MYSQL_SERVER_SUFFIX@", server_suffix);
    mysqlin = mysqlin.replace("@COMPILATION_COMMENT@", server_comment);


    var version = GetVersion(configureIn);
    mysqlin = mysqlin.replace("@VERSION@", version);
    mysqlin = mysqlin.replace("@MYSQL_BASE_VERSION@", GetBaseVersion(version));
    mysqlin = mysqlin.replace("@MYSQL_VERSION_ID@", GetVersionId(version));


    var mysqlfile = fso.CreateTextFile("..\\include\\mysql_version.h", true);
    mysqlfile.Write(mysqlin);
    mysqlfile.Close();

}

function GetValue(str, key)
{
    var pos = str.indexOf(key+'=');
    if (pos == -1) return null;
    pos += key.length + 1;
    var end = str.indexOf("\n", pos);
    if (str.charAt(pos) == "\"")
		pos++;
	if (str.charAt(end-1) == "\"")
		end--;
    return str.substring(pos, end);    
}

function GetVersion(str)
{
    var key = "AM_INIT_AUTOMAKE(mysql, ";
    var pos = str.indexOf(key); //5.0.6-beta)
    if (pos == -1) return null;
    pos += key.length;
    var end = str.indexOf(")", pos);
    if (end == -1) return null;
    return str.substring(pos, end);
}

function GetBaseVersion(version)
{
    var dot = version.indexOf(".");
    if (dot == -1) return null;
    dot = version.indexOf(".", dot+1);
    if (dot == -1) dot = version.length;
    return version.substring(0, dot);
}

function GetVersionId(version)
{
    var dot = version.indexOf(".");
    if (dot == -1) return null;
    var major = parseInt(version.substring(0, dot), 10);
    
    dot++;
    var nextdot = version.indexOf(".", dot);
    if (nextdot == -1) return null;
    var minor = parseInt(version.substring(dot, nextdot), 10);
    dot = nextdot+1;
    
    var stop = version.indexOf("-", dot);
    if (stop == -1) stop = version.length;
    var build = parseInt(version.substring(dot, stop), 10);
    
    var id = major;
    if (minor < 10)
        id += '0';
    id += minor;
    if (build < 10)
        id += '0';
    id += build;
    return id;
}
+86 −28
Original line number Diff line number Diff line
@@ -6,11 +6,17 @@ ForAppending = 8;

try 
{
	// first we attempt to open the main configure.in file
    var fso = new ActiveXObject("Scripting.FileSystemObject");

    var args = WScript.Arguments
    
    // read in the Unix configure.in file
    var configureInTS = fso.OpenTextFile("configure.in", ForReading);
    var configureIn = configureInTS.ReadAll();
    configureInTS.Close();
    var default_comment = "Source distribution";
    var default_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT");

    var configfile = fso.CreateTextFile("win\\configure.data", true);
    for (i=0; i < args.Count(); i++)
    {
@@ -25,19 +31,43 @@ try
            case "WITH_INNOBASE_STORAGE_ENGINE":
            case "WITH_PARTITION_STORAGE_ENGINE":
            case "__NT__":
				line = "SET (" + args.Item(i) + " TRUE)";
            case "CYBOZU":
                    configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
                    break;
            case "MYSQL_SERVER_SUFFIX":
                    configfile.WriteLine("SET (" + parts[0] + " \""
                                         + parts[1] + "\")");
                    break;
            case "COMPILATION_COMMENT":
                    default_comment = parts[1];
                    break;
            case "MYSQL_TCP_PORT":
				line = "SET (" + parts[0] + " " + parts[1] + ")";
                    default_port = parts[1];
                    break;
        }
    
		configfile.WriteLine(line);
    }

    configfile.WriteLine("SET (COMPILATION_COMMENT \"" +
                         default_comment + "\")");

    configfile.WriteLine("SET (PROTOCOL_VERSION \"" +
                         GetValue(configureIn, "PROTOCOL_VERSION") + "\")");
    configfile.WriteLine("SET (DOT_FRM_VERSION \"" +
                         GetValue(configureIn, "DOT_FRM_VERSION") + "\")");
    configfile.WriteLine("SET (MYSQL_TCP_PORT \"" + default_port + "\")");
    configfile.WriteLine("SET (MYSQL_UNIX_ADDR \"" +
                         GetValue(configureIn, "MYSQL_UNIX_ADDR_DEFAULT") + "\")");
    var version = GetVersion(configureIn);
    configfile.WriteLine("SET (VERSION \"" + version + "\")");
    configfile.WriteLine("SET (MYSQL_BASE_VERSION \"" +
                         GetBaseVersion(version) + "\")");
    configfile.WriteLine("SET (MYSQL_VERSION_ID \"" +
                         GetVersionId(version) + "\")");

    configfile.Close();
    
    //ConfigureBDB();

    fso = null;

    WScript.Echo("done!");
@@ -106,3 +136,31 @@ function GetVersionId(version)
    return id;
}

function ConfigureBDB() 
{
    // read in the Unix configure.in file
    var dbIncTS = fso.OpenTextFile("..\\bdb\\dbinc\\db.in", ForReading);
    var dbIn = dbIncTS.ReadAll();
    dbIncTS.Close();

    dbIn = dbIn.replace("@DB_VERSION_MAJOR@", "$DB_VERSION_MAJOR");
    dbIn = dbIn.replace("@DB_VERSION_MINOR@", "$DB_VERSION_MINOR");
    dbIn = dbIn.replace("@DB_VERSION_PATCH@", "$DB_VERSION_PATCH");
    dbIn = dbIn.replace("@DB_VERSION_STRING@", "$DB_VERSION_STRING");

    dbIn = dbIn.replace("@u_int8_decl@", "typedef unsigned char u_int8_t;");
    dbIn = dbIn.replace("@int16_decl@", "typedef short int16_t;");
    dbIn = dbIn.replace("@u_int16_decl@", "typedef unsigned short u_int16_t;");
    dbIn = dbIn.replace("@int32_decl@", "typedef int int32_t;");
    dbIn = dbIn.replace("@u_int32_decl@", "typedef unsigned int u_int32_t;");

    dbIn = dbIn.replace("@u_char_decl@", "{\r\n#if !defined(_WINSOCKAPI_)\r\n" +
        "typedef unsigned char u_char;");
    dbIn = dbIn.replace("@u_short_decl@", "typedef unsigned short u_short;");
    dbIn = dbIn.replace("@u_int_decl@", "typedef unsigned int u_int;");
    dbIn = dbIn.replace("@u_long_decl@", "typedef unsigned long u_long;");
    
    dbIn = dbIn.replace("@ssize_t_decl@", "#endif\r\n#if defined(_WIN64)\r\n" +
        "typedef __int64 ssize_t;\r\n#else\r\n" +
        "typedef int ssize_t;\r\n#endif");
}