diff --git a/win-plugin/CMakeLists.txt b/win-plugin/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d64ea3df4882a8f08e41f8dbc2a4bee9cf60c4ad
--- /dev/null
+++ b/win-plugin/CMakeLists.txt
@@ -0,0 +1,259 @@
+# Copyright (C) 2006 MySQL AB
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR)
+
+PROJECT(MySql)
+
+# This reads user configuration, generated by configure.js.
+INCLUDE(win/configure.data)
+
+# Hardcode support for CSV storage engine
+SET(WITH_CSV_STORAGE_ENGINE TRUE)
+
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
+               ${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
+
+# Set standard options
+ADD_DEFINITIONS(-DHAVE_YASSL)
+
+# Set debug options
+SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFORCE_INIT_OF_VARS")
+
+# Note that some engines are always compiled in, MyISAM, MyISAMMRG and HEAP,
+# these three plugin defintions are dummys for symmetry
+
+SET(WITH_HEAP_STORAGE_ENGINE TRUE)
+ADD_DEFINITIONS(-DWITH_HEAP_STORAGE_ENGINE)
+SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_heap_plugin")
+
+SET(WITH_MYISAM_STORAGE_ENGINE TRUE)
+ADD_DEFINITIONS(-DWITH_MYISAM_STORAGE_ENGINE)
+SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisam_plugin")
+
+SET(WITH_MYISAMMRG_STORAGE_ENGINE TRUE)
+ADD_DEFINITIONS(-DWITH_MYISAMMRG_STORAGE_ENGINE)
+SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_myisammrg_plugin")
+
+IF(WITH_ARCHIVE_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_ARCHIVE_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_archive_plugin")
+ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
+IF(WITH_BLACKHOLE_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_BLACKHOLE_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_blackhole_plugin")
+ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
+IF(WITH_CSV_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_CSV_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_csv_plugin")
+ENDIF(WITH_CSV_STORAGE_ENGINE)
+IF(WITH_EXAMPLE_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_EXAMPLE_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_example_plugin")
+ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
+IF(WITH_INNOBASE_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_INNOBASE_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_innobase_plugin")
+ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+IF(WITH_PARTITION_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_PARTITION_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_partition_plugin")
+ENDIF(WITH_PARTITION_STORAGE_ENGINE)
+IF(WITH_FEDERATED_STORAGE_ENGINE)
+  ADD_DEFINITIONS(-DWITH_FEDERATED_STORAGE_ENGINE)
+  SET (mysql_plugin_defs "${mysql_plugin_defs},builtin_federated_plugin")
+ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
+
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in 
+               ${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc @ONLY)
+
+SET(localstatedir "C:\\mysql\\data")
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-huge.cnf.sh
+               ${CMAKE_SOURCE_DIR}/support-files/my-huge.ini @ONLY)
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.cnf.sh
+               ${CMAKE_SOURCE_DIR}/support-files/my-innodb-heavy-4G.ini @ONLY)
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-large.cnf.sh
+               ${CMAKE_SOURCE_DIR}/support-files/my-large.ini @ONLY)
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-medium.cnf.sh
+               ${CMAKE_SOURCE_DIR}/support-files/my-medium.ini @ONLY)
+CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/support-files/my-small.cnf.sh
+               ${CMAKE_SOURCE_DIR}/support-files/my-small.ini @ONLY)
+
+IF(__NT__)
+  ADD_DEFINITIONS(-D__NT__)
+ENDIF(__NT__)
+IF(CYBOZU)
+  ADD_DEFINITIONS(-DCYBOZU)
+ENDIF(CYBOZU)
+
+# in some places we use DBUG_OFF
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
+SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
+SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
+
+#TODO: update the code and remove the disabled warnings
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805")
+
+IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
+    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
+    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
+    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996")
+    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996")
+    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996")
+    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996")
+ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
+
+IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR 
+   CMAKE_GENERATOR MATCHES "Visual Studio 8")
+
+    # replace /MDd with /MTd
+    STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELEASE          ${CMAKE_C_FLAGS_RELEASE})
+    STRING(REPLACE "/MD"  "/MT"  CMAKE_C_FLAGS_RELWITHDEBINFO   ${CMAKE_C_FLAGS_RELWITHDEBINFO})
+    STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG            ${CMAKE_C_FLAGS_DEBUG})
+    STRING(REPLACE "/MDd" "/MTd" CMAKE_C_FLAGS_DEBUG_INIT       ${CMAKE_C_FLAGS_DEBUG_INIT})
+
+    STRING(REPLACE "/MD"  "/MT"  CMAKE_CXX_FLAGS_RELEASE        ${CMAKE_CXX_FLAGS_RELEASE})
+    STRING(REPLACE "/MD"  "/MT"  CMAKE_CXX_FLAGS_RELWITHDEBINFO ${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
+    STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG          ${CMAKE_CXX_FLAGS_DEBUG})
+    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
+    STRING(REPLACE "/GX"   "" CMAKE_CXX_FLAGS            ${CMAKE_CXX_FLAGS})
+    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(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR 
+      CMAKE_GENERATOR MATCHES "Visual Studio 8")
+
+IF(WIN32)
+  ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
+ENDIF(WIN32)
+
+# 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")
+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_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.  
+    # 
+    # The custom manifests are designed to be compatible with all mt versions.
+    # The MySQL AB Authenticode certificate is available only internally.  
+    # Others should store a single signing certificate in a local cryptographic
+    # service provider and alter the signtool command as necessary.
+    FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt
+                 PATHS
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin"
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
+    FIND_PROGRAM(HAVE_CATALOG_TOOL NAMES makecat
+                 PATHS
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin")
+    FIND_PROGRAM(HAVE_SIGN_TOOL NAMES signtool
+                 PATHS
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin"
+                 "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin")
+
+    IF(HAVE_MANIFEST_TOOL)
+        MESSAGE(STATUS "Found Mainfest Tool.")
+    ELSE(HAVE_MANIFEST_TOOL)
+        MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.")
+    ENDIF(HAVE_MANIFEST_TOOL)
+    IF(HAVE_CATALOG_TOOL)
+        MESSAGE(STATUS "Found Catalog Tool.")
+    ELSE(HAVE_CATALOG_TOOL)
+        MESSAGE(FATAL_ERROR "Catalog tool, makecat.exe, can't be found.")
+    ENDIF(HAVE_CATALOG_TOOL)
+    IF(HAVE_SIGN_TOOL)
+        MESSAGE(STATUS "Found Sign Tool. Embedding custom manifests and signing executables.")
+    ELSE(HAVE_SIGN_TOOL)
+        MESSAGE(FATAL_ERROR "Sign tool, signtool.exe, can't be found.")
+    ENDIF(HAVE_SIGN_TOOL)
+
+    # Set the processor architecture.
+    IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
+    	SET(PROCESSOR_ARCH "amd64") 
+    ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
+    	SET(PROCESSOR_ARCH "X86")
+    ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
+ENDIF(EMBED_MANIFESTS)
+
+# FIXME "debug" only needed if build type is "Debug", but
+# CMAKE_BUILD_TYPE is not set during configure time.
+ADD_SUBDIRECTORY(vio)
+ADD_SUBDIRECTORY(dbug)
+ADD_SUBDIRECTORY(strings)
+ADD_SUBDIRECTORY(regex)
+ADD_SUBDIRECTORY(mysys)
+ADD_SUBDIRECTORY(scripts)
+ADD_SUBDIRECTORY(zlib)
+ADD_SUBDIRECTORY(extra/yassl)
+ADD_SUBDIRECTORY(extra/yassl/taocrypt)
+ADD_SUBDIRECTORY(extra)
+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_BLACKHOLE_STORAGE_ENGINE)
+  ADD_SUBDIRECTORY(storage/blackhole)
+ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
+IF(WITH_CSV_STORAGE_ENGINE)
+  ADD_SUBDIRECTORY(storage/csv)
+ENDIF(WITH_CSV_STORAGE_ENGINE)
+IF(WITH_EXAMPLE_STORAGE_ENGINE)
+  ADD_SUBDIRECTORY(storage/example)
+ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
+IF(WITH_FEDERATED_STORAGE_ENGINE)
+  ADD_SUBDIRECTORY(storage/federated)
+ENDIF(WITH_FEDERATED_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)
+IF(WITH_EMBEDDED_SERVER) 
+  ADD_SUBDIRECTORY(libmysqld)
+  ADD_SUBDIRECTORY(libmysqld/examples)
+ENDIF(WITH_EMBEDDED_SERVER)
diff --git a/win-plugin/sql/CMakeLists.txt b/win-plugin/sql/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5ab29aff69c36cc96c2c8a0f5b3b56b35c5a06cb
--- /dev/null
+++ b/win-plugin/sql/CMakeLists.txt
@@ -0,0 +1,172 @@
+# Copyright (C) 2006 MySQL AB
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+INCLUDE("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake")
+
+SET(CMAKE_CXX_FLAGS_DEBUG 
+    "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
+SET(CMAKE_C_FLAGS_DEBUG 
+    "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
+SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /MAP /MAPINFO:EXPORTS") 
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include 
+                    ${CMAKE_SOURCE_DIR}/extra/yassl/include 
+                    ${CMAKE_SOURCE_DIR}/sql 
+                    ${CMAKE_SOURCE_DIR}/regex 
+                    ${CMAKE_SOURCE_DIR}/zlib
+)
+
+SET_SOURCE_FILES_PROPERTIES(${CMAKE_SOURCE_DIR}/sql/message.rc 
+                            ${CMAKE_SOURCE_DIR}/sql/message.h 
+                            ${CMAKE_SOURCE_DIR}/sql/sql_yacc.h 
+                            ${CMAKE_SOURCE_DIR}/sql/sql_yacc.cc
+                            ${CMAKE_SOURCE_DIR}/include/mysql_version.h
+                            ${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
+                            ${CMAKE_SOURCE_DIR}/sql/lex_hash.h 
+                            ${PROJECT_SOURCE_DIR}/include/mysqld_error.h
+                            ${PROJECT_SOURCE_DIR}/include/mysqld_ername.h
+                            ${PROJECT_SOURCE_DIR}/include/sql_state.h 
+                              PROPERTIES GENERATED 1)
+
+ADD_DEFINITIONS(-DMYSQL_SERVER -D_CONSOLE -DHAVE_DLOPEN -DHAVE_EVENT_SCHEDULER)
+
+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_partition.cc
+               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 
+               key.cc log.cc lock.cc message.rc 
+               log_event.cc rpl_record.cc rpl_reporting.cc
+               log_event_old.cc rpl_record_old.cc
+               message.h mf_iocache.cc my_decimal.cc ../sql-common/my_time.c
+               mysqld.cc net_serv.cc 
+               nt_servc.cc nt_servc.h opt_range.cc opt_range.h opt_sum.cc 
+               ../sql-common/pack.c parse_file.cc password.c procedure.cc 
+               protocol.cc records.cc repl_failsafe.cc rpl_filter.cc set_var.cc 
+               slave.cc sp.cc sp_cache.cc sp_head.cc sp_pcontext.cc 
+               sp_rcontext.cc spatial.cc sql_acl.cc sql_analyse.cc sql_base.cc 
+               sql_cache.cc sql_class.cc sql_client.cc sql_crypt.cc sql_crypt.h 
+               sql_cursor.cc sql_db.cc sql_delete.cc sql_derived.cc sql_do.cc 
+               sql_error.cc sql_handler.cc sql_help.cc sql_insert.cc sql_lex.cc 
+               sql_list.cc sql_load.cc sql_manager.cc sql_map.cc sql_parse.cc 
+               sql_partition.cc sql_plugin.cc sql_prepare.cc sql_rename.cc 
+               sql_repl.cc sql_select.cc sql_show.cc sql_state.c sql_string.cc 
+               sql_table.cc sql_test.cc sql_trigger.cc sql_udf.cc sql_union.cc
+               sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc 
+               time.cc tztime.cc uniques.cc unireg.cc item_xmlfunc.cc 
+               rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_data_objects.cc
+               event_queue.cc event_db_repository.cc 
+               sql_tablespace.cc events.cc ../sql-common/my_user.c 
+               partition_info.cc rpl_utility.cc rpl_injector.cc sql_locale.cc
+               rpl_rli.cc rpl_mi.cc sql_servers.cc
+               sql_connect.cc scheduler.cc 
+               sql_profile.cc event_parse_data.cc
+               ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
+               ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+               ${PROJECT_SOURCE_DIR}/include/mysqld_error.h
+               ${PROJECT_SOURCE_DIR}/include/mysqld_ername.h 
+               ${PROJECT_SOURCE_DIR}/include/sql_state.h
+               ${PROJECT_SOURCE_DIR}/include/mysql_version.h 
+               ${PROJECT_SOURCE_DIR}/sql/sql_builtin.cc
+               ${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
+
+TARGET_LINK_LIBRARIES(mysqld
+                      heap myisam myisammrg mysys yassl zlib debug dbug yassl 
+                      taocrypt strings vio regex wsock32 ws2_32)
+
+SET_TARGET_PROPERTIES(mysqld PROPERTIES OUTPUT_NAME mysqld${MYSQLD_EXE_SUFFIX})
+
+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)
+
+IF(EMBED_MANIFESTS)
+  MYSQL_EMBED_MANIFEST("mysqld" "asInvoker")
+ENDIF(EMBED_MANIFESTS)
+IF(WITH_ARCHIVE_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld archive)
+ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
+IF(WITH_BLACKHOLE_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld blackhole)
+ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
+IF(WITH_CSV_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld csv)
+ENDIF(WITH_CSV_STORAGE_ENGINE)
+IF(WITH_EXAMPLE_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld example)
+ENDIF(WITH_EXAMPLE_STORAGE_ENGINE)
+IF(WITH_FEDERATED_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld federated)
+ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
+IF(WITH_INNOBASE_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(mysqld innobase)
+ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+
+ADD_DEPENDENCIES(mysqld GenError)
+
+# NOTE CMake 2.4.6 creates strange dependencies between files in OUTPUT,
+# so for now we only list one if more than one
+
+# Sql Parser custom command
+ADD_CUSTOM_COMMAND(
+        OUTPUT ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+#              ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
+        COMMAND bison.exe ARGS -y -p MYSQL --defines=sql_yacc.h
+                               --output=sql_yacc.cc sql_yacc.yy
+        DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy)
+
+IF(WIN32)
+  # Windows message file
+  ADD_CUSTOM_COMMAND(
+          OUTPUT ${PROJECT_SOURCE_DIR}/sql/message.h
+#                ${PROJECT_SOURCE_DIR}/sql/message.rc
+          COMMAND mc ARGS message.mc
+          DEPENDS ${PROJECT_SOURCE_DIR}/sql/message.mc)
+ENDIF(WIN32)
+
+# Gen_lex_hash
+ADD_EXECUTABLE(gen_lex_hash gen_lex_hash.cc)
+TARGET_LINK_LIBRARIES(gen_lex_hash debug dbug mysqlclient wsock32)
+GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
+ADD_CUSTOM_COMMAND(
+        OUTPUT ${PROJECT_SOURCE_DIR}/sql/lex_hash.h
+        COMMAND ${GEN_LEX_HASH_EXE} ARGS > lex_hash.h
+        DEPENDS ${GEN_LEX_HASH_EXE})
+
+ADD_CUSTOM_TARGET(
+        GenServerSource ALL
+        DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+#               ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
+                ${PROJECT_SOURCE_DIR}/sql/message.h
+#               ${PROJECT_SOURCE_DIR}/sql/message.rc
+                ${PROJECT_SOURCE_DIR}/sql/lex_hash.h)
+
+ADD_DEPENDENCIES(mysqld GenServerSource)
+
+# Remove the auto-generated files as part of 'Clean Solution'
+SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES 
+                         "lex_hash.h;message.rc;message.h;sql_yacc.h;sql_yacc.cc")
+
+ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
+ADD_DEPENDENCIES(udf_example strings GenError)
+TARGET_LINK_LIBRARIES(udf_example strings wsock32)
diff --git a/win-plugin/win/configure.js b/win-plugin/win/configure.js
new file mode 100644
index 0000000000000000000000000000000000000000..c86ec0cf47c1d7b4d8ca4d3c7c4f81bdd82c158c
--- /dev/null
+++ b/win-plugin/win/configure.js
@@ -0,0 +1,185 @@
+// Configure.js
+//
+// Copyright (C) 2006 MySQL AB
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// 
+// You should have received a copy of the GNU General Public License
+// 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;
+
+try 
+{
+    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 actual_port = 0;
+
+    var configfile = fso.CreateTextFile("win\\configure.data", true);
+    for (i=0; i < args.Count(); i++)
+    {
+        var parts = args.Item(i).split('=');
+        switch (parts[0])
+        {
+            case "WITH_ARCHIVE_STORAGE_ENGINE":
+            case "WITH_BLACKHOLE_STORAGE_ENGINE":
+            case "WITH_EXAMPLE_STORAGE_ENGINE":
+            case "WITH_FEDERATED_STORAGE_ENGINE":
+            case "WITH_INNOBASE_STORAGE_ENGINE":
+            case "WITH_PARTITION_STORAGE_ENGINE":
+            case "__NT__":
+            case "CYBOZU":
+            case "EMBED_MANIFESTS":
+            case "WITH_EMBEDDED_SERVER":
+                    configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
+                    break;
+            case "MYSQL_SERVER_SUFFIX":
+            case "MYSQLD_EXE_SUFFIX":
+                    configfile.WriteLine("SET (" + parts[0] + " \""
+                                         + parts[1] + "\")");
+                    break;
+            case "COMPILATION_COMMENT":
+                    default_comment = parts[1];
+                    break;
+            case "MYSQL_TCP_PORT":
+                    actual_port = parts[1];
+                    break;
+        }
+    }
+    if (actual_port == 0)
+	{
+       // if we actually defaulted (as opposed to the pathological case of
+       // --with-tcp-port=<MYSQL_TCP_PORT_DEFAULT> which might in theory
+       // happen if whole batch of servers was built from a script), set
+       // the default to zero to indicate that; we don't lose information
+       // that way, because 0 obviously indicates that we can get the
+       // default value from MYSQL_TCP_PORT. this seems really evil, but
+       // testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a
+       // a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not
+       // intend it to mean "use the default, in fact, look up a good default
+       // from /etc/services if you can", but really, really meant 3306 when
+       // they passed in 3306. When they pass in a specific value, let them
+       // have it; don't second guess user and think we know better, this will
+       // just make people cross.  this makes the the logic work like this
+       // (which is complicated enough):
+       // 
+       // - if a port was set during build, use that as a default.
+       // 
+       // - otherwise, try to look up a port in /etc/services; if that fails,
+       //   use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306)
+       // 
+       // - allow the MYSQL_TCP_PORT environment variable to override that.
+       // 
+       // - allow command-line parameters to override all of the above.
+       // 
+       // the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js,
+       // so don't mess with that.
+	   actual_port = default_port;
+	   default_port = 0;
+	}
+
+    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 \"" + default_port + "\")");
+    configfile.WriteLine("SET (MYSQL_TCP_PORT \"" + actual_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();
+    
+    fso = null;
+
+    WScript.Echo("done!");
+}
+catch (e)
+{
+    WScript.Echo("Error: " + e.description);
+}
+
+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;
+}