Merge pull request #808 from jpcima/vst3core

Organizational changes around vst3-core
This commit is contained in:
JP Cimalando 2021-04-10 01:51:19 +02:00 committed by GitHub
commit 9ada0be6d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 81 additions and 82 deletions

View file

@ -45,7 +45,7 @@ else()
target_link_libraries(plugins-common PRIVATE ${GLIB_LIBRARIES}) target_link_libraries(plugins-common PRIVATE ${GLIB_LIBRARIES})
endif() endif()
if((SFIZZ_LV2 AND SFIZZ_LV2_UI) OR SFIZZ_VST) if((SFIZZ_LV2 AND SFIZZ_LV2_UI) OR SFIZZ_VST OR SFIZZ_AU OR SFIZZ_VST2)
add_subdirectory(editor) add_subdirectory(editor)
endif() endif()
@ -53,10 +53,6 @@ if(SFIZZ_LV2)
add_subdirectory(lv2) add_subdirectory(lv2)
endif() endif()
if(SFIZZ_VST) if(SFIZZ_VST OR SFIZZ_AU OR SFIZZ_VST2)
add_subdirectory(vst) add_subdirectory(vst)
else()
if(SFIZZ_AU)
message(WARNING "Audio Unit requires VST to be enabled")
endif()
endif() endif()

View file

