diff --git a/.gitignore b/.gitignore
index 3ba16f7..99f34e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,8 @@
.idea/
cmake-build-*/
-# build
-build/
+# build(仅根目录,不影响 vendor/lz4/build 等子目录)
+/build/
compile_commands.json
diff --git a/README.md b/README.md
index 90509ff..1d2bc75 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,12 @@
# exPKG
## useage
-> ```bash
-> expkg /path/to/file.pkg|file.mpkg [output/path]
->```
+ ```bash
+ expkg /path/to/file.pkg|file.mpkg [output/path]
+```
build
```bash
-> cmake -B build
-> cmake --build build --config Release -j8
->```
+ cmake -B build
+ cmake --build build --config Release -j8
+```
diff --git a/vendor/lz4/build/.gitignore b/vendor/lz4/build/.gitignore
new file mode 100644
index 0000000..f0a2f9d
--- /dev/null
+++ b/vendor/lz4/build/.gitignore
@@ -0,0 +1,18 @@
+# Visual C++
+.vs/
+*Copy
+*.db
+*.opensdf
+*.sdf
+*.suo
+*.user
+ver*/
+VS2010/bin/
+VS2017/bin/
+VS*/bin/
+ipch
+
+# Fixup for lz4 project directories
+!VS2010/lz4
+!VS2017/lz4
+!VS*/lz4
diff --git a/vendor/lz4/build/README.md b/vendor/lz4/build/README.md
new file mode 100644
index 0000000..d183edb
--- /dev/null
+++ b/vendor/lz4/build/README.md
@@ -0,0 +1,44 @@
+Projects for various integrated development environments (IDE)
+==============================================================
+
+#### Included projects
+
+The following projects are included with the lz4 distribution:
+- `cmake` - CMake project
+- `meson` - Meson project
+- `visual` - scripts to generate Visual Studio solutions from `cmake` script
+- `VS2022` - Visual Studio 2022 solution - will soon be deprecated, prefer `visual` generators
+
+
+#### Projects available within VS2022\lz4.sln
+
+The Visual Studio solution file `lz4.sln` contains many projects that will be compiled to the
+`build\VS2010\bin\$(Platform)_$(Configuration)` directory. For example `lz4` set to `x64` and
+`Release` will be compiled to `build\VS2010\bin\x64_Release\lz4.exe`. The solution file contains the
+following projects:
+
+- `lz4` : Command Line Utility, supporting gzip-like arguments
+- `datagen` : Synthetic and parametrable data generator, for tests
+- `frametest` : Test tool that checks lz4frame integrity on target platform
+- `fullbench` : Precisely measure speed for each lz4 inner functions
+- `fuzzer` : Test tool, to check lz4 integrity on target platform
+- `liblz4` : A static LZ4 library compiled to `liblz4_static.lib`
+- `liblz4-dll` : A dynamic LZ4 library (DLL) compiled to `liblz4.dll` with the import library `liblz4.lib`
+- `fullbench-dll` : The fullbench program compiled with the import library; the executable requires LZ4 DLL
+
+
+#### Using LZ4 DLL with Microsoft Visual C++ project
+
+The header files `lib\lz4.h`, `lib\lz4hc.h`, `lib\lz4frame.h` and the import library
+`build\VS2010\bin\$(Platform)_$(Configuration)\liblz4.lib` are required to
+compile a project using Visual C++.
+
+1. The path to header files should be added to `Additional Include Directories` that can
+ be found in Project Properties of Visual Studio IDE in the `C/C++` Property Pages on the `General` page.
+2. The import library has to be added to `Additional Dependencies` that can
+ be found in Project Properties in the `Linker` Property Pages on the `Input` page.
+ If one will provide only the name `liblz4.lib` without a full path to the library
+ then the directory has to be added to `Linker\General\Additional Library Directories`.
+
+The compiled executable will require LZ4 DLL which is available at
+`build\VS2010\bin\$(Platform)_$(Configuration)\liblz4.dll`.
diff --git a/vendor/lz4/build/VS2022/_build.bat b/vendor/lz4/build/VS2022/_build.bat
new file mode 100644
index 0000000..2c2eb57
--- /dev/null
+++ b/vendor/lz4/build/VS2022/_build.bat
@@ -0,0 +1,39 @@
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+rem https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
+
+set "sln=lz4.sln"
+
+@rem set "Configuration=Debug"
+@rem set "Platform=Win32"
+
+set "BIN=.\bin\!Platform!_!Configuration!"
+rmdir /S /Q "!BIN!" 2>nul
+echo msbuild "%sln%" /p:Configuration=!Configuration! /p:Platform=!Platform!
+msbuild "%sln%" ^
+ /nologo ^
+ /v:minimal ^
+ /m ^
+ /p:Configuration=!Configuration! ^
+ /p:Platform=!Platform! ^
+ /t:Clean,Build ^
+ || goto :ERROR
+
+if not exist "!BIN!\datagen.exe" ( echo FAIL: "!BIN!\datagen.exe" && goto :ERROR )
+if not exist "!BIN!\frametest.exe" ( echo FAIL: "!BIN!\frametest.exe" && goto :ERROR )
+if not exist "!BIN!\fullbench-dll.exe" ( echo FAIL: "!BIN!\fullbench-dll.exe" && goto :ERROR )
+if not exist "!BIN!\fullbench.exe" ( echo FAIL: "!BIN!\fullbench.exe" && goto :ERROR )
+if not exist "!BIN!\fuzzer.exe" ( echo FAIL: "!BIN!\fuzzer.exe" && goto :ERROR )
+if not exist "!BIN!\liblz4.dll" ( echo FAIL: "!BIN!\liblz4.dll" && goto :ERROR )
+if not exist "!BIN!\liblz4.lib" ( echo FAIL: "!BIN!\liblz4.lib" && goto :ERROR )
+if not exist "!BIN!\liblz4_static.lib" ( echo FAIL: "!BIN!\liblz4_static.lib" && goto :ERROR )
+if not exist "!BIN!\lz4.exe" ( echo FAIL: "!BIN!\lz4.exe" && goto :ERROR )
+
+set /a errorno=0
+goto :END
+
+:ERROR
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/_setup.bat b/vendor/lz4/build/VS2022/_setup.bat
new file mode 100644
index 0000000..b4dda51
--- /dev/null
+++ b/vendor/lz4/build/VS2022/_setup.bat
@@ -0,0 +1,35 @@
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+rem https://github.com/Microsoft/vswhere
+rem https://github.com/microsoft/vswhere/wiki/Find-VC#batch
+
+set "vswhere=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
+if not exist "%vswhere%" (
+ echo Failed to find "vswhere.exe". Please install the latest version of Visual Studio.
+ goto :ERROR
+)
+
+set "InstallDir="
+for /f "usebackq tokens=*" %%i in (
+ `"%vswhere%" -latest ^
+ -products * ^
+ -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ^
+ -property installationPath`
+) do (
+ set "InstallDir=%%i"
+)
+if "%InstallDir%" == "" (
+ echo Failed to find Visual C++. Please install the latest version of Visual C++.
+ goto :ERROR
+)
+
+call "%InstallDir%\VC\Auxiliary\Build\vcvars64.bat" || goto :ERROR
+
+set /a errorno=0
+goto :END
+
+:ERROR
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/_test.bat b/vendor/lz4/build/VS2022/_test.bat
new file mode 100644
index 0000000..4614fa9
--- /dev/null
+++ b/vendor/lz4/build/VS2022/_test.bat
@@ -0,0 +1,38 @@
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+@rem set "Configuration=Debug"
+@rem set "Platform=Win32"
+
+set "BIN=.\bin\!Platform!_!Configuration!"
+set "TEST_FILES=..\..\tests\COPYING"
+
+echo !BIN!\lz4 -h
+ !BIN!\lz4 -h || goto :ERROR
+
+echo !BIN!\lz4 -i1b
+ !BIN!\lz4 -i1b || goto :ERROR
+
+echo !BIN!\lz4 -i1b5
+ !BIN!\lz4 -i1b5 || goto :ERROR
+
+echo !BIN!\lz4 -i1b10
+ !BIN!\lz4 -i1b10 || goto :ERROR
+
+echo !BIN!\lz4 -i1b15
+ !BIN!\lz4 -i1b15 || goto :ERROR
+
+echo fullbench
+!BIN!\fullbench.exe --no-prompt -i1 %TEST_FILES% || goto :ERROR
+
+echo fuzzer
+!BIN!\fuzzer.exe -v -T30s || goto :ERROR
+
+
+set /a errorno=0
+goto :END
+
+:ERROR
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/build-and-test-win32-debug.bat b/vendor/lz4/build/VS2022/build-and-test-win32-debug.bat
new file mode 100644
index 0000000..e745f87
--- /dev/null
+++ b/vendor/lz4/build/VS2022/build-and-test-win32-debug.bat
@@ -0,0 +1,26 @@
+@setlocal enabledelayedexpansion
+@echo off
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+call _setup.bat || goto :ERROR
+
+set "Configuration=Debug"
+set "Platform=Win32"
+
+call _build.bat || goto :ERROR
+call _test.bat || goto :ERROR
+
+
+echo Build Status -%esc%[92m SUCCEEDED %esc%[0m
+set /a errorno=0
+goto :END
+
+
+:ERROR
+echo Abort by error.
+echo Build Status -%esc%[91m ERROR %esc%[0m
+
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/build-and-test-win32-release.bat b/vendor/lz4/build/VS2022/build-and-test-win32-release.bat
new file mode 100644
index 0000000..f21007b
--- /dev/null
+++ b/vendor/lz4/build/VS2022/build-and-test-win32-release.bat
@@ -0,0 +1,26 @@
+@setlocal enabledelayedexpansion
+@echo off
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+call _setup.bat || goto :ERROR
+
+set "Configuration=Release"
+set "Platform=Win32"
+
+call _build.bat || goto :ERROR
+call _test.bat || goto :ERROR
+
+
+echo Build Status -%esc%[92m SUCCEEDED %esc%[0m
+set /a errorno=0
+goto :END
+
+
+:ERROR
+echo Abort by error.
+echo Build Status -%esc%[91m ERROR %esc%[0m
+
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/build-and-test-x64-debug.bat b/vendor/lz4/build/VS2022/build-and-test-x64-debug.bat
new file mode 100644
index 0000000..9d64a6f
--- /dev/null
+++ b/vendor/lz4/build/VS2022/build-and-test-x64-debug.bat
@@ -0,0 +1,26 @@
+@setlocal enabledelayedexpansion
+@echo off
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+call _setup.bat || goto :ERROR
+
+set "Configuration=Debug"
+set "Platform=x64"
+
+call _build.bat || goto :ERROR
+call _test.bat || goto :ERROR
+
+
+echo Build Status -%esc%[92m SUCCEEDED %esc%[0m
+set /a errorno=0
+goto :END
+
+
+:ERROR
+echo Abort by error.
+echo Build Status -%esc%[91m ERROR %esc%[0m
+
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/build-and-test-x64-release.bat b/vendor/lz4/build/VS2022/build-and-test-x64-release.bat
new file mode 100644
index 0000000..3ebb18f
--- /dev/null
+++ b/vendor/lz4/build/VS2022/build-and-test-x64-release.bat
@@ -0,0 +1,26 @@
+@setlocal enabledelayedexpansion
+@echo off
+set /a errorno=1
+for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "esc=%%E"
+
+call _setup.bat || goto :ERROR
+
+set "Configuration=Release"
+set "Platform=x64"
+
+call _build.bat || goto :ERROR
+call _test.bat || goto :ERROR
+
+
+echo Build Status -%esc%[92m SUCCEEDED %esc%[0m
+set /a errorno=0
+goto :END
+
+
+:ERROR
+echo Abort by error.
+echo Build Status -%esc%[91m ERROR %esc%[0m
+
+
+:END
+exit /B %errorno%
diff --git a/vendor/lz4/build/VS2022/datagen/datagen.vcxproj b/vendor/lz4/build/VS2022/datagen/datagen.vcxproj
new file mode 100644
index 0000000..a65a5d5
--- /dev/null
+++ b/vendor/lz4/build/VS2022/datagen/datagen.vcxproj
@@ -0,0 +1,177 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {D745AE2F-596A-403A-9B91-81A8C6779243}
+ Win32Proj
+ datagen
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\programs;$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\programs;$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\programs;$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\programs;$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/lz4/build/VS2022/frametest/frametest.vcxproj b/vendor/lz4/build/VS2022/frametest/frametest.vcxproj
new file mode 100644
index 0000000..6b7ff75
--- /dev/null
+++ b/vendor/lz4/build/VS2022/frametest/frametest.vcxproj
@@ -0,0 +1,180 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}
+ Win32Proj
+ frametest
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/fullbench-dll/fullbench-dll.vcxproj b/vendor/lz4/build/VS2022/fullbench-dll/fullbench-dll.vcxproj
new file mode 100644
index 0000000..143dc06
--- /dev/null
+++ b/vendor/lz4/build/VS2022/fullbench-dll/fullbench-dll.vcxproj
@@ -0,0 +1,184 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {13992FD2-077E-4954-B065-A428198201A9}
+ Win32Proj
+ fullbench-dll
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;LZ4_DLL_IMPORT=1;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ Console
+ true
+ $(SolutionDir)bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;LZ4_DLL_IMPORT=1;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ Console
+ true
+ $(SolutionDir)bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4.lib;%(AdditionalDependencies)
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;LZ4_DLL_IMPORT=1;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+ $(SolutionDir)bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4.lib;%(AdditionalDependencies)
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;LZ4_DLL_IMPORT=1;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+ $(SolutionDir)bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4.lib;%(AdditionalDependencies)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/fullbench/fullbench.vcxproj b/vendor/lz4/build/VS2022/fullbench/fullbench.vcxproj
new file mode 100644
index 0000000..57f4b5a
--- /dev/null
+++ b/vendor/lz4/build/VS2022/fullbench/fullbench.vcxproj
@@ -0,0 +1,180 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}
+ Win32Proj
+ fullbench
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/fuzzer/fuzzer.vcxproj b/vendor/lz4/build/VS2022/fuzzer/fuzzer.vcxproj
new file mode 100644
index 0000000..83482c2
--- /dev/null
+++ b/vendor/lz4/build/VS2022/fuzzer/fuzzer.vcxproj
@@ -0,0 +1,177 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}
+ Win32Proj
+ fuzzer
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+ Application
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ Console
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.rc b/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.rc
new file mode 100644
index 0000000..e089c24
--- /dev/null
+++ b/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.rc
@@ -0,0 +1,51 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+#include "lz4.h" /* LZ4_VERSION_STRING */
+#define APSTUDIO_READONLY_SYMBOLS
+#include "verrsrc.h"
+#undef APSTUDIO_READONLY_SYMBOLS
+
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE 9, 1
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
+ PRODUCTVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0"
+ BEGIN
+ VALUE "CompanyName", "Yann Collet"
+ VALUE "FileDescription", "Extremely fast compression"
+ VALUE "FileVersion", LZ4_VERSION_STRING
+ VALUE "InternalName", "lz4.dll"
+ VALUE "LegalCopyright", "Copyright (C) 2013-2020, Yann Collet"
+ VALUE "OriginalFilename", "lz4.dll"
+ VALUE "ProductName", "LZ4"
+ VALUE "ProductVersion", LZ4_VERSION_STRING
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1200
+ END
+END
+
+#endif
diff --git a/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.vcxproj b/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.vcxproj
new file mode 100644
index 0000000..532ac75
--- /dev/null
+++ b/vendor/lz4/build/VS2022/liblz4-dll/liblz4-dll.vcxproj
@@ -0,0 +1,183 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}
+ Win32Proj
+ liblz4-dll
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+ liblz4-dll
+
+
+
+ DynamicLibrary
+ true
+ Unicode
+ v143
+
+
+ DynamicLibrary
+ true
+ Unicode
+ v143
+
+
+ DynamicLibrary
+ false
+ Unicode
+ true
+ v143
+
+
+ DynamicLibrary
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ liblz4
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ liblz4
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ liblz4
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ liblz4
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/liblz4/liblz4.vcxproj b/vendor/lz4/build/VS2022/liblz4/liblz4.vcxproj
new file mode 100644
index 0000000..fdddaaa
--- /dev/null
+++ b/vendor/lz4/build/VS2022/liblz4/liblz4.vcxproj
@@ -0,0 +1,179 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}
+ Win32Proj
+ liblz4
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+
+
+
+ StaticLibrary
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ true
+ Unicode
+ v143
+
+
+ StaticLibrary
+ false
+ Unicode
+ true
+ v143
+
+
+ StaticLibrary
+ false
+ Unicode
+ true
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ liblz4_static
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ true
+ liblz4_static
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+ false
+ liblz4_static
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ false
+ liblz4_static
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ true
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ true
+ false
+ MultiThreadedDebug
+
+
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ true
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreadedDebug
+
+
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ false
+ false
+ MultiThreaded
+
+
+ true
+ true
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;LZ4_DLL_EXPORT=1;%(PreprocessorDefinitions)
+ false
+ true
+ /analyze:stacksize295252 %(AdditionalOptions)
+ MultiThreaded
+
+
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vendor/lz4/build/VS2022/lz4.sln b/vendor/lz4/build/VS2022/lz4.sln
new file mode 100644
index 0000000..10f8ec1
--- /dev/null
+++ b/vendor/lz4/build/VS2022/lz4.sln
@@ -0,0 +1,106 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33712.159
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblz4-dll", "liblz4-dll\liblz4-dll.vcxproj", "{9800039D-4AAA-43A4-BB78-FEF6F4836927}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblz4", "liblz4\liblz4.vcxproj", "{9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fuzzer", "fuzzer\fuzzer.vcxproj", "{18B9F1A7-9C66-4352-898B-30804DADE0FD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fullbench", "fullbench\fullbench.vcxproj", "{6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "frametest", "frametest\frametest.vcxproj", "{39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datagen", "datagen\datagen.vcxproj", "{D745AE2F-596A-403A-9B91-81A8C6779243}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fullbench-dll", "fullbench-dll\fullbench-dll.vcxproj", "{13992FD2-077E-4954-B065-A428198201A9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927} = {9800039D-4AAA-43A4-BB78-FEF6F4836927}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lz4", "lz4\lz4.vcxproj", "{60A3115E-B988-41EE-8815-F4D4F253D866}"
+ ProjectSection(ProjectDependencies) = postProject
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476} = {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Debug|Win32.Build.0 = Debug|Win32
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Debug|x64.ActiveCfg = Debug|x64
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Debug|x64.Build.0 = Debug|x64
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Release|Win32.ActiveCfg = Release|Win32
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Release|Win32.Build.0 = Release|Win32
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Release|x64.ActiveCfg = Release|x64
+ {9800039D-4AAA-43A4-BB78-FEF6F4836927}.Release|x64.Build.0 = Release|x64
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Debug|Win32.ActiveCfg = Debug|Win32
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Debug|Win32.Build.0 = Debug|Win32
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Debug|x64.ActiveCfg = Debug|x64
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Debug|x64.Build.0 = Debug|x64
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Release|Win32.ActiveCfg = Release|Win32
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Release|Win32.Build.0 = Release|Win32
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Release|x64.ActiveCfg = Release|x64
+ {9092C5CC-3E71-41B3-BF68-4A7BDD8A5476}.Release|x64.Build.0 = Release|x64
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Debug|Win32.Build.0 = Debug|Win32
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Debug|x64.ActiveCfg = Debug|x64
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Debug|x64.Build.0 = Debug|x64
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Release|Win32.ActiveCfg = Release|Win32
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Release|Win32.Build.0 = Release|Win32
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Release|x64.ActiveCfg = Release|x64
+ {18B9F1A7-9C66-4352-898B-30804DADE0FD}.Release|x64.Build.0 = Release|x64
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Debug|Win32.Build.0 = Debug|Win32
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Debug|x64.ActiveCfg = Debug|x64
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Debug|x64.Build.0 = Debug|x64
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Release|Win32.ActiveCfg = Release|Win32
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Release|Win32.Build.0 = Release|Win32
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Release|x64.ActiveCfg = Release|x64
+ {6A4DF4EF-C77F-43C6-8901-DDCD20879E4E}.Release|x64.Build.0 = Release|x64
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Debug|Win32.Build.0 = Debug|Win32
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Debug|x64.ActiveCfg = Debug|x64
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Debug|x64.Build.0 = Debug|x64
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Release|Win32.ActiveCfg = Release|Win32
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Release|Win32.Build.0 = Release|Win32
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Release|x64.ActiveCfg = Release|x64
+ {39AD6ECC-8BAD-4368-95E4-A1AA2F077BB7}.Release|x64.Build.0 = Release|x64
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Debug|Win32.Build.0 = Debug|Win32
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Debug|x64.ActiveCfg = Debug|x64
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Debug|x64.Build.0 = Debug|x64
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Release|Win32.ActiveCfg = Release|Win32
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Release|Win32.Build.0 = Release|Win32
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Release|x64.ActiveCfg = Release|x64
+ {D745AE2F-596A-403A-9B91-81A8C6779243}.Release|x64.Build.0 = Release|x64
+ {13992FD2-077E-4954-B065-A428198201A9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {13992FD2-077E-4954-B065-A428198201A9}.Debug|Win32.Build.0 = Debug|Win32
+ {13992FD2-077E-4954-B065-A428198201A9}.Debug|x64.ActiveCfg = Debug|x64
+ {13992FD2-077E-4954-B065-A428198201A9}.Debug|x64.Build.0 = Debug|x64
+ {13992FD2-077E-4954-B065-A428198201A9}.Release|Win32.ActiveCfg = Release|Win32
+ {13992FD2-077E-4954-B065-A428198201A9}.Release|Win32.Build.0 = Release|Win32
+ {13992FD2-077E-4954-B065-A428198201A9}.Release|x64.ActiveCfg = Release|x64
+ {13992FD2-077E-4954-B065-A428198201A9}.Release|x64.Build.0 = Release|x64
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Debug|Win32.ActiveCfg = Debug|Win32
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Debug|Win32.Build.0 = Debug|Win32
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Debug|x64.ActiveCfg = Debug|x64
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Debug|x64.Build.0 = Debug|x64
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Release|Win32.ActiveCfg = Release|Win32
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Release|Win32.Build.0 = Release|Win32
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Release|x64.ActiveCfg = Release|x64
+ {60A3115E-B988-41EE-8815-F4D4F253D866}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {BBC259B2-BABF-47CD-8A6A-7B8318A803AC}
+ EndGlobalSection
+EndGlobal
diff --git a/vendor/lz4/build/VS2022/lz4/lz4.rc b/vendor/lz4/build/VS2022/lz4/lz4.rc
new file mode 100644
index 0000000..5eec36b
--- /dev/null
+++ b/vendor/lz4/build/VS2022/lz4/lz4.rc
@@ -0,0 +1,51 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+#include "lz4.h" /* LZ4_VERSION_STRING */
+#define APSTUDIO_READONLY_SYMBOLS
+#include "verrsrc.h"
+#undef APSTUDIO_READONLY_SYMBOLS
+
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE 9, 1
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
+ PRODUCTVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#ifdef _DEBUG
+ FILEFLAGS VS_FF_DEBUG
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0"
+ BEGIN
+ VALUE "CompanyName", "Yann Collet"
+ VALUE "FileDescription", "Extremely fast compression"
+ VALUE "FileVersion", LZ4_VERSION_STRING
+ VALUE "InternalName", "lz4.exe"
+ VALUE "LegalCopyright", "Copyright (C) 2013-2020, Yann Collet"
+ VALUE "OriginalFilename", "lz4.exe"
+ VALUE "ProductName", "LZ4"
+ VALUE "ProductVersion", LZ4_VERSION_STRING
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 1200
+ END
+END
+
+#endif
diff --git a/vendor/lz4/build/VS2022/lz4/lz4.vcxproj b/vendor/lz4/build/VS2022/lz4/lz4.vcxproj
new file mode 100644
index 0000000..3c964b4
--- /dev/null
+++ b/vendor/lz4/build/VS2022/lz4/lz4.vcxproj
@@ -0,0 +1,189 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {60A3115E-B988-41EE-8815-F4D4F253D866}
+ lz4
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ false
+ Unicode
+
+
+ Application
+ true
+ v143
+ MultiByte
+
+
+ Application
+ false
+ v143
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ false
+
+
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+
+
+ $(SolutionDir)bin\$(Platform)_$(Configuration)\
+ $(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\
+ $(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);
+ false
+
+
+
+ Level4
+ Disabled
+ true
+ true
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+
+
+ true
+ Console
+ false
+ false
+ $(ProjectDir)..\bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4_static.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
+
+
+
+
+ Level3
+ Disabled
+ true
+ true
+
+
+ $(ProjectDir)..\bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4_static.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+
+
+ true
+ true
+ true
+ Console
+ $(ProjectDir)..\bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4_static.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ $(ProjectDir)..\bin\$(Platform)_$(Configuration);%(AdditionalLibraryDirectories)
+ liblz4_static.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/lz4/build/cmake/.gitignore b/vendor/lz4/build/cmake/.gitignore
new file mode 100644
index 0000000..0ad8240
--- /dev/null
+++ b/vendor/lz4/build/cmake/.gitignore
@@ -0,0 +1,10 @@
+# cmake build artefact
+
+CMakeCache.txt
+CMakeFiles
+*.cmake
+Makefile
+liblz4.pc
+lz4c
+install_manifest.txt
+build
diff --git a/vendor/lz4/build/cmake/CMakeLists.txt b/vendor/lz4/build/cmake/CMakeLists.txt
new file mode 100644
index 0000000..15418e6
--- /dev/null
+++ b/vendor/lz4/build/cmake/CMakeLists.txt
@@ -0,0 +1,362 @@
+# CMake support for LZ4
+#
+# To the extent possible under law, the author(s) have dedicated all
+# copyright and related and neighboring rights to this software to
+# the public domain worldwide. This software is distributed without
+# any warranty.
+#
+# For details, see .
+
+
+# Use range version specification for policy control while maintaining
+# compatibility with older CMake versions
+cmake_minimum_required(VERSION 3.5...4.0.2)
+
+set(LZ4_TOP_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
+
+#-----------------------------------------------------------------------------
+# VERSION EXTRACTION - Parse version information from header file
+#-----------------------------------------------------------------------------
+function(parse_lz4_version VERSION_TYPE)
+ file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" version_line REGEX "^#define LZ4_VERSION_${VERSION_TYPE} +([0-9]+).*$")
+ string(REGEX REPLACE "^#define LZ4_VERSION_${VERSION_TYPE} +([0-9]+).*$" "\\1" version_number "${version_line}")
+ set(LZ4_VERSION_${VERSION_TYPE} ${version_number} PARENT_SCOPE)
+endfunction()
+
+foreach(version_type IN ITEMS MAJOR MINOR RELEASE)
+ parse_lz4_version(${version_type})
+endforeach()
+
+set(LZ4_VERSION_STRING "${LZ4_VERSION_MAJOR}.${LZ4_VERSION_MINOR}.${LZ4_VERSION_RELEASE}")
+mark_as_advanced(LZ4_VERSION_STRING LZ4_VERSION_MAJOR LZ4_VERSION_MINOR LZ4_VERSION_RELEASE)
+
+message(STATUS "Creating build script for LZ4 version: ${LZ4_VERSION_STRING}")
+
+project(LZ4 VERSION ${LZ4_VERSION_STRING} LANGUAGES C)
+
+#-----------------------------------------------------------------------------
+# DEFAULT BUILD TYPE - Set Release as default when no build type is specified
+#-----------------------------------------------------------------------------
+# Set a default build type if none was specified
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ message(STATUS "Setting build type to 'Release' as none was specified.")
+ set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
+ # Set the possible values of build type for cmake-gui
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+ "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+#-----------------------------------------------------------------------------
+# BUILD OPTIONS - Configure build targets and features
+#-----------------------------------------------------------------------------
+option(LZ4_BUILD_CLI "Build lz4 program" ON)
+option(LZ4_BUILD_LEGACY_LZ4C "Build lz4c program with legacy argument support" OFF)
+
+
+# Determine if LZ4 is being built as part of another project.
+# If LZ4 is bundled in another project, we don't want to install anything.
+# Default behavior can be overridden by setting the LZ4_BUNDLED_MODE variable.
+if(NOT DEFINED LZ4_BUNDLED_MODE)
+ get_directory_property(LZ4_IS_SUBPROJECT PARENT_DIRECTORY)
+ if(LZ4_IS_SUBPROJECT)
+ set(LZ4_BUNDLED_MODE ON)
+ else()
+ set(LZ4_BUNDLED_MODE OFF)
+ endif()
+endif()
+mark_as_advanced(LZ4_BUNDLED_MODE)
+
+#-----------------------------------------------------------------------------
+# PACKAGING - CPack configuration
+#-----------------------------------------------------------------------------
+if(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
+ set(CPACK_PACKAGE_DESCRIPTION_FILE "${LZ4_TOP_SOURCE_DIR}/README.md")
+ set(CPACK_RESOURCE_FILE_LICENSE "${LZ4_TOP_SOURCE_DIR}/LICENSE")
+ set(CPACK_PACKAGE_VERSION_MAJOR ${LZ4_VERSION_MAJOR})
+ set(CPACK_PACKAGE_VERSION_MINOR ${LZ4_VERSION_MINOR})
+ set(CPACK_PACKAGE_VERSION_PATCH ${LZ4_VERSION_RELEASE})
+ include(CPack)
+endif(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
+
+#-----------------------------------------------------------------------------
+# LIBRARY TYPE CONFIGURATION - Static vs Shared libraries
+#-----------------------------------------------------------------------------
+# Allow people to choose whether to build shared or static libraries
+# via the BUILD_SHARED_LIBS option unless we are in bundled mode, in
+# which case we always use static libraries.
+include(CMakeDependentOption)
+CMAKE_DEPENDENT_OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON "NOT LZ4_BUNDLED_MODE" OFF)
+CMAKE_DEPENDENT_OPTION(BUILD_STATIC_LIBS "Build static libraries" OFF "BUILD_SHARED_LIBS" ON)
+
+if(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
+ message(FATAL_ERROR "Both BUILD_SHARED_LIBS and BUILD_STATIC_LIBS have been disabled")
+endif(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
+
+#-----------------------------------------------------------------------------
+# SOURCE FILES & DIRECTORIES - Path setup and source file collection
+#-----------------------------------------------------------------------------
+set(LZ4_LIB_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/lib")
+set(LZ4_PROG_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/programs")
+
+include_directories("${LZ4_LIB_SOURCE_DIR}")
+
+# CLI sources
+file(GLOB LZ4_SOURCES
+ "${LZ4_LIB_SOURCE_DIR}/*.c")
+file(GLOB LZ4_CLI_SOURCES
+ "${LZ4_PROG_SOURCE_DIR}/*.c")
+list(APPEND LZ4_CLI_SOURCES ${LZ4_SOURCES}) # LZ4_CLI always use liblz4 sources directly.
+
+#-----------------------------------------------------------------------------
+# POSITION INDEPENDENT CODE - PIC settings for static libraries
+#-----------------------------------------------------------------------------
+# Whether to use position independent code for the static library. If
+# we're building a shared library this is ignored and PIC is always
+# used.
+if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE OR CMAKE_POSITION_INDEPENDENT_CODE)
+ set(LZ4_POSITION_INDEPENDENT_LIB_DEFAULT ON)
+else()
+ set(LZ4_POSITION_INDEPENDENT_LIB_DEFAULT OFF)
+endif(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE OR CMAKE_POSITION_INDEPENDENT_CODE)
+
+option(LZ4_POSITION_INDEPENDENT_LIB "Use position independent code for static library (if applicable)" ${LZ4_POSITION_INDEPENDENT_LIB_DEFAULT})
+
+#-----------------------------------------------------------------------------
+# TARGETS - Library and executable targets
+#-----------------------------------------------------------------------------
+# liblz4
+include(GNUInstallDirs)
+set(LZ4_LIBRARIES_BUILT)
+if(BUILD_SHARED_LIBS)
+ add_library(lz4_shared SHARED ${LZ4_SOURCES})
+ target_include_directories(lz4_shared
+ PUBLIC $
+ INTERFACE $)
+ set_target_properties(lz4_shared PROPERTIES
+ OUTPUT_NAME lz4
+ SOVERSION "${LZ4_VERSION_MAJOR}"
+ VERSION "${LZ4_VERSION_STRING}")
+ if(MSVC)
+ target_compile_definitions(lz4_shared PRIVATE
+ LZ4_DLL_EXPORT=1)
+ endif(MSVC)
+ list(APPEND LZ4_LIBRARIES_BUILT lz4_shared)
+endif()
+if(BUILD_STATIC_LIBS)
+ set(STATIC_LIB_NAME lz4)
+ if(MSVC AND BUILD_SHARED_LIBS)
+ set(STATIC_LIB_NAME lz4_static)
+ endif(MSVC AND BUILD_SHARED_LIBS)
+ add_library(lz4_static STATIC ${LZ4_SOURCES})
+ target_include_directories(lz4_static
+ PUBLIC $
+ INTERFACE $)
+ set_target_properties(lz4_static PROPERTIES
+ OUTPUT_NAME ${STATIC_LIB_NAME}
+ POSITION_INDEPENDENT_CODE ${LZ4_POSITION_INDEPENDENT_LIB})
+ list(APPEND LZ4_LIBRARIES_BUILT lz4_static)
+endif()
+# Add unified target.
+add_library(lz4 INTERFACE)
+list(APPEND LZ4_LIBRARIES_BUILT lz4)
+if(BUILD_SHARED_LIBS)
+ target_link_libraries(lz4 INTERFACE lz4_shared)
+else()
+ target_link_libraries(lz4 INTERFACE lz4_static)
+endif(BUILD_SHARED_LIBS)
+
+#-----------------------------------------------------------------------------
+# DEBUG CONFIGURATION - Configurable LZ4_DEBUG level
+#-----------------------------------------------------------------------------
+# LZ4_DEBUG levels:
+# 0 - Disable everything (default for Release)
+# 1 - Enable assert() statements
+# 2-8 - Enable debug traces with increasing verbosity
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(LZ4_DEBUG_LEVEL_DEFAULT 1)
+else()
+ set(LZ4_DEBUG_LEVEL_DEFAULT 0)
+endif()
+
+set(LZ4_DEBUG_LEVEL ${LZ4_DEBUG_LEVEL_DEFAULT} CACHE STRING
+ "LZ4 debug level: 0=disabled, 1=assert(), 2-8=debug traces with increasing verbosity")
+set_property(CACHE LZ4_DEBUG_LEVEL PROPERTY STRINGS "0" "1" "2" "3" "4" "5" "6" "7" "8")
+
+# Apply LZ4_DEBUG configuration if level > 0
+if(LZ4_DEBUG_LEVEL GREATER 0)
+ if(MSVC)
+ add_definitions(/DLZ4_DEBUG=${LZ4_DEBUG_LEVEL})
+ else()
+ add_definitions(-DLZ4_DEBUG=${LZ4_DEBUG_LEVEL})
+ endif()
+endif()
+
+#-----------------------------------------------------------------------------
+# NAMESPACE CONFIGURATION - xxHash namespace settings
+#-----------------------------------------------------------------------------
+# xxhash namespace
+if(BUILD_SHARED_LIBS)
+ target_compile_definitions(lz4_shared PRIVATE
+ XXH_NAMESPACE=LZ4_)
+endif(BUILD_SHARED_LIBS)
+if(BUILD_STATIC_LIBS)
+ target_compile_definitions(lz4_static PRIVATE
+ XXH_NAMESPACE=LZ4_)
+endif(BUILD_STATIC_LIBS)
+
+#-----------------------------------------------------------------------------
+# CLI EXECUTABLES - Configuring command-line programs
+#-----------------------------------------------------------------------------
+# lz4
+if(LZ4_BUILD_CLI)
+ set(LZ4_PROGRAMS_BUILT lz4cli)
+ add_executable(lz4cli ${LZ4_CLI_SOURCES})
+ set_target_properties(lz4cli PROPERTIES OUTPUT_NAME lz4)
+endif(LZ4_BUILD_CLI)
+
+# lz4c
+if(LZ4_BUILD_LEGACY_LZ4C)
+ list(APPEND LZ4_PROGRAMS_BUILT lz4c)
+ add_executable(lz4c ${LZ4_CLI_SOURCES})
+ set_target_properties(lz4c PROPERTIES COMPILE_DEFINITIONS "ENABLE_LZ4C_LEGACY_OPTIONS")
+endif(LZ4_BUILD_LEGACY_LZ4C)
+
+#-----------------------------------------------------------------------------
+# COMPILER FLAGS - Configure warning flags and compiler-specific options
+#-----------------------------------------------------------------------------
+# Extra warning flags
+if(MSVC)
+ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W4")
+else()
+ include(CheckCCompilerFlag)
+ foreach(flag
+ # GCC-style
+ -pedantic-errors
+ -Wall
+ -Wextra
+ -Wundef
+ -Wcast-qual
+ -Wcast-align
+ -Wshadow
+ -Wswitch-enum
+ -Wdeclaration-after-statement
+ -Wstrict-prototypes
+ -Wpointer-arith)
+
+ # Because https://gcc.gnu.org/wiki/FAQ#wnowarning
+ string(REGEX REPLACE "\\-Wno\\-(.+)" "-W\\1" flag_to_test "${flag}")
+ string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" test_name "CFLAG_${flag_to_test}")
+
+ check_c_compiler_flag("${ADD_COMPILER_FLAGS_PREPEND} ${flag_to_test}" ${test_name})
+
+ if(${test_name})
+ set(CMAKE_C_FLAGS_DEBUG "${flag} ${CMAKE_C_FLAGS_DEBUG}")
+ endif()
+
+ unset(test_name)
+ unset(flag_to_test)
+ endforeach(flag)
+endif(MSVC)
+
+
+#-----------------------------------------------------------------------------
+# INSTALLATION - Install targets, headers, and documentation
+#-----------------------------------------------------------------------------
+if(NOT LZ4_BUNDLED_MODE)
+ install(TARGETS ${LZ4_PROGRAMS_BUILT}
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(TARGETS ${LZ4_LIBRARIES_BUILT}
+ EXPORT lz4Targets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ install(FILES
+ "${LZ4_LIB_SOURCE_DIR}/lz4.h"
+ "${LZ4_LIB_SOURCE_DIR}/lz4hc.h"
+ "${LZ4_LIB_SOURCE_DIR}/lz4frame.h"
+ "${LZ4_LIB_SOURCE_DIR}/lz4file.h"
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+ install(FILES "${LZ4_PROG_SOURCE_DIR}/lz4.1"
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblz4.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+
+#-----------------------------------------------------------------------------
+# CMAKE PACKAGE CONFIG - Configure CMake package for find_package support
+#-----------------------------------------------------------------------------
+ include(CMakePackageConfigHelpers)
+ write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake"
+ VERSION ${LZ4_VERSION_STRING}
+ COMPATIBILITY SameMajorVersion)
+
+ set(LZ4_PKG_INSTALLDIR "${CMAKE_INSTALL_LIBDIR}/cmake/lz4")
+ configure_package_config_file(
+ "${CMAKE_CURRENT_LIST_DIR}/lz4Config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake"
+ INSTALL_DESTINATION ${LZ4_PKG_INSTALLDIR})
+ export(EXPORT lz4Targets
+ FILE ${CMAKE_CURRENT_BINARY_DIR}/lz4Targets.cmake
+ NAMESPACE LZ4::)
+
+ install(EXPORT lz4Targets
+ FILE lz4Targets.cmake
+ NAMESPACE LZ4::
+ DESTINATION ${LZ4_PKG_INSTALLDIR})
+ install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/lz4Config.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/lz4ConfigVersion.cmake
+ DESTINATION ${LZ4_PKG_INSTALLDIR})
+
+#-----------------------------------------------------------------------------
+# SYMLINKS - Create and install Unix symlinks and manpage aliases
+#-----------------------------------------------------------------------------
+ # Install lz4cat and unlz4 symlinks on Unix systems
+ if(UNIX AND LZ4_BUILD_CLI)
+ foreach(cli_tool IN ITEMS lz4cat unlz4)
+ # Create a custom target for the symlink creation
+ add_custom_target("create_${cli_tool}_symlink" ALL
+ COMMAND ${CMAKE_COMMAND} -E create_symlink
+ $ ${cli_tool}
+ DEPENDS lz4cli
+ COMMENT "Creating symlink for ${cli_tool}"
+ VERBATIM)
+
+ # Install the symlink into the binary installation directory
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${cli_tool}"
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ RENAME ${cli_tool})
+ endforeach()
+
+ # create manpage aliases
+ foreach(f lz4cat unlz4)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${f}.1" ".so man1/lz4.1\n")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${f}.1"
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
+ endforeach()
+ endif(UNIX AND LZ4_BUILD_CLI)
+endif(NOT LZ4_BUNDLED_MODE)
+
+#-----------------------------------------------------------------------------
+# PKG-CONFIG - Generate and install pkg-config file
+#-----------------------------------------------------------------------------
+# pkg-config
+set(PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+if("${CMAKE_INSTALL_FULL_LIBDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ set(LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
+endif("${CMAKE_INSTALL_FULL_LIBDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+
+if("${CMAKE_INSTALL_FULL_INCLUDEDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
+ set(INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+else()
+ set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
+endif("${CMAKE_INSTALL_FULL_INCLUDEDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
+
+# for liblz4.pc substitution
+set(VERSION ${LZ4_VERSION_STRING})
+configure_file(${LZ4_LIB_SOURCE_DIR}/liblz4.pc.in liblz4.pc @ONLY)
diff --git a/vendor/lz4/build/cmake/lz4Config.cmake.in b/vendor/lz4/build/cmake/lz4Config.cmake.in
new file mode 100644
index 0000000..4b48032
--- /dev/null
+++ b/vendor/lz4/build/cmake/lz4Config.cmake.in
@@ -0,0 +1,10 @@
+@PACKAGE_INIT@
+include( "${CMAKE_CURRENT_LIST_DIR}/lz4Targets.cmake" )
+if(NOT TARGET lz4::lz4)
+ add_library(lz4::lz4 INTERFACE IMPORTED)
+ if("@BUILD_SHARED_LIBS@")
+ set_target_properties(lz4::lz4 PROPERTIES INTERFACE_LINK_LIBRARIES LZ4::lz4_shared)
+ else()
+ set_target_properties(lz4::lz4 PROPERTIES INTERFACE_LINK_LIBRARIES LZ4::lz4_static)
+ endif()
+endif()
diff --git a/vendor/lz4/build/make/README.md b/vendor/lz4/build/make/README.md
new file mode 100644
index 0000000..6e90dbd
--- /dev/null
+++ b/vendor/lz4/build/make/README.md
@@ -0,0 +1,69 @@
+# multiconf.make
+
+**multiconf.make** is a self-contained Makefile include that lets you build the **same targets under many different flag sets**—debug vs release, ASan vs UBSan, GCC vs Clang, etc.—without the usual “object-file soup.”
+It hashes every combination of `CC/CXX`, `CFLAGS/CXXFLAGS`, `CPPFLAGS`, `LDFLAGS` and `LDLIBS` into a **dedicated cache directory**, so objects compiled with one configuration are never reused by another. Swap flags, rebuild, swap back—previous objects are still there and never collide.
+
+---
+
+## Key Benefits
+
+| Why it matters | What multiconf.make does |
+| --- | --- |
+| **Isolated configs** | Stores objects into `cachedObjs//`, one directory per unique flag set. |
+| **Fast switching** | Reusing an old config is instant—link only, no recompilation. |
+| **Header deps** | Edits to headers trigger only needed rebuilds. |
+| **One-liner targets** | Macros (`c_program`, `cxx_program`, …) hide all rule boilerplate. |
+| **Parallel-ready** | Safe with `make -j`, no duplicate compiles of shared sources. |
+
+---
+
+## Quick Start
+
+### 1 · List your sources
+
+```make
+C_SRCDIRS := src src/cdeps # all .c are in these directories
+CXX_SRCDIRS := src src/cxxdeps # all .cpp are in these directories
+```
+
+### 2 · Add and include
+
+```make
+# root/Makefile
+include multiconf.make
+```
+
+### 3 · Declare targets
+
+```make
+app:
+$(eval $(call c_program,app,app.o obj1.o obj2.o))
+test:
+$(eval $(call cxx_program,test, test.o objcxx1.o objcxx2.o))
+```
+
+### 4 · Build any config you like
+
+```sh
+# Release with GCC
+make CFLAGS="-O3"
+
+# Debug with Clang + AddressSanitizer (new cache dir)
+make CC=clang CFLAGS="-g -O0 -fsanitize=address"
+
+# Switch back to GCC release (objects still valid, relink only)
+make CFLAGS="-O3"
+```
+
+Objects for each command live in different sub-folders; nothing overlaps.
+
+---
+
+## Additional capabilities
+
+| Command | Description |
+| --- | --- |
+| `make clean_cache` | Wipe **all** cached objects & deps (full rebuild next time) |
+| `V=1` | Show full compile/link commands |
+
+---
diff --git a/vendor/lz4/build/make/lz4defs.make b/vendor/lz4/build/make/lz4defs.make
new file mode 100644
index 0000000..1b7bf23
--- /dev/null
+++ b/vendor/lz4/build/make/lz4defs.make
@@ -0,0 +1,115 @@
+# ################################################################
+# LZ4 - Makefile common definitions
+# Copyright (C) Yann Collet 2020
+# All rights reserved.
+#
+# BSD license
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright notice, this
+# list of conditions and the following disclaimer in the documentation and/or
+# other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# You can contact the author at :
+# - LZ4 source repository : https://github.com/lz4/lz4
+# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c
+# ################################################################
+
+UNAME ?= uname
+
+TARGET_OS ?= $(shell $(UNAME))
+ifeq ($(TARGET_OS),)
+ TARGET_OS ?= $(OS)
+endif
+
+ifneq (,$(filter Windows%,$(TARGET_OS)))
+LIBLZ4_NAME = liblz4-$(LIBVER_MAJOR)
+LIBLZ4_EXP = liblz4.lib
+WINBASED = yes
+else
+LIBLZ4_EXP = liblz4.dll.a
+ ifneq (,$(filter MINGW%,$(TARGET_OS)))
+LIBLZ4_NAME = liblz4
+WINBASED = yes
+ else
+ ifneq (,$(filter MSYS%,$(TARGET_OS)))
+LIBLZ4_NAME = msys-lz4-$(LIBVER_MAJOR)
+WINBASED = yes
+ else
+ ifneq (,$(filter CYGWIN%,$(TARGET_OS)))
+LIBLZ4_NAME = cyglz4-$(LIBVER_MAJOR)
+WINBASED = yes
+ else
+LIBLZ4_NAME = liblz4
+WINBASED = no
+EXT =
+ endif
+ endif
+ endif
+endif
+
+ifeq ($(WINBASED),yes)
+EXT = .exe
+WINDRES ?= windres
+LDFLAGS += -Wl,--force-exe-suffix
+endif
+
+LIBLZ4 = $(LIBLZ4_NAME).$(SHARED_EXT_VER)
+
+#determine if dev/nul based on host environment
+ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell $(UNAME))))
+VOID := /dev/null
+else
+ ifneq (,$(filter Windows%,$(OS)))
+VOID := nul
+ else
+VOID := /dev/null
+ endif
+endif
+
+ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW% CYGWIN% MSYS% AIX,$(shell $(UNAME))))
+POSIX_ENV = Yes
+else
+POSIX_ENV = No
+endif
+
+# Avoid symlinks when targeting Windows or building on a Windows host
+ifeq ($(WINBASED),yes)
+LN_SF = cp -p
+else
+ ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell $(UNAME))))
+LN_SF = cp -p
+ else
+ ifneq (,$(filter Windows%,$(OS)))
+LN_SF = cp -p
+ else
+LN_SF = ln -sf
+ endif
+ endif
+endif
+
+ifneq (,$(filter $(shell $(UNAME)),SunOS))
+INSTALL ?= ginstall
+else
+INSTALL ?= install
+endif
+
+INSTALL_PROGRAM ?= $(INSTALL) -m 755
+INSTALL_DATA ?= $(INSTALL) -m 644
+MAKE_DIR ?= $(INSTALL) -d -m 755
+
diff --git a/vendor/lz4/build/make/multiconf.make b/vendor/lz4/build/make/multiconf.make
new file mode 100644
index 0000000..1581f57
--- /dev/null
+++ b/vendor/lz4/build/make/multiconf.make
@@ -0,0 +1,258 @@
+# ##########################################################################
+# multiconf.make
+# Copyright (C) Yann Collet
+#
+# GPL v2 License
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# ##########################################################################
+
+
+# Provides c_program(_shared_o) and cxx_program(_shared_o) target generation macros
+# Provides static_library and c_dynamic_library target generation macros
+# Support recompilation of only impacted units when an associated *.h is updated.
+# Provides V=1 / VERBOSE=1 support. V=2 is used for debugging purposes.
+# Complement target clean: delete objects and binaries created by this script
+
+# Requires:
+# - C_SRCDIRS, CXX_SRCDIRS, ASM_SRCDIRS defined
+# OR
+# C_SRCS, CXX_SRCS and ASM_SRCS variables defined
+# *and* vpath set to find all source files
+# OR
+# C_OBJS, CXX_OBJS and ASM_OBJS variables defined
+# *and* vpath set to find all source files
+# - directory `cachedObjs/` available to cache object files.
+# alternatively: set CACHE_ROOT to some different value.
+# Optional:
+# - HASH can be set to a different custom hash program.
+
+# *_program*: generates a recipe for a target that will be built in a cache directory.
+# The cache directory is automatically derived from CACHE_ROOT and list of flags and compilers.
+# *_shared_o* variants are optional optimization variants, that share the same objects across multiple targets.
+# However, as a consequence, all these objects must have exactly the same list of flags,
+# which in practice means that there must be no target-level modification (like: target: CFLAGS += someFlag).
+# If unsure, only use the standard variants, c_program and cxx_program.
+
+# All *_program* macro functions take up to 4 argument:
+# - The name of the target
+# - The list of object files to build in the cache directory
+# - An optional list of dependencies for linking, that will not be built
+# - An optional complementary recipe code, that will run after compilation and link
+
+
+# Silent mode is default; use V = 1 or VERBOSE = 1 to see compilation lines
+VERBOSE ?= $(V)
+$(VERBOSE).SILENT:
+
+# Directory where object files will be built
+CACHE_ROOT ?= cachedObjs
+
+# --------------------------------------------------------------------------------------------
+
+# Dependency management
+DEPFLAGS = -MT $@ -MMD -MP -MF
+
+# Include dependency files
+include $(wildcard $(CACHE_ROOT)/**/*.d)
+include $(wildcard $(CACHE_ROOT)/generic/*/*.d)
+
+# --------------------------------------------------------------------------------------------
+
+# Automatic determination of build artifacts cache directory, keyed on build
+# flags, so that we can do incremental, parallel builds of different binaries
+# with different build flags without collisions.
+
+UNAME ?= $(shell uname)
+ifeq ($(UNAME), Darwin)
+ HASH ?= md5
+else ifeq ($(UNAME), FreeBSD)
+ HASH ?= gmd5sum
+else ifeq ($(UNAME), OpenBSD)
+ HASH ?= md5
+endif
+HASH ?= md5sum
+
+HAVE_HASH := $(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
+ifeq ($(HAVE_HASH),0)
+ $(info warning : could not find HASH ($(HASH)), required to differentiate builds using different flags)
+ HASH_FUNC = generic/$(1)
+else
+ HASH_FUNC = $(firstword $(shell echo $(2) | $(HASH) ))
+endif
+
+
+MKDIR ?= mkdir
+LN ?= ln
+
+# --------------------------------------------------------------------------------------------
+# The following macros are used to create object files in the cache directory.
+# The object files are named after the source file, but with a different path.
+
+# Create build directories on-demand.
+#
+# For some reason, make treats the directory as an intermediate file and tries
+# to delete it. So we work around that by marking it "precious". Solution found
+# here:
+# http://ismail.badawi.io/blog/2017/03/28/automatic-directory-creation-in-make/
+.PRECIOUS: $(CACHE_ROOT)/%/.
+$(CACHE_ROOT)/%/. :
+ $(MKDIR) -p $@
+
+
+define addTargetAsmObject # targetName, addlDeps
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2))))
+
+.PRECIOUS: $$(CACHE_ROOT)/%/$(1)
+$$(CACHE_ROOT)/%/$(1) : $(1:.o=.S) $(2) | $$(CACHE_ROOT)/%/.
+ @echo AS $$@
+ $$(CC) $$(CPPFLAGS) $$(CXXFLAGS) $$(DEPFLAGS) $$(CACHE_ROOT)/$$*/$(1:.o=.d) -c $$< -o $$@
+
+endef # addTargetAsmObject
+
+define addTargetCObject # targetName, addlDeps
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2)))) #debug print
+
+.PRECIOUS: $$(CACHE_ROOT)/%/$(1)
+$$(CACHE_ROOT)/%/$(1) : $(1:.o=.c) $(2) | $$(CACHE_ROOT)/%/.
+ @echo CC $$@
+ $$(CC) $$(CPPFLAGS) $$(CFLAGS) $$(DEPFLAGS) $$(CACHE_ROOT)/$$*/$(1:.o=.d) -c $$< -o $$@
+
+endef # addTargetCObject
+
+define addTargetCxxObject # targetName, suffix, addlDeps
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2),$(3))))
+
+.PRECIOUS: $$(CACHE_ROOT)/%/$(1)
+$$(CACHE_ROOT)/%/$(1) : $(1:.o=.$(2)) $(3) | $$(CACHE_ROOT)/%/.
+ @echo CXX $$@
+ $$(CXX) $$(CPPFLAGS) $$(CXXFLAGS) $$(DEPFLAGS) $$(CACHE_ROOT)/$$*/$(1:.o=.d) -c $$< -o $$@
+
+endef # addTargetCxxObject
+
+# Create targets for individual object files
+C_SRCDIRS += .
+vpath %.c $(C_SRCDIRS)
+CXX_SRCDIRS += .
+vpath %.cpp $(CXX_SRCDIRS)
+vpath %.cc $(CXX_SRCDIRS)
+ASM_SRCDIRS += .
+vpath %.S $(ASM_SRCDIRS)
+
+# If C_SRCDIRS, CXX_SRCDIRS and ASM_SRCDIRS are not defined, use C_SRCS, CXX_SRCS and ASM_SRCS
+C_SRCS ?= $(notdir $(foreach dir,$(C_SRCDIRS),$(wildcard $(dir)/*.c)))
+CPP_SRCS ?= $(notdir $(foreach dir,$(CXX_SRCDIRS),$(wildcard $(dir)/*.cpp)))
+CC_SRCS ?= $(notdir $(foreach dir,$(CXX_SRCDIRS),$(wildcard $(dir)/*.cc)))
+CXX_SRCS ?= $(CPP_SRCS) $(CC_SRCS)
+ASM_SRCS ?= $(notdir $(foreach dir,$(ASM_SRCDIRS),$(wildcard $(dir)/*.S)))
+
+# If C_SRCS, CXX_SRCS and ASM_SRCS are not defined, use C_OBJS, CXX_OBJS and ASM_OBJS
+C_OBJS ?= $(patsubst %.c,%.o,$(C_SRCS))
+CPP_OBJS ?= $(patsubst %.cpp,%.o,$(CPP_SRCS))
+CC_OBJS ?= $(patsubst %.cc,%.o,$(CC_SRCS))
+CXX_OBJS ?= $(CPP_OBJS) $(CC_OBJS) # Note: not used
+ASM_OBJS ?= $(patsubst %.S,%.o,$(ASM_SRCS))
+
+$(foreach OBJ,$(C_OBJS),$(eval $(call addTargetCObject,$(OBJ))))
+$(foreach OBJ,$(CPP_OBJS),$(eval $(call addTargetCxxObject,$(OBJ),cpp)))
+$(foreach OBJ,$(CC_OBJS),$(eval $(call addTargetCxxObject,$(OBJ),cc)))
+$(foreach OBJ,$(ASM_OBJS),$(eval $(call addTargetAsmObject,$(OBJ))))
+
+# --------------------------------------------------------------------------------------------
+# The following macros are used to create targets in the user Makefile.
+# Binaries are built in the cache directory, and then symlinked to the current directory.
+# The cache directory is automatically derived from CACHE_ROOT and list of flags and compilers.
+
+define static_library # targetName, targetDeps, addlDeps, addRecipe, hashComplement
+
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2),$(3),$(4),$(5))))
+MCM_ALL_BINS += $(1)
+
+$$(CACHE_ROOT)/%/$(1) : $$(addprefix $$(CACHE_ROOT)/%/,$(2)) $(3)
+ @echo AR $$@
+ $$(AR) $$(ARFLAGS) $$@ $$^
+ $(4)
+
+.PHONY: $(1)
+$(1) : ARFLAGS = rcs
+$(1) : $$(CACHE_ROOT)/$$(call HASH_FUNC,$(1),$(2) $$(CPPFLAGS) $$(CC) $$(CFLAGS) $$(CXX) $$(CXXFLAGS) $$(AR) $$(ARFLAGS) $(5))/$(1)
+ $$(LN) -sf $$< $$@
+
+endef # static_library
+
+
+define c_dynamic_library # targetName, targetDeps, addlDeps, addRecipe, hashComplement
+
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2),$(3),$(4),$(5))))
+MCM_ALL_BINS += $(1)
+
+$$(CACHE_ROOT)/%/$(1) : $$(addprefix $$(CACHE_ROOT)/%/,$(2)) $(3)
+ @echo LD $$@
+ $$(CC) $$(CPPFLAGS) $$(CFLAGS) $$(LDFLAGS) -shared -o $$@ $$^ $$(LDLIBS)
+ $(4)
+
+.PHONY: $(1)
+$(1) : CFLAGS += -fPIC
+$(1) : $$(CACHE_ROOT)/$$(call HASH_FUNC,$(1),$(2) $$(CPPFLAGS) $$(CC) $$(CFLAGS) $$(LDFLAGS) $$(LDLIBS) $(5))/$(1)
+ $$(LN) -sf $$< $$@
+
+endef # c_dynamic_library
+
+
+define program_base # targetName, targetDeps, addlDeps, addRecipe, hashComplement, compiler, flags
+
+$$(if $$(filter 2,$$(V)),$$(info $$(call $(0),$(1),$(2),$(3),$(4),$(5),$(6),$(7))))
+MCM_ALL_BINS += $(1)
+
+$$(CACHE_ROOT)/%/$(1) : $$(addprefix $$(CACHE_ROOT)/%/,$(2)) $(3)
+ @echo LD $$@
+ $$($(6)) $$(CPPFLAGS) $$($(7)) $$^ -o $$@ $$(LDFLAGS) $$(LDLIBS)
+ $(4)
+
+.PHONY: $(1)
+$(1) : $$(CACHE_ROOT)/$$(call HASH_FUNC,$(1),$$($(6)) $$(CPPFLAGS) $$($(7)) $$(LDFLAGS) $$(LDLIBS) $(5))/$(1)
+ $$(LN) -sf $$< $$@$(EXT)
+
+endef # program_base
+# Note: $(EXT) must be set to .exe for Windows
+
+define c_program # targetName, targetDeps, addlDeps, addRecipe
+$$(eval $$(call program_base,$(1),$(2),$(3),$(4),$(1)$(2),CC,CFLAGS))
+endef # c_program
+
+define c_program_shared_o # targetName, targetDeps, addlDeps, addRecipe
+$$(eval $$(call program_base,$(1),$(2),$(3),$(4),,CC,CFLAGS))
+endef # c_program_shared_o
+
+define cxx_program # targetName, targetDeps, addlDeps, addRecipe
+$$(eval $$(call program_base,$(1),$(2),$(3),$(4),$(1)$(2),CXX,CXXFLAGS))
+endef # cxx_program
+
+define cxx_program_shared_o # targetName, targetDeps, addlDeps, addRecipe
+$$(eval $$(call program_base,$(1),$(2),$(3),$(4),,CXX,CXXFLAGS))
+endef # cxx_program_shared_o
+
+# --------------------------------------------------------------------------------------------
+
+# Cleaning: delete all objects and binaries created with this script
+.PHONY: clean_cache
+clean_cache:
+ $(RM) -rf $(CACHE_ROOT)
+ $(RM) $(MCM_ALL_BINS)
+
+# automatically attach to standard clean target
+.PHONY: clean
+clean: clean_cache
diff --git a/vendor/lz4/build/meson/GetLz4LibraryVersion.py b/vendor/lz4/build/meson/GetLz4LibraryVersion.py
new file mode 100644
index 0000000..831fc53
--- /dev/null
+++ b/vendor/lz4/build/meson/GetLz4LibraryVersion.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+import re
+
+
+def find_version_tuple(filepath):
+ version_file_data = None
+ with open(filepath) as fd:
+ version_file_data = fd.read()
+
+ patterns = r"""\s*#\s*define\s+LZ4_VERSION_MAJOR\s+([0-9]+).*$
+\s*#\s*define\s+LZ4_VERSION_MINOR\s+([0-9]+).*$
+\s*#\s*define\s+LZ4_VERSION_RELEASE\s+([0-9]+).*$
+"""
+ regex = re.compile(patterns, re.MULTILINE)
+ version_match = regex.search(version_file_data)
+ if version_match:
+ return version_match.groups()
+ raise Exception("Unable to find version string.")
+
+
+def main():
+ import argparse
+ parser = argparse.ArgumentParser(description='Print lz4 version from lib/lz4.h')
+ parser.add_argument('file', help='path to lib/lz4.h')
+ args = parser.parse_args()
+ version_tuple = find_version_tuple(args.file)
+ print('.'.join(version_tuple))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/vendor/lz4/build/meson/README.md b/vendor/lz4/build/meson/README.md
new file mode 100644
index 0000000..2caaaa7
--- /dev/null
+++ b/vendor/lz4/build/meson/README.md
@@ -0,0 +1,34 @@
+Meson build system for lz4
+==========================
+
+Meson is a build system designed to optimize programmer productivity.
+It aims to do this by providing simple, out-of-the-box support for
+modern software development tools and practices, such as unit tests,
+coverage reports, Valgrind, CCache and the like.
+
+This Meson build system is provided with no guarantee.
+
+## How to build
+
+`cd` to this meson directory (`build/meson`)
+
+```sh
+meson setup --buildtype=release -Ddefault_library=shared -Dprograms=true builddir
+cd builddir
+ninja # to build
+ninja install # to install
+```
+
+You might want to install it in staging directory:
+
+```sh
+DESTDIR=./staging ninja install
+```
+
+To configure build options, use:
+
+```sh
+meson configure
+```
+
+See [man meson(1)](https://manpages.debian.org/testing/meson/meson.1.en.html).
diff --git a/vendor/lz4/build/meson/meson.build b/vendor/lz4/build/meson/meson.build
new file mode 100644
index 0000000..7e16968
--- /dev/null
+++ b/vendor/lz4/build/meson/meson.build
@@ -0,0 +1,30 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+# This is a dummy meson file.
+# The intention is that it can be easily moved to the root of the project
+# (together with meson_options.txt) and packaged for wrapdb.
+
+project(
+ 'lz4',
+ 'c',
+ license: 'BSD-2-Clause-Patent AND GPL-2.0-or-later',
+ default_options: [
+ 'buildtype=release',
+ 'warning_level=3'
+ ],
+ version: run_command(
+ find_program('GetLz4LibraryVersion.py'),
+ '../../lib/lz4.h',
+ check: true
+ ).stdout().strip(),
+ meson_version: '>=0.58.0'
+)
+
+subdir('meson')
diff --git a/vendor/lz4/build/meson/meson/contrib/gen_manual/meson.build b/vendor/lz4/build/meson/meson/contrib/gen_manual/meson.build
new file mode 100644
index 0000000..c4349aa
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/contrib/gen_manual/meson.build
@@ -0,0 +1,42 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../../..'
+
+add_languages('cpp', native: true)
+
+sources = files(
+ lz4_source_root / 'contrib/gen_manual/gen_manual.cpp'
+)
+
+gen_manual = executable(
+ 'gen_manual',
+ sources,
+ native: true,
+ install: false
+)
+
+manual_pages = ['lz4', 'lz4frame']
+
+foreach mp : manual_pages
+ custom_target(
+ '@0@_manual.html'.format(mp),
+ build_by_default: true,
+ input: lz4_source_root / 'lib/@0@.h'.format(mp),
+ output: '@0@_manual.html'.format(mp),
+ command: [
+ gen_manual,
+ meson.project_version(),
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+ install: false
+ )
+endforeach
diff --git a/vendor/lz4/build/meson/meson/contrib/meson.build b/vendor/lz4/build/meson/meson/contrib/meson.build
new file mode 100644
index 0000000..ef780fb
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/contrib/meson.build
@@ -0,0 +1,11 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+subdir('gen_manual')
diff --git a/vendor/lz4/build/meson/meson/examples/meson.build b/vendor/lz4/build/meson/meson/examples/meson.build
new file mode 100644
index 0000000..dd26334
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/examples/meson.build
@@ -0,0 +1,32 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../..'
+
+examples = {
+ 'print_version': 'print_version.c',
+ 'blockStreaming_doubleBuffer': 'blockStreaming_doubleBuffer.c',
+ 'dictionaryRandomAccess': 'dictionaryRandomAccess.c',
+ 'blockStreaming_ringBuffer': 'blockStreaming_ringBuffer.c',
+ 'streamingHC_ringBuffer': 'streamingHC_ringBuffer.c',
+ 'blockStreaming_lineByLine': 'blockStreaming_lineByLine.c',
+ 'frameCompress': 'frameCompress.c',
+ 'bench_functions': 'bench_functions.c',
+ 'simple_buffer': 'simple_buffer.c',
+}
+
+foreach e, src : examples
+ executable(
+ e,
+ lz4_source_root / 'examples' / src,
+ dependencies: [liblz4_internal_dep],
+ install: false
+ )
+endforeach
diff --git a/vendor/lz4/build/meson/meson/lib/meson.build b/vendor/lz4/build/meson/meson/lib/meson.build
new file mode 100644
index 0000000..4acf614
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/lib/meson.build
@@ -0,0 +1,87 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../..'
+
+sources = files(
+ lz4_source_root / 'lib/lz4.c',
+ lz4_source_root / 'lib/lz4frame.c',
+ lz4_source_root / 'lib/lz4hc.c',
+ lz4_source_root / 'lib/xxhash.c'
+)
+
+if get_option('unstable')
+ sources += files(lz4_source_root / 'lib/lz4file.c')
+endif
+
+c_args = []
+
+if host_machine.system() == 'windows' and get_option('default_library') != 'static'
+ c_args += '-DLZ4_DLL_EXPORT=1'
+endif
+
+liblz4 = library(
+ 'lz4',
+ sources,
+ c_args: c_args,
+ install: true,
+ version: meson.project_version(),
+ gnu_symbol_visibility: 'hidden'
+)
+
+liblz4_dep = declare_dependency(
+ link_with: liblz4,
+ compile_args: compile_args,
+ include_directories: include_directories(lz4_source_root / 'lib')
+)
+
+meson.override_dependency('liblz4', liblz4_dep)
+
+if get_option('tests') or get_option('programs') or get_option('examples') or get_option('ossfuzz')
+ if get_option('default_library') == 'shared'
+ liblz4_internal = static_library(
+ 'lz4-internal',
+ objects: liblz4.extract_all_objects(recursive: true),
+ gnu_symbol_visibility: 'hidden'
+ )
+ elif get_option('default_library') == 'static'
+ liblz4_internal = liblz4
+ elif get_option('default_library') == 'both'
+ liblz4_internal = liblz4.get_static_lib()
+ endif
+
+ liblz4_internal_dep = declare_dependency(
+ link_with: liblz4_internal,
+ compile_args: compile_args,
+ include_directories: include_directories(lz4_source_root / 'lib')
+ )
+endif
+
+pkgconfig.generate(
+ liblz4,
+ name: 'lz4',
+ filebase: 'liblz4',
+ description: 'extremely fast lossless compression algorithm library',
+ version: meson.project_version(),
+ url: 'http://www.lz4.org/'
+)
+
+install_headers(
+ lz4_source_root / 'lib/lz4.h',
+ lz4_source_root / 'lib/lz4hc.h',
+ lz4_source_root / 'lib/lz4frame.h'
+)
+
+if get_option('default_library') != 'shared'
+ install_headers(lz4_source_root / 'lib/lz4frame_static.h')
+ if get_option('unstable')
+ install_headers(lz4_source_root / 'lib/lz4file.h')
+ endif
+endif
diff --git a/vendor/lz4/build/meson/meson/meson.build b/vendor/lz4/build/meson/meson/meson.build
new file mode 100644
index 0000000..90337bb
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/meson.build
@@ -0,0 +1,135 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+cc = meson.get_compiler('c')
+
+fs = import('fs')
+pkgconfig = import('pkgconfig')
+
+lz4_source_root = '../../..'
+
+add_project_arguments('-DXXH_NAMESPACE=LZ4_', language: 'c')
+
+if get_option('debug')
+ add_project_arguments(cc.get_supported_arguments(
+ '-Wcast-qual',
+ '-Wcast-align',
+ '-Wshadow',
+ '-Wswitch-enum',
+ '-Wdeclaration-after-statement',
+ '-Wstrict-prototypes',
+ '-Wundef',
+ '-Wpointer-arith',
+ '-Wstrict-aliasing=1',
+ '-DLZ4_DEBUG=@0@'.format(get_option('debug-level'))
+ ),
+ language: 'c'
+ )
+endif
+
+compile_args = []
+
+if not get_option('align-test')
+ add_project_arguments('-DLZ4_ALIGN_TEST=0', language: 'c')
+endif
+
+if get_option('disable-memory-allocation')
+ if get_option('default_library') != 'static'
+ error('Memory allocation can only be disabled in static builds')
+ endif
+
+ add_project_arguments('-DLZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION')
+ compile_args += '-DLZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION'
+endif
+
+add_project_arguments(
+ '-DLZ4_DISTANCE_MAX=@0@'.format(get_option('distance-max')),
+ language: 'c'
+)
+compile_args += '-DLZ4_DISTANCE_MAX=@0@'.format(get_option('distance-max'))
+
+if not get_option('fast-dec-loop').auto()
+ add_project_arguments(
+ '-DLZ4_FAST_DEC_LOOP=@0@'.format(
+ get_option('fast-dec-loop').enabled() ? 1 : 0
+ ),
+ language: 'c'
+ )
+endif
+
+if get_option('force-sw-bitcount')
+ add_project_arguments('-DLZ4_FORCE_SW_BITCOUNT', language: 'c')
+endif
+
+if get_option('freestanding')
+ add_project_arguments('-DLZ4_FREESTANDING=1', language: 'c')
+ compile_args += '-DLZ4_FREESTANDING=1'
+endif
+
+if get_option('memory-usage') > 0
+ add_project_arguments(
+ '-DLZ4_MEMORY_USAGE=@0@'.format(get_option('memory-usage')),
+ language: 'c'
+ )
+ compile_args += '-DLZ4_MEMORY_USAGE=@0@'.format(get_option('memory-usage'))
+endif
+
+if get_option('endianness-independent-output')
+ if get_option('default_library') != 'static'
+ error('Endianness-independent output can only be enabled in static builds')
+ endif
+
+ add_project_arguments('-DLZ4_STATIC_LINKING_ONLY_ENDIANNESS_INDEPENDENT_OUTPUT')
+ compile_args += '-DLZ4_STATIC_LINKING_ONLY_ENDIANNESS_INDEPENDENT_OUTPUT'
+endif
+
+if get_option('unstable')
+ add_project_arguments('-DLZ4_STATIC_LINKING_ONLY', language: 'c')
+ compile_args += '-DLZ4_STATIC_LINKING_ONLY'
+ if get_option('default_library') != 'static'
+ add_project_arguments('-DLZ4_PUBLISH_STATIC_FUNCTIONS', language: 'c')
+ compile_args += '-DLZ4_PUBLISH_STATIC_FUNCTIONS'
+
+ add_project_arguments('-DLZ4F_PUBLISH_STATIC_FUNCTIONS', language: 'c')
+ compile_args += '-DLZ4F_PUBLISH_STATIC_FUNCTIONS'
+ endif
+endif
+
+if get_option('user-memory-functions')
+ add_project_arguments('-DLZ4_USER_MEMORY_FUNCTIONS', language: 'c')
+endif
+
+run_env = environment()
+
+subdir('lib')
+
+if get_option('programs')
+ subdir('programs')
+else
+ lz4 = disabler()
+ lz4cat = disabler()
+ unlz4 = disabler()
+endif
+
+if get_option('tests')
+ subdir('tests')
+endif
+
+if get_option('contrib')
+ subdir('contrib')
+endif
+
+if get_option('examples')
+ subdir('examples')
+endif
+
+if get_option('ossfuzz')
+ subdir('ossfuzz')
+endif
diff --git a/vendor/lz4/build/meson/meson/ossfuzz/meson.build b/vendor/lz4/build/meson/meson/ossfuzz/meson.build
new file mode 100644
index 0000000..39ab21c
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/ossfuzz/meson.build
@@ -0,0 +1,37 @@
+lz4_source_root = '../../../..'
+
+fuzzers = [
+ 'compress_frame_fuzzer',
+ 'compress_fuzzer',
+ 'compress_hc_fuzzer',
+ 'decompress_frame_fuzzer',
+ 'decompress_fuzzer',
+ 'round_trip_frame_uncompressed_fuzzer',
+ 'round_trip_fuzzer',
+ 'round_trip_hc_fuzzer',
+ 'round_trip_stream_fuzzer'
+]
+
+c_args = cc.get_supported_arguments(
+ '-Wno-unused-function',
+ '-Wno-sign-compare',
+ '-Wno-declaration-after-statement'
+)
+
+foreach f : fuzzers
+ lib = static_library(
+ f,
+ lz4_source_root / 'ossfuzz/@0@.c'.format(f),
+ lz4_source_root / 'ossfuzz/lz4_helpers.c',
+ lz4_source_root / 'ossfuzz/fuzz_data_producer.c',
+ c_args: c_args,
+ dependencies: [liblz4_internal_dep]
+ )
+
+ executable(
+ f,
+ lz4_source_root / 'ossfuzz/standaloneengine.c',
+ link_with: lib,
+ dependencies: [liblz4_internal_dep]
+ )
+endforeach
diff --git a/vendor/lz4/build/meson/meson/programs/meson.build b/vendor/lz4/build/meson/meson/programs/meson.build
new file mode 100644
index 0000000..44378c2
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/programs/meson.build
@@ -0,0 +1,91 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../..'
+
+# note:
+# it would be preferable to use some kind of glob or wildcard expansion here...
+sources = files(
+ lz4_source_root / 'programs/bench.c',
+ lz4_source_root / 'programs/lorem.c',
+ lz4_source_root / 'programs/lz4cli.c',
+ lz4_source_root / 'programs/lz4io.c',
+ lz4_source_root / 'programs/util.c',
+ lz4_source_root / 'programs/threadpool.c',
+ lz4_source_root / 'programs/timefn.c',
+)
+
+# Initialize an empty list for extra dependencies
+extra_deps = []
+
+if get_option('enable_multithread')
+ pthread_dep = dependency('threads', required : true)
+ extra_deps += [pthread_dep]
+ multithread_args = ['-DLZ4IO_MULTITHREAD']
+else
+ multithread_args = []
+endif
+
+lz4 = executable(
+ 'lz4',
+ sources,
+ include_directories: include_directories(lz4_source_root / 'programs'),
+ dependencies: [liblz4_internal_dep] + extra_deps,
+ c_args: multithread_args,
+ export_dynamic: get_option('debug') and host_machine.system() == 'windows',
+ install: true
+)
+
+lz4cat = custom_target(
+ 'lz4cat',
+ input: lz4,
+ output: 'lz4cat',
+ command: [
+ 'ln',
+ '-s',
+ '-f',
+ fs.name(lz4.full_path()),
+ '@OUTPUT@'
+ ]
+)
+
+unlz4 = custom_target(
+ 'unlz4',
+ input: lz4,
+ output: 'unlz4',
+ command: [
+ 'ln',
+ '-s',
+ '-f',
+ fs.name(lz4.full_path()),
+ '@OUTPUT@'
+ ]
+)
+
+meson.override_find_program('lz4', lz4)
+
+run_env.prepend('PATH', meson.current_build_dir())
+
+install_man(lz4_source_root / 'programs/lz4.1')
+
+if meson.version().version_compare('>=0.61.0')
+ foreach alias : ['lz4c', 'lz4cat', 'unlz4']
+ install_symlink(
+ alias,
+ install_dir: get_option('bindir'),
+ pointing_to: 'lz4'
+ )
+ install_symlink(
+ '@0@.1'.format(alias),
+ install_dir: get_option('mandir') / 'man1',
+ pointing_to: 'lz4.1'
+ )
+ endforeach
+endif
diff --git a/vendor/lz4/build/meson/meson/tests/meson.build b/vendor/lz4/build/meson/meson/tests/meson.build
new file mode 100644
index 0000000..cf68812
--- /dev/null
+++ b/vendor/lz4/build/meson/meson/tests/meson.build
@@ -0,0 +1,162 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+lz4_source_root = '../../../..'
+
+fuzzer_time = 90
+test_exes = {
+ 'abiTest': {
+ 'sources': files(lz4_source_root / 'tests/abiTest.c'),
+ 'test': false,
+ },
+ 'checkFrame': {
+ 'sources': files(lz4_source_root / 'tests/checkFrame.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ },
+ 'checkTag': {
+ 'sources': files(lz4_source_root / 'tests/checkTag.c'),
+ 'test': false,
+ },
+ 'datagen': {
+ 'sources': files(
+ lz4_source_root / 'programs/lorem.c',
+ lz4_source_root / 'tests/datagencli.c',
+ lz4_source_root / 'tests/datagen.c',
+ lz4_source_root / 'tests/loremOut.c',
+ ),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ },
+ 'decompress-partial-usingDict.c': {
+ 'sources': files(lz4_source_root / 'tests/decompress-partial-usingDict.c'),
+ },
+ 'decompress-partial.c': {
+ 'sources': files(lz4_source_root / 'tests/decompress-partial.c'),
+ },
+ 'frametest': {
+ 'sources': files(lz4_source_root / 'tests/frametest.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['-v', '-T@0@s'.format(fuzzer_time)],
+ 'test': false,
+ },
+ 'freestanding': {
+ 'sources': files(lz4_source_root / 'tests/freestanding.c'),
+ 'c_args': ['-ffreestanding', '-fno-stack-protector', '-Wno-unused-parameter', '-Wno-declaration-after-statement', '-DLZ4_DEBUG=0'],
+ 'link_args': ['-nostdlib'],
+ 'build': cc.get_id() in ['gcc', 'clang'] and
+ host_machine.system() == 'linux' and host_machine.cpu_family() == 'x86_64',
+ 'override_options': ['optimization=1'],
+ },
+ 'fullbench': {
+ 'sources': files(lz4_source_root / 'tests/fullbench.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['--no-prompt', '-i1', files(lz4_source_root / 'tests/COPYING')],
+ 'test': false,
+ },
+ 'fuzzer': {
+ 'sources': files(lz4_source_root / 'tests/fuzzer.c'),
+ 'include_directories': include_directories(lz4_source_root / 'programs'),
+ 'args': ['-T@0@s'.format(fuzzer_time)],
+ 'test': false,
+ },
+ 'roundTripTest': {
+ 'sources': files(lz4_source_root / 'tests/roundTripTest.c'),
+ 'test': false,
+ },
+}
+
+targets = {}
+
+foreach e, attrs : test_exes
+ if not attrs.get('build', true)
+ targets += {e: disabler()}
+ continue
+ endif
+
+ t = executable(
+ e,
+ attrs.get('sources'),
+ c_args: attrs.get('c_args', []),
+ link_args: attrs.get('link_args', []),
+ objects: attrs.get('objects', []),
+ dependencies: [liblz4_internal_dep],
+ include_directories: attrs.get('include_directories', []),
+ install: false,
+ override_options: attrs.get('override_options', [])
+ )
+
+ targets += {e: t}
+
+ if not attrs.get('test', true)
+ continue
+ endif
+
+ test(
+ e,
+ t,
+ args: attrs.get('params', []),
+ timeout: 120
+ )
+endforeach
+
+fs = import('fs')
+
+run_env.prepend('PATH', meson.current_build_dir())
+
+test_scripts = {
+ 'lz4-basic': {
+ 'depends': [lz4, lz4cat, unlz4, targets['datagen']],
+ },
+ 'lz4-dict': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-contentSize': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-fast-hugefile': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-frame-concatenation': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-multiple': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-multiple-legacy': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-opt-parser': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-skippable': {
+ 'depends': [lz4],
+ },
+ 'lz4-sparse': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4-testmode': {
+ 'depends': [lz4, targets['datagen']],
+ },
+ 'lz4hc-hugefile': {
+ 'depends': [lz4, targets['datagen']],
+ },
+}
+
+foreach s, attrs : test_scripts
+ script = find_program(lz4_source_root / 'tests/test-@0@.sh'.format(s))
+
+ test(
+ '@0@'.format(s),
+ script,
+ depends: attrs.get('depends', []),
+ workdir: fs.parent(script.full_path()),
+ env: run_env,
+ timeout: 360
+ )
+endforeach
diff --git a/vendor/lz4/build/meson/meson_options.txt b/vendor/lz4/build/meson/meson_options.txt
new file mode 100644
index 0000000..d9c30d6
--- /dev/null
+++ b/vendor/lz4/build/meson/meson_options.txt
@@ -0,0 +1,44 @@
+# #############################################################################
+# Copyright (c) 2018-present lzutao
+# Copyright (c) 2022-present Tristan Partin
+# All rights reserved.
+#
+# This source code is licensed under both the BSD-style license (found in the
+# LICENSE file in the root directory of this source tree) and the GPLv2 (found
+# in the COPYING file in the root directory of this source tree).
+# #############################################################################
+
+option('enable_multithread', type: 'boolean', value: true,
+ description: 'Enable multi-threading support')
+option('align-test', type: 'boolean', value: true,
+ description: 'See LZ4_ALIGN_TEST')
+option('contrib', type: 'boolean', value: false,
+ description: 'Enable contrib')
+option('debug-level', type: 'integer', min: 0, max: 7, value: 1,
+ description: 'Enable run-time debug. See lib/lz4hc.c')
+option('disable-memory-allocation', type: 'boolean', value: false,
+ description: 'See LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION. Static builds only')
+option('distance-max', type: 'integer', min: 0, max: 65535, value: 65535,
+ description: 'See LZ4_DISTANCE_MAX')
+option('endianness-independent-output', type: 'boolean', value: false,
+ description: 'See LZ4_STATIC_LINKING_ONLY_ENDIANNESS_INDEPENDENT_OUTPUT. Static builds only')
+option('examples', type: 'boolean', value: false,
+ description: 'Enable examples')
+option('fast-dec-loop', type: 'feature', value: 'auto',
+ description: 'See LZ4_FAST_DEC_LOOP')
+option('force-sw-bitcount', type: 'boolean', value: false,
+ description: 'See LZ4_FORCE_SW_BITCOUNT')
+option('freestanding', type: 'boolean', value: false,
+ description: 'See LZ4_FREESTANDING')
+option('memory-usage', type: 'integer', min: 0, max: 20, value: 0,
+ description: 'See LZ4_MEMORY_USAGE. 0 means use the LZ4 default')
+option('ossfuzz', type: 'boolean', value: true,
+ description: 'Enable ossfuzz')
+option('programs', type: 'boolean', value: false,
+ description: 'Enable programs')
+option('tests', type: 'boolean', value: false,
+ description: 'Enable tests')
+option('unstable', type: 'boolean', value: false,
+ description: 'Expose unstable interfaces')
+option('user-memory-functions', type: 'boolean', value: false,
+ description: 'See LZ4_USER_MEMORY_FUNCTIONS')
diff --git a/vendor/lz4/build/visual/README.md b/vendor/lz4/build/visual/README.md
new file mode 100644
index 0000000..e96c42a
--- /dev/null
+++ b/vendor/lz4/build/visual/README.md
@@ -0,0 +1,5 @@
+These scripts will generate Visual Studio Solutions for a selected set of supported versions of MS Visual.
+
+For these scripts to work, both `cmake` and the relevant Visual Studio version must be locally installed on the system where the script is run.
+
+If `cmake` is installed into a non-standard directory, or user wants to test a specific version of `cmake`, the target `cmake` directory can be provided via the environment variable `CMAKE_PATH`.
diff --git a/vendor/lz4/build/visual/generate_solution.cmd b/vendor/lz4/build/visual/generate_solution.cmd
new file mode 100644
index 0000000..644d812
--- /dev/null
+++ b/vendor/lz4/build/visual/generate_solution.cmd
@@ -0,0 +1,55 @@
+:: Requires 1 parameter == GENERATOR
+@echo off
+setlocal
+
+:: Set path
+set "BUILD_BASE_DIR=%~dp0" :: Use the directory where the script is located
+set "CMAKELIST_DIR=..\..\cmake"
+
+if "%~1"=="" (
+ echo No generator specified as first parameter
+ exit /b 1
+)
+set "GENERATOR=%~1"
+
+:: Check if a user-defined CMAKE_PATH is set and prioritize it
+if defined CMAKE_PATH (
+ set "CMAKE_EXECUTABLE=%CMAKE_PATH%\cmake.exe"
+ echo Using user-defined cmake at %CMAKE_PATH%
+) else (
+ :: Attempt to find cmake in the system PATH
+ where cmake >nul 2>&1
+ if %ERRORLEVEL% neq 0 (
+ :: Use the default standard cmake installation directory if not found in PATH
+ set "CMAKE_PATH=C:\Program Files\CMake\bin"
+ echo CMake not in system PATH => using default CMAKE_PATH=%CMAKE_PATH%
+ set "CMAKE_EXECUTABLE=%CMAKE_PATH%\cmake.exe"
+ ) else (
+ set "CMAKE_EXECUTABLE=cmake"
+ echo CMake found in system PATH.
+ )
+)
+
+:: Set the build directory to a subdirectory named after the generator
+set "BUILD_DIR=%BUILD_BASE_DIR%\%GENERATOR%"
+
+:: Create the build directory if it doesn't exist
+if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
+
+:: Run CMake to configure the project and generate the solution
+pushd "%BUILD_DIR%"
+"%CMAKE_EXECUTABLE%" -G "%GENERATOR%" "%CMAKELIST_DIR%"
+if %ERRORLEVEL% neq 0 goto :error
+
+:: If successful, end script
+echo Build configuration successful for %GENERATOR%.
+goto :end
+
+:error
+echo Failed to configure build for %GENERATOR%.
+exit /b 1
+
+:end
+popd
+endlocal
+@echo on
diff --git a/vendor/lz4/build/visual/generate_vs2015.cmd b/vendor/lz4/build/visual/generate_vs2015.cmd
new file mode 100644
index 0000000..9b64a4f
--- /dev/null
+++ b/vendor/lz4/build/visual/generate_vs2015.cmd
@@ -0,0 +1,3 @@
+@echo off
+:: Call the central script with the specific generator for VS2015
+call generate_solution.cmd "Visual Studio 14 2015"
diff --git a/vendor/lz4/build/visual/generate_vs2017.cmd b/vendor/lz4/build/visual/generate_vs2017.cmd
new file mode 100644
index 0000000..d5ab8fc
--- /dev/null
+++ b/vendor/lz4/build/visual/generate_vs2017.cmd
@@ -0,0 +1,3 @@
+@echo off
+:: Call the central script with the specific generator for VS2017
+call generate_solution.cmd "Visual Studio 15 2017"
diff --git a/vendor/lz4/build/visual/generate_vs2019.cmd b/vendor/lz4/build/visual/generate_vs2019.cmd
new file mode 100644
index 0000000..653fc6e
--- /dev/null
+++ b/vendor/lz4/build/visual/generate_vs2019.cmd
@@ -0,0 +1,3 @@
+@echo off
+:: Call the central script with the specific generator for VS2019
+call generate_solution.cmd "Visual Studio 16 2019"
diff --git a/vendor/lz4/build/visual/generate_vs2022.cmd b/vendor/lz4/build/visual/generate_vs2022.cmd
new file mode 100644
index 0000000..a48f744
--- /dev/null
+++ b/vendor/lz4/build/visual/generate_vs2022.cmd
@@ -0,0 +1,3 @@
+@echo off
+:: Call the central script with the specific generator for VS2022
+call generate_solution.cmd "Visual Studio 17 2022"