extlz4 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -4
  3. data/bin/extlz4 +1 -1
  4. data/contrib/lz4/NEWS +36 -0
  5. data/contrib/lz4/README.md +11 -12
  6. data/contrib/lz4/build/README.md +55 -0
  7. data/contrib/lz4/build/VS2010/datagen/datagen.vcxproj +169 -0
  8. data/contrib/lz4/build/VS2010/frametest/frametest.vcxproj +176 -0
  9. data/contrib/lz4/build/VS2010/fullbench-dll/fullbench-dll.vcxproj +180 -0
  10. data/contrib/lz4/build/VS2010/fullbench/fullbench.vcxproj +176 -0
  11. data/contrib/lz4/build/VS2010/fuzzer/fuzzer.vcxproj +173 -0
  12. data/contrib/lz4/build/VS2010/liblz4-dll/liblz4-dll.rc +51 -0
  13. data/contrib/lz4/build/VS2010/liblz4-dll/liblz4-dll.vcxproj +179 -0
  14. data/contrib/lz4/build/VS2010/liblz4/liblz4.vcxproj +175 -0
  15. data/contrib/lz4/build/VS2010/lz4.sln +98 -0
  16. data/contrib/lz4/build/VS2010/lz4/lz4.rc +51 -0
  17. data/contrib/lz4/build/VS2010/lz4/lz4.vcxproj +189 -0
  18. data/contrib/lz4/build/VS2017/datagen/datagen.vcxproj +173 -0
  19. data/contrib/lz4/build/VS2017/frametest/frametest.vcxproj +180 -0
  20. data/contrib/lz4/build/VS2017/fullbench-dll/fullbench-dll.vcxproj +184 -0
  21. data/contrib/lz4/build/VS2017/fullbench/fullbench.vcxproj +180 -0
  22. data/contrib/lz4/build/VS2017/fuzzer/fuzzer.vcxproj +177 -0
  23. data/contrib/lz4/build/VS2017/liblz4-dll/liblz4-dll.rc +51 -0
  24. data/contrib/lz4/build/VS2017/liblz4-dll/liblz4-dll.vcxproj +183 -0
  25. data/contrib/lz4/build/VS2017/liblz4/liblz4.vcxproj +179 -0
  26. data/contrib/lz4/build/VS2017/lz4.sln +103 -0
  27. data/contrib/lz4/build/VS2017/lz4/lz4.rc +51 -0
  28. data/contrib/lz4/build/VS2017/lz4/lz4.vcxproj +164 -0
  29. data/contrib/lz4/build/cmake/CMakeLists.txt +235 -0
  30. data/contrib/lz4/lib/README.md +27 -10
  31. data/contrib/lz4/lib/lz4.c +327 -230
  32. data/contrib/lz4/lib/lz4.h +80 -70
  33. data/contrib/lz4/lib/lz4frame.c +93 -54
  34. data/contrib/lz4/lib/lz4frame.h +22 -14
  35. data/contrib/lz4/lib/lz4hc.c +192 -115
  36. data/contrib/lz4/lib/lz4hc.h +15 -40
  37. data/contrib/lz4/ossfuzz/Makefile +12 -8
  38. data/contrib/lz4/ossfuzz/compress_frame_fuzzer.c +11 -5
  39. data/contrib/lz4/ossfuzz/compress_fuzzer.c +9 -2
  40. data/contrib/lz4/ossfuzz/compress_hc_fuzzer.c +10 -3
  41. data/contrib/lz4/ossfuzz/decompress_frame_fuzzer.c +11 -3
  42. data/contrib/lz4/ossfuzz/decompress_fuzzer.c +6 -2
  43. data/contrib/lz4/ossfuzz/fuzz_data_producer.c +77 -0
  44. data/contrib/lz4/ossfuzz/fuzz_data_producer.h +36 -0
  45. data/contrib/lz4/ossfuzz/round_trip_frame_fuzzer.c +8 -4
  46. data/contrib/lz4/ossfuzz/round_trip_fuzzer.c +9 -2
  47. data/contrib/lz4/ossfuzz/round_trip_hc_fuzzer.c +7 -2
  48. data/contrib/lz4/ossfuzz/travisoss.sh +6 -1
  49. data/contrib/lz4/tmp +0 -0
  50. data/contrib/lz4/tmpsparse +0 -0
  51. data/ext/extlz4.c +2 -0
  52. data/ext/extlz4.h +5 -0
  53. data/ext/hashargs.c +1 -1
  54. data/ext/hashargs.h +1 -1
  55. data/gemstub.rb +3 -14
  56. data/lib/extlz4.rb +0 -2
  57. data/lib/extlz4/oldstream.rb +1 -1
  58. metadata +40 -25
  59. data/lib/extlz4/version.rb +0 -3