@ -1,6 +1,3 @@
set(VSTPLUGIN_PRJ_NAME "${PROJECT_NAME}_vst3")
set(VSTPLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst3")
set(VST3SDK_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/VST_SDK/VST3_SDK") set(VST3SDK_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/VST_SDK/VST3_SDK")
#set(AUWRAPPER_BASEDIR "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper") #set(AUWRAPPER_BASEDIR "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper")
set(AUWRAPPER_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/sfzt_auwrapper") set(AUWRAPPER_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/sfzt_auwrapper")
@ -17,15 +14,15 @@ include("cmake/Vst3.cmake")
set(RINGBUFFER_HEADERS set(RINGBUFFER_HEADERS
"external/ring_buffer/ring_buffer/ring_buffer.h" "external/ring_buffer/ring_buffer/ring_buffer.h"
"external/ring_buffer/ring_buffer/ring_buffer.tcc") "external/ring_buffer/ring_buffer/ring_buffer.tcc")
add_library(sfizz-ring-buffer STATIC add_library(sfizz-ring-buffer STATIC EXCLUDE_FROM_ALL
"external/ring_buffer/ring_buffer/ring_buffer.cpp" "external/ring_buffer/ring_buffer/ring_buffer.cpp"
${RINGBUFFER_HEADERS}) ${RINGBUFFER_HEADERS})
source_group("Header Files" FILES ${RINGBUFFER_HEADERS}) source_group("Header Files" FILES ${RINGBUFFER_HEADERS})
target_include_directories(sfizz-ring-buffer INTERFACE "external/ring_buffer") target_include_directories(sfizz-ring-buffer PUBLIC "external/ring_buffer")
add_library(sfizz::ring-buffer ALIAS sfizz-ring-buffer) add_library(sfizz::ring-buffer ALIAS sfizz-ring-buffer)
# Build the VST shared code # Build the VST shared code
add_library(sfizz-vst3-core STATIC add_library(sfizz-vst3-core STATIC EXCLUDE_FROM_ALL
SfizzVstProcessor.cpp SfizzVstProcessor.cpp
SfizzVstProcessor.h SfizzVstProcessor.h
SfizzVstController.cpp SfizzVstController.cpp
@ -60,82 +57,88 @@ gw_target_warn(sfizz-vst3-core PRIVATE
"-Wno-unused-parameter") "-Wno-unused-parameter")
add_library(sfizz::vst3-core ALIAS sfizz-vst3-core) add_library(sfizz::vst3-core ALIAS sfizz-vst3-core)
# Build the plugin # --- VST3 plugin --- #
add_library(${VSTPLUGIN_PRJ_NAME} MODULE "VstPluginFactory.cpp")
if(WIN32)
target_sources(${VSTPLUGIN_PRJ_NAME} PRIVATE vst3.def)
endif()
target_include_directories(${VSTPLUGIN_PRJ_NAME}
PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(${VSTPLUGIN_PRJ_NAME}
PRIVATE sfizz-vst3-core)
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}"
PREFIX "")
plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME}) if(SFIZZ_VST)
plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME}) set(VSTPLUGIN_PRJ_NAME "${PROJECT_NAME}_vst3")
set(VSTPLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst3")
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") add_library(${VSTPLUGIN_PRJ_NAME} MODULE "VstPluginFactory.cpp")
target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE if(WIN32)
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version") target_sources(${VSTPLUGIN_PRJ_NAME} PRIVATE vst3.def)
endif() endif()
sfizz_enable_lto_if_needed(${VSTPLUGIN_PRJ_NAME}) target_include_directories(${VSTPLUGIN_PRJ_NAME}
if(MINGW) PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static") target_link_libraries(${VSTPLUGIN_PRJ_NAME}
endif() PRIVATE sfizz-vst3-core)
# Create the bundle(see "VST 3 Locations / Format")
execute_process(
COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
copy_editor_resources(
"${CMAKE_CURRENT_SOURCE_DIR}/../editor/resources"
"${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
if(WIN32)
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ".vst3" OUTPUT_NAME "${PROJECT_NAME}"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-win/$<0:>") PREFIX "")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/win/Plugin.ico"
"${CMAKE_CURRENT_SOURCE_DIR}/win/desktop.ini"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
elseif(APPLE)
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ""
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/MacOS/$<0:>")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/mac/PkgInfo"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents")
set(SFIZZ_VST3_BUNDLE_EXECUTABLE "${PROJECT_NAME}")
set(SFIZZ_VST3_BUNDLE_VERSION "${PROJECT_VERSION}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.vst3.plist"
"${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Info.plist" @ONLY)
else()
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-linux/$<0:>")
endif()
# Copy the license plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME})
if(APPLE) plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME})
# on macOS, files are not permitted at the bundle root, during code signing
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/SharedSupport/License")
else()
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
endif()
# To help debugging the link only if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(FALSE) target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE
target_link_options(${VSTPLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined") "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version")
endif() endif()
sfizz_enable_lto_if_needed(${VSTPLUGIN_PRJ_NAME})
if(MINGW)
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static")
endif()
# Installation # Create the bundle(see "VST 3 Locations / Format")
if(NOT MSVC) execute_process(
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}" COMMAND "${CMAKE_COMMAND}" -E make_directory "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
DESTINATION "${VSTPLUGIN_INSTALL_DIR}" copy_editor_resources(
COMPONENT "vst") "${CMAKE_CURRENT_SOURCE_DIR}/../editor/resources"
bundle_dylibs(vst "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Resources")
"${VSTPLUGIN_INSTALL_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/MacOS/sfizz" if(WIN32)
COMPONENT "vst") set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ".vst3"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-win/$<0:>")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/win/Plugin.ico"
"${CMAKE_CURRENT_SOURCE_DIR}/win/desktop.ini"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
elseif(APPLE)
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
SUFFIX ""
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/MacOS/$<0:>")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/mac/PkgInfo"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents")
set(SFIZZ_VST3_BUNDLE_EXECUTABLE "${PROJECT_NAME}")
set(SFIZZ_VST3_BUNDLE_VERSION "${PROJECT_VERSION}")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.vst3.plist"
"${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/Info.plist" @ONLY)
else()
set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/${VST3_PACKAGE_ARCHITECTURE}-linux/$<0:>")
endif()
# Copy the license
if(APPLE)
# on macOS, files are not permitted at the bundle root, during code signing
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/SharedSupport/License")
else()
file(COPY "gpl-3.0.txt"
DESTINATION "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}")
endif()
# To help debugging the link only
if(FALSE)
target_link_options(${VSTPLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined")
endif()
# Installation
if(NOT MSVC)
install(DIRECTORY "${PROJECT_BINARY_DIR}/${VSTPLUGIN_BUNDLE_NAME}"
DESTINATION "${VSTPLUGIN_INSTALL_DIR}"
COMPONENT "vst")
bundle_dylibs(vst
"${VSTPLUGIN_INSTALL_DIR}/${VSTPLUGIN_BUNDLE_NAME}/Contents/MacOS/sfizz"
COMPONENT "vst")
endif()
endif() endif()
# --- Audio Unit wrapper --- # # --- Audio Unit wrapper --- #