diff --git a/native/breakgen/CMakeLists.txt b/native/breakgen/CMakeLists.txt
new file mode 100644
index 000000000000..90aa8a836f09
--- /dev/null
+++ b/native/breakgen/CMakeLists.txt
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.1.0)
+project(breakgen)
+
+include_directories($ENV{JAVA_HOME}/include $ENV{JAVA_HOME}/include/win32)
+
+add_library(breakgen SHARED AppMain.c)
\ No newline at end of file
diff --git a/native/breakgen/breakgen.sln b/native/breakgen/breakgen.sln
deleted file mode 100644
index c95280945f2d..000000000000
--- a/native/breakgen/breakgen.sln
+++ /dev/null
@@ -1,24 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakgen", "breakgen.vcxproj", "{AE14C87F-E99B-4363-BE34-917FAF98258F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|Win32.ActiveCfg = Debug|Win32
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|Win32.Build.0 = Debug|Win32
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Debug|x64.ActiveCfg = Debug|x64
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|Win32.ActiveCfg = Release|Win32
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|Win32.Build.0 = Release|Win32
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|x64.ActiveCfg = Release|x64
- {AE14C87F-E99B-4363-BE34-917FAF98258F}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/native/breakgen/breakgen.vcproj b/native/breakgen/breakgen.vcproj
deleted file mode 100644
index 4f02b6ace509..000000000000
--- a/native/breakgen/breakgen.vcproj
+++ /dev/null
@@ -1,337 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/native/breakgen/breakgen.vcxproj b/native/breakgen/breakgen.vcxproj
deleted file mode 100644
index 142d26a13fa0..000000000000
--- a/native/breakgen/breakgen.vcxproj
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {AE14C87F-E99B-4363-BE34-917FAF98258F}
- breakgen
- Win32Proj
-
-
-
- DynamicLibrary
-
-
- DynamicLibrary
-
-
- DynamicLibrary
-
-
- DynamicLibrary
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFileVersion>10.0.40219.1
- Debug\
- true
- ..\..\bin\win
- true
- $(Platform)\$(Configuration)\
- true
- ..\..\bin\win
- true
- $(JdkPath)\include;$(IncludePath)
- $(JdkPath)\include;$(IncludePath)
- $(JdkPath)\include;$(IncludePath)
- $(JdkPath)\include;$(IncludePath)
- $(ProjectName)64
-
-
-
- Disabled
- WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
-
-
- Level3
- EditAndContinue
- $(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)
-
-
- true
- Windows
- MachineX86
-
-
-
-
- $(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- Level3
- ProgramDatabase
-
-
- true
- Windows
- true
- true
- MachineX86
-
-
-
-
- X64
-
-
- Disabled
- WIN32;_DEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)
- true
- EnableFastChecks
- MultiThreadedDebugDLL
-
-
- Level3
- ProgramDatabase
- $(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)
-
-
- true
- Windows
- MachineX64
-
-
-
-
- X64
-
-
- $(JdkPath)\include;$(JdkPath)\include\win32;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_USRDLL;BREAKGEN_EXPORTS;%(PreprocessorDefinitions)
- MultiThreaded
-
-
- Level3
- ProgramDatabase
-
-
- true
- Windows
- true
- true
- MachineX64
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/native/breakgen/breakgen.vcxproj.filters b/native/breakgen/breakgen.vcxproj.filters
deleted file mode 100644
index 9c4507db840c..000000000000
--- a/native/breakgen/breakgen.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hpp;hxx;hm;inl;inc;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
-
-
-
-
- Source Files
-
-
-
\ No newline at end of file
diff --git a/native/breakgen/build.cmd b/native/breakgen/build.cmd
new file mode 100644
index 000000000000..d1a6a90b4e92
--- /dev/null
+++ b/native/breakgen/build.cmd
@@ -0,0 +1,22 @@
+SET CMAKE=%CMAKE_PATH%\bin\cmake
+
+RMDIR /S /Q build32
+MKDIR build32
+CD build32
+SET JAVA_HOME=%JDK_18%
+"%CMAKE%" -G "Visual Studio 12 2013" -T v120_xp ..
+IF ERRORLEVEL 1 EXIT 1
+"%CMAKE%" --build . --config Release
+IF ERRORLEVEL 1 EXIT 2
+CD ..
+
+RMDIR /S /Q build64
+MKDIR build64
+CD build64
+SET JAVA_HOME=%JDK_18_x64%
+"%CMAKE%" -G "Visual Studio 12 2013" -A x64 -T v120_xp ..
+IF ERRORLEVEL 1 EXIT 3
+"%CMAKE%" --build . --config Release
+IF ERRORLEVEL 1 EXIT 4
+RENAME Release\breakgen.dll breakgen64.dll
+CD ..
\ No newline at end of file