@@ -0,0 +1,51 @@
1
+ // Microsoft Visual C++ generated resource script.
2
+ //
3
+
4
+ #include "lz4.h" /* LZ4_VERSION_STRING */
5
+ #define APSTUDIO_READONLY_SYMBOLS
6
+ #include "verrsrc.h"
7
+ #undef APSTUDIO_READONLY_SYMBOLS
8
+
9
+
10
+ #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
11
+ LANGUAGE 9, 1
12
+
13
+ /////////////////////////////////////////////////////////////////////////////
14
+ //
15
+ // Version
16
+ //
17
+
18
+ VS_VERSION_INFO VERSIONINFO
19
+ FILEVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
20
+ PRODUCTVERSION LZ4_VERSION_MAJOR,LZ4_VERSION_MINOR,LZ4_VERSION_RELEASE,0
21
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
22
+ #ifdef _DEBUG
23
+ FILEFLAGS VS_FF_DEBUG
24
+ #else
25
+ FILEFLAGS 0x0L
26
+ #endif
27
+ FILEOS VOS_NT_WINDOWS32
28
+ FILETYPE VFT_DLL
29
+ FILESUBTYPE VFT2_UNKNOWN
30
+ BEGIN
31
+ BLOCK "StringFileInfo"
32
+ BEGIN
33
+ BLOCK "040904B0"
34
+ BEGIN
35
+ VALUE "CompanyName", "Yann Collet"
36
+ VALUE "FileDescription", "Extremely fast compression"
37
+ VALUE "FileVersion", LZ4_VERSION_STRING
38
+ VALUE "InternalName", "lz4.exe"
39
+ VALUE "LegalCopyright", "Copyright (C) 2013-2016, Yann Collet"
40
+ VALUE "OriginalFilename", "lz4.exe"
41
+ VALUE "ProductName", "LZ4"
42
+ VALUE "ProductVersion", LZ4_VERSION_STRING
43
+ END
44
+ END
45
+ BLOCK "VarFileInfo"
46
+ BEGIN
47
+ VALUE "Translation", 0x0409, 1200
48
+ END
49
+ END
50
+
51
+ #endif
@@ -0,0 +1,164 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <ItemGroup Label="ProjectConfigurations">
4
+ <ProjectConfiguration Include="Debug|Win32">
5
+ <Configuration>Debug</Configuration>
6
+ <Platform>Win32</Platform>
7
+ </ProjectConfiguration>
8
+ <ProjectConfiguration Include="Release|Win32">
9
+ <Configuration>Release</Configuration>
10
+ <Platform>Win32</Platform>
11
+ </ProjectConfiguration>
12
+ <ProjectConfiguration Include="Debug|x64">
13
+ <Configuration>Debug</Configuration>
14
+ <Platform>x64</Platform>
15
+ </ProjectConfiguration>
16
+ <ProjectConfiguration Include="Release|x64">
17
+ <Configuration>Release</Configuration>
18
+ <Platform>x64</Platform>
19
+ </ProjectConfiguration>
20
+ </ItemGroup>
21
+ <PropertyGroup Label="Globals">
22
+ <VCProjectVersion>15.0</VCProjectVersion>
23
+ <ProjectGuid>{60A3115E-B988-41EE-8815-F4D4F253D866}</ProjectGuid>
24
+ <RootNamespace>lz4</RootNamespace>
25
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
26
+ </PropertyGroup>
27
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
28
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
29
+ <ConfigurationType>Application</ConfigurationType>
30
+ <UseDebugLibraries>true</UseDebugLibraries>
31
+ <PlatformToolset>v141</PlatformToolset>
32
+ <CharacterSet>Unicode</CharacterSet>
33
+ </PropertyGroup>
34
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
35
+ <ConfigurationType>Application</ConfigurationType>
36
+ <UseDebugLibraries>false</UseDebugLibraries>
37
+ <PlatformToolset>v141</PlatformToolset>
38
+ <WholeProgramOptimization>false</WholeProgramOptimization>
39
+ <CharacterSet>Unicode</CharacterSet>
40
+ </PropertyGroup>
41
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
42
+ <ConfigurationType>Application</ConfigurationType>
43
+ <UseDebugLibraries>true</UseDebugLibraries>
44
+ <PlatformToolset>v141</PlatformToolset>
45
+ <CharacterSet>MultiByte</CharacterSet>
46
+ </PropertyGroup>
47
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
48
+ <ConfigurationType>Application</ConfigurationType>
49
+ <UseDebugLibraries>false</UseDebugLibraries>
50
+ <PlatformToolset>v141</PlatformToolset>
51
+ <WholeProgramOptimization>true</WholeProgramOptimization>
52
+ <CharacterSet>MultiByte</CharacterSet>
53
+ </PropertyGroup>
54
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
55
+ <ImportGroup Label="ExtensionSettings">
56
+ </ImportGroup>
57
+ <ImportGroup Label="Shared">
58
+ </ImportGroup>
59
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
60
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
61
+ </ImportGroup>
62
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
63
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
64
+ </ImportGroup>
65
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
66
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
67
+ </ImportGroup>
68
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
69
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
70
+ </ImportGroup>
71
+ <PropertyGroup Label="UserMacros" />
72
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
73
+ <OutDir>$(SolutionDir)bin\$(Platform)_$(Configuration)\</OutDir>
74
+ <IntDir>$(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\</IntDir>
75
+ <IncludePath>$(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);</IncludePath>
76
+ </PropertyGroup>
77
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
78
+ <OutDir>$(SolutionDir)bin\$(Platform)_$(Configuration)\</OutDir>
79
+ <IntDir>$(SolutionDir)bin\obj\$(RootNamespace)_$(Platform)_$(Configuration)\</IntDir>
80
+ <IncludePath>$(IncludePath);$(UniversalCRT_IncludePath);$(SolutionDir)..\..\lib;$(SolutionDir)..\..\programs;$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);</IncludePath>
81
+ <LinkIncremental>false</LinkIncremental>
82
+ </PropertyGroup>
83
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
84
+ <ClCompile>
85
+ <WarningLevel>Level4</WarningLevel>
86
+ <Optimization>Disabled</Optimization>
87
+ <SDLCheck>true</SDLCheck>
88
+ <ConformanceMode>true</ConformanceMode>
89
+ <TreatWarningAsError>true</TreatWarningAsError>
90
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
91
+ </ClCompile>
92
+ <Link>
93
+ <GenerateDebugInformation>true</GenerateDebugInformation>
94
+ <SubSystem>Console</SubSystem>
95
+ <OptimizeReferences>false</OptimizeReferences>
96
+ <EnableCOMDATFolding>false</EnableCOMDATFolding>
97
+ </Link>
98
+ </ItemDefinitionGroup>
99
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
100
+ <ClCompile>
101
+ <WarningLevel>Level3</WarningLevel>
102
+ <Optimization>Disabled</Optimization>
103
+ <SDLCheck>true</SDLCheck>
104
+ <ConformanceMode>true</ConformanceMode>
105
+ </ClCompile>
106
+ </ItemDefinitionGroup>
107
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
108
+ <ClCompile>
109
+ <WarningLevel>Level3</WarningLevel>
110
+ <Optimization>MaxSpeed</Optimization>
111
+ <FunctionLevelLinking>true</FunctionLevelLinking>
112
+ <IntrinsicFunctions>true</IntrinsicFunctions>
113
+ <SDLCheck>true</SDLCheck>
114
+ <ConformanceMode>true</ConformanceMode>
115
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
116
+ </ClCompile>
117
+ <Link>
118
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
119
+ <OptimizeReferences>true</OptimizeReferences>
120
+ <GenerateDebugInformation>true</GenerateDebugInformation>
121
+ <SubSystem>Console</SubSystem>
122
+ </Link>
123
+ </ItemDefinitionGroup>
124
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
125
+ <ClCompile>
126
+ <WarningLevel>Level3</WarningLevel>
127
+ <Optimization>MaxSpeed</Optimization>
128
+ <FunctionLevelLinking>true</FunctionLevelLinking>
129
+ <IntrinsicFunctions>true</IntrinsicFunctions>
130
+ <SDLCheck>true</SDLCheck>
131
+ <ConformanceMode>true</ConformanceMode>
132
+ </ClCompile>
133
+ <Link>
134
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
135
+ <OptimizeReferences>true</OptimizeReferences>
136
+ </Link>
137
+ </ItemDefinitionGroup>
138
+ <ItemGroup>
139
+ <ClCompile Include="..\..\..\lib\lz4.c" />
140
+ <ClCompile Include="..\..\..\lib\lz4frame.c" />
141
+ <ClCompile Include="..\..\..\lib\lz4hc.c" />
142
+ <ClCompile Include="..\..\..\lib\xxhash.c" />
143
+ <ClCompile Include="..\..\..\programs\bench.c" />
144
+ <ClCompile Include="..\..\..\programs\datagen.c" />
145
+ <ClCompile Include="..\..\..\programs\lz4cli.c" />
146
+ <ClCompile Include="..\..\..\programs\lz4io.c" />
147
+ </ItemGroup>
148
+ <ItemGroup>
149
+ <ClInclude Include="..\..\..\lib\lz4.h" />
150
+ <ClInclude Include="..\..\..\lib\lz4frame.h" />
151
+ <ClInclude Include="..\..\..\lib\lz4frame_static.h" />
152
+ <ClInclude Include="..\..\..\lib\lz4hc.h" />
153
+ <ClInclude Include="..\..\..\lib\xxhash.h" />
154
+ <ClInclude Include="..\..\..\programs\bench.h" />
155
+ <ClInclude Include="..\..\..\programs\datagen.h" />
156
+ <ClInclude Include="..\..\..\programs\lz4io.h" />
157
+ </ItemGroup>
158
+ <ItemGroup>
159
+ <ResourceCompile Include="lz4.rc" />
160
+ </ItemGroup>
161
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
162
+ <ImportGroup Label="ExtensionTargets">
163
+ </ImportGroup>
164
+ </Project>
@@ -0,0 +1,235 @@
1
+ # CMake support for LZ4
2
+ #
3
+ # To the extent possible under law, the author(s) have dedicated all
4
+ # copyright and related and neighboring rights to this software to
5
+ # the public domain worldwide. This software is distributed without
6
+ # any warranty.
7
+ #
8
+ # For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
9
+ #
10
+ # LZ4's CMake support is maintained by Evan Nemerson; when filing
11
+ # bugs please mention @nemequ to make sure I see it.
12
+
13
+ set(LZ4_TOP_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
14
+
15
+ option(LZ4_BUILD_CLI "Build lz4 program" ON)
16
+ option(LZ4_BUILD_LEGACY_LZ4C "Build lz4c progam with legacy argument support" ON)
17
+
18
+ # Parse version information
19
+ file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" LZ4_VERSION_MAJOR REGEX "^#define LZ4_VERSION_MAJOR +([0-9]+) +.*$")
20
+ string(REGEX REPLACE "^#define LZ4_VERSION_MAJOR +([0-9]+) +.*$" "\\1" LZ4_VERSION_MAJOR "${LZ4_VERSION_MAJOR}")
21
+ file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" LZ4_VERSION_MINOR REGEX "^#define LZ4_VERSION_MINOR +([0-9]+) +.*$")
22
+ string(REGEX REPLACE "^#define LZ4_VERSION_MINOR +([0-9]+) +.*$" "\\1" LZ4_VERSION_MINOR "${LZ4_VERSION_MINOR}")
23
+ file(STRINGS "${LZ4_TOP_SOURCE_DIR}/lib/lz4.h" LZ4_VERSION_RELEASE REGEX "^#define LZ4_VERSION_RELEASE +([0-9]+) +.*$")
24
+ string(REGEX REPLACE "^#define LZ4_VERSION_RELEASE +([0-9]+) +.*$" "\\1" LZ4_VERSION_RELEASE "${LZ4_VERSION_RELEASE}")
25
+ set(LZ4_VERSION_STRING "${LZ4_VERSION_MAJOR}.${LZ4_VERSION_MINOR}.${LZ4_VERSION_RELEASE}")
26
+ mark_as_advanced(LZ4_VERSION_STRING LZ4_VERSION_MAJOR LZ4_VERSION_MINOR LZ4_VERSION_RELEASE)
27
+
28
+ if("${CMAKE_VERSION}" VERSION_LESS "3.0")
29
+ project(LZ4 C)
30
+ else()
31
+ cmake_policy (SET CMP0048 NEW)
32
+ project(LZ4
33
+ VERSION ${LZ4_VERSION_STRING}
34
+ LANGUAGES C)
35
+ endif()
36
+
37
+ cmake_minimum_required (VERSION 2.8.6)
38
+
39
+ # If LZ4 is being bundled in another project, we don't want to
40
+ # install anything. However, we want to let people override this, so
41
+ # we'll use the LZ4_BUNDLED_MODE variable to let them do that; just
42
+ # set it to OFF in your project before you add_subdirectory(lz4/contrib/cmake_unofficial).
43
+ get_directory_property(LZ4_PARENT_DIRECTORY PARENT_DIRECTORY)
44
+ if("${LZ4_BUNDLED_MODE}" STREQUAL "")
45
+ # Bundled mode hasn't been set one way or the other, set the default
46
+ # depending on whether or not we are the top-level project.
47
+ if("${LZ4_PARENT_DIRECTORY}" STREQUAL "")
48
+ set(LZ4_BUNDLED_MODE OFF)
49
+ else()
50
+ set(LZ4_BUNDLED_MODE ON)
51
+ endif()
52
+ endif()
53
+ mark_as_advanced(LZ4_BUNDLED_MODE)
54
+
55
+ # CPack
56
+ if(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
57
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LZ4 compression library")
58
+ set(CPACK_PACKAGE_DESCRIPTION_FILE "${LZ4_TOP_SOURCE_DIR}/README.md")
59
+ set(CPACK_RESOURCE_FILE_LICENSE "${LZ4_TOP_SOURCE_DIR}/LICENSE")
60
+ set(CPACK_PACKAGE_VERSION_MAJOR ${LZ4_VERSION_MAJOR})
61
+ set(CPACK_PACKAGE_VERSION_MINOR ${LZ4_VERSION_MINOR})
62
+ set(CPACK_PACKAGE_VERSION_PATCH ${LZ4_VERSION_RELEASE})
63
+ include(CPack)
64
+ endif(NOT LZ4_BUNDLED_MODE AND NOT CPack_CMake_INCLUDED)
65
+
66
+ # Allow people to choose whether to build shared or static libraries
67
+ # via the BUILD_SHARED_LIBS option unless we are in bundled mode, in
68
+ # which case we always use static libraries.
69
+ include(CMakeDependentOption)
70
+ CMAKE_DEPENDENT_OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON "NOT LZ4_BUNDLED_MODE" OFF)
71
+ CMAKE_DEPENDENT_OPTION(BUILD_STATIC_LIBS "Build static libraries" OFF "BUILD_SHARED_LIBS" ON)
72
+
73
+ if(NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)
74
+ message(FATAL_ERROR "Both BUILD_SHARED_LIBS and BUILD_STATIC_LIBS have been disabled")
75
+ endif()
76
+
77
+ set(LZ4_LIB_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/lib")
78
+ set(LZ4_PROG_SOURCE_DIR "${LZ4_TOP_SOURCE_DIR}/programs")
79
+
80
+ include_directories("${LZ4_LIB_SOURCE_DIR}")
81
+
82
+ # CLI sources
83
+ set(LZ4_SOURCES
84
+ "${LZ4_LIB_SOURCE_DIR}/lz4.c"
85
+ "${LZ4_LIB_SOURCE_DIR}/lz4hc.c"
86
+ "${LZ4_LIB_SOURCE_DIR}/lz4.h"
87
+ "${LZ4_LIB_SOURCE_DIR}/lz4hc.h"
88
+ "${LZ4_LIB_SOURCE_DIR}/lz4frame.c"
89
+ "${LZ4_LIB_SOURCE_DIR}/lz4frame.h"
90
+ "${LZ4_LIB_SOURCE_DIR}/xxhash.c")
91
+ set(LZ4_CLI_SOURCES
92
+ "${LZ4_PROG_SOURCE_DIR}/bench.c"
93
+ "${LZ4_PROG_SOURCE_DIR}/lz4cli.c"
94
+ "${LZ4_PROG_SOURCE_DIR}/lz4io.c"
95
+ "${LZ4_PROG_SOURCE_DIR}/datagen.c")
96
+
97
+ # Whether to use position independent code for the static library. If
98
+ # we're building a shared library this is ignored and PIC is always
99
+ # used.
100
+ option(LZ4_POSITION_INDEPENDENT_LIB "Use position independent code for static library (if applicable)" ON)
101
+
102
+ # liblz4
103
+ set(LZ4_LIBRARIES_BUILT)
104
+ if(BUILD_SHARED_LIBS)
105
+ add_library(lz4_shared SHARED ${LZ4_SOURCES})
106
+ set_target_properties(lz4_shared PROPERTIES
107
+ OUTPUT_NAME lz4
108
+ SOVERSION "${LZ4_VERSION_MAJOR}"
109
+ VERSION "${LZ4_VERSION_STRING}")
110
+ if(MSVC)
111
+ target_compile_definitions(lz4_shared PRIVATE
112
+ LZ4_DLL_EXPORT=1)
113
+ endif()
114
+ list(APPEND LZ4_LIBRARIES_BUILT lz4_shared)
115
+ endif()
116
+ if(BUILD_STATIC_LIBS)
117
+ add_library(lz4_static STATIC ${LZ4_SOURCES})
118
+ set_target_properties(lz4_static PROPERTIES
119
+ OUTPUT_NAME lz4
120
+ POSITION_INDEPENDENT_CODE ${LZ4_POSITION_INDEPENDENT_LIB})
121
+ list(APPEND LZ4_LIBRARIES_BUILT lz4_static)
122
+ endif()
123
+
124
+ # link to shared whenever possible, to static otherwise
125
+ if(BUILD_SHARED_LIBS)
126
+ set(LZ4_LINK_LIBRARY lz4_shared)
127
+ else()
128
+ set(LZ4_LINK_LIBRARY lz4_static)
129
+ endif()
130
+
131
+ # lz4
132
+ if (LZ4_BUILD_CLI)
133
+ set(LZ4_PROGRAMS_BUILT lz4cli)
134
+ add_executable(lz4cli ${LZ4_CLI_SOURCES})
135
+ set_target_properties(lz4cli PROPERTIES OUTPUT_NAME lz4)
136
+ target_link_libraries(lz4cli ${LZ4_LINK_LIBRARY})
137
+ endif()
138
+
139
+ # lz4c
140
+ if (LZ4_BUILD_LEGACY_LZ4C)
141
+ list(APPEND LZ4_PROGRAMS_BUILT lz4c)
142
+ add_executable(lz4c ${LZ4_CLI_SOURCES})
143
+ set_target_properties(lz4c PROPERTIES COMPILE_DEFINITIONS "ENABLE_LZ4C_LEGACY_OPTIONS")
144
+ target_link_libraries(lz4c ${LZ4_LINK_LIBRARY})
145
+ endif()
146
+
147
+ # Extra warning flags
148
+ include (CheckCCompilerFlag)
149
+ foreach (flag
150
+ # GCC-style
151
+ -Wall
152
+ -Wextra
153
+ -Wundef
154
+ -Wcast-qual
155
+ -Wcast-align
156
+ -Wshadow
157
+ -Wswitch-enum
158
+ -Wdeclaration-after-statement
159
+ -Wstrict-prototypes
160
+ -Wpointer-arith
161
+
162
+ # MSVC-style
163
+ /W4)
164
+ # Because https://gcc.gnu.org/wiki/FAQ#wnowarning
165
+ string(REGEX REPLACE "\\-Wno\\-(.+)" "-W\\1" flag_to_test "${flag}")
166
+ string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" test_name "CFLAG_${flag_to_test}")
167
+
168
+ check_c_compiler_flag("${ADD_COMPILER_FLAGS_PREPEND} ${flag_to_test}" ${test_name})
169
+
170
+ if(${test_name})
171
+ set(CMAKE_C_FLAGS "${flag} ${CMAKE_C_FLAGS}")
172
+ endif()
173
+
174
+ unset(test_name)
175
+ unset(flag_to_test)
176
+ endforeach (flag)
177
+
178
+ if(NOT LZ4_BUNDLED_MODE)
179
+ include(GNUInstallDirs)
180
+
181
+ install(TARGETS ${LZ4_PROGRAMS_BUILT}
182
+ BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}"
183
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
184
+ install(TARGETS ${LZ4_LIBRARIES_BUILT}
185
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
186
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
187
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
188
+ install(FILES
189
+ "${LZ4_LIB_SOURCE_DIR}/lz4.h"
190
+ "${LZ4_LIB_SOURCE_DIR}/lz4frame.h"
191
+ "${LZ4_LIB_SOURCE_DIR}/lz4hc.h"
192
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
193
+ install(FILES "${LZ4_PROG_SOURCE_DIR}/lz4.1"
194
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
195
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/liblz4.pc"
196
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
197
+
198
+ # install lz4cat and unlz4 symlinks on *nix
199
+ if(UNIX AND LZ4_BUILD_CLI)
200
+ install(CODE "
201
+ foreach(f lz4cat unlz4)
202
+ set(dest \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/\${f}\")
203
+ message(STATUS \"Symlinking: \${dest} -> lz4\")
204
+ execute_process(
205
+ COMMAND \"${CMAKE_COMMAND}\" -E create_symlink lz4 \"\${dest}\")
206
+ endforeach()
207
+ ")
208
+
209
+ # create manpage aliases
210
+ foreach(f lz4cat unlz4)
211
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${f}.1" ".so man1/lz4.1\n")
212
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${f}.1"
213
+ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1")
214
+ endforeach()
215
+ endif(UNIX AND LZ4_BUILD_CLI)
216
+ endif(NOT LZ4_BUNDLED_MODE)
217
+
218
+ # pkg-config
219
+ set(PREFIX "${CMAKE_INSTALL_PREFIX}")
220
+
221
+ if("${CMAKE_INSTALL_FULL_LIBDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
222
+ set(LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
223
+ else()
224
+ set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}")
225
+ endif()
226
+
227
+ if("${CMAKE_INSTALL_FULL_INCLUDEDIR}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
228
+ set(INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
229
+ else()
230
+ set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
231
+ endif()
232
+
233
+ # for liblz4.pc substitution
234
+ set(VERSION ${LZ4_VERSION_STRING})
235
+ configure_file(${LZ4_LIB_SOURCE_DIR}/liblz4.pc.in liblz4.pc @ONLY)