-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mac OS X VST support #2393
Mac OS X VST support #2393
Changes from all commits
fa39292
d7a63c5
4fc7b4d
42b6b5f
4ff722d
87c9ad0
149b4fa
d4bda9a
98818fe
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -63,3 +63,63 @@ MACRO(BUILD_PLUGIN PLUGIN_NAME) | |
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}") | ||
ENDMACRO(BUILD_PLUGIN) | ||
|
||
MACRO(BUILD_LIKE_A_PLUGIN PLUGIN_NAME) | ||
CMAKE_PARSE_ARGUMENTS(PLUGIN "" "" "MOCFILES;EMBEDDED_RESOURCES;UICFILES;JUSTALIBRARY" ${ARGN}) | ||
SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS}) | ||
|
||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/gui) | ||
|
||
ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME}) | ||
|
||
LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN) | ||
IF(ER_LEN) | ||
SET(ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h) | ||
ADD_CUSTOM_COMMAND(OUTPUT ${ER_H} | ||
COMMAND ${BIN2RES} | ||
ARGS ${PLUGIN_EMBEDDED_RESOURCES} > ${ER_H} | ||
DEPENDS bin2res) | ||
ENDIF(ER_LEN) | ||
|
||
IF(QT5) | ||
QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES}) | ||
QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES}) | ||
ELSE() | ||
QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES}) | ||
QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES}) | ||
ENDIF() | ||
|
||
FOREACH(f ${PLUGIN_SOURCES}) | ||
ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_UIC_out}) | ||
ENDFOREACH(f) | ||
|
||
IF(LMMS_BUILD_APPLE) | ||
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}) | ||
LINK_LIBRARIES(${QT_LIBRARIES}) | ||
ENDIF(LMMS_BUILD_APPLE) | ||
IF(LMMS_BUILD_WIN32) | ||
LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) | ||
LINK_LIBRARIES(${QT_LIBRARIES}) | ||
ENDIF(LMMS_BUILD_WIN32) | ||
|
||
ADD_LIBRARY(${PLUGIN_NAME} SHARED ${PLUGIN_SOURCES} ${plugin_MOC_out}) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Probably worth keeping our existing macro and add something like: + SET(PLUGIN_TYPE "MODULE")
+ # Use shared library for Apple VSTs
+ IF (LMMS_BUILD_APPLE AND "${PLUGIN_NAME}" STREQUAL "vstbase")
+ SET(PLUGIN_TYPE "SHARED")
- ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES} ${plugin_MOC_out})
+ ADD_LIBRARY(${PLUGIN_NAME} ${PLUGIN_TYPE} ${PLUGIN_SOURCES} ${plugin_MOC_out})
+ ENDIF() |
||
IF(QT5) | ||
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} Qt5::Widgets Qt5::Xml) | ||
ENDIF() | ||
IF(LMMS_BUILD_WIN32) | ||
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms) | ||
ENDIF(LMMS_BUILD_WIN32) | ||
|
||
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}") | ||
|
||
IF(LMMS_BUILD_APPLE) | ||
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, probably worth keeping our existing macro and add something like: IF(LMMS_BUILD_APPLE)
+ SET(PLUGIN_LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms")
+ # Use special link flags for Apple VSTs
+ IF ("${PLUGIN_NAME}" STREQUAL "vstbase")
+ SET(PLUGIN_LINK_FLAGS "-undefined dynamic_lookup")
+ ENDIF()
- SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms")
+ SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "${PLUGIN_LINK_FLAGS}")
ENDIF(LMMS_BUILD_APPLE) |
||
ADD_DEPENDENCIES(${PLUGIN_NAME} lmms) | ||
ENDIF(LMMS_BUILD_APPLE) | ||
IF(LMMS_BUILD_WIN32) | ||
SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "") | ||
ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} $<TARGET_FILE:${PLUGIN_NAME}>) | ||
ENDIF(LMMS_BUILD_WIN32) | ||
|
||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}") | ||
ENDMACRO(BUILD_LIKE_A_PLUGIN) | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,7 @@ IF(LMMS_BUILD_WIN32) | |
ELSE() | ||
TARGET_LINK_LIBRARIES(RemoteVstPlugin -lQtCore4) | ||
ENDIF() | ||
TARGET_LINK_LIBRARIES(RemoteVstPlugin -lpthread -lgdi32 -lws2_32) | ||
TARGET_LINK_LIBRARIES(RemoteVstPlugin -lpthread -lgdi32 -lws2_32 -lstdc++) | ||
SET_TARGET_PROPERTIES(RemoteVstPlugin PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -O0") | ||
ADD_CUSTOM_COMMAND(TARGET RemoteVstPlugin POST_BUILD COMMAND "${STRIP}" "$<TARGET_FILE:RemoteVstPlugin>") | ||
INSTALL(TARGETS RemoteVstPlugin RUNTIME DESTINATION "${PLUGIN_DIR}") | ||
|
@@ -23,10 +23,10 @@ IF(LMMS_BUILD_WIN32) | |
ENDIF(LMMS_BUILD_WIN64) | ||
ENDIF(LMMS_BUILD_WIN32) | ||
|
||
BUILD_PLUGIN(vstbase vst_base.cpp VstPlugin.cpp VstPlugin.h communication.h MOCFILES VstPlugin.h) | ||
BUILD_LIKE_A_PLUGIN(vstbase vst_base.cpp VstPlugin.cpp VstPlugin.h communication.h MOCFILES VstPlugin.h) | ||
|
||
|
||
IF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE) | ||
IF(NOT WANT_VST_NOWINE) | ||
|
||
IF(LMMS_HOST_X86_64) | ||
SET(EXTRA_FLAGS -m32) | ||
|
@@ -39,17 +39,17 @@ IF(LMMS_HOST_X86_64) | |
ENDIF(LMMS_HOST_X86_64) | ||
|
||
ADD_CUSTOM_COMMAND( | ||
SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp" | ||
#SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This entire section may be worth breaking out into its own block under |
||
COMMAND ${WINE_CXX} | ||
ARGS "-I\"${CMAKE_BINARY_DIR}\"" "-I\"${CMAKE_SOURCE_DIR}/include\"" "-I\"${CMAKE_INSTALL_PREFIX}/include/wine/windows\"" "-I\"${CMAKE_INSTALL_PREFIX}/include\"" -I/usr/include/wine/windows "\"${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp\"" -ansi -mwindows -lpthread ${EXTRA_FLAGS} -o RemoteVstPlugin | ||
COMMAND find -name RemoteVstPlugin.exe -exec mv "'{}'" RemoteVstPlugin "';'" | ||
ARGS "-I\"${CMAKE_BINARY_DIR}\"" "-I\"${CMAKE_SOURCE_DIR}/include\"" "-I\"${CMAKE_INSTALL_PREFIX}/include/wine/windows\"" "-I\"${CMAKE_INSTALL_PREFIX}/include\"" -I/usr/include/wine/windows "\"${CMAKE_CURRENT_SOURCE_DIR}/RemoteVstPlugin.cpp\"" -ansi -mwindows -lpthread ${EXTRA_FLAGS} -o RemoteVstPlugin -stdlib=libstdc++ -nostdlib -l stdc++ -l wine -D USE_WS_PREFIX | ||
COMMAND find . -name RemoteVstPlugin.exe -exec mv "'{}'" RemoteVstPlugin "';'" | ||
TARGET vstbase | ||
OUTPUTS RemoteVstPlugin | ||
) | ||
|
||
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES RemoteVstPlugin.exe.so) | ||
INSTALL(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/RemoteVstPlugin" "${CMAKE_CURRENT_BINARY_DIR}/RemoteVstPlugin.exe.so" DESTINATION "${PLUGIN_DIR}") | ||
ENDIF(LMMS_BUILD_LINUX AND NOT WANT_VST_NOWINE) | ||
ENDIF(NOT WANT_VST_NOWINE) | ||
|
||
|
||
ENDIF(LMMS_SUPPORT_VST) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is
JUSTALIBRARY
? I'm having a hard time finding documentation on this...Edit: If this is in fact needed, we may want to keep our existing plugin macro and shim this in with an
IF
statement.