Add CMake scripts in preparation for wxWidgets changes.
Add CMake scripts in preparation for wxWidgets changes.

(One downside here, zlib's CMake script renames its zconf.h... which in turn means that the submodule now thinks there are uncommitted changes. :/)

--- /dev/null
+++ b/src/CMakeLists.txt
@@ -1,1 +1,14 @@
+cmake_minimum_required(VERSION 3.5)
+project(in_xsf CXX)
+enable_language(C)
 
+set(CMAKE_CXX_STANDARD 17)
+
+add_subdirectory(in_xsf_framework)
+add_subdirectory(in_2sf)
+add_subdirectory(in_gsf)
+add_subdirectory(in_ncsf)
+add_subdirectory(in_snsf)
+
+set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT "in_ncsf")
+

--- /dev/null
+++ b/src/in_2sf/CMakeLists.txt
@@ -1,1 +1,122 @@
+set(HEADERS
+	desmume/arm_jit.h
+	desmume/armcpu.h
+	desmume/bios.h
+	desmume/cp15.h
+	desmume/emufile.h
+	desmume/FIFO.h
+	desmume/firmware.h
+	desmume/instruction_attributes.h
+	desmume/instruction_tabdef.inc
+	desmume/instructions.h
+	desmume/matrix.h
+	desmume/mc.h
+	desmume/mem.h
+	desmume/metaspu/metaspu.h
+	desmume/MMU.h
+	desmume/MMU_timing.h
+	desmume/NDSSystem.h
+	desmume/PACKED.h
+	desmume/PACKED_END.h
+	desmume/readwrite.h
+	desmume/registers.h
+	desmume/slot1.h
+	desmume/SPU.h
+	desmume/thumb_tabdef.inc
+	desmume/types.h
+	desmume/utils/AsmJit/apibegin.h
+	desmume/utils/AsmJit/apiend.h
+	desmume/utils/AsmJit/AsmJit.h
+	desmume/utils/AsmJit/base.h
+	desmume/utils/AsmJit/base/assembler.h
+	desmume/utils/AsmJit/base/codegen.h
+	desmume/utils/AsmJit/base/compiler.h
+	desmume/utils/AsmJit/base/constpool.h
+	desmume/utils/AsmJit/base/containers.h
+	desmume/utils/AsmJit/base/context_p.h
+	desmume/utils/AsmJit/base/cpuinfo.h
+	desmume/utils/AsmJit/base/cputicks.h
+	desmume/utils/AsmJit/base/error.h
+	desmume/utils/AsmJit/base/globals.h
+	desmume/utils/AsmJit/base/intutil.h
+	desmume/utils/AsmJit/base/lock.h
+	desmume/utils/AsmJit/base/logger.h
+	desmume/utils/AsmJit/base/operand.h
+	desmume/utils/AsmJit/base/runtime.h
+	desmume/utils/AsmJit/base/string.h
+	desmume/utils/AsmJit/base/vectypes.h
+	desmume/utils/AsmJit/base/vmem.h
+	desmume/utils/AsmJit/base/zone.h
+	desmume/utils/AsmJit/build.h
+	desmume/utils/AsmJit/Config.h
+	desmume/utils/AsmJit/host.h
+	desmume/utils/AsmJit/x86.h
+	desmume/utils/AsmJit/x86/x86assembler.h
+	desmume/utils/AsmJit/x86/x86compiler.h
+	desmume/utils/AsmJit/x86/x86context_p.h
+	desmume/utils/AsmJit/x86/x86cpuinfo.h
+	desmume/utils/AsmJit/x86/x86inst.h
+	desmume/utils/AsmJit/x86/x86operand.h
+	desmume/utils/AsmJit/x86/x86scheduler_p.h
+	desmume/utils/bits.h
+	desmume/version.h
+	spu/adpcmdecoder.h
+	spu/interpolator.h
+	spu/samplecache.h
+	spu/sampledata.h)
+set(SOURCES
+	desmume/addons/slot1_retail.cpp
+	desmume/arm_instructions.cpp
+	desmume/arm_jit.cpp
+	desmume/armcpu.cpp
+	desmume/bios.cpp
+	desmume/cp15.cpp
+	desmume/emufile.cpp
+	desmume/FIFO.cpp
+	desmume/firmware.cpp
+	desmume/mc.cpp
+	desmume/metaspu/metaspu.cpp
+	desmume/MMU.cpp
+	desmume/NDSSystem.cpp
+	desmume/readwrite.cpp
+	desmume/slot1.cpp
+	desmume/SPU.cpp
+	desmume/thumb_instructions.cpp
+	desmume/utils/AsmJit/base/assembler.cpp
+	desmume/utils/AsmJit/base/codegen.cpp
+	desmume/utils/AsmJit/base/compiler.cpp
+	desmume/utils/AsmJit/base/constpool.cpp
+	desmume/utils/AsmJit/base/containers.cpp
+	desmume/utils/AsmJit/base/context.cpp
+	desmume/utils/AsmJit/base/cpuinfo.cpp
+	desmume/utils/AsmJit/base/cputicks.cpp
+	desmume/utils/AsmJit/base/error.cpp
+	desmume/utils/AsmJit/base/globals.cpp
+	desmume/utils/AsmJit/base/logger.cpp
+	desmume/utils/AsmJit/base/operand.cpp
+	desmume/utils/AsmJit/base/runtime.cpp
+	desmume/utils/AsmJit/base/string.cpp
+	desmume/utils/AsmJit/base/vmem.cpp
+	desmume/utils/AsmJit/base/zone.cpp
+	desmume/utils/AsmJit/x86/x86assembler.cpp
+	desmume/utils/AsmJit/x86/x86compiler.cpp
+	desmume/utils/AsmJit/x86/x86context.cpp
+	desmume/utils/AsmJit/x86/x86cpuinfo.cpp
+	desmume/utils/AsmJit/x86/x86inst.cpp
+	desmume/utils/AsmJit/x86/x86operand.cpp
+	desmume/utils/AsmJit/x86/x86operand_regs.cpp
+	desmume/utils/AsmJit/x86/x86scheduler.cpp
+	desmume/version.cpp
+	spu/adpcmdecoder.cpp
+	spu/interpolator.cpp
+	spu/samplecache.cpp
+	spu/sampledata.cpp
+	XSFConfig_2SF.cpp
+	XSFPlayer_2SF.cpp)
 
