Support VSTs on Linux even if Wine is unavailable (#7205)
This commit is contained in:
@@ -94,8 +94,8 @@ OPTION(WANT_STK "Include Stk (Synthesis Toolkit) support" ON)
|
||||
OPTION(WANT_SWH "Include Steve Harris's LADSPA plugins" ON)
|
||||
OPTION(WANT_TAP "Include Tom's Audio Processing LADSPA plugins" ON)
|
||||
OPTION(WANT_VST "Include VST support" ON)
|
||||
OPTION(WANT_VST_32 "Include 32-bit VST support" ON)
|
||||
OPTION(WANT_VST_64 "Include 64-bit VST support" ON)
|
||||
OPTION(WANT_VST_32 "Include 32-bit Windows VST support" ON)
|
||||
OPTION(WANT_VST_64 "Include 64-bit Windows VST support" ON)
|
||||
OPTION(WANT_WINMM "Include WinMM MIDI support" OFF)
|
||||
OPTION(WANT_DEBUG_FPE "Debug floating point exceptions" OFF)
|
||||
option(WANT_DEBUG_ASAN "Enable AddressSanitizer" OFF)
|
||||
@@ -131,6 +131,9 @@ IF(LMMS_BUILD_WIN32)
|
||||
SET(WANT_WINMM ON)
|
||||
SET(BUNDLE_QT_TRANSLATIONS ON)
|
||||
SET(LMMS_HAVE_WINMM TRUE)
|
||||
if(NOT LMMS_BUILD_WIN64)
|
||||
set(WANT_VST_64 OFF)
|
||||
endif()
|
||||
SET(STATUS_ALSA "<not supported on this platform>")
|
||||
SET(STATUS_OSS "<not supported on this platform>")
|
||||
SET(STATUS_PULSEAUDIO "<not supported on this platform>")
|
||||
@@ -587,26 +590,42 @@ IF(WANT_SNDIO)
|
||||
ENDIF(WANT_SNDIO)
|
||||
|
||||
# check for WINE
|
||||
IF(WANT_VST)
|
||||
FIND_PACKAGE(Wine)
|
||||
IF(WINE_FOUND)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
IF(WINE_LIBRARY_FIX)
|
||||
SET(STATUS_VST "OK, with workaround linking ${WINE_LIBRARY_FIX}")
|
||||
ELSE()
|
||||
SET(STATUS_VST "OK")
|
||||
ENDIF()
|
||||
ELSEIF(WANT_VST_NOWINE)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
SET(STATUS_VST "OK")
|
||||
ELSE(WINE_FOUND)
|
||||
SET(STATUS_VST "not found, please install (lib)wine-dev (or similar) - 64 bit systems additionally need gcc-multilib and g++-multilib")
|
||||
ENDIF(WINE_FOUND)
|
||||
ENDIF(WANT_VST)
|
||||
IF(LMMS_BUILD_WIN32)
|
||||
SET(LMMS_SUPPORT_VST TRUE)
|
||||
SET(STATUS_VST "OK")
|
||||
ENDIF(LMMS_BUILD_WIN32)
|
||||
if(WANT_VST)
|
||||
if((WANT_VST_32 OR WANT_VST_64) AND NOT LMMS_BUILD_WIN32)
|
||||
find_package(Wine)
|
||||
include(CheckWineGcc)
|
||||
endif()
|
||||
macro(check_vst bits)
|
||||
if(NOT WANT_VST_${bits})
|
||||
set(STATUS_VST_${bits} "Not built, as requested")
|
||||
elseif(LMMS_BUILD_WIN32)
|
||||
set(STATUS_VST_${bits} "OK")
|
||||
set(LMMS_HAVE_VST_${bits} TRUE)
|
||||
elseif(NOT WINE_FOUND)
|
||||
set(STATUS_VST_${bits} "not found, please install (lib)wine-dev (or similar) - 64 bit systems additionally need gcc-multilib and g++-multilib")
|
||||
else()
|
||||
CheckWineGcc("${bits}" "${WINEGCC}" WINEGCC_WORKING)
|
||||
if(WINEGCC_WORKING)
|
||||
set(LMMS_HAVE_VST_${bits} TRUE)
|
||||
if(WINE_LIBRARY_FIX)
|
||||
set(STATUS_VST_${bits} "OK, with workaround linking ${WINE_LIBRARY_FIX}")
|
||||
else()
|
||||
set(STATUS_VST_${bits} "OK")
|
||||
endif()
|
||||
else()
|
||||
set(STATUS_VST_${bits} "winegcc fails to compile ${bits}-bit binaries, please make sure you have ${bits}-bit GCC libraries")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
check_vst(32)
|
||||
check_vst(64)
|
||||
if(LMMS_HAVE_VST_32 OR LMMS_HAVE_VST_64 OR LMMS_BUILD_LINUX)
|
||||
set(LMMS_HAVE_VST TRUE)
|
||||
set(STATUS_VST "OK")
|
||||
else()
|
||||
set(STATUS_VST "No hosts selected and available")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
IF(WANT_DEBUG_FPE)
|
||||
IF(LMMS_BUILD_LINUX OR LMMS_BUILD_APPLE)
|
||||
@@ -852,8 +871,9 @@ MESSAGE(
|
||||
"* SoundFont2 player : ${STATUS_FLUIDSYNTH}\n"
|
||||
"* Sid instrument : ${STATUS_SID}\n"
|
||||
"* Stk Mallets : ${STATUS_STK}\n"
|
||||
"* VST-instrument hoster : ${STATUS_VST}\n"
|
||||
"* VST-effect hoster : ${STATUS_VST}\n"
|
||||
"* VST plugin host : ${STATUS_VST}\n"
|
||||
" * 32-bit Windows host : ${STATUS_VST_32}\n"
|
||||
" * 64-bit Windows host : ${STATUS_VST_64}\n"
|
||||
"* CALF LADSPA plugins : ${STATUS_CALF}\n"
|
||||
"* CAPS LADSPA plugins : ${STATUS_CAPS}\n"
|
||||
"* CMT LADSPA plugins : ${STATUS_CMT}\n"
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
IF(LMMS_SUPPORT_VST)
|
||||
INCLUDE(BuildPlugin)
|
||||
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/..")
|
||||
IF(LMMS_BUILD_LINUX)
|
||||
LINK_LIBRARIES(-Wl,--enable-new-dtags)
|
||||
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
SET(CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||
ELSE()
|
||||
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PLUGIN_DIR}")
|
||||
ENDIF()
|
||||
BUILD_PLUGIN(vestige Vestige.cpp Vestige.h MOCFILES Vestige.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png")
|
||||
TARGET_LINK_LIBRARIES(vestige vstbase)
|
||||
ENDIF(LMMS_SUPPORT_VST)
|
||||
if(NOT LMMS_HAVE_VST)
|
||||
return()
|
||||
endif()
|
||||
|
||||
include(BuildPlugin)
|
||||
link_directories("${CMAKE_CURRENT_BINARY_DIR}/..")
|
||||
if(LMMS_BUILD_LINUX)
|
||||
link_libraries(-Wl,--enable-new-dtags)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||
else()
|
||||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PLUGIN_DIR}")
|
||||
endif()
|
||||
build_plugin(vestige Vestige.cpp Vestige.h MOCFILES Vestige.h EMBEDDED_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/*.png")
|
||||
target_link_libraries(vestige vstbase)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
IF(NOT LMMS_SUPPORT_VST)
|
||||
if(NOT LMMS_HAVE_VST)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
@@ -47,11 +47,11 @@ foreach(var ${export_variables})
|
||||
endforeach()
|
||||
|
||||
# build 32 bit version of RemoteVstPlugin
|
||||
IF(WANT_VST_32)
|
||||
if(LMMS_HAVE_VST_32)
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin32.cmake")
|
||||
ENDIF()
|
||||
# build 64 bit version of RemoteVstPlugin
|
||||
IF(WANT_VST_64)
|
||||
if(LMMS_HAVE_VST_64)
|
||||
INCLUDE("${CMAKE_CURRENT_LIST_DIR}/RemoteVstPlugin64.cmake")
|
||||
ENDIF()
|
||||
|
||||
|
||||
@@ -47,13 +47,6 @@ ELSEIF(LMMS_BUILD_WIN64 AND MSVC)
|
||||
|
||||
INSTALL_EXTERNAL_PROJECT(RemoteVstPlugin32)
|
||||
ELSEIF(LMMS_BUILD_LINUX)
|
||||
# Use winegcc
|
||||
INCLUDE(CheckWineGcc)
|
||||
CheckWineGcc(32 "${WINEGCC}" WINEGCC_WORKING)
|
||||
IF(NOT WINEGCC_WORKING)
|
||||
MESSAGE(WARNING "winegcc fails to compile 32-bit binaries, please make sure you have 32-bit GCC libraries")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ExternalProject_Add(RemoteVstPlugin32
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
CMAKE_ARGS
|
||||
@@ -63,7 +56,6 @@ ELSEIF(LMMS_BUILD_LINUX)
|
||||
)
|
||||
|
||||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32" "${CMAKE_CURRENT_BINARY_DIR}/../32/RemoteVstPlugin32.exe.so" DESTINATION "${PLUGIN_DIR}/32")
|
||||
|
||||
ELSEIF(CMAKE_TOOLCHAIN_FILE_32)
|
||||
ExternalProject_Add(RemoteVstPlugin32
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
IF(LMMS_BUILD_WIN64)
|
||||
ADD_SUBDIRECTORY(RemoteVstPlugin)
|
||||
ELSEIF(LMMS_BUILD_LINUX)
|
||||
INCLUDE(CheckWineGcc)
|
||||
CheckWineGcc(64 "${WINEGCC}" WINEGCC_WORKING)
|
||||
IF(NOT WINEGCC_WORKING)
|
||||
MESSAGE(WARNING "winegcc fails to compile 64-bit binaries, please make sure you have 64-bit GCC libraries")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ExternalProject_Add(RemoteVstPlugin64
|
||||
"${EXTERNALPROJECT_ARGS}"
|
||||
CMAKE_ARGS
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
IF(LMMS_SUPPORT_VST)
|
||||
if(NOT LMMS_HAVE_VST)
|
||||
return()
|
||||
endif()
|
||||
|
||||
INCLUDE(BuildPlugin)
|
||||
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/../vst_base")
|
||||
LINK_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}/..")
|
||||
@@ -12,6 +15,3 @@ ENDIF()
|
||||
|
||||
BUILD_PLUGIN(vsteffect VstEffect.cpp VstEffectControls.cpp VstEffectControlDialog.cpp VstSubPluginFeatures.cpp VstEffect.h VstEffectControls.h VstEffectControlDialog.h VstSubPluginFeatures.h MOCFILES VstEffectControlDialog.h VstEffectControls.h EMBEDDED_RESOURCES *.png)
|
||||
TARGET_LINK_LIBRARIES(vsteffect vstbase)
|
||||
|
||||
ENDIF(LMMS_SUPPORT_VST)
|
||||
|
||||
|
||||
2
src/3rdparty/CMakeLists.txt
vendored
2
src/3rdparty/CMakeLists.txt
vendored
@@ -1,4 +1,4 @@
|
||||
IF(LMMS_BUILD_LINUX AND WANT_VST)
|
||||
if(LMMS_BUILD_LINUX AND LMMS_HAVE_VST)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
add_subdirectory(qt5-x11embed)
|
||||
ENDIF()
|
||||
|
||||
Reference in New Issue
Block a user