MSVC fixes (#4352)

* locale: using path instead of individual files to reduce command line size
* remotevstplugin: changed order return type & calling convention (compiler error)
* lmmsobj: removed single quotes for command line defines
* added vcpkg support & std::make_unique for MSVC
* carla: include exports header
* package_linux: corrected RemoteVstPlugin name
* vstbase: toolchain file conditional on MSVC
* Added install for remotevstplugin
* msvc: installer works with vcpkg

Remotevst 64bit install removed due to an ApImage problem
This commit is contained in:
justnope
2018-05-22 15:46:00 +02:00
committed by Lukas W
parent 5744c2ad97
commit 3beac2ce7f
10 changed files with 257 additions and 113 deletions

View File

@@ -26,9 +26,9 @@
#define CARLA_H
#include <QtCore/QMutex>
#include "plugin_export.h"
#include "CarlaNative.h"
#include "Instrument.h"
#include "InstrumentView.h"

View File

@@ -24,7 +24,6 @@ SET(EXTERNALPROJECT_CMAKE_ARGS
"-DLMMS_SOURCE_DIR=${CMAKE_SOURCE_DIR}"
"-DLMMS_BINARY_DIR=${CMAKE_BINARY_DIR}"
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
"-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}"
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
)
@@ -33,29 +32,23 @@ SET(EXTERNALPROJECT_CMAKE_ARGS
IF(LMMS_BUILD_WIN32 AND NOT LMMS_BUILD_WIN64)
ADD_SUBDIRECTORY(RemoteVstPlugin)
ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
SET(MSVC_VER ${CMAKE_CXX_COMPILER_VERSION})
STRING(REPLACE " Win64" "" GENERATOR ${CMAKE_GENERATOR})
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()
IF(NOT USING_VCPKG)
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()
ENDIF(NOT USING_VCPKG)
ExternalProject_Add(RemoteVstPlugin32
"${EXTERNALPROJECT_ARGS}"
CMAKE_GENERATOR ${GENERATOR}
CMAKE_GENERATOR_TOOLSET ${CMAKE_GENERATOR_TOOLSET}
CMAKE_ARGS
"${EXTERNALPROJECT_CMAKE_ARGS}"
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
"-DCMAKE_PREFIX_PATH=${QT_32_PREFIX}"
)
ELSEIF(LMMS_BUILD_LINUX)
@@ -82,6 +75,7 @@ ENDIF()
# build 64 bit version of RemoteVstPlugin
IF(LMMS_BUILD_WIN64)
ADD_SUBDIRECTORY(RemoteVstPlugin)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin64.exe" DESTINATION "${PLUGIN_DIR}")
ELSEIF(LMMS_BUILD_LINUX)
ExternalProject_Add(RemoteVstPlugin64
"${EXTERNALPROJECT_ARGS}"
@@ -91,3 +85,11 @@ ELSEIF(LMMS_BUILD_LINUX)
"-DCMAKE_CXX_FLAGS=-m64 -mwindows"
)
ENDIF()
IF(TARGET RemoteVstPlugin32)
IF(LMMS_BUILD_LINUX)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}")
ELSEIF(LMMS_BUILD_WIN32)
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../RemoteVstPlugin32.exe" DESTINATION "${PLUGIN_DIR}")
ENDIF()
ENDIF()

View File

@@ -328,7 +328,7 @@ private:
} ;
// callback used by plugin for being able to communicate with it's host
static VST_CALL_CONV intptr_t hostCallback( AEffect * _effect, int32_t _opcode,
static intptr_t VST_CALL_CONV hostCallback( AEffect * _effect, int32_t _opcode,
int32_t _index, intptr_t _value,
void * _ptr, float _opt );

View File

@@ -20,6 +20,11 @@ else()
set(BITNESS 32)
endif()
FOREACH( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
STRING(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
ENDFOREACH()
set(EXE_NAME RemoteVstPlugin${BITNESS})
add_executable(${EXE_NAME}
../RemoteVstPlugin.cpp