supercollider: 3.14.0 (#25052)

This commit is contained in:
Raed Rizqie 2025-08-05 02:32:21 +08:00 committed by GitHub
parent dcc68b91e8
commit 1e3c258036
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 594 additions and 0 deletions

View File

@ -0,0 +1,299 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ac592a..83121ed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -50,7 +50,7 @@ ADD_CUSTOM_TARGET(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
# identify target architecture
-if(WIN32)
+if(MSVC)
SET(SC_WIN_BUNDLE_NAME "SuperCollider" CACHE STRING "Folder name of SC install")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
@@ -64,7 +64,7 @@ if(WIN32)
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE PATH "Cmake install path" FORCE)
endif()
-endif(WIN32)
+endif(MSVC)
#############################################
# Compiler flags etc
@@ -100,7 +100,7 @@ if (${CMAKE_COMPILER_IS_GNUCXX})
add_definitions("-fpascal-strings")
endif()
add_definitions("-D_REENTRANT")
- elseif(NOT (WIN32 AND NOT CYGWIN))
+ elseif(NOT MSVC)
add_definitions("-pthread")
endif()
@@ -113,6 +113,16 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL
set(CMAKE_COMPILER_IS_CLANG 1)
endif()
+if(MINGW)
+ # Suppress some annoying warnings
+ add_compile_options(-Wno-deprecated-declarations -Wno-format)
+ if(CMAKE_COMPILER_IS_CLANG)
+ add_compile_options(-Wno-constant-conversion -Wno-enum-compare-switch -Wno-parentheses)
+ else()
+ add_compile_options(-Wno-ignored-attributes -Wno-overflow)
+ endif()
+endif()
+
if(APPLE)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/Install" CACHE STRING "Cmake install path" FORCE)
@@ -122,7 +132,7 @@ elseif(UNIX)
endif()
if(WIN32)
- add_definitions(-DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_WIN32_WINNT=0x0600)
+ add_definitions(-DWIN32_LEAN_AND_MEAN -DNOMINMAX)
#avoid unnecesary autolink
add_definitions(-DBOOST_DATE_TIME_NO_LIB -DBOOST_ALL_NO_LIB)
@@ -305,7 +315,7 @@ endif()
#############################################
# some default libraries
-if (NOT WIN32)
+if (NOT MSVC)
find_package(Pthreads)
if (NOT PTHREADS_FOUND)
@@ -489,7 +499,7 @@ add_subdirectory(lang)
add_subdirectory(platform)
add_subdirectory(editors)
-if(UNIX AND NOT APPLE)
+if((UNIX AND NOT APPLE) OR MINGW)
install(DIRECTORY include/common include/plugin_interface include/server include/lang
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/SuperCollider
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
@@ -499,10 +509,12 @@ if(UNIX AND NOT APPLE)
)
endif()
-if (WIN32)
+if (MSVC)
set(auxresourcesdir "${SC_WIN_BUNDLE_NAME}" CACHE STRING "Resources directory")
elseif(APPLE)
set(auxresourcesdir ${scappbundlename} CACHE STRING "Resources directory")
+elseif(MINGW)
+ set(auxresourcesdir "${CMAKE_INSTALL_PREFIX}/share/SuperCollider" CACHE STRING "Resources directory")
else()
set(auxresourcesdir "share/SuperCollider" CACHE STRING "Resources directory")
endif()
diff --git a/editors/sc-ide/CMakeLists.txt b/editors/sc-ide/CMakeLists.txt
index 569022b..20c1664 100644
--- a/editors/sc-ide/CMakeLists.txt
+++ b/editors/sc-ide/CMakeLists.txt
@@ -347,7 +347,7 @@ if(APPLE)
target_link_libraries( libscide PUBLIC "-framework CoreServices -framework Foundation")
target_link_libraries( libscide PUBLIC "-framework Cocoa" )
elseif(WIN32)
- target_link_libraries( libscide PUBLIC wsock32 )
+ target_link_libraries( libscide PUBLIC wsock32 shlwapi )
target_compile_definitions( libscide PUBLIC UNICODE _UNICODE)
# The following prevents a Windows console from showing up
# when the executable is started:
@@ -402,7 +402,7 @@ if(APPLE)
set_property(TARGET SuperCollider
PROPERTY MACOSX_BUNDLE_BUNDLE_NAME ${scappbundlename})
-elseif(WIN32)
+elseif(WIN32 AND NOT MINGW)
if(NOT MSVC)
set_target_properties(SuperCollider PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>")
@@ -473,7 +473,7 @@ endif()
# mac/windows: find the Qt deploy utility.
# See https://doc.qt.io/qt-5/windows-deployment.html for windeployqt
# See https://doc.qt.io/qt-5/osx-deployment.html for macdeployqt
-if(APPLE OR WIN32)
+if(APPLE OR MSVC)
if(APPLE)
find_program(DEPLOY_PROG macdeployqt PATHS ${CMAKE_PREFIX_PATH} PATH_SUFFIXES bin)
# only the IDE executable is scanned normally, so force scanning of sclang as well
diff --git a/external_libraries/hidapi/CMakeLists.txt b/external_libraries/hidapi/CMakeLists.txt
index ce5937e..5af9f46 100644
--- a/external_libraries/hidapi/CMakeLists.txt
+++ b/external_libraries/hidapi/CMakeLists.txt
@@ -26,7 +26,7 @@ if( HID_DEBUG_PARSER )
endif()
# some default libraries
-if (NOT WIN32)
+if (NOT MSVC)
find_package(Pthreads)
if (NOT PTHREADS_FOUND)
message(SEND_ERROR "cannot find libpthreads")
@@ -113,7 +113,7 @@ if( HID_DEBUG_PARSER OR HID_INSTALL_HUT )
set(scappbundlename "SuperCollider")
set(scappauxresourcesdir "${scappbundlename}/${scappbundlename}.app/Contents/Resources")
set(HID_HUT_PATH "${CMAKE_INSTALL_PREFIX}/${scappauxresourcesdir}/HID_Support")
- elseif(WIN32)
+ elseif(MSVC)
set(auxresourcesdir "SuperCollider" CACHE STRING "Resources directory")
set(HID_HUT_PATH "${CMAKE_INSTALL_PREFIX}/${auxresourcesdir}/HID_Support")
else()
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index 561023d..75bb510 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -253,7 +253,7 @@ else()
target_compile_definitions(libsclang PUBLIC NO_INTERNAL_SERVER)
endif()
-if (NOT WIN32)
+if (NOT MSVC)
set_property(TARGET libsclang
PROPERTY OUTPUT_NAME sclang)
endif()
@@ -346,6 +346,10 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
target_link_libraries(libsclang rt)
endif()
+if(MINGW)
+ target_link_libraries(libsclang shlwapi)
+endif()
+
target_link_libraries(libsclang ${YAMLCPP_LIBRARY})
add_executable(sclang LangSource/cmdLineFuncs.cpp ${RES_FILES})
@@ -372,7 +376,7 @@ if(APPLE)
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:sclang> ${CMAKE_INSTALL_PREFIX}/${scappbindir}
)
endif()
-elseif(WIN32)
+elseif(WIN32 AND NOT MINGW)
if(NOT MSVC)
set_target_properties(sclang PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>")
endif(NOT MSVC)
diff --git a/server/plugins/CMakeLists.txt b/server/plugins/CMakeLists.txt
index 171dfb6..87853e9 100644
--- a/server/plugins/CMakeLists.txt
+++ b/server/plugins/CMakeLists.txt
@@ -301,7 +301,7 @@ if (APPLE)
endif()
endif()
-if (WIN32)
+if (WIN32 AND NOT MINGW)
foreach(plugin ${plugins} ${supernova_plugins})
add_custom_command(TARGET ${plugin}
POST_BUILD
diff --git a/server/scsynth/CMakeLists.txt b/server/scsynth/CMakeLists.txt
index 3cad565..87782c1 100644
--- a/server/scsynth/CMakeLists.txt
+++ b/server/scsynth/CMakeLists.txt
@@ -176,7 +176,7 @@ endif()
target_compile_definitions(libscsynth PUBLIC SC_MEMORY_ALIGNMENT=32)
-target_link_libraries(libscsynth tlsf)
+target_link_libraries(libscsynth tlsf ${PTHREADS_LIBRARIES})
find_library(DL NAMES dl)
if(DL)
@@ -234,11 +234,11 @@ endif()
target_include_directories(libscsynth PUBLIC ${boost_include_dirs})
if (WIN32)
- target_link_libraries(libscsynth wsock32 ws2_32 winmm)
+ target_link_libraries(libscsynth wsock32 ws2_32 winmm shlwapi)
target_compile_definitions(libscsynth PUBLIC UNICODE _UNICODE)
endif()
-if(NOT WIN32)
+if(NOT MSVC)
set_property(TARGET libscsynth PROPERTY OUTPUT_NAME scsynth)
endif()
@@ -275,10 +275,6 @@ if(AUDIOAPI STREQUAL bela)
target_link_libraries(scsynth ${XENOMAI_LIBRARIES} ${BELA_LIBRARIES} belaextra)
endif()
-if (PTHREADS_FOUND)
- target_link_libraries(scsynth ${PTHREADS_LIBRARIES})
-endif()
-
if(LTO)
set_property(TARGET scsynth libscsynth
APPEND PROPERTY COMPILE_FLAGS "-flto -flto-report")
@@ -303,7 +299,7 @@ if(APPLE)
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:scsynth> ${CMAKE_INSTALL_PREFIX}/${scappauxresourcesdir}
)
endif()
-elseif(WIN32)
+elseif(WIN32 AND NOT MINGW)
if(NOT MSVC)
target_link_libraries(scsynth "-municode")
set_target_properties(scsynth libscsynth PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>")
@@ -345,8 +341,13 @@ elseif(WIN32)
)
else()
+ if(MINGW)
+ target_link_libraries(scsynth "-municode")
+ endif()
+
install(TARGETS ${INSTALL_TARGETS}
RUNTIME DESTINATION "bin"
+ ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
LIBRARY DESTINATION "lib${LIB_SUFFIX}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
endif()
diff --git a/server/supernova/CMakeLists.txt b/server/supernova/CMakeLists.txt
index 6e92edd..e768bdf 100644
--- a/server/supernova/CMakeLists.txt
+++ b/server/supernova/CMakeLists.txt
@@ -85,7 +85,7 @@ if(LINUX AND CMAKE_COMPILER_IS_CLANG)
message(STATUS "Clang on Linux detected, linking to libatomic")
target_link_libraries(libsupernova atomic)
endif()
-if(NOT WIN32)
+if(NOT MSVC)
set_property(TARGET libsupernova
PROPERTY OUTPUT_NAME supernova)
endif()
@@ -201,14 +201,14 @@ endif()
target_link_libraries(libsupernova boost_system_lib boost_program_options_lib)
target_include_directories(libsupernova PUBLIC ${boost_include_dirs})
-if(CMAKE_COMPILER_IS_GNUCXX)
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
if( ${_gcc_version} VERSION_GREATER 5 )
target_link_libraries( libsupernova atomic )
endif()
endif()
if(WIN32)
- target_link_libraries(libsupernova wsock32 ws2_32 winmm)
+ target_link_libraries(libsupernova wsock32 ws2_32 winmm shlwapi)
target_compile_definitions(libsupernova PUBLIC UNICODE _UNICODE)
endif()
@@ -223,7 +223,7 @@ add_executable(supernova
)
target_link_libraries(supernova libsupernova)
-if(WIN32)
+if(WIN32 AND NOT MINGW)
if(NOT MSVC)
target_link_libraries(supernova "-municode")
set_target_properties(supernova libsupernova PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>")
@@ -273,6 +273,10 @@ elseif(APPLE)
)
endif()
else()
+ if(MINGW)
+ target_link_libraries(supernova "-municode")
+ endif()
+
install(TARGETS supernova
DESTINATION "bin"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

View File

@ -0,0 +1,150 @@
diff --git a/editors/sc-ide/widgets/settings/editor_page.cpp b/editors/sc-ide/widgets/settings/editor_page.cpp
index 9cf3e78..7605a53 100644
--- a/editors/sc-ide/widgets/settings/editor_page.cpp
+++ b/editors/sc-ide/widgets/settings/editor_page.cpp
@@ -39,7 +39,7 @@ EditorPage::EditorPage(QWidget* parent):
QWidget(parent),
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
fontDatabase(new QFontDatabase),
-#endif()
+#endif
ui(new Ui::EditorConfigPage) {
ui->setupUi(this);
diff --git a/lang/LangPrimSource/SC_PortMIDI.cpp b/lang/LangPrimSource/SC_PortMIDI.cpp
index fe84fde..3bb773c 100644
--- a/lang/LangPrimSource/SC_PortMIDI.cpp
+++ b/lang/LangPrimSource/SC_PortMIDI.cpp
@@ -28,8 +28,8 @@ added prRestartMIDI
04/feb/03 prListMIDIEndpoints modification by Ron Kuivila added jt.
*/
-#include "PortMIDI.h"
-#include "PortTime.h"
+#include "portmidi.h"
+#include "porttime.h"
#include "SCBase.h"
#include "VMGlobals.h"
diff --git a/lang/LangSource/DumpParseNode.cpp b/lang/LangSource/DumpParseNode.cpp
index ef03671..0e3bfb8 100644
--- a/lang/LangSource/DumpParseNode.cpp
+++ b/lang/LangSource/DumpParseNode.cpp
@@ -29,7 +29,7 @@
#include <stdarg.h>
#include <ctype.h>
-#ifdef _WIN32
+#ifndef PATH_MAX
# define PATH_MAX _MAX_PATH
#endif
diff --git a/server/scsynth/SC_ComPort.cpp b/server/scsynth/SC_ComPort.cpp
index 50c2616..d765048 100644
--- a/server/scsynth/SC_ComPort.cpp
+++ b/server/scsynth/SC_ComPort.cpp
@@ -107,7 +107,7 @@ static bool UnrollOSCPacket(World* inWorld, int inSize, char* inData, OSC_Packet
data += sizeof(int32);
if (!strcmp(data, "#bundle")) { // is a bundle
OSC_Packet* packet = (OSC_Packet*)malloc(sizeof(OSC_Packet));
- memcpy(packet, inPacket, sizeof(OSC_Packet)); // clone inPacket
+ memcpy(reinterpret_cast<void*>(packet), inPacket, sizeof(OSC_Packet)); // clone inPacket
if (!UnrollOSCPacket(inWorld, msgSize, data, packet)) {
free(packet);
diff --git a/server/scsynth/SC_PortAudio.cpp b/server/scsynth/SC_PortAudio.cpp
index ebd646a..f87d9e8 100644
--- a/server/scsynth/SC_PortAudio.cpp
+++ b/server/scsynth/SC_PortAudio.cpp
@@ -127,7 +127,7 @@ int SC_PortAudioDriver::PortAudioCallback(const void* input, void* output, unsig
const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags) {
sc_SetDenormalFlags();
World* world = mWorld;
- (void)frameCount, timeInfo, statusFlags; // suppress unused parameter warnings
+ (void)frameCount, (void)timeInfo, (void)statusFlags; // suppress unused parameter warnings
#ifdef SC_PA_USE_DLL
mDLL.Update(sc_PAOSCTimeSeconds());
diff --git a/server/scsynth/SC_World.cpp b/server/scsynth/SC_World.cpp
index 25682d4..a437f77 100644
--- a/server/scsynth/SC_World.cpp
+++ b/server/scsynth/SC_World.cpp
@@ -626,7 +626,7 @@ void World_NonRealTimeSynthesis(struct World* world, WorldOptions* inOptions) {
throw std::runtime_error("Couldn't open non real time command file.\n");
OSC_Packet packet;
- memset(&packet, 0, sizeof(packet));
+ memset(reinterpret_cast<void*>(&packet), 0, sizeof(packet));
packet.mData = (char*)malloc(8192);
packet.mIsBundle = true;
packet.mReplyAddr.mReplyFunc = null_reply_func;
diff --git a/server/supernova/audio_backend/portaudio_backend.hpp b/server/supernova/audio_backend/portaudio_backend.hpp
index 00bc5f0..37a76b4 100644
--- a/server/supernova/audio_backend/portaudio_backend.hpp
+++ b/server/supernova/audio_backend/portaudio_backend.hpp
@@ -298,12 +298,13 @@ private:
super::fetch_inputs(inputs, blocksize_, input_channels);
engine_functor::run_tick();
super::deliver_outputs(outputs, blocksize_, m_hwOutputChannels);
- if (IsClipping)
+ if (IsClipping) {
for (uint16_t i = 0; i != m_hwOutputChannels; ++i)
if (super::is_aligned(out[i]))
clip2_vec_simd(out[i], out[i], safety_clip_threshold_, blocksize_);
else
clip2_vec(out[i], out[i], safety_clip_threshold_, blocksize_);
+ }
processed += blocksize_;
}
diff --git a/server/supernova/sc/sc_plugin_interface.cpp b/server/supernova/sc/sc_plugin_interface.cpp
index 8bc8832..972b367 100644
--- a/server/supernova/sc/sc_plugin_interface.cpp
+++ b/server/supernova/sc/sc_plugin_interface.cpp
@@ -699,9 +699,9 @@ void sc_plugin_interface::initialize(server_arguments const& args, float* contro
world.mSndBufs = new SndBuf[world.mNumSndBufs];
world.mSndBufsNonRealTimeMirror = new SndBuf[world.mNumSndBufs];
world.mSndBufUpdates = new SndBufUpdates[world.mNumSndBufs];
- memset(world.mSndBufs, 0, world.mNumSndBufs * sizeof(SndBuf));
- memset(world.mSndBufsNonRealTimeMirror, 0, world.mNumSndBufs * sizeof(SndBuf));
- memset(world.mSndBufUpdates, 0, world.mNumSndBufs * sizeof(SndBufUpdates));
+ memset(reinterpret_cast<void*>(world.mSndBufs), 0, world.mNumSndBufs * sizeof(SndBuf));
+ memset(reinterpret_cast<void*>(world.mSndBufsNonRealTimeMirror), 0, world.mNumSndBufs * sizeof(SndBuf));
+ memset(reinterpret_cast<void*>(world.mSndBufUpdates), 0, world.mNumSndBufs * sizeof(SndBufUpdates));
world.mBufCounter = 0;
async_buffer_guards.reset(new std::mutex[world.mNumSndBufs]);
diff --git a/server/supernova/utilities/callback_interpreter.hpp b/server/supernova/utilities/callback_interpreter.hpp
index aab9c09..7aaeaef 100644
--- a/server/supernova/utilities/callback_interpreter.hpp
+++ b/server/supernova/utilities/callback_interpreter.hpp
@@ -104,7 +104,7 @@ public:
void start_thread(void) {
semaphore sync_sem;
std::thread thr([&]() { this->run_thread(sync_sem); });
- callback_thread = move(thr);
+ callback_thread = std::move(thr);
sync_sem.wait();
}
diff --git a/testsuite/server/supernova/sized_array_test.cpp b/testsuite/server/supernova/sized_array_test.cpp
index 2d1a414..7558773 100644
--- a/testsuite/server/supernova/sized_array_test.cpp
+++ b/testsuite/server/supernova/sized_array_test.cpp
@@ -38,14 +38,14 @@ BOOST_AUTO_TEST_CASE(sized_array_test_1) {
// move assignment
sized_array<int> array3(0);
- move(&array, &array + 1, &array3);
+ std::move(&array, &array + 1, &array3);
BOOST_REQUIRE_EQUAL(array3.size(), 5u);
BOOST_REQUIRE_EQUAL(array3[1], 3);
BOOST_REQUIRE_EQUAL(array3[0], -1);
BOOST_REQUIRE_EQUAL(array.size(), 0u);
// move assignment
- sized_array<int> array4(move(array3));
+ sized_array<int> array4(std::move(array3));
BOOST_REQUIRE_EQUAL(array4.size(), 5u);
BOOST_REQUIRE_EQUAL(array4[1], 3);
BOOST_REQUIRE_EQUAL(array4[0], -1);

View File

@ -0,0 +1,70 @@
diff --git a/common/SC_Filesystem_win.cpp b/common/SC_Filesystem_win.cpp
index 9873a05..62c4b02 100644
--- a/common/SC_Filesystem_win.cpp
+++ b/common/SC_Filesystem_win.cpp
@@ -33,7 +33,8 @@
# include <filesystem>
// system
-# include <Shlobj.h> // SHGetKnownFolderPath
+# include <shlobj.h> // SHGetKnownFolderPath
+# include <shlwapi.h> // PathRemoveFileSpec
using Path = SC_Filesystem::Path;
using DirName = SC_Filesystem::DirName;
@@ -124,21 +125,38 @@ bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) {
}
Path SC_Filesystem::defaultSystemAppSupportDirectory() {
+#ifdef _MSC_VER
PWSTR wptr = nullptr;
const HRESULT hr = SHGetKnownFolderPath(FOLDERID_ProgramData, 0, nullptr, &wptr);
return FAILED(hr) ? Path() : Path(wptr) / SC_FOLDERNAME_APPLICATION_NAME;
+#else
+ WCHAR buf[MAX_PATH];
+ GetModuleFileNameW(nullptr, buf, MAX_PATH-1);
+ PathRemoveFileSpecW(buf);
+ return Path(buf).parent_path() / "share" / SC_FOLDERNAME_APPLICATION_NAME;
+#endif
}
Path SC_Filesystem::defaultUserHomeDirectory() {
+#ifdef _MSC_VER
PWSTR wptr = nullptr;
const HRESULT hr = SHGetKnownFolderPath(FOLDERID_Profile, 0, nullptr, &wptr);
return FAILED(hr) ? Path() : Path(wptr);
+#else
+ const char* home = getenv("HOME");
+ return Path(home);
+#endif
}
Path SC_Filesystem::defaultUserAppSupportDirectory() {
+#ifdef _MSC_VER
PWSTR wptr = nullptr;
const HRESULT hr = SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &wptr);
return FAILED(hr) ? Path() : Path(wptr) / SC_FOLDERNAME_APPLICATION_NAME;
+#else
+ const char* home = getenv("HOME");
+ return Path(home) / "supercollider";
+#endif
}
Path SC_Filesystem::defaultUserConfigDirectory() { return defaultUserAppSupportDirectory(); }
@@ -150,9 +168,16 @@ Path SC_Filesystem::defaultMyDocumentsDirectory() {
}
Path SC_Filesystem::defaultResourceDirectory() {
+#ifdef _MSC_VER
WCHAR buf[MAX_PATH];
GetModuleFileNameW(nullptr, buf, MAX_PATH);
return Path(buf).parent_path();
+#else
+ WCHAR buf[MAX_PATH];
+ GetModuleFileNameW(nullptr, buf, MAX_PATH-1);
+ PathRemoveFileSpecW(buf);
+ return Path(buf).parent_path() / "share" / SC_FOLDERNAME_APPLICATION_NAME;
+#endif
}
#endif // _WIN32

View File

@ -0,0 +1,75 @@
# Contributor: Raed Rizqie <raed.rizqie@gmail.com>
_realname=supercollider
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=3.14.0
pkgrel=1
pkgdesc="Platform for audio synthesis and algorithmic composition (mingw-w64)"
arch=(any)
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url='https://supercollider.github.io'
msys2_repository_url='https://github.com/supercollider/supercollider'
license=('spdx:GPL-3.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-cc-libs"
"${MINGW_PACKAGE_PREFIX}-fftw"
"${MINGW_PACKAGE_PREFIX}-libsndfile"
"${MINGW_PACKAGE_PREFIX}-libwinpthread"
"${MINGW_PACKAGE_PREFIX}-qt5-base"
"${MINGW_PACKAGE_PREFIX}-qt5-svg"
"${MINGW_PACKAGE_PREFIX}-qt5-webchannel"
"${MINGW_PACKAGE_PREFIX}-qt5-websockets"
"${MINGW_PACKAGE_PREFIX}-readline")
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-pkgconf"
"${MINGW_PACKAGE_PREFIX}-qt5-tools"
"${MINGW_PACKAGE_PREFIX}-winpthreads")
source=(https://github.com/supercollider/supercollider/releases/download/Version-${pkgver}/SuperCollider-${pkgver}-Source.tar.bz2
001-cmake-mingw-fix.patch
002-reduce-warnings.patch
003-mingw-filesystem.patch)
sha256sums=('ab710e84376f5c082c92fcea7465b85d375934f3da7deed583457a0a48b0a918'
'0a3f449a38c631dd927dbb357ac05ec0a404e802fd2c4d044b8935fbfc1717eb'
'a9b5189376408130641e9f44ec83ea23cb55eecaa37f096c53d06cf2d957e70a'
'03c8e88c2fab5ae29792fa589498d357094395126c521a250671b652d5982cf6')
apply_patch_with_msg() {
for _patch in "$@"
do
msg2 "Applying ${_patch}"
patch -p1 -i "${srcdir}/${_patch}"
done
}
prepare() {
cd SuperCollider-${pkgver}-Source
apply_patch_with_msg \
001-cmake-mingw-fix.patch \
002-reduce-warnings.patch \
003-mingw-filesystem.patch
}
build() {
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
cmake -Wno-dev \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DSC_USE_QTWEBENGINE=OFF \
-DLIBSCSYNTH=ON \
-DSUPERNOVA=ON \
-DINSTALL_HELP=OFF \
-S SuperCollider-${pkgver}-Source \
-B build-${MSYSTEM}
cmake --build build-${MSYSTEM}
}
package() {
DESTDIR="$pkgdir" cmake --install build-${MSYSTEM}
install -Dm644 SuperCollider-${pkgver}-Source/COPYING "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE
}