diff --git a/.gitmodules b/.gitmodules
index 69a60a4b..845019e5 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -26,5 +26,8 @@
path = src/openssl
url = https://github.com/openssl/openssl.git
[submodule "src/depot_tools"]
- path = src/depot_tools
- url = https://chromium.googlesource.com/chromium/tools/depot_tools.git
+ path = src/depot_tools
+ url = https://chromium.googlesource.com/chromium/tools/depot_tools.git
+[submodule "src/libzip"]
+ path = src/libzip
+ url = https://github.com/nih-at/libzip.git
diff --git a/build.ps1 b/build.ps1
index b03aca29..1965ccaf 100644
--- a/build.ps1
+++ b/build.ps1
@@ -92,6 +92,11 @@ Write-Host
Copy-Item -Force ".\src\libpng\projects\vstudio\Release Library\libpng16.lib" $binDir
Copy-Item -Force ".\src\libpng\projects\vstudio\Release Library\zlib.lib" $binDir
+# Build libzip
+Write-Host "Building libzip..." -ForegroundColor Cyan
+msbuild ".\vsprojects\libzip\libzip.sln" "/p:Configuration=Release Static" "/p:Platform=Win32" "/p:PlatformToolset=v140" "/v:minimal"
+Copy-Item -Force ".\vsprojects\libzip\Release Static\libzip.lib" $binDir
+
# Build lipspeexdsp
Write-Host "Building libspeexdsp..." -ForegroundColor Cyan
msbuild ".\vsprojects\speexdsp\libspeexdsp.sln" "/p:Configuration=Release Static" "/p:Platform=Win32" "/p:PlatformToolset=v140" "/v:minimal"
@@ -133,6 +138,7 @@ Push-Location ".\bin"
".\jansson.lib" `
".\libpng16.lib" `
".\zlib.lib" `
+ ".\libzip.lib" `
".\libspeexdsp.lib" `
".\libcurl.lib" `
".\libeay32.lib" `
diff --git a/build64.ps1 b/build64.ps1
index e827cc88..1c665c23 100644
--- a/build64.ps1
+++ b/build64.ps1
@@ -92,6 +92,11 @@ Write-Host
Copy-Item -Force ".\src\libpng\projects\vstudio\x64\Release Library\libpng16.lib" $binDir
Copy-Item -Force ".\src\libpng\projects\vstudio\x64\Release Library\zlib.lib" $binDir
+# Build libzip
+Write-Host "Building libzip..." -ForegroundColor Cyan
+msbuild ".\vsprojects\libzip\libzip.sln" "/p:Configuration=Release Static" "/p:Platform=x64" "/p:PlatformToolset=v140" "/v:minimal"
+Copy-Item -Force ".\vsprojects\libzip\x64\Release Static\libzip.lib" $binDir
+
# Build libspeexdsp
Write-Host "Building libspeexdsp..." -ForegroundColor Cyan
msbuild ".\vsprojects\speexdsp\libspeexdsp.sln" "/p:Configuration=Release Static" "/p:Platform=x64" "/p:PlatformToolset=v140" "/v:minimal"
@@ -133,6 +138,7 @@ Push-Location ".\bin"
".\jansson.lib" `
".\libpng16.lib" `
".\zlib.lib" `
+ ".\libzip.lib" `
".\libspeexdsp.lib" `
".\libcurl.lib" `
".\libeay32.lib" `
diff --git a/buildmac.sh b/buildmac.sh
index b0e36fcd..17accd85 100755
--- a/buildmac.sh
+++ b/buildmac.sh
@@ -39,6 +39,14 @@ cd src
install_name_tool -id @rpath/libjansson.dylib "$PREFIXDIR/lib/libjansson.dylib"
cd ..
+ echo -e "\n\nBuilding libzip ...\n\n"
+ cd libzip
+ autoreconf -i
+ eval ./configure $CONFIGUREOPTS
+ eval $COMMONMAKE
+ install_name_tool -id @rpath/libzip.dylib "$PREFIXDIR/lib/libzip.dylib"
+ cd ..
+
echo -e "\n\nBuilding speexdsp ...\n\n"
cd speexdsp
./autogen.sh
@@ -81,17 +89,20 @@ mkdir artifacts
# Manually copy headers wanted. Mostly to exclude freetype, which isn't directly used
mkdir artifacts/include
-cp -R build/include/libpng16 artifacts/include/
-cp build/include/jansson*.h artifacts/include/
-cp -R build/include/speex artifacts/include/
-cp -R build/include/SDL2 artifacts/include/
-cp -R build/include/openssl artifacts/include/
+cp -R build/include/libpng16 artifacts/include/
+cp build/include/jansson*.h artifacts/include/
+cp build/include/zip.h artifacts/include/
+cp -R build/lib/libzip/include/* artifacts/include/
+cp -R build/include/speex artifacts/include/
+cp -R build/include/SDL2 artifacts/include/
+cp -R build/include/openssl artifacts/include/
# Manually copy libs wanted. Removes static libraries and versioned libs
mkdir artifacts/lib
cp build/lib/libpng16.dylib artifacts/lib/
cp build/lib/libfreetype.dylib artifacts/lib/
cp build/lib/libjansson.dylib artifacts/lib/
+cp build/lib/libzip.dylib artifacts/lib/
cp build/lib/libspeexdsp.dylib artifacts/lib/
cp build/lib/libSDL2.dylib artifacts/lib/
cp build/lib/libSDL2_ttf.dylib artifacts/lib/
diff --git a/createpkg.ps1 b/createpkg.ps1
index 849c133c..72b9690a 100644
--- a/createpkg.ps1
+++ b/createpkg.ps1
@@ -60,6 +60,8 @@ CopyHeaders ".\src\sdl\include\*.h" "sdl"
CopyHeaders ".\src\sdl_ttf\*.h" "sdl_ttf"
CopyHeaders ".\src\libpng\*.h" "libpng"
CopyHeaders ".\src\zlib\*.h" "zlib"
+CopyHeaders ".\src\libzip\lib\*.h" "libzip"
+CopyHeaders ".\vsprojects\libzip\zipconf.h" "libzip"
CopyHeaders ".\src\jansson\include\*.h" "jansson"
CopyHeaders ".\src\speexdsp\win32\*.h" "libspeex"
CopyHeaders ".\src\speexdsp\include\speex\*.h" "libspeex\speex"
diff --git a/src/libzip b/src/libzip
new file mode 160000
index 00000000..586fc39b
--- /dev/null
+++ b/src/libzip
@@ -0,0 +1 @@
+Subproject commit 586fc39bc4b17c7c62df1a58a3f1d84717cc5e6b
diff --git a/vsprojects/libzip/config.h b/vsprojects/libzip/config.h
new file mode 100644
index 00000000..65260064
--- /dev/null
+++ b/vsprojects/libzip/config.h
@@ -0,0 +1,7 @@
+#pragma once
+
+#if WIN32
+ #define SIZEOF_OFF_T 4
+#else
+ #define SIZEOF_OFF_T 8
+#endif
diff --git a/vsprojects/libzip/libzip.sln b/vsprojects/libzip/libzip.sln
new file mode 100644
index 00000000..3841aa8b
--- /dev/null
+++ b/vsprojects/libzip/libzip.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzip", "libzip.vcxproj", "{5716F715-D80B-4B3B-923B-53C9CBA60B11}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Release Static|Win32 = Release Static|Win32
+ Release Static|x64 = Release Static|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5716F715-D80B-4B3B-923B-53C9CBA60B11}.Release Static|Win32.ActiveCfg = Release Static|Win32
+ {5716F715-D80B-4B3B-923B-53C9CBA60B11}.Release Static|Win32.Build.0 = Release Static|Win32
+ {5716F715-D80B-4B3B-923B-53C9CBA60B11}.Release Static|x64.ActiveCfg = Release Static|x64
+ {5716F715-D80B-4B3B-923B-53C9CBA60B11}.Release Static|x64.Build.0 = Release Static|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/vsprojects/libzip/libzip.vcxproj b/vsprojects/libzip/libzip.vcxproj
new file mode 100644
index 00000000..62cfc7b1
--- /dev/null
+++ b/vsprojects/libzip/libzip.vcxproj
@@ -0,0 +1,211 @@
+
+
+
+
+ Release Static
+ Win32
+
+
+ Release Static
+ x64
+
+
+
+ {5716F715-D80B-4B3B-923B-53C9CBA60B11}
+ libzip
+ 8.1
+
+
+
+ StaticLibrary
+ false
+ v140
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ v140
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ false
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;HAVE_CONFIG_H;%(PreprocessorDefinitions)
+
+
+ .;..\..\src\zlib
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ NDEBUG;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)
+ true
+ .;..\..\src\zlib
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vsprojects/libzip/zipconf.h b/vsprojects/libzip/zipconf.h
new file mode 100644
index 00000000..a08b23a6
--- /dev/null
+++ b/vsprojects/libzip/zipconf.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include
+
+typedef signed __int8 zip_int8_t;
+typedef signed __int16 zip_int16_t;
+typedef signed __int32 zip_int32_t;
+typedef signed __int64 zip_int64_t;
+typedef unsigned __int8 zip_uint8_t;
+typedef unsigned __int16 zip_uint16_t;
+typedef unsigned __int32 zip_uint32_t;
+typedef unsigned __int64 zip_uint64_t;
+
+#define ZIP_INT8_MAX CHAR_MAX
+#define ZIP_INT16_MAX SHRT_MAX
+#define ZIP_INT32_MAX INT_MAX
+#define ZIP_INT64_MAX LLONG_MAX
+#define ZIP_UINT8_MAX UCHAR_MAX
+#define ZIP_UINT16_MAX USHRT_MAX
+#define ZIP_UINT32_MAX UINT_MAX
+#define ZIP_UINT64_MAX ULLONG_MAX
+
+#define strcasecmp strcmpi