From e849ff23ad330b68fa1dd6d1becde450808b6c94 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Sat, 10 Apr 2021 01:35:36 +0200 Subject: [PATCH] Organizational changes around vst3-core --- plugins/CMakeLists.txt | 8 +- plugins/vst/CMakeLists.txt | 155 +++++++++++++++++++------------------ 2 files changed, 81 insertions(+), 82 deletions(-) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index f91252f5..8793984c 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -45,7 +45,7 @@ else() target_link_libraries(plugins-common PRIVATE ${GLIB_LIBRARIES}) 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) endif() @@ -53,10 +53,6 @@ if(SFIZZ_LV2) add_subdirectory(lv2) endif() -if(SFIZZ_VST) +if(SFIZZ_VST OR SFIZZ_AU OR SFIZZ_VST2) add_subdirectory(vst) -else() - if(SFIZZ_AU) - message(WARNING "Audio Unit requires VST to be enabled") - endif() endif() diff --git a/plugins/vst/CMakeLists.txt b/plugins/vst/CMakeLists.txt index 8eb8e29c..5bcede86 100644 --- a/plugins/vst/CMakeLists.txt +++ b/plugins/vst/CMakeLists.txt @@ -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(AUWRAPPER_BASEDIR "${VST3SDK_BASEDIR}/public.sdk/source/vst/auwrapper") set(AUWRAPPER_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/sfzt_auwrapper") @@ -17,15 +14,15 @@ include("cmake/Vst3.cmake") set(RINGBUFFER_HEADERS "external/ring_buffer/ring_buffer/ring_buffer.h" "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" ${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) # Build the VST shared code -add_library(sfizz-vst3-core STATIC +add_library(sfizz-vst3-core STATIC EXCLUDE_FROM_ALL SfizzVstProcessor.cpp SfizzVstProcessor.h SfizzVstController.cpp @@ -60,82 +57,88 @@ gw_target_warn(sfizz-vst3-core PRIVATE "-Wno-unused-parameter") add_library(sfizz::vst3-core ALIAS sfizz-vst3-core) -# Build the 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 "") +# --- VST3 plugin --- # -plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME}) -plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME}) +if(SFIZZ_VST) + set(VSTPLUGIN_PRJ_NAME "${PROJECT_NAME}_vst3") + set(VSTPLUGIN_BUNDLE_NAME "${PROJECT_NAME}.vst3") -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE - "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version") -endif() -sfizz_enable_lto_if_needed(${VSTPLUGIN_PRJ_NAME}) -if(MINGW) - set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static") -endif() - -# 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) + 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 - 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() + OUTPUT_NAME "${PROJECT_NAME}" + PREFIX "") -# 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() + plugin_add_vst3sdk(${VSTPLUGIN_PRJ_NAME}) + plugin_add_vstgui(${VSTPLUGIN_PRJ_NAME}) -# To help debugging the link only -if(FALSE) - target_link_options(${VSTPLUGIN_PRJ_NAME} PRIVATE "-Wl,-no-undefined") -endif() + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + target_link_libraries(${VSTPLUGIN_PRJ_NAME} PRIVATE + "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/vst3.version") + endif() + sfizz_enable_lto_if_needed(${VSTPLUGIN_PRJ_NAME}) + if(MINGW) + set_target_properties(${VSTPLUGIN_PRJ_NAME} PROPERTIES LINK_FLAGS "-static") + 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") + # 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 + 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() # --- Audio Unit wrapper --- #