summaryrefslogtreecommitdiff
path: root/subprojects/packagefiles
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-05-25 18:49:20 -0400
committerAndrew Opalach <andrew@akon.city> 2025-05-25 18:49:20 -0400
commit2fa7ea95c891981684a55b41977172d040c2cc55 (patch)
treed349e810b3178045a420b625f6dbe5634b64807b /subprojects/packagefiles
parent01f852081b1291da7fc342976bf5228ffb618736 (diff)
downloadcamu-2fa7ea95c891981684a55b41977172d040c2cc55.tar.gz
camu-2fa7ea95c891981684a55b41977172d040c2cc55.tar.bz2
camu-2fa7ea95c891981684a55b41977172d040c2cc55.zip
Support Windows XP (Old FFmpeg and build fixes)
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'subprojects/packagefiles')
-rw-r--r--subprojects/packagefiles/SPIRV-Cross/msvc_static_build.diff17
-rw-r--r--subprojects/packagefiles/ffmpeg-compat/ffmpeg.git-effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch73
-rw-r--r--subprojects/packagefiles/ffmpeg-compat/meson.build197
-rw-r--r--subprojects/packagefiles/ffmpeg/meson.build100
-rw-r--r--subprojects/packagefiles/ffmpeg/msvc_build_conform.diff20
-rw-r--r--subprojects/packagefiles/libplacebo/max_align_msvc.diff14
-rw-r--r--subprojects/packagefiles/miniaudio/meson.build2
-rw-r--r--subprojects/packagefiles/miniaudio/miniaudio_wasapi_drain_tweak.diff13
-rw-r--r--subprojects/packagefiles/msvc-wine/msvc-wine-shebang-nixos.diff405
-rw-r--r--subprojects/packagefiles/shaderc/no_hlsl_compile.diff13
10 files changed, 818 insertions, 36 deletions
diff --git a/subprojects/packagefiles/SPIRV-Cross/msvc_static_build.diff b/subprojects/packagefiles/SPIRV-Cross/msvc_static_build.diff
new file mode 100644
index 0000000..5047537
--- /dev/null
+++ b/subprojects/packagefiles/SPIRV-Cross/msvc_static_build.diff
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b2ab5ed..49d7d5a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -31,6 +31,12 @@ endif()
+ # Avoid error on Android NDK 27+'s CMake files
+ cmake_policy(SET CMP0057 NEW)
+
++# https://github.com/KhronosGroup/SPIRV-Cross/issues/2341
++if (POLICY CMP0091)
++ cmake_policy(SET CMP0091 NEW)
++endif()
++set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
++
+ project(SPIRV-Cross LANGUAGES CXX C)
+ enable_testing()
+
diff --git a/subprojects/packagefiles/ffmpeg-compat/ffmpeg.git-effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch b/subprojects/packagefiles/ffmpeg-compat/ffmpeg.git-effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
new file mode 100644
index 0000000..b4fec43
--- /dev/null
+++ b/subprojects/packagefiles/ffmpeg-compat/ffmpeg.git-effadce6c756247ea8bae32dc13bb3e6f464f0eb.patch
@@ -0,0 +1,73 @@
+From: Rémi Denis-Courmont <remi@remlab.net>
+Date: Sun, 16 Jul 2023 15:18:02 +0000 (+0300)
+Subject: avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
+X-Git-Tag: n6.1~1007
+X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/effadce6c756247ea8bae32dc13bb3e6f464f0eb
+
+avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+
+diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
+index 6298f5ed19..ca7e2dffc1 100644
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
diff --git a/subprojects/packagefiles/ffmpeg-compat/meson.build b/subprojects/packagefiles/ffmpeg-compat/meson.build
new file mode 100644
index 0000000..7aeeb71
--- /dev/null
+++ b/subprojects/packagefiles/ffmpeg-compat/meson.build
@@ -0,0 +1,197 @@
+project('ffmpeg', 'c', version: '3.4.14', meson_version: '>=0.57.0')
+
+ffmpeg_version_string = meson.project_version()
+
+compiler = meson.get_compiler('c')
+
+cpu = target_machine.cpu_family()
+is_64bit = (cpu == 'x86_64' or cpu == 'aarch64')
+is_debug = get_option('debug')
+is_minsize = get_option('optimization') == 's'
+is_linux = host_machine.system() == 'linux'
+is_windows = host_machine.system() == 'windows'
+is_msvc = compiler.get_id() == 'msvc' or compiler.get_id() == 'clang-cl'
+is_mingw = is_windows and not is_msvc
+is_android = host_machine.system() == 'android'
+
+extra_options = []
+
+if not is_debug
+ extra_options += ['--disable-debug']
+endif
+
+if is_minsize
+ extra_options += ['--enable-small']
+endif
+
+extra_options += ['--arch=' + cpu]
+extra_options += ['--cc=' + compiler.cmd_array()[0]]
+if meson.is_cross_build()
+ if is_msvc
+ extra_options += ['--ld=' + compiler.get_linker_id()]
+ endif
+ extra_options += ['--ar=' + meson.get_external_property('ar', 'ar')]
+ extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
+endif
+
+if cpu == 'x86_64' or cpu == 'x86'
+ extra_options += ['--enable-x86asm']
+endif
+
+if is_windows
+ extra_options += ['--extra-cflags=-D_WIN32_WINNT=0x0502'] # Windows Server 2003 with SP1, Windows XP with SP2.
+ if is_64bit
+ extra_options += ['--target-os=win64']
+ else
+ extra_options += ['--target-os=win32']
+ endif
+ if is_msvc
+ extra_options += ['--toolchain=msvc']
+ endif
+ extra_options += ['--enable-w32threads']
+elif is_android
+ extra_options += ['--target-os=android']
+endif
+
+#'--extra-ldflags=-Lbuild/subprojects/libalabaster -l:libalabaster.a',
+#'--malloc-prefix=al_',
+
+decoders = 'flac,mp3,mp3float,aac,opus,vorbis,h264,hevc,av1,vp9'
+decoders += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+#decoders += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+decoders += ',dca,eac3'
+decoders += ',pcm_dvd,mpegvideo,mpeg2video'
+#decoders += ',ass,srt'
+
+demuxers = ''
+parsers = ''
+if not get_option('sink-only')
+ demuxers += 'flac,mp3,aac,wav,matroska,mov,avi'
+ demuxers += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+ #demuxers += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+ demuxers += ',eac3'
+ demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
+ #demuxers += ',ass,srt'
+ parsers += 'aac,opus,h264,hevc,av1,vp9'
+ parsers += ',dca'
+ parsers += ',mpegaudio,mpegvideo,dvd_nav'
+ extra_options += ['--enable-bzlib'] # matroska
+endif
+
+extra_options += ['--enable-zlib']
+decoders += ',png,apng,mjpeg,jpeg2000,gif,'
+if not get_option('sink-only')
+ demuxers += ',image_png_pipe,image2,mjpeg,image2pipe,image_jpeg_pipe,gif'
+ parsers += ',png,mjpeg,jpeg2000,gif'
+endif
+
+bsfs = ''
+if not get_option('sink-only')
+ bsfs += 'extract_extradata,mp3_header_decompress'
+endif
+
+hwaccels = ''
+if get_option('codec-hwaccel').enabled()
+ if get_option('renderer-api') == 'vulkan'
+ extra_options += ['--enable-vulkan']
+ hwaccels += 'h264_vulkan,hevc_vulkan,av1_vulkan,vp9_vulkan'
+ elif is_windows
+ extra_options += ['--enable-d3d11va']
+ hwaccels += 'h264_d3d11va,hevc_d3d11va,av1_d3d11va,vp9_d3d11va'
+ hwaccels += ',h264_d3d11va2,hevc_d3d11va2,av1_d3d11va2,vp9_d3d11va2'
+ #extra_options += ['--enable-dxva2']
+ #hwaccels += ',h264_dxva2,hevc_dxva2,av1_dxva2,vp9_dxva2'
+ elif is_android
+ extra_options += ['--enable-jni', '--enable-mediacodec']
+ decoders += ',h264_mediacodec,hevc_mediacodec,av1_mediacodec,vp9_mediacodec'
+ elif is_linux
+ extra_options += ['--enable-vaapi']
+ endif
+else
+ extra_options += ['--disable-hwaccels']
+endif
+
+protocols = ''
+if not get_option('sink-only')
+ protocols += 'cache'
+endif
+
+if decoders != ''
+ extra_options += ['--enable-decoder=' + decoders]
+endif
+
+if demuxers != ''
+ extra_options += ['--enable-demuxer=' + demuxers]
+endif
+
+if parsers != ''
+ extra_options += ['--enable-parser=' + parsers]
+endif
+
+if bsfs != ''
+ extra_options += ['--enable-bsf=' + bsfs]
+endif
+
+if protocols != ''
+ extra_options += ['--enable-protocol=' + protocols]
+endif
+
+if hwaccels != ''
+ extra_options += ['--enable-hwaccel=' + hwaccels]
+endif
+
+if is_linux or is_mingw
+ extra_options += ['--enable-libsoxr']
+endif
+
+ext_proj = import('unstable-external_project')
+
+proj = ext_proj.add_project('configure',
+ configure_options: [
+ '--prefix=@PREFIX@',
+ '--libdir=@PREFIX@/@LIBDIR@',
+ '--incdir=@PREFIX@/@INCLUDEDIR@',
+ '--enable-pic',
+ '--enable-static',
+ '--disable-shared',
+ '--disable-logging',
+ '--disable-all',
+ '--disable-autodetect',
+ '--disable-everything',
+ '--disable-programs',
+ '--disable-doc',
+ '--disable-htmlpages',
+ '--disable-manpages',
+ '--disable-podpages',
+ '--disable-txtpages',
+ '--disable-safe-bitstream-reader',
+ '--disable-schannel',
+ '--disable-network',
+ '--disable-securetransport',
+ #'--disable-iconv',
+ '--enable-gpl',
+ '--enable-version3',
+ '--disable-nonfree',
+ '--enable-runtime-cpudetect',
+ '--enable-asm',
+ '--enable-inline-asm',
+ '--enable-avutil',
+ '--enable-avformat',
+ '--enable-avcodec',
+ #'--enable-avdevice',
+ '--enable-swresample',
+ '--enable-swscale',
+ '--disable-indevs',
+ '--disable-outdevs',
+ extra_options
+ ],
+ cross_configure_options: ['--enable-cross-compile'],
+ verbose: true)
+
+avutil = proj.dependency('avutil')
+avformat = proj.dependency('avformat')
+avcodec = proj.dependency('avcodec')
+#avdevice = proj.dependency('avdevice')
+swresample = proj.dependency('swresample')
+swscale = proj.dependency('swscale')
+ffmpeg_include = declare_dependency(include_directories: include_directories('.', 'build/'))
diff --git a/subprojects/packagefiles/ffmpeg/meson.build b/subprojects/packagefiles/ffmpeg/meson.build
index 0ecae9e..8bcce34 100644
--- a/subprojects/packagefiles/ffmpeg/meson.build
+++ b/subprojects/packagefiles/ffmpeg/meson.build
@@ -24,11 +24,14 @@ if is_minsize
extra_options += ['--enable-small']
endif
-extra_options += ['--cc=' + compiler.cmd_array()[0]]
extra_options += ['--arch=' + cpu]
+extra_options += ['--cc=' + compiler.cmd_array()[0]]
if meson.is_cross_build()
- extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
+ if is_msvc
+ extra_options += ['--ld=' + compiler.get_linker_id()]
+ endif
extra_options += ['--ar=' + meson.get_external_property('ar', 'ar')]
+ extra_options += ['--nm=' + meson.get_external_property('nm', 'nm')]
endif
if cpu == 'x86_64' or cpu == 'x86'
@@ -52,32 +55,45 @@ endif
#'--extra-ldflags=-Lbuild/subprojects/libalabaster -l:libalabaster.a',
#'--malloc-prefix=al_',
-decoders = 'flac,mp3,mp3float,aac,opus,vorbis,alac,mjpeg,jpeg2000,gif,h264,hevc,av1,vp9,vp8'
-decoders += ',pcm_f32be,pcm_s32be,pcm_s32le,pcm_s32le_planar,pcm_f32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar'
-decoders += ',dca'
-#decoders += ',pcm_dvd,mpegvideo,mpeg2video'
+decoders = 'flac,mp3,mp3float,aac,opus,vorbis,h264,hevc,av1,vp9'
+decoders += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+#decoders += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+decoders += ',dca,eac3'
+decoders += ',pcm_dvd,mpegvideo,mpeg2video'
#decoders += ',ass,srt'
-demuxers = 'flac,mp3,aac,wav,image2,mjpeg,image2pipe,image_jpeg_pipe,gif,matroska,mov,avi'
-#demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
-#demuxers += ',ass,srt'
-
-parsers = 'aac,opus,mjpeg,jpeg2000,gif,h264,hevc,av1,vp9,vp8'
-parsers += ',dca'
-#parsers += ',mpegaudio,mpegvideo,dvd_nav'
+demuxers = ''
+parsers = ''
+if not get_option('sink-only')
+ demuxers += 'flac,mp3,aac,wav,matroska,mov,avi'
+ demuxers += ',pcm_s32be,pcm_s32le,pcm_s24be,pcm_s24le,pcm_s16be,pcm_s16le'
+ #demuxers += ',pcm_f32be,pcm_f32le,pcm_s32le_planar,pcm_s16be_planar,pcm_s16le_planar'
+ demuxers += ',eac3'
+ demuxers += ',mpegts,mpegtsraw,mpegps,mpegvideo'
+ #demuxers += ',ass,srt'
+ parsers += 'aac,opus,h264,hevc,av1,vp9'
+ parsers += ',dca'
+ parsers += ',mpegaudio,mpegvideo,dvd_nav'
+ extra_options += ['--enable-bzlib'] # matroska
+endif
extra_options += ['--enable-zlib']
-decoders += ',png,apng'
-demuxers += ',image_png_pipe'
-parsers += ',png'
+decoders += ',png,apng,mjpeg,jpeg2000,gif,'
+if not get_option('sink-only')
+ demuxers += ',image_png_pipe,image2,mjpeg,image2pipe,image_jpeg_pipe,gif'
+ parsers += ',png,mjpeg,jpeg2000,gif'
+endif
-bsfs = 'extract_extradata,mp3_header_decompress'
+bsfs = ''
+if not get_option('sink-only')
+ bsfs += 'extract_extradata,mp3_header_decompress'
+endif
hwaccels = ''
if get_option('codec-hwaccel').enabled()
if get_option('renderer-api') == 'vulkan'
extra_options += ['--enable-vulkan']
- hwaccels += 'h264_vulkan,hevc_vulkan,av1_vulkan'
+ hwaccels += 'h264_vulkan,hevc_vulkan,av1_vulkan,vp9_vulkan'
elif is_windows
extra_options += ['--enable-d3d11va']
hwaccels += 'h264_d3d11va,hevc_d3d11va,av1_d3d11va,vp9_d3d11va'
@@ -90,14 +106,39 @@ if get_option('codec-hwaccel').enabled()
elif is_linux
extra_options += ['--enable-vaapi']
endif
+else
+ extra_options += ['--disable-hwaccels']
+endif
+
+protocols = ''
+if not get_option('sink-only')
+ protocols += 'cache'
+endif
+
+if decoders != ''
+ extra_options += ['--enable-decoder=' + decoders]
+endif
+
+if demuxers != ''
+ extra_options += ['--enable-demuxer=' + demuxers]
+endif
+
+if parsers != ''
+ extra_options += ['--enable-parser=' + parsers]
+endif
+
+if bsfs != ''
+ extra_options += ['--enable-bsf=' + bsfs]
+endif
+
+if protocols != ''
+ extra_options += ['--enable-protocol=' + protocols]
endif
if hwaccels != ''
extra_options += ['--enable-hwaccel=' + hwaccels]
endif
-protocols = 'cache'
-
if is_linux or is_mingw
extra_options += ['--enable-libsoxr']
endif
@@ -122,17 +163,11 @@ proj = ext_proj.add_project('configure',
'--disable-manpages',
'--disable-podpages',
'--disable-txtpages',
- '--disable-bzlib',
- '--disable-error-resilience',
- '--disable-iconv',
+ '--disable-safe-bitstream-reader',
'--disable-schannel',
'--disable-network',
'--disable-securetransport',
- '--disable-sdl2',
- '--disable-symver',
- '--disable-faan',
- '--disable-alsa',
- '--disable-xlib',
+ #'--disable-iconv',
'--enable-gpl',
'--enable-version3',
'--disable-nonfree',
@@ -142,16 +177,11 @@ proj = ext_proj.add_project('configure',
'--enable-avutil',
'--enable-avformat',
'--enable-avcodec',
- '--enable-avdevice',
+ #'--enable-avdevice',
'--enable-swresample',
'--enable-swscale',
'--disable-indevs',
'--disable-outdevs',
- '--enable-demuxer=' + demuxers,
- '--enable-decoder=' + decoders,
- '--enable-parser=' + parsers,
- '--enable-bsf=' + bsfs,
- '--enable-protocol=' + protocols,
extra_options
],
cross_configure_options: ['--enable-cross-compile'],
@@ -160,7 +190,7 @@ proj = ext_proj.add_project('configure',
avutil = proj.dependency('avutil')
avformat = proj.dependency('avformat')
avcodec = proj.dependency('avcodec')
-avdevice = proj.dependency('avdevice')
+#avdevice = proj.dependency('avdevice')
swresample = proj.dependency('swresample')
swscale = proj.dependency('swscale')
ffmpeg_include = declare_dependency(include_directories: include_directories('.', 'build/'))
diff --git a/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff b/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff
new file mode 100644
index 0000000..3aff7e9
--- /dev/null
+++ b/subprojects/packagefiles/ffmpeg/msvc_build_conform.diff
@@ -0,0 +1,20 @@
+--- a/configure 2025-03-02 19:22:08.000000000 -0500
++++ b/configure 2025-05-17 18:43:08.854727216 -0400
+@@ -5184,7 +5184,7 @@
+ DEPCCFLAGS=$_flags
+ fi
+
+-if $ar 2>&1 | grep -q Microsoft; then
++if $ar 2>&1 | grep -q Microsoft || [ "$ar" == "llvm-lib" ]; then
+ arflags="-nologo"
+ ar_o='-out:$@'
+ elif $ar 2>&1 | grep -q "\[D\] "; then
+@@ -5878,6 +5878,8 @@
+ enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
+ add_cppflags -DWIN32_LEAN_AND_MEAN
+ shlibdir_default="$bindir_default"
++ LIBPREF=""
++ LIBSUF=".lib"
+ SLIBPREF=""
+ SLIBSUF=".dll"
+ SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
diff --git a/subprojects/packagefiles/libplacebo/max_align_msvc.diff b/subprojects/packagefiles/libplacebo/max_align_msvc.diff
new file mode 100644
index 0000000..13df154
--- /dev/null
+++ b/subprojects/packagefiles/libplacebo/max_align_msvc.diff
@@ -0,0 +1,14 @@
+diff --git a/src/pl_alloc.h b/src/pl_alloc.h
+index 78df08a..29718eb 100644
+--- a/src/pl_alloc.h
++++ b/src/pl_alloc.h
+@@ -83,6 +83,9 @@ char *pl_strndup0(void *parent, const char *str, size_t size);
+ // `priv` at the address of `pub` + sizeof(pub), rounded up to the maximum
+ // alignment requirements.
+
++#if defined(_MSC_VER)
++typedef double max_align_t;
++#endif
+ #define PL_ALIGN_MEM(size) PL_ALIGN2(size, alignof(max_align_t))
+
+ #define PL_PRIV(pub) \
diff --git a/subprojects/packagefiles/miniaudio/meson.build b/subprojects/packagefiles/miniaudio/meson.build
index c980787..3c9e4c2 100644
--- a/subprojects/packagefiles/miniaudio/meson.build
+++ b/subprojects/packagefiles/miniaudio/meson.build
@@ -1,2 +1,2 @@
-project('miniaudio', 'c', version: 'git-29c17fc')
+project('miniaudio', 'c', version: 'git-47020e4')
miniaudio = declare_dependency(include_directories: include_directories('.'))
diff --git a/subprojects/packagefiles/miniaudio/miniaudio_wasapi_drain_tweak.diff b/subprojects/packagefiles/miniaudio/miniaudio_wasapi_drain_tweak.diff
new file mode 100644
index 0000000..56da73b
--- /dev/null
+++ b/subprojects/packagefiles/miniaudio/miniaudio_wasapi_drain_tweak.diff
@@ -0,0 +1,13 @@
+diff --git a/miniaudio.h b/miniaudio.h
+index c12ba87..4d9bbb0 100644
+--- a/miniaudio.h
++++ b/miniaudio.h
+@@ -24501,7 +24501,7 @@ static ma_result ma_device_stop__wasapi_nolock(ma_device* pDevice)
+ */
+ if (ma_atomic_bool32_get(&pDevice->wasapi.isStartedPlayback)) {
+ /* We need to make sure we put a timeout here or else we'll risk getting stuck in a deadlock in some cases. */
+- DWORD waitTime = (pDevice->wasapi.actualBufferSizeInFramesPlayback * 1000) / pDevice->playback.internalSampleRate;
++ DWORD waitTime = ma_calculate_buffer_size_in_milliseconds_from_frames(pDevice->wasapi.actualBufferSizeInFramesPlayback, pDevice->playback.internalSampleRate);
+
+ if (pDevice->playback.shareMode == ma_share_mode_exclusive) {
+ WaitForSingleObject((HANDLE)pDevice->wasapi.hEventPlayback, waitTime);
diff --git a/subprojects/packagefiles/msvc-wine/msvc-wine-shebang-nixos.diff b/subprojects/packagefiles/msvc-wine/msvc-wine-shebang-nixos.diff
new file mode 100644
index 0000000..37295a9
--- /dev/null
+++ b/subprojects/packagefiles/msvc-wine/msvc-wine-shebang-nixos.diff
@@ -0,0 +1,405 @@
+https://github.com/mstorsjo/msvc-wine/pull/187
+
+diff --git a/fixinclude b/fixinclude
+index 4a8c733..bd5280c 100755
+--- a/fixinclude
++++ b/fixinclude
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/bin/env perl
+ #
+ # Copyright (c) 2019 Martin Storsjo
+ #
+diff --git a/install.sh b/install.sh
+index ac00d9f..039922f 100755
+--- a/install.sh
++++ b/install.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/usr/bin/env sh
+ #
+ # Copyright (c) 2019 Martin Storsjo
+ #
+diff --git a/lowercase b/lowercase
+index ee10cc7..32902f7 100755
+--- a/lowercase
++++ b/lowercase
+@@ -1,4 +1,4 @@
+-#!/usr/bin/perl
++#!/usr/bin/env perl
+ #
+ # Copyright (c) 2019 Martin Storsjo
+ #
+diff --git a/msvcenv-native.sh b/msvcenv-native.sh
+index e83c687..f3a99f1 100755
+--- a/msvcenv-native.sh
++++ b/msvcenv-native.sh
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/usr/bin/env sh
+ #
+ # Copyright (c) 2019 Martin Storsjo
+ #
+@@ -33,9 +33,9 @@ else
+ if [ ! -f "$ENV" ]; then
+ echo $ENV doesn\'t exist
+ else
+- export INCLUDE="$(bash -c ". $ENV && /bin/echo \"\$INCLUDE\"" | sed s/z://g | sed 's/\\/\//g')"
+- export LIB="$(bash -c ". $ENV && /bin/echo \"\$LIB\"" | sed s/z://g | sed 's/\\/\//g')"
+- MSVCARCH="$(bash -c ". $ENV && /bin/echo \"\$ARCH\"")"
++ export INCLUDE="$(bash -c ". $ENV && /usr/bin/env echo \"\$INCLUDE\"" | sed s/z://g | sed 's/\\/\//g')"
++ export LIB="$(bash -c ". $ENV && /usr/bin/env echo \"\$LIB\"" | sed s/z://g | sed 's/\\/\//g')"
++ MSVCARCH="$(bash -c ". $ENV && /usr/bin/env echo \"\$ARCH\"")"
+ case $MSVCARCH in
+ x86) TARGET_ARCH=i686 ;;
+ x64) TARGET_ARCH=x86_64 ;;
+diff --git a/test/test-asm.sh b/test/test-asm.sh
+index 5774c02..ba9511b 100755
+--- a/test/test-asm.sh
++++ b/test/test-asm.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-cl.sh b/test/test-cl.sh
+index 250f092..41fe51b 100755
+--- a/test/test-cl.sh
++++ b/test/test-cl.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Huang Qinjin
+ #
+diff --git a/test/test-clang-cl-cmds.sh b/test/test-clang-cl-cmds.sh
+index 885835b..9409d2b 100755
+--- a/test/test-clang-cl-cmds.sh
++++ b/test/test-clang-cl-cmds.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-clang-cl.sh b/test/test-clang-cl.sh
+index ba7f82d..f99b745 100755
+--- a/test/test-clang-cl.sh
++++ b/test/test-clang-cl.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-cmake-clang-cl.sh b/test/test-cmake-clang-cl.sh
+index 78485ab..4a6ce3f 100755
+--- a/test/test-cmake-clang-cl.sh
++++ b/test/test-cmake-clang-cl.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-cmake.sh b/test/test-cmake.sh
+index 6beface..994d07d 100755
+--- a/test/test-cmake.sh
++++ b/test/test-cmake.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Huang Qinjin
+ #
+diff --git a/test/test-dumpbin.sh b/test/test-dumpbin.sh
+index 68608d4..dd3841d 100755
+--- a/test/test-dumpbin.sh
++++ b/test/test-dumpbin.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Huang Qinjin
+ #
+diff --git a/test/test-mc.sh b/test/test-mc.sh
+index 836a210..2e7d8ab 100755
+--- a/test/test-mc.sh
++++ b/test/test-mc.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Mark Harmstone
+ #
+diff --git a/test/test-meson.sh b/test/test-meson.sh
+index 68ac271..bfd6d6d 100755
+--- a/test/test-meson.sh
++++ b/test/test-meson.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-midl.sh b/test/test-midl.sh
+index 45d9f92..8f9319e 100755
+--- a/test/test-midl.sh
++++ b/test/test-midl.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Martin Storsjo
+ #
+diff --git a/test/test-msbuild.sh b/test/test-msbuild.sh
+index 00f03c6..faf284a 100755
+--- a/test/test-msbuild.sh
++++ b/test/test-msbuild.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Sergey Kvachonok
+ #
+diff --git a/test/test-mt.sh b/test/test-mt.sh
+index 5f1881b..eda11ab 100755
+--- a/test/test-mt.sh
++++ b/test/test-mt.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Huang Qinjin
+ #
+diff --git a/test/test-vcpkg.sh b/test/test-vcpkg.sh
+index dc3d3ce..79ebe51 100755
+--- a/test/test-vcpkg.sh
++++ b/test/test-vcpkg.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Huang Qinjin
+ #
+diff --git a/test/test-wdk-msbuild.sh b/test/test-wdk-msbuild.sh
+index b37b3de..90f4189 100755
+--- a/test/test-wdk-msbuild.sh
++++ b/test/test-wdk-msbuild.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Sergey Kvachonok
+ #
+diff --git a/test/test.sh b/test/test.sh
+index 1825216..ad9f9c1 100755
+--- a/test/test.sh
++++ b/test/test.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2023 Huang Qinjin
+ #
+diff --git a/vsdownload.py b/vsdownload.py
+index d9b4dcf..7598eec 100755
+--- a/vsdownload.py
++++ b/vsdownload.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python3
++#!/usr/bin/env python3
+ #
+ # Copyright (c) 2019 Martin Storsjo
+ #
+diff --git a/wdk-download.sh b/wdk-download.sh
+index e0ea631..7fa8bf0 100755
+--- a/wdk-download.sh
++++ b/wdk-download.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Sergey Kvachonok
+ #
+diff --git a/wrappers/armasm b/wrappers/armasm
+index 3797431..bf8ea5a 100755
+--- a/wrappers/armasm
++++ b/wrappers/armasm
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/armasm64 b/wrappers/armasm64
+index fdfdb38..eb1553f 100755
+--- a/wrappers/armasm64
++++ b/wrappers/armasm64
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/cl b/wrappers/cl
+index 35c1b23..6ca6a56 100755
+--- a/wrappers/cl
++++ b/wrappers/cl
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/cmd b/wrappers/cmd
+index 88a39f0..a7ab236 100755
+--- a/wrappers/cmd
++++ b/wrappers/cmd
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/dumpbin b/wrappers/dumpbin
+index c6f7f9e..18c5591 100755
+--- a/wrappers/dumpbin
++++ b/wrappers/dumpbin
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/findstr b/wrappers/findstr
+index 1146022..136ac0e 100755
+--- a/wrappers/findstr
++++ b/wrappers/findstr
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Huang Qinjin
+ #
+diff --git a/wrappers/lib b/wrappers/lib
+index 143da0c..3967675 100755
+--- a/wrappers/lib
++++ b/wrappers/lib
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/link b/wrappers/link
+index dba1774..53920d4 100755
+--- a/wrappers/link
++++ b/wrappers/link
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/mc b/wrappers/mc
+index c1c5d80..bf71882 100755
+--- a/wrappers/mc
++++ b/wrappers/mc
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/midl b/wrappers/midl
+index dd34988..adddcfa 100755
+--- a/wrappers/midl
++++ b/wrappers/midl
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/ml b/wrappers/ml
+index db671c7..a5d537b 100755
+--- a/wrappers/ml
++++ b/wrappers/ml
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/ml64 b/wrappers/ml64
+index 0708ebe..df65803 100755
+--- a/wrappers/ml64
++++ b/wrappers/ml64
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/msbuild b/wrappers/msbuild
+index 65bbf8f..53fdd8f 100755
+--- a/wrappers/msbuild
++++ b/wrappers/msbuild
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2024 Sergey Kvachonok
+ #
+diff --git a/wrappers/msvcenv.sh b/wrappers/msvcenv.sh
+index 101e9bb..2d2a918 100755
+--- a/wrappers/msvcenv.sh
++++ b/wrappers/msvcenv.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/mt b/wrappers/mt
+index edebd75..ed92f96 100755
+--- a/wrappers/mt
++++ b/wrappers/mt
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/nmake b/wrappers/nmake
+index 88102d1..3eaf0f5 100755
+--- a/wrappers/nmake
++++ b/wrappers/nmake
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/rc b/wrappers/rc
+index f7b8d97..7afb1ad 100755
+--- a/wrappers/rc
++++ b/wrappers/rc
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
+diff --git a/wrappers/wine-msvc.sh b/wrappers/wine-msvc.sh
+index a267283..bb08891 100755
+--- a/wrappers/wine-msvc.sh
++++ b/wrappers/wine-msvc.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ #
+ # Copyright (c) 2018 Martin Storsjo
+ #
diff --git a/subprojects/packagefiles/shaderc/no_hlsl_compile.diff b/subprojects/packagefiles/shaderc/no_hlsl_compile.diff
new file mode 100644
index 0000000..ef96592
--- /dev/null
+++ b/subprojects/packagefiles/shaderc/no_hlsl_compile.diff
@@ -0,0 +1,13 @@
+diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc
+index 9bf9a43..507e669 100644
+--- a/libshaderc_util/src/compiler.cc
++++ b/libshaderc_util/src/compiler.cc
+@@ -286,7 +286,7 @@ std::tuple<bool, std::vector<uint32_t>, size_t> Compiler::Compile(
+ bases[static_cast<int>(UniformKind::StorageBuffer)]);
+ shader.setShiftUavBinding(
+ bases[static_cast<int>(UniformKind::UnorderedAccessView)]);
+- shader.setHlslIoMapping(hlsl_iomap_);
++ //shader.setHlslIoMapping(hlsl_iomap_);
+ shader.setResourceSetBinding(
+ hlsl_explicit_bindings_[static_cast<int>(used_shader_stage)]);
+ shader.setEnvClient(target_client_info.client,