diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5c86eb7c815b1797b68c348020238bfda580e41c..c5f1f63326037276a96b93b290ad85089fd131f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -433,9 +433,17 @@ endif()
 #
 # ZZIP
 #
+
+option(ENABLE_BUNDLED_ZZIP "Enable building of the bundled zzip"
+    ${BUILD_STATIC_WITH_BUNDLED_LIBS})
 if(EMBED_LUAZIP)
-    set(ZZIP_FIND_REQUIRED ON)
-    find_package(ZZIP)
+    if(ENABLE_BUNDLED_ZZIP)
+        include(BuildZZIP)
+        add_dependencies(build_bundled_libs bundled-zzip)
+    else()
+        set(ZZIP_FIND_REQUIRED ON)
+        find_package(ZZIP)
+    endif()
 endif()
 
 #
diff --git a/cmake/BuildZZIP.cmake b/cmake/BuildZZIP.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..4a9005f8b61aa0d261a3397361ed6f251423fbef
--- /dev/null
+++ b/cmake/BuildZZIP.cmake
@@ -0,0 +1,54 @@
+set(ZZIP_VERSION v0.13.71)
+set(ZZIP_HASH 1aa094186cf2222e4cda1b91b8fb8f60)
+set(ZZIP_INSTALL_DIR ${PROJECT_BINARY_DIR}/build/zzip)
+set(ZZIP_INCLUDE_DIR ${ZZIP_INSTALL_DIR}/include)
+set(ZZIP_LIBRARY ${ZZIP_INSTALL_DIR}/lib/libzzip-0.a)
+set(ZZIP_CFLAGS "${DEPENDENCY_CFLAGS} -O2")
+
+if(APPLE)
+    set(ZZIP_CFLAGS "${ZZIP_CFLAGS} ${CMAKE_C_SYSROOT_FLAG} ${CMAKE_OSX_SYSROOT}")
+endif()
+
+set(ZZIP_CMAKE_FLAGS
+    "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
+    "-DCMAKE_C_FLAGS=${ZZIP_CFLAGS}"
+    "-DCMAKE_INSTALL_PREFIX=${ZZIP_INSTALL_DIR}"
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DBUILD_STATIC_LIBS=TRUE"
+    "-DBUILD_SHARED_LIBS=FALSE"
+    "-DZZIPDOCS=FALSE"
+    "-DZZIPBINS=FALSE"
+    "-DZZIPWRAP=FALSE"
+    "-DZZIPTEST=FALSE"
+    "-DZZIPSDL=FALSE"
+)
+
+if(ENABLED_BUNDLED_ZLIB)
+    list(APPEND ZZIP_CMAKE_FLAGS
+        "-DCMAKE_PREFIX_PATH=${ZLIB_INSTALL_DIR}"
+        "-DCMAKE_FIND_USE_CMAKE_SYSTEM_PATH=FALSE"
+    )
+endif()
+
+ExternalProject_Add(bundled-zzip-project
+    PREFIX ${ZZIP_INSTALL_DIR}
+    URL https://github.com/gdraheim/zziplib/archive/${ZZIP_VERSION}.tar.gz
+    URL_MD5 ${ZZIP_HASH}
+    CMAKE_ARGS ${ZZIP_CMAKE_FLAGS}
+    BUILD_BYPRODUCTS ${ZZIP_LIBRARY}
+)
+
+if(ENABLE_BUNDLED_ZLIB)
+    add_dependencies(bundled-zzip-project bundled-zlib)
+endif()
+
+add_library(bundled-zzip STATIC IMPORTED GLOBAL)
+set_target_properties(bundled-zzip PROPERTIES IMPORTED_LOCATION
+    ${ZZIP_LIBRARY})
+add_dependencies(bundled-zzip bundled-zzip-project)
+
+set(ZZIP_FOUND TRUE)
+set(ZZIP_LIBRARIES ${ZZIP_LIBRARY})
+set(ZZIP_INCLUDE_DIRS ${ZZIP_INCLUDE_DIR})
+
+message(STATUS "Using bundled zzip")