unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
blob 43639f978fcb029a5f30a59c110df92ba00ce56d 6981 bytes (raw)
name: gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
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);
 					}

debug log:

solving 43639f978f ...
found 43639f978f in https://yhetil.org/guix-patches/C1LmYLEAX0doKyopgqvNW7hyTYj63frcyP7k_9FiO2Eom8-5V5uZi_1CGHLgmzCCTpRowDfN9UqBdoU48MO7fBZe5JZ4_Pyj6A-U1SpGi3c=@proton.me/ ||
	https://yhetil.org/guix-patches/-4-Qw03sW-iEY2AKTjeoPxFRmvMcn9wIBks9zO73havgvPA6UAihkK59CqWd_tjIBvZYlgjGqmIoAACNdCuutbvWZpA5mbzPS-0GjcY8PG0=@proton.me/ ||
	https://yhetil.org/guix-patches/20241028094646.3557-5-ngraves@ngraves.fr/ ||
	https://yhetil.org/guix-patches/0dd723d14d26f8ecb64fe829a046452e2189b69b.1701340263.git.sughosha@disroot.org/ ||
	https://yhetil.org/guix-patches/4481b93da8aad542e3e65080e17271055482c3cb.1701334597.git.sughosha@disroot.org/ ||
	https://yhetil.org/guix-patches/16a0c66df80da5013e2d12979b6829e6273338cb.1698829285.git.sughosha@disroot.org/

applying [1/1] https://yhetil.org/guix-patches/C1LmYLEAX0doKyopgqvNW7hyTYj63frcyP7k_9FiO2Eom8-5V5uZi_1CGHLgmzCCTpRowDfN9UqBdoU48MO7fBZe5JZ4_Pyj6A-U1SpGi3c=@proton.me/
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

1:21: trailing whitespace.
 
1:32: trailing whitespace.
 
1:45: space before tab in indent.
 	#define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b)			a ## b
1:56: space before tab in indent.
 		#define SMTG_ALWAYS_INLINE	__inline__ __attribute__((__always_inline__))
1:57: space before tab in indent.
 		#define SMTG_NEVER_INLINE __attribute__((noinline))
Checking patch gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch...
Applied patch gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch cleanly.
warning: squelched 46 whitespace errors
warning: 51 lines add whitespace errors.

skipping https://yhetil.org/guix-patches/-4-Qw03sW-iEY2AKTjeoPxFRmvMcn9wIBks9zO73havgvPA6UAihkK59CqWd_tjIBvZYlgjGqmIoAACNdCuutbvWZpA5mbzPS-0GjcY8PG0=@proton.me/ for 43639f978f
skipping https://yhetil.org/guix-patches/20241028094646.3557-5-ngraves@ngraves.fr/ for 43639f978f
skipping https://yhetil.org/guix-patches/0dd723d14d26f8ecb64fe829a046452e2189b69b.1701340263.git.sughosha@disroot.org/ for 43639f978f
skipping https://yhetil.org/guix-patches/4481b93da8aad542e3e65080e17271055482c3cb.1701334597.git.sughosha@disroot.org/ for 43639f978f
skipping https://yhetil.org/guix-patches/16a0c66df80da5013e2d12979b6829e6273338cb.1698829285.git.sughosha@disroot.org/ for 43639f978f
index at:
100644 43639f978fcb029a5f30a59c110df92ba00ce56d	gnu/packages/patches/vst3sdk-3.7.7-allow-winelib-compilation.patch

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).