+add_library(in_2sf SHARED ${HEADERS} ${SOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${HEADERS})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCES})
+target_link_libraries(in_2sf
+	in_xsf_framework)
+

--- a/src/in_2sf/in_2sf.vcxproj
+++ b/src/in_2sf/in_2sf.vcxproj
@@ -203,6 +203,9 @@
       <Project>{9d6d2540-b3dc-462b-bbc0-5b7c32a4d581}</Project>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

--- a/src/in_2sf/in_2sf.vcxproj.filters
+++ b/src/in_2sf/in_2sf.vcxproj.filters
@@ -138,9 +138,6 @@
     <ClCompile Include="desmume/utils/AsmJit/base/operand.cpp">
       <Filter>Source Files\desmume\utils\AsmJit\base</Filter>
     </ClCompile>
-    <ClCompile Include="desmume/readwrite.cpp">
-      <Filter>Source Files\desmume\utils\AsmJit\base</Filter>
-    </ClCompile>
     <ClCompile Include="desmume/utils/AsmJit/base/runtime.cpp">
       <Filter>Source Files\desmume\utils\AsmJit\base</Filter>
     </ClCompile>
@@ -203,6 +200,9 @@
     </ClCompile>
     <ClCompile Include="spu\sampledata.cpp">
       <Filter>Source Files\spu</Filter>
+    </ClCompile>
+    <ClCompile Include="desmume/readwrite.cpp">
+      <Filter>Source Files\desmume</Filter>
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
@@ -407,4 +407,7 @@
       <Filter>Header Files\desmume</Filter>
     </None>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
 </Project>

