Package: guix-patches;
Reported by: Sughosha <Sughosha <at> proton.me>
Date: Tue, 25 Apr 2023 09:24:02 UTC
Severity: normal
Tags: patch
Message #23 received at 63065 <at> debbugs.gnu.org (full text, mbox):
From: Sughosha <Sughosha <at> proton.me> To: "63065 <at> debbugs.gnu.org" <63065 <at> debbugs.gnu.org> Subject: [PATCH 06/18] gnu: Add vst3sdk. Date: Tue, 25 Apr 2023 09:30:12 +0000
* gnu/packages/audio.scm (vst3sdk): New variable. * gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch: New file. * gnu/local.mk: Register the patch file. --- gnu/local.mk | 1 + gnu/packages/audio.scm | 44 ++++ ...3sdk-3.7.7-allow-winelib-compilation.patch | 191 ++++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8088e8170b..b53a04a0cd 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2000,6 +2000,7 @@ dist_patch_DATA = \ %D%/packages/patches/vtk-7-gcc-10-compat.patch \ %D%/packages/patches/vtk-7-hdf5-compat.patch \ %D%/packages/patches/vtk-7-python-compat.patch \ + %D%/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch \ %D%/packages/patches/wacomtablet-add-missing-includes.patch \ %D%/packages/patches/wacomtablet-qt5.15.patch \ %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \ diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 14c1ebbd92..9e111a3b9e 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -3405,6 +3405,50 @@ (define-public freealut (home-page "https://kcat.strangesoft.net/openal.html") (license license:lgpl2.0))) +(define-public vst3sdk + (package + (name "vst3sdk") + (version "3.7.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/steinbergmedia/vst3sdk") + ;; Should the build number included in version variable? + (commit (string-append "v" version "_build_19")) + ;; Required for vst3_base, vst3_cmake, vst3_doc, + ;; vst3_pluginterfaces, vst3_public_sdk and vstgui. + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a2ph0niyzpsjg765pxjmwhjc7pvcy5rsn4d254hx2b5by4f5cf2")) + (patches + (search-patches + "vst3sdk-3.7.7-allow-winelib-compilation.patch")))) + (build-system copy-build-system) + (arguments + `(#:install-plan + `(("." "/share/vst3sdk" #:exclude-regexp ("/cmake/" + "/doc/" + ".gitmodules" + "LICENSE.txt" + "README.md")) + ("cmake/modules" "/lib/cmake/vst3sdk") + ("doc" "/share/doc/vst3sdk")))) + (home-page "https://github.com/steinbergmedia/vst3sdk") + (synopsis "VST 3 plugin SDK") + (description + "This package contains: +@itemize +@item VST 3 API +@item VST 3 implementation helper classes +@item VST 2 wrappers +@end itemize") + (license (list license:gpl3 + ;; License used by vst3_base, vst3_cmake, vst3_public_sdk + ;; and vstgui + license:bsd-3)))) + (define-public patchage (package (name "patchage") diff --git a/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch new file mode 100644 index 0000000000..43639f978f --- /dev/null +++ b/gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch @@ -0,0 +1,191 @@ +This patch is taken from yabridge project: +https://github.com/robbert-vdh/yabridge. + +Submodule base contains modified content +diff --git a/base/source/fdebug.cpp b/base/source/fdebug.cpp +index b1d1dcc..9093022 100644 +--- a/base/source/fdebug.cpp ++++ b/base/source/fdebug.cpp +@@ -117,8 +117,6 @@ bool AmIBeingDebugged () + #if _MSC_VER + #include <intrin.h> + #endif +-#define vsnprintf _vsnprintf +-#define snprintf _snprintf + + #elif SMTG_OS_MACOS + #include <errno.h> +Submodule pluginterfaces contains modified content +diff --git a/pluginterfaces/base/fstrdefs.h b/pluginterfaces/base/fstrdefs.h +index 848e8ee..8846d31 100644 +--- a/pluginterfaces/base/fstrdefs.h ++++ b/pluginterfaces/base/fstrdefs.h +@@ -22,6 +22,16 @@ + /** string methods defines unicode / ASCII */ + //---------------------------------------------------------------------------- + ++// We can use most of the VST3 SDK's Windows UTF-16 functionality by just ++// creating aliases for equivalent Linux functions ++#if __WINE__ ++#define wcsicmp wcscasecmp ++#define wcsnicmp wcsncasecmp ++#define _vsnwprintf vswprintf ++#define stricmp strcasecmp ++#define strnicmp strncasecmp ++#endif ++ + // 16 bit string operations + #if SMTG_CPP11 // if c++11 unicode string literals + #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b +diff --git a/pluginterfaces/base/ftypes.h b/pluginterfaces/base/ftypes.h +index 133dbba..33ecae3 100644 +--- a/pluginterfaces/base/ftypes.h ++++ b/pluginterfaces/base/ftypes.h +@@ -154,7 +154,7 @@ namespace Steinberg + // always inline macros (only when RELEASE is 1) + //---------------------------------------------------------------------------- + #if RELEASE +- #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__MINGW32__) ++ #if SMTG_OS_MACOS || SMTG_OS_LINUX || defined(__WINE__) + #define SMTG_ALWAYS_INLINE __inline__ __attribute__((__always_inline__)) + #define SMTG_NEVER_INLINE __attribute__((noinline)) + #elif SMTG_OS_WINDOWS +diff --git a/pluginterfaces/base/ustring.cpp b/pluginterfaces/base/ustring.cpp +index 24a412f..8e631c9 100644 +--- a/pluginterfaces/base/ustring.cpp ++++ b/pluginterfaces/base/ustring.cpp +@@ -38,6 +38,10 @@ + + #endif + ++#ifdef __WINE__ ++#include <wchar.h> ++#endif ++ + //------------------------------------------------------------------------ + namespace Steinberg { + +@@ -173,7 +177,7 @@ bool UString::scanFloat (double& value) const + bool UString::printFloat (double value, int32 precision) + { + #if SMTG_OS_WINDOWS +- return swprintf ((wchar_t*)thisBuffer, L"%.*lf", precision, value) != -1; ++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%.*lf", precision, value) != -1; + #elif SMTG_OS_MACOS + bool result = false; + CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%.*lf"), precision, value); +@@ -238,7 +242,7 @@ bool UString::scanInt (int64& value) const + bool UString::printInt (int64 value) + { + #if SMTG_OS_WINDOWS +- return swprintf ((wchar_t*)thisBuffer, L"%I64d", value) != -1; ++ return swprintf ((wchar_t*)thisBuffer, thisSize, L"%I64d", value) != -1; + + #elif SMTG_OS_MACOS + CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR("%lld"), value); +Submodule public.sdk contains modified content +diff --git a/public.sdk/source/common/systemclipboard_win32.cpp b/public.sdk/source/common/systemclipboard_win32.cpp +index c5cb2b8..2ee3d65 100644 +--- a/public.sdk/source/common/systemclipboard_win32.cpp ++++ b/public.sdk/source/common/systemclipboard_win32.cpp +@@ -111,7 +111,7 @@ bool copyTextToClipboard (const std::string& text) + { + if (auto* data = static_cast<WCHAR*> (GlobalLock (memory))) + { +-#if defined(__MINGW32__) ++#if defined(__WINE__) + memcpy (data, wideStr.data (), byteSize); + #else + memcpy_s (data, byteSize, wideStr.data (), byteSize); +diff --git a/public.sdk/source/vst/hosting/module_win32.cpp b/public.sdk/source/vst/hosting/module_win32.cpp +index 2ba9319..ab6d72a 100644 +--- a/public.sdk/source/vst/hosting/module_win32.cpp ++++ b/public.sdk/source/vst/hosting/module_win32.cpp +@@ -44,35 +44,10 @@ + #include <algorithm> + #include <iostream> + +-#if SMTG_CPP17 +- +-#if __has_include(<filesystem>) +-#define USE_FILESYSTEM 1 +-#elif __has_include(<experimental/filesystem>) +-#define USE_FILESYSTEM 0 +-#endif +- +-#else // !SMTG_CPP17 +- +-#define USE_FILESYSTEM 0 +- +-#endif // SMTG_CPP17 +- +-#if USE_FILESYSTEM == 1 +- +-#include <filesystem> +-namespace filesystem = std::filesystem; +- +-#else // USE_FILESYSTEM == 0 +- +-// The <experimental/filesystem> header is deprecated. It is superseded by the C++17 <filesystem> +-// header. You can define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING to silence the +-// warning, otherwise the build will fail in VS2019 16.3.0 +-#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING +-#include <experimental/filesystem> +-namespace filesystem = std::experimental::filesystem; +- +-#endif // USE_FILESYSTEM ++// `std::filesystem` doesn't work correctly with wineg++, resulting in weird ++// memory errors. This library is a drop-in replacement. ++#include <ghc/filesystem.hpp> ++namespace filesystem = ghc::filesystem; + + #pragma comment(lib, "Shell32") + +@@ -320,7 +295,7 @@ VST3::Optional<filesystem::path> resolveShellLink (const filesystem::path& p) + #elif USE_OLE + Ole::instance (); + +- IShellLink* shellLink = nullptr; ++ IShellLinkW* shellLink = nullptr; + if (!SUCCEEDED (CoCreateInstance (CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, + IID_IShellLink, reinterpret_cast<LPVOID*> (&shellLink)))) + return {}; +@@ -405,13 +380,13 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext, + filesystem::path result; + if (checkVST3Package (p, &result)) + { +- pathList.push_back (result.generic_u8string ()); ++ pathList.push_back (result.generic_string ()); + continue; + } + findFilesWithExt (cp, ext, pathList, recursive); + } + else +- pathList.push_back (cp.generic_u8string ()); ++ pathList.push_back (cp.generic_string ()); + } + else if (recursive) + { +@@ -431,18 +406,18 @@ void findFilesWithExt (const filesystem::path& path, const std::string& ext, + filesystem::path result; + if (checkVST3Package (*resolvedLink, &result)) + { +- pathList.push_back (result.generic_u8string ()); ++ pathList.push_back (result.generic_string ()); + continue; + } + findFilesWithExt (*resolvedLink, ext, pathList, recursive); + } + else +- pathList.push_back (resolvedLink->generic_u8string ()); ++ pathList.push_back (resolvedLink->generic_string ()); + } + else if (filesystem::is_directory (*resolvedLink)) + { +- const auto& str = resolvedLink->generic_u8string (); +- if (cp.generic_u8string ().compare (0, str.size (), str.data (), ++ const auto& str = resolvedLink->generic_string (); ++ if (cp.generic_string ().compare (0, str.size (), str.data (), + str.size ()) != 0) + findFilesWithExt (*resolvedLink, ext, pathList, recursive); + } -- 2.39.2
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.