# 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
	RegExValidator.h
	TagList.h
	windowsh_wrapper.h
	XSFCommon.h
	XSFConfig.h
	XSFFile.h
	XSFPlayer.h)
set(SOURCES
	DialogBuilder.cpp
	in_xsf.cpp
	RegExValidator.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 /wd4244 /wd6258 /wd26451 /wd28159>)
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)