--- /dev/null
+++ b/src/in_gsf/CMakeLists.txt
@@ -1,1 +1,35 @@
+set(HEADERS
+	vbam/apu/blargg_common.h
+	vbam/apu/blargg_config.h
+	vbam/apu/Blip_Buffer.h
+	vbam/apu/Gb_Apu.h
+	vbam/apu/Gb_Oscs.h
+	vbam/apu/Multi_Buffer.h
+	vbam/common/Port.h
+	vbam/common/SoundDriver.h
+	vbam/gba/bios.h
+	vbam/gba/GBA.h
+	vbam/gba/GBAcpu.h
+	vbam/gba/GBAinline.h
+	vbam/gba/Globals.h
+	vbam/gba/Sound.h)
+set(SOURCES
+	vbam/apu/Blip_Buffer.cpp
+	vbam/apu/Gb_Apu.cpp
+	vbam/apu/Gb_Oscs.cpp
+	vbam/apu/Multi_Buffer.cpp
+	vbam/gba/bios.cpp
+	vbam/gba/GBA.cpp
+	vbam/gba/GBA-arm.cpp
+	vbam/gba/GBA-thumb.cpp
+	vbam/gba/Globals.cpp
+	vbam/gba/Sound.cpp
+	XSFConfig_GSF.cpp
+	XSFPlayer_GSF.cpp)
 
+add_library(in_gsf SHARED ${HEADERS} ${SOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${HEADERS})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCES})
+target_link_libraries(in_gsf
+	in_xsf_framework)
+

--- a/src/in_gsf/in_gsf.vcxproj
+++ b/src/in_gsf/in_gsf.vcxproj
@@ -113,6 +113,9 @@
       <Project>{9d6d2540-b3dc-462b-bbc0-5b7c32a4d581}</Project>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

--- a/src/in_gsf/in_gsf.vcxproj.filters
+++ b/src/in_gsf/in_gsf.vcxproj.filters
@@ -117,4 +117,7 @@
       <Filter>Header Files\vbam\gba</Filter>
     </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
 </Project>

--- /dev/null
+++ b/src/in_ncsf/CMakeLists.txt
@@ -1,1 +1,45 @@
+set(HEADERS
+	SSEQPlayer/Channel.h
+	SSEQPlayer/common.h
+	SSEQPlayer/consts.h
+	SSEQPlayer/FATSection.h
+	SSEQPlayer/INFOEntry.h
+	SSEQPlayer/INFOSection.h
+	SSEQPlayer/NDSStdHeader.h
+	SSEQPlayer/Player.h
+	SSEQPlayer/SBNK.h
+	SSEQPlayer/SDAT.h
+	SSEQPlayer/SSEQ.h
+	SSEQPlayer/SWAR.h
+	SSEQPlayer/SWAV.h
+	SSEQPlayer/SYMBSection.h
+	SSEQPlayer/Track.h
+	resource.h
+	XSFConfig_NCSF.h
+	XSFPlayer_NCSF.h)
+set(RESOURCES
+	in_ncsf.rc)
+set(SOURCES
+	SSEQPlayer/Channel.cpp
+	SSEQPlayer/FATSection.cpp
+	SSEQPlayer/INFOEntry.cpp
+	SSEQPlayer/INFOSection.cpp
+	SSEQPlayer/NDSStdHeader.cpp
+	SSEQPlayer/Player.cpp
+	SSEQPlayer/SBNK.cpp
+	SSEQPlayer/SDAT.cpp
+	SSEQPlayer/SSEQ.cpp
+	SSEQPlayer/SWAR.cpp
+	SSEQPlayer/SWAV.cpp
+	SSEQPlayer/SYMBSection.cpp
+	SSEQPlayer/Track.cpp
+	XSFConfig_NCSF.cpp
+	XSFPlayer_NCSF.cpp)
 
