From 1e14cd769a2336d162c0f9ca5dd028e0e55fd80e Mon Sep 17 00:00:00 2001 From: JoergAtGithub <64457745+JoergAtGithub@users.noreply.github.com> Date: Mon, 18 Nov 2024 06:49:44 +0100 Subject: [PATCH] [vst3sdk] New port for Steinberg Virtual Studio Technology 3 SDK (#41903) --- ports/vst3sdk/portfile.cmake | 133 +++++++++++++++++++++++++++++++++++ ports/vst3sdk/vcpkg.json | 30 ++++++++ scripts/ci.baseline.txt | 3 + versions/baseline.json | 4 ++ versions/v-/vst3sdk.json | 9 +++ 5 files changed, 179 insertions(+) create mode 100644 ports/vst3sdk/portfile.cmake create mode 100644 ports/vst3sdk/vcpkg.json create mode 100644 versions/v-/vst3sdk.json diff --git a/ports/vst3sdk/portfile.cmake b/ports/vst3sdk/portfile.cmake new file mode 100644 index 0000000000..c06eaddd96 --- /dev/null +++ b/ports/vst3sdk/portfile.cmake @@ -0,0 +1,133 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO steinbergmedia/vst3sdk + REF ${VERSION} + SHA512 0a0dc8d84a943ef06353cea748c8dd09e012f70f28ce56912c3e0038718dd2f353e142d4f39ea52979f3c08446a4ee0e8f0038c6d602207da8b0a22877e0c9f2 + HEAD_REF master +) + +#Submodules +vcpkg_from_github( + OUT_SOURCE_PATH BASE_SOURCE_PATH + REPO steinbergmedia/vst3_base + REF ${VERSION} + SHA512 84f7ce79674756bde0829ea12220d15b1f82bd68dea8214ae0430324ab55cfa224550b7afc7962686359bb267b971860977d1993f4de76789d79d41b397ece9d + HEAD_REF master +) +file(REMOVE_RECURSE "${SOURCE_PATH}/base") +file(RENAME "${BASE_SOURCE_PATH}" "${SOURCE_PATH}/base") + +vcpkg_from_github( + OUT_SOURCE_PATH CMAKE_SOURCE_PATH + REPO steinbergmedia/vst3_cmake + REF ${VERSION} + SHA512 4beac9436786f2d6fc73f67a0eac5f96fdfb515f79c4ce1ef6fe7f39cdfdd6d026d903d177bd58438dc5576f0d3124843c7eabb97737f91425105e28efa6e636 + HEAD_REF master +) +file(REMOVE_RECURSE "${SOURCE_PATH}/cmake") +file(RENAME "${CMAKE_SOURCE_PATH}" "${SOURCE_PATH}/cmake") + +vcpkg_from_github( + OUT_SOURCE_PATH DOC_SOURCE_PATH + REPO steinbergmedia/vst3_doc + REF ${VERSION} + SHA512 b6a99ddfa749abd547ac0a1ff37e00985b7df537b32534d6e9255733257b104bbd0643d69675bc1d9c69d248aba45694e559996cc7eac97f977faef0daf84352 + HEAD_REF master +) +file(REMOVE_RECURSE "${SOURCE_PATH}/doc") +file(RENAME "${DOC_SOURCE_PATH}" "${SOURCE_PATH}/doc") + +vcpkg_from_github( + OUT_SOURCE_PATH PLUGININTERFACES_SOURCE_PATH + REPO steinbergmedia/vst3_pluginterfaces + REF ${VERSION} + SHA512 f0007b3b5c917c0bc1f0fa4320d1800ee99a0cc445654e5d12b0e094f2ec20cffc9c9051d89fca917d59ac48313524f65fb7647ffe32eae95e50c3adc811a63f + HEAD_REF master +) +file(REMOVE_RECURSE "${SOURCE_PATH}/pluginterfaces") +file(RENAME "${PLUGININTERFACES_SOURCE_PATH}" "${SOURCE_PATH}/pluginterfaces") + +vcpkg_from_github( + OUT_SOURCE_PATH PUBLIC_SDK_SOURCE_PATH + REPO steinbergmedia/vst3_public_sdk + REF ${VERSION} + SHA512 695f2cf55bbabd57f466d0c6181c2b90314745f91f90c5b27db8617b3fe98c7a5f8675909bf5294371e3e90d10b9145ed8432e5ed16e09faa5b123740f73ba3f + HEAD_REF master +) +file(REMOVE_RECURSE "${SOURCE_PATH}/public.sdk") +file(RENAME "${PUBLIC_SDK_SOURCE_PATH}" "${SOURCE_PATH}/public.sdk") + +# Note that the submodules "vst3_tutorials" and "vstgui4" are standalone repos, which have own release cycles. +# Therefore these are not part of this port + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + "plugin-examples" SMTG_ENABLE_VST3_PLUGIN_EXAMPLES + "hosting-examples" SMTG_ENABLE_VST3_HOSTING_EXAMPLES + "audiounit-wrapper" SMTG_ENABLE_AUV2_BUILDS +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DSMTG_ENABLE_VSTGUI_SUPPORT=OFF + -DSMTG_CREATE_PLUGIN_LINK=OFF + ${FEATURE_OPTIONS} +) + +vcpkg_cmake_build() + +if (NOT VCPKG_BUILD_TYPE STREQUAL "release") + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/lib/" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/vst3sdk") +endif() +file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/lib/" DESTINATION "${CURRENT_PACKAGES_DIR}/lib/vst3sdk") + +file(INSTALL "${SOURCE_PATH}/base/source/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vst3sdk/base/source/" FILES_MATCHING PATTERN "*.h") +file(INSTALL "${SOURCE_PATH}/pluginterfaces/base/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vst3sdk/pluginterfaces/base/" FILES_MATCHING PATTERN "*.h") +file(INSTALL "${SOURCE_PATH}/pluginterfaces/gui/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vst3sdk/pluginterfaces/gui/" FILES_MATCHING PATTERN "*.h") +file(INSTALL "${SOURCE_PATH}/pluginterfaces/vst/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vst3sdk/pluginterfaces/vst/" FILES_MATCHING PATTERN "*.h") +file(INSTALL "${SOURCE_PATH}/public.sdk/source/vst/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk//source/vst/" FILES_MATCHING PATTERN "*.h") + +if (VCPKG_TARGET_IS_LINUX) + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/Release/moduleinfotool" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/Release/validator" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") +else() + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/moduleinfotool${VCPKG_TARGET_EXECUTABLE_SUFFIX}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/validator${VCPKG_TARGET_EXECUTABLE_SUFFIX}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") +endif() + +if ("plugin-examples" IN_LIST FEATURES) + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/VST3" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +endif() + +if ("hosting-examples" IN_LIST FEATURES) + if (VCPKG_TARGET_IS_LINUX) + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/Release/editorhost" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + else() + file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin/editorhost${VCPKG_TARGET_EXECUTABLE_SUFFIX}" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}") + endif() +endif() + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") + + +if (VCPKG_TARGET_IS_APPLE AND NOT "audiounit-wrapper" IN_LIST FEATURES) + file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/aaxwrapper/resource" + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/auv3wrapper/AUv3WrappermacOS" + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/auwrapper/config" + ) +else() + file(REMOVE_RECURSE + # Remove macOS AudioUnit wrapper + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/aaxwrapper/" + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/auv3wrapper/" + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/auwrapper/" + ) +endif() + +# Remove other empty directories +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/hosting/test" + "${CURRENT_PACKAGES_DIR}/include/vst3sdk/public.sdk/source/vst/utility/test" +) diff --git a/ports/vst3sdk/vcpkg.json b/ports/vst3sdk/vcpkg.json new file mode 100644 index 0000000000..53655f8124 --- /dev/null +++ b/ports/vst3sdk/vcpkg.json @@ -0,0 +1,30 @@ +{ + "name": "vst3sdk", + "version-string": "v3.7.12_build_20", + "description": "Virtual Studio Technology (VST) is an audio plug-in software interface that facilitates the integration of software synthesizers and effects in digital audio workstations (DAW)", + "homepage": "https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/API+Documentation/Index.html", + "license": "GPL-3.0-only", + "supports": "!android & !uwp & !(arm64 & windows) & !staticcrt", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "audiounit-wrapper": { + "description": "Include AudioUnit wrappers for macOS", + "supports": "osx" + }, + "hosting-examples": { + "description": "Build examples for VST3 host applications" + }, + "plugin-examples": { + "description": "Build examples for VST3 plugins" + } + } +} diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index f5791f37c3..bed1067d67 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1124,6 +1124,9 @@ v8:x86-windows=fail vowpal-wabbit:arm-neon-android=fail vowpal-wabbit:arm64-android=fail vowpal-wabbit:x64-android=fail +# vst3sdk CMake files work only with the GUI version of Xcode +vst3sdk:arm64-osx=fail +vst3sdk:x64-osx=fail vtk-m:arm-neon-android=fail vtk-m:arm64-android=fail vtk-m:x64-android=fail diff --git a/versions/baseline.json b/versions/baseline.json index db059b881d..ecd943df0c 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9500,6 +9500,10 @@ "baseline": "1.0.5", "port-version": 1 }, + "vst3sdk": { + "baseline": "v3.7.12_build_20", + "port-version": 0 + }, "vtk": { "baseline": "9.3.0-pv5.12.1", "port-version": 5 diff --git a/versions/v-/vst3sdk.json b/versions/v-/vst3sdk.json new file mode 100644 index 0000000000..7a9658c95e --- /dev/null +++ b/versions/v-/vst3sdk.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "26804a3999322112c07f57f8ed607302a8767ef7", + "version-string": "v3.7.12_build_20", + "port-version": 0 + } + ] +}