diff --git a/subprojects/libass.wrap b/subprojects/libass.wrap
index 3e8e691d058ce6b5bd774b4ef13fd1841c2c5258..90101e92211ca0d97b2e6b53990a350d071d6eb0 100644
--- a/subprojects/libass.wrap
+++ b/subprojects/libass.wrap
@@ -2,3 +2,4 @@
 directory = libass
 url = https://github.com/TypesettingTools/libass.git
 revision = meson-no-rasterizer-approximation
+patch_directory = libass
diff --git a/subprojects/packagefiles/libass/dirent.h b/subprojects/packagefiles/libass/dirent.h
new file mode 100644
index 0000000000000000000000000000000000000000..fcbd0289be2749e85e89e59f47d355d20b0a4314
--- /dev/null
+++ b/subprojects/packagefiles/libass/dirent.h
@@ -0,0 +1,6 @@
+// libass uses dirent in a function we don't use, so just provide a dummy version
+typedef struct DIR { int dummy; } DIR;
+typedef struct dirent { char *d_name; } dirent;
+static inline DIR *opendir(const char *x) { return 0; }
+static inline struct dirent *readdir(DIR *x) { return 0; }
+static inline void closedir(DIR *x) { }