+add_library(in_ncsf SHARED ${HEADERS} ${RESOURCES} ${SOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${HEADERS})
+source_group("Resource Files" FILES ${RESOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCES})
+target_link_libraries(in_ncsf
+	in_xsf_framework)
+

--- a/src/in_ncsf/in_ncsf.vcxproj
+++ b/src/in_ncsf/in_ncsf.vcxproj
@@ -125,6 +125,9 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     </ResourceCompile>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

--- a/src/in_ncsf/in_ncsf.vcxproj.filters
+++ b/src/in_ncsf/in_ncsf.vcxproj.filters
@@ -128,4 +128,7 @@
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
 </Project>

--- /dev/null
+++ b/src/in_snsf/CMakeLists.txt
@@ -1,1 +1,49 @@
+set(HEADERS
+	snes9x/65c816.h
+	snes9x/apu/apu.h
+	snes9x/apu/blargg_common.h
+	snes9x/apu/blargg_config.h
+	snes9x/apu/blargg_endian.h
+	snes9x/apu/bspline_resampler.h
+	snes9x/apu/hermite_resampler.h
+	snes9x/apu/linear_resampler.h
+	snes9x/apu/osculating_resampler.h
+	snes9x/apu/resampler.h
+	snes9x/apu/ring_buffer.h
+	snes9x/apu/sinc_resampler.h
+	snes9x/apu/SNES_SPC.h
+	snes9x/apu/SPC_CPU.h
+	snes9x/apu/SPC_DSP.h
+	snes9x/cpuaddr.h
+	snes9x/cpuexec.h
+	snes9x/cpumacro.h
+	snes9x/dma.h
+	snes9x/getset.h
+	snes9x/memmap.h
+	snes9x/port.h
+	snes9x/ppu.h
+	snes9x/sdd1.h
+	snes9x/snes9x.h
+	XSFConfig_SNSF.h)
+set(SOURCES
+	snes9x/apu/apu.cpp
+	snes9x/apu/SNES_SPC.cpp
+	snes9x/apu/SNES_SPC_misc.cpp
+	snes9x/apu/SPC_DSP.cpp
+	snes9x/cpu.cpp
+	snes9x/cpuexec.cpp
+	snes9x/cpuops.cpp
+	snes9x/dma.cpp
+	snes9x/globals.cpp
+	snes9x/memmap.cpp
+	snes9x/ppu.cpp
+	snes9x/sdd1.cpp
+	XSFConfig_SNSF.cpp
+	XSFPlayer_SNSF.cpp)
 
+add_library(in_snsf SHARED ${HEADERS} ${SOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${HEADERS})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Source Files" FILES ${SOURCES})
+target_link_libraries(in_snsf
+	in_xsf_framework)
+

--- a/src/in_snsf/in_snsf.vcxproj
+++ b/src/in_snsf/in_snsf.vcxproj
@@ -128,6 +128,9 @@
       <Project>{9d6d2540-b3dc-462b-bbc0-5b7c32a4d581}</Project>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

--- a/src/in_snsf/in_snsf.vcxproj.filters
+++ b/src/in_snsf/in_snsf.vcxproj.filters
@@ -153,4 +153,7 @@
       <Filter>Header Files\snes9x\apu</Filter>
     </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
 </Project>

--- a/src/in_xsf.sln
+++ b/src/in_xsf.sln
@@ -12,6 +12,11 @@
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "in_ncsf", "in_ncsf\in_ncsf.vcxproj", "{4EDC9B55-39BE-4D36-8819-F414FC77ED1E}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "in_xsf_framework", "in_xsf_framework\in_xsf_framework.vcxproj", "{9D6D2540-B3DC-462B-BBC0-5B7C32A4D581}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FFA9BB94-5C63-468F-8A9C-65FD7D3715E2}"
+	ProjectSection(SolutionItems) = preProject
+		CMakeLists.txt = CMakeLists.txt
+	EndProjectSection
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

--- /dev/null
+++ b/src/in_xsf_framework/CMakeLists.txt
@@ -1,1 +1,248 @@
-
+# zlib
+add_subdirectory(zlib)
+
+# wxWidgets
+# Force settings
+set(wxBUILD_COMPATIBILITY 3.1 CACHE STRING " " FORCE)
+set(wxBUILD_INSTALL OFF CACHE BOOL " " FORCE)
+set(wxBUILD_OPTIMIZE ON CACHE BOOL " " FORCE)
+set(wxBUILD_PRECOMP OFF CACHE BOOL " " FORCE)
+set(wxBUILD_SHARED OFF CACHE BOOL " " FORCE)
+set(wxUSE_ABOUTDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_ACCEL OFF CACHE BOOL " " FORCE)
+set(wxUSE_ACCESSIBILITY OFF CACHE BOOL " " FORCE)
+set(wxUSE_ACTIVEX OFF CACHE BOOL " " FORCE)
+set(wxUSE_ACTIVITYINDICATOR OFF CACHE BOOL " " FORCE)
+set(wxUSE_ADDREMOVECTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_AFM_FOR_POSTSCRIPT OFF CACHE BOOL " " FORCE)
+set(wxUSE_ANIMATIONCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_ANY OFF CACHE BOOL " " FORCE)
+set(wxUSE_APPLE_IEEE OFF CACHE BOOL " " FORCE)
+set(wxUSE_ARCHIVE_STREAMS OFF CACHE BOOL " " FORCE)
+set(wxUSE_ARTPROVIDER_STD OFF CACHE BOOL " " FORCE)
+set(wxUSE_ARTPROVIDER_TANGO OFF CACHE BOOL " " FORCE)
+set(wxUSE_AUI OFF CACHE BOOL " " FORCE)
+set(wxUSE_BANNERWINDOW OFF CACHE BOOL " " FORCE)
+set(wxUSE_BASE64 OFF CACHE BOOL " " FORCE)
+set(wxUSE_BITMAPCOMBOBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_BMPBUTTON OFF CACHE BOOL " " FORCE)
+set(wxUSE_BUSYINFO OFF CACHE BOOL " " FORCE)
+set(wxUSE_CALENDARCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_CARET OFF CACHE BOOL " " FORCE)
+set(wxUSE_CHECKLISTBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_CHOICEBOOK OFF CACHE BOOL " " FORCE)
+set(wxUSE_CHOICEDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_CLIPBOARD OFF CACHE BOOL " " FORCE)
+set(wxUSE_CMDLINE_PARSER OFF CACHE BOOL " " FORCE)
+set(wxUSE_COLLPANE OFF CACHE BOOL " " FORCE)
+set(wxUSE_COLOURDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_COLOURPICKERCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_COMBOBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_COMBOCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_COMMANDLINKBUTTON OFF CACHE BOOL " " FORCE)
+set(wxUSE_CONFIG OFF CACHE BOOL " " FORCE)
+set(wxUSE_CONSOLE_EVENTLOOP OFF CACHE BOOL " " FORCE)
+set(wxUSE_CRASHREPORT OFF CACHE BOOL " " FORCE)
+set(wxUSE_DATAVIEWCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_DATEPICKCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_DATETIME OFF CACHE BOOL " " FORCE)
+set(wxUSE_DBGHELP OFF CACHE BOOL " " FORCE)
+set(wxUSE_DC_TRANSFORM_MATRIX OFF CACHE BOOL " " FORCE)
+set(wxUSE_DEBUGREPORT OFF CACHE BOOL " " FORCE)
+set(wxUSE_DIALUP_MANAGER OFF CACHE BOOL " " FORCE)
+set(wxUSE_DIRDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_DIRPICKERCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_DISPLAY OFF CACHE BOOL " " FORCE)
+set(wxUSE_DOC_VIEW_ARCHITECTURE OFF CACHE BOOL " " FORCE)
+set(wxUSE_DRAG_AND_DROP OFF CACHE BOOL " " FORCE)
+set(wxUSE_DRAGIMAGE OFF CACHE BOOL " " FORCE)
+set(wxUSE_EDITABLELISTBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_EXPAT OFF CACHE STRING " " FORCE)
+set(wxUSE_FILE_HISTORY OFF CACHE BOOL " " FORCE)
+set(wxUSE_FILECTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_FILEDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_FILEPICKERCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_FILESYSTEM OFF CACHE BOOL " " FORCE)
+set(wxUSE_FINDREPLDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_FONTDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_FONTENUM OFF CACHE BOOL " " FORCE)
+set(wxUSE_FONTMAP OFF CACHE BOOL " " FORCE)
+set(wxUSE_FONTPICKERCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_FS_ARCHIVE OFF CACHE BOOL " " FORCE)
+set(wxUSE_FS_INET OFF CACHE BOOL " " FORCE)
+set(wxUSE_FS_ZIP OFF CACHE BOOL " " FORCE)
+set(wxUSE_FSVOLUME OFF CACHE BOOL " " FORCE)
+set(wxUSE_FSWATCHER OFF CACHE BOOL " " FORCE)
+set(wxUSE_GAUGE OFF CACHE BOOL " " FORCE)
+set(wxUSE_GEOMETRY OFF CACHE BOOL " " FORCE)
+set(wxUSE_GIF OFF CACHE BOOL " " FORCE)
+set(wxUSE_GRAPHICS_CONTEXT OFF CACHE BOOL " " FORCE)
+set(wxUSE_GRAPHICS_DIRECT2D OFF CACHE BOOL " " FORCE)
+set(wxUSE_HELP OFF CACHE BOOL " " FORCE)
+set(wxUSE_HOTKEY OFF CACHE BOOL " " FORCE)
+set(wxUSE_HTML OFF CACHE BOOL " " FORCE)
+set(wxUSE_HYPERLINKCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_ICO_CUR OFF CACHE BOOL " " FORCE)
+set(wxUSE_IFF OFF CACHE BOOL " " FORCE)
+set(wxUSE_INFOBAR OFF CACHE BOOL " " FORCE)
+set(wxUSE_INICONF OFF CACHE BOOL " " FORCE)
+set(wxUSE_INTL OFF CACHE BOOL " " FORCE)
+set(wxUSE_IPC OFF CACHE BOOL " " FORCE)
+set(wxUSE_IPV6 OFF CACHE BOOL " " FORCE)
+set(wxUSE_JOYSTICK OFF CACHE BOOL " " FORCE)
+set(wxUSE_LIBJPEG OFF CACHE STRING " " FORCE)
+set(wxUSE_LIBPNG OFF CACHE STRING " " FORCE)
+set(wxUSE_LIBTIFF OFF CACHE STRING " " FORCE)
+set(wxUSE_LISTBOOK OFF CACHE BOOL " " FORCE)
+set(wxUSE_LISTCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_LOG OFF CACHE BOOL " " FORCE)
+set(wxUSE_LOG_DIALOG OFF CACHE BOOL " " FORCE)
+set(wxUSE_LOGGUI OFF CACHE BOOL " " FORCE)
+set(wxUSE_LOGWINDOW OFF CACHE BOOL " " FORCE)
+set(wxUSE_LONGLONG OFF CACHE BOOL " " FORCE)
+set(wxUSE_MARKUP OFF CACHE BOOL " " FORCE)
+set(wxUSE_MDI OFF CACHE BOOL " " FORCE)
+set(wxUSE_MDI_ARCHITECTURE OFF CACHE BOOL " " FORCE)
+set(wxUSE_MEDIACTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_METAFILE OFF CACHE BOOL " " FORCE)
+set(wxUSE_MIMETYPE OFF CACHE BOOL " " FORCE)
+set(wxUSE_MINIFRAME OFF CACHE BOOL " " FORCE)
+set(wxUSE_MOUSEWHEEL OFF CACHE BOOL " " FORCE)
+set(wxUSE_MS_HTML_HELP OFF CACHE BOOL " " FORCE)
+set(wxUSE_NATIVE_DATAVIEWCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_NATIVE_PROGRESSDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_NATIVE_STATUSBAR OFF CACHE BOOL " " FORCE)
+set(wxUSE_NOTIFICATION_MESSAGE OFF CACHE BOOL " " FORCE)
+set(wxUSE_NUMBERDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_ODCOMBOBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_PALETTE OFF CACHE BOOL " " FORCE)
+set(wxUSE_PCX OFF CACHE BOOL " " FORCE)
+set(wxUSE_PNM OFF CACHE BOOL " " FORCE)
+set(wxUSE_POPUPWIN OFF CACHE BOOL " " FORCE)
+set(wxUSE_POSTSCRIPT OFF CACHE BOOL " " FORCE)
+set(wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW OFF CACHE BOOL " " FORCE)
+set(wxUSE_PREFERENCES_EDITOR OFF CACHE BOOL " " FORCE)
+set(wxUSE_PRINTF_POS_PARAMS OFF CACHE BOOL " " FORCE)
+set(wxUSE_PRINTING_ARCHITECTURE OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROGRESSDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROPGRID OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROTOCOL OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROTOCOL_FILE OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROTOCOL_FTP OFF CACHE BOOL " " FORCE)
+set(wxUSE_PROTOCOL_HTTP OFF CACHE BOOL " " FORCE)
+set(wxUSE_RADIOBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_RADIOBTN OFF CACHE BOOL " " FORCE)
+set(wxUSE_REARRANGECTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_REGKEY OFF CACHE BOOL " " FORCE)
+set(wxUSE_RIBBON OFF CACHE BOOL " " FORCE)
+set(wxUSE_RICHMSGDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_RICHTEXT OFF CACHE BOOL " " FORCE)
+set(wxUSE_RICHTOOLTIP OFF CACHE BOOL " " FORCE)
+set(wxUSE_SASH OFF CACHE BOOL " " FORCE)
+set(wxUSE_SEARCHCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_SECRETSTORE OFF CACHE BOOL " " FORCE)
+set(wxUSE_SLIDER OFF CACHE BOOL " " FORCE)
+set(wxUSE_SNGLINST_CHECKER OFF CACHE BOOL " " FORCE)
+set(wxUSE_SOCKETS OFF CACHE BOOL " " FORCE)
+set(wxUSE_SOUND OFF CACHE BOOL " " FORCE)
+set(wxUSE_SPINBTN OFF CACHE BOOL " " FORCE)
+set(wxUSE_SPINCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_SPLASH OFF CACHE BOOL " " FORCE)
+set(wxUSE_SPLINES OFF CACHE BOOL " " FORCE)
+set(wxUSE_SPLITTER OFF CACHE BOOL " " FORCE)
+set(wxUSE_STACKWALKER OFF CACHE BOOL " " FORCE)
+set(wxUSE_STARTUP_TIPS OFF CACHE BOOL " " FORCE)
+set(wxUSE_STATBMP OFF CACHE BOOL " " FORCE)
+set(wxUSE_STATBOX OFF CACHE BOOL " " FORCE)
+set(wxUSE_STATLINE OFF CACHE BOOL " " FORCE)
+set(wxUSE_STATUSBAR OFF CACHE BOOL " " FORCE)
+set(wxUSE_STC OFF CACHE BOOL " " FORCE)
+set(wxUSE_STDPATHS OFF CACHE BOOL " " FORCE)
+set(wxUSE_STOPWATCH OFF CACHE BOOL " " FORCE)
+set(wxUSE_STL ON CACHE BOOL " " FORCE)
+set(wxUSE_SVG OFF CACHE BOOL " " FORCE)
+set(wxUSE_SYSTEM_OPTIONS OFF CACHE BOOL " " FORCE)
+set(wxUSE_TARSTREAM OFF CACHE BOOL " " FORCE)
+set(wxUSE_TASKBARBUTTON OFF CACHE BOOL " " FORCE)
+set(wxUSE_TASKBARICON OFF CACHE BOOL " " FORCE)
+set(wxUSE_TASKBARICON_BALLOONS OFF CACHE BOOL " " FORCE)
+set(wxUSE_TEXTBUFFER OFF CACHE BOOL " " FORCE)
+set(wxUSE_TEXTDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_TEXTFILE OFF CACHE BOOL " " FORCE)
+set(wxUSE_TGA OFF CACHE BOOL " " FORCE)
+set(wxUSE_THREADS OFF CACHE BOOL " " FORCE)
+set(wxUSE_TIMEPICKCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_TIMER OFF CACHE BOOL " " FORCE)
+set(wxUSE_TIPWINDOW OFF CACHE BOOL " " FORCE)
+set(wxUSE_TOGGLEBTN OFF CACHE BOOL " " FORCE)
+set(wxUSE_TOOLBAR OFF CACHE BOOL " " FORCE)
+set(wxUSE_TOOLBAR_NATIVE OFF CACHE BOOL " " FORCE)
+set(wxUSE_TOOLBOOK OFF CACHE BOOL " " FORCE)
+set(wxUSE_TOOLTIPS OFF CACHE BOOL " " FORCE)
+set(wxUSE_TREEBOOK OFF CACHE BOOL " " FORCE)
+set(wxUSE_TREECTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_TREELISTCTRL OFF CACHE BOOL " " FORCE)
+set(wxUSE_UIACTIONSIMULATOR OFF CACHE BOOL " " FORCE)
+set(wxUSE_UNSAFE_WXSTRING_CONV OFF CACHE BOOL " " FORCE)
+set(wxUSE_URL OFF CACHE BOOL " " FORCE)
+set(wxUSE_WEBVIEW OFF CACHE BOOL " " FORCE)
+set(wxUSE_WEBVIEW_IE OFF CACHE BOOL " " FORCE)
+set(wxUSE_WEBVIEW_WEBKIT OFF CACHE BOOL " " FORCE)
+set(wxUSE_WINRT OFF CACHE BOOL " " FORCE)
+set(wxUSE_WIZARDDLG OFF CACHE BOOL " " FORCE)
+set(wxUSE_WXHTML_HELP OFF CACHE BOOL " " FORCE)
+set(wxUSE_XLOCALE OFF CACHE BOOL " " FORCE)
+set(wxUSE_XML OFF CACHE BOOL " " FORCE)
+set(wxUSE_XPM OFF CACHE BOOL " " FORCE)
+set(wxUSE_XRC OFF CACHE BOOL " " FORCE)
+set(wxUSE_ZIPSTREAM OFF CACHE BOOL " " FORCE)
+set(wxUSE_ZLIB OFF CACHE STRING " " FORCE)
+
+add_subdirectory(wxWidgets)
+
+# in_xsf_framework
+set(WINAMP_HEADERS
+	winamp/in2.h
+	winamp/out.h
+	winamp/wa_ipc.h)
+set(HEADERS
+	${WINAMP_HEADERS}
+	convert.h
+	DialogBuilder.h
+	eqstr.h
+	ltstr.h
+	TagList.h
+	windowsh_wrapper.h
+	XSFCommon.h
+	XSFConfig.h
+	XSFFile.h
+	XSFPlayer.h)
+set(SOURCES
+	DialogBuilder.cpp
+	in_xsf.cpp
+	TagList.cpp
+	XSFConfig.cpp
+	XSFConfig_Winamp.cpp
+	XSFFile.cpp
+	XSFPlayer.cpp)
+
+add_library(in_xsf_framework STATIC ${HEADERS} ${SOURCES})
+source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} PREFIX "Header Files" FILES ${HEADERS})
+source_group("Source Files" ${SOURCES})
+target_compile_definitions(in_xsf_framework PUBLIC
+	_CRT_SECURE_NO_WARNINGS
+	WINAMP_PLUGIN
+	UNICODE_INPUT_PLUGIN
+	$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Debug>>:_ITERATOR_DEBUG_LEVEL=0>)
+target_compile_options(in_xsf_framework PUBLIC
+	$<$<CXX_COMPILER_ID:MSVC>:/W4>)
+target_include_directories(in_xsf_framework PUBLIC
+	${CMAKE_CURRENT_SOURCE_DIR}
+	${CMAKE_CURRENT_SOURCE_DIR}/winamp
+	${CMAKE_CURRENT_SOURCE_DIR}/zlib
+	${CMAKE_CURRENT_BINARY_DIR}/zlib)
+target_link_libraries(in_xsf_framework
+	wx::base
+	wx::core
+	zlibstatic)
+

--- a/src/in_xsf_framework/in_xsf_framework.vcxproj
+++ b/src/in_xsf_framework/in_xsf_framework.vcxproj
@@ -110,6 +110,9 @@
     <ClCompile Include="zlib\uncompr.c" />
     <ClCompile Include="zlib\zutil.c" />
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

--- a/src/in_xsf_framework/in_xsf_framework.vcxproj.filters
+++ b/src/in_xsf_framework/in_xsf_framework.vcxproj.filters
@@ -123,4 +123,7 @@
       <Filter>Source Files\zlib</Filter>
     </ClCompile>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="CMakeLists.txt" />
+  </ItemGroup>
 </Project>