IF(NOT LMMS_SUPPORT_VST)
	RETURN()
ENDIF()

INCLUDE(BuildPlugin)
INCLUDE(ExternalProject)

ADD_SUBDIRECTORY(vstbase)

SET(LMMS_BINARY_DIR ${CMAKE_BINARY_DIR})
SET(LMMS_SOURCE_DIR ${CMAKE_SOURCE_DIR})
SET(EXTERNALPROJECT_ARGS "")

# build 32 bit version of RemoteVstPlugin
IF(LMMS_BUILD_WIN64 AND MSVC)

	SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})

	IF(MSVC_VER VERSION_GREATER 19.0 OR MSVC_VER VERSION_EQUAL 19.0)
		SET(GENERATOR "Visual Studio 14 2015")
		SET(MSVC_YEAR 2015)
	ELSEIF(MSVC_VER VERSION_EQUAL 19.10 OR MSVC_VER VERSION_EQUAL 19.10)
		SET(GENERATOR "Visual Studio 15 2017")
		SET(MSVC_YEAR 2017)
	ELSE()
		MESSAGE(SEND_ERROR "Can't build RemoteVstPlugin32, unknown MSVC version ${MSVC_VER}")
	ENDIF()

	GET_FILENAME_COMPONENT(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} DIRECTORY)
	SET(QT_32_PREFIX "${QT_BIN_DIR}/../../msvc${MSVC_YEAR}")
    IF(NOT (IS_DIRECTORY ${QT_32_PREFIX} AND EXISTS ${QT_32_PREFIX}/bin/qmake.exe))
		MESSAGE(SEND_ERROR "Can't build RemoteVstPlugin32, no Qt 32 bit installation found at ${QT_32_PREFIX}")
	ENDIF()

	ExternalProject_Add(RemoteVstPlugin32
		SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin"
		INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/../"
		CMAKE_GENERATOR ${GENERATOR}
		CMAKE_ARGS
			-DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR}
			-DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR}
			-DCMAKE_PREFIX_PATH=${QT_32_PREFIX}
			-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
		INSTALL_COMMAND ""
		BUILD_ALWAYS ON
	)
ELSEIF(LMMS_BUILD_WIN32)
	ADD_SUBDIRECTORY(RemoteVstPlugin)
ELSEIF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE)
	ExternalProject_Add(RemoteVstPlugin32
		SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin"
		INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/../"
		CMAKE_ARGS
			-DCMAKE_CXX_COMPILER=${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin/winegcc
			-DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR}
			-DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR}
			-DCMAKE_CXX_FLAGS="-m32"
			-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
			-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
		INSTALL_COMMAND ""
		BUILD_ALWAYS ON
	)
ENDIF()

# build 64 bit version of RemoteVstPlugin
IF(LMMS_BUILD_WIN64)
	ADD_SUBDIRECTORY(RemoteVstPlugin)
ELSEIF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE)
	ExternalProject_Add(RemoteVstPlugin64
		SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin"
		INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/../"
		CMAKE_ARGS
			-DCMAKE_C_COMPILER=${WINE_CXX}
			-DCMAKE_CXX_COMPILER=${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin/winegcc
			-DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR}
			-DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR}
			-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
			-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
		INSTALL_COMMAND ""
		BUILD_ALWAYS ON
	)
ENDIF()
