forked from OSchip/llvm-project
Revert "[llvm] add zstd to llvm::compression namespace"
This reverts commit d449c60076
.
Breaks macOS builds with this:
llvm/lib/Support/Compression.cpp:24:10: fatal error: 'zstd.h' file not found
This commit is contained in:
parent
6db3edc858
commit
6e6be5f950
|
@ -438,8 +438,6 @@ endif()
|
|||
|
||||
set(LLVM_ENABLE_ZLIB "ON" CACHE STRING "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON")
|
||||
|
||||
set(LLVM_ENABLE_ZSTD "ON" CACHE STRING "Use zstd for compression/decompression if available. Can be ON, OFF, or FORCE_ON")
|
||||
|
||||
set(LLVM_ENABLE_CURL "OFF" CACHE STRING "Use libcurl for the HTTP client if available. Can be ON, OFF, or FORCE_ON")
|
||||
|
||||
set(LLVM_ENABLE_HTTPLIB "OFF" CACHE STRING "Use cpp-httplib HTTP server library if available. Can be ON, OFF, or FORCE_ON")
|
||||
|
|
|
@ -138,35 +138,6 @@ else()
|
|||
set(LLVM_ENABLE_ZLIB 0)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON)
|
||||
find_package(ZSTD REQUIRED)
|
||||
elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
|
||||
find_package(ZSTD)
|
||||
endif()
|
||||
if(ZSTD_FOUND)
|
||||
# Check if zstd we found is usable; for example, we may have found a 32-bit
|
||||
# library on a 64-bit system which would result in a link-time failure.
|
||||
cmake_push_check_state()
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
|
||||
list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
|
||||
check_symbol_exists(ZSTD_compress zstd.h HAVE_ZSTD)
|
||||
cmake_pop_check_state()
|
||||
else()
|
||||
set(HAVE_ZSTD 0)
|
||||
endif()
|
||||
if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON AND NOT HAVE_ZSTD)
|
||||
message(FATAL_ERROR "Failed to configure zstd")
|
||||
endif()
|
||||
if(HAVE_ZSTD)
|
||||
set(LLVM_ENABLE_ZSTD 1)
|
||||
else()
|
||||
set(LLVM_ENABLE_ZSTD 0)
|
||||
endif()
|
||||
else()
|
||||
set(LLVM_ENABLE_ZSTD 0)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_LIBXML2)
|
||||
if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
|
||||
find_package(LibXml2 REQUIRED)
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
find_path(ZSTD_INCLUDE_DIR
|
||||
NAMES zstd.h
|
||||
HINTS ${ZSTD_ROOT_DIR}/include)
|
||||
|
||||
find_library(ZSTD_LIBRARY
|
||||
NAMES zstd
|
||||
HINTS ${ZSTD_ROOT_DIR}/lib)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
ZSTD DEFAULT_MSG
|
||||
ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
|
||||
|
||||
if(ZSTD_FOUND)
|
||||
set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
|
||||
set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(
|
||||
ZSTD_INCLUDE_DIR
|
||||
ZSTD_LIBRARY)
|
|
@ -73,12 +73,6 @@ if(LLVM_ENABLE_ZLIB)
|
|||
find_package(ZLIB)
|
||||
endif()
|
||||
|
||||
set(LLVM_ENABLE_ZSTD @LLVM_ENABLE_ZSTD@)
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
set(ZSTD_ROOT @ZSTD_ROOT@)
|
||||
find_package(ZSTD)
|
||||
endif()
|
||||
|
||||
set(LLVM_ENABLE_LIBXML2 @LLVM_ENABLE_LIBXML2@)
|
||||
if(LLVM_ENABLE_LIBXML2)
|
||||
find_package(LibXml2)
|
||||
|
|
|
@ -95,9 +95,6 @@
|
|||
/* Define if zlib compression is available */
|
||||
#cmakedefine01 LLVM_ENABLE_ZLIB
|
||||
|
||||
/* Define if zstd compression is available */
|
||||
#cmakedefine01 LLVM_ENABLE_ZSTD
|
||||
|
||||
/* Define if LLVM was built with a dependency to the libtensorflow dynamic library */
|
||||
#cmakedefine LLVM_HAVE_TF_API
|
||||
|
||||
|
|
|
@ -44,28 +44,6 @@ Error uncompress(ArrayRef<uint8_t> Input,
|
|||
|
||||
} // End of namespace zlib
|
||||
|
||||
namespace zstd {
|
||||
|
||||
constexpr int NoCompression = -5;
|
||||
constexpr int BestSpeedCompression = 1;
|
||||
constexpr int DefaultCompression = 5;
|
||||
constexpr int BestSizeCompression = 12;
|
||||
|
||||
bool isAvailable();
|
||||
|
||||
void compress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &CompressedBuffer,
|
||||
int Level = DefaultCompression);
|
||||
|
||||
Error uncompress(ArrayRef<uint8_t> Input, uint8_t *UncompressedBuffer,
|
||||
size_t &UncompressedSize);
|
||||
|
||||
Error uncompress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &UncompressedBuffer,
|
||||
size_t UncompressedSize);
|
||||
|
||||
} // End of namespace zstd
|
||||
|
||||
} // End of namespace compression
|
||||
|
||||
} // End of namespace llvm
|
||||
|
|
|
@ -25,10 +25,6 @@ if(LLVM_ENABLE_ZLIB)
|
|||
set(imported_libs ZLIB::ZLIB)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
list(APPEND imported_libs zstd)
|
||||
endif()
|
||||
|
||||
if( MSVC OR MINGW )
|
||||
# libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc.
|
||||
# advapi32 required for CryptAcquireContextW in lib/Support/Windows/Path.inc.
|
||||
|
|
|
@ -20,9 +20,6 @@
|
|||
#if LLVM_ENABLE_ZLIB
|
||||
#include <zlib.h>
|
||||
#endif
|
||||
#if LLVM_ENABLE_ZSTD
|
||||
#include <zstd.h>
|
||||
#endif
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::compression;
|
||||
|
@ -103,65 +100,3 @@ Error zlib::uncompress(ArrayRef<uint8_t> Input,
|
|||
llvm_unreachable("zlib::uncompress is unavailable");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LLVM_ENABLE_ZSTD
|
||||
|
||||
bool zstd::isAvailable() { return true; }
|
||||
|
||||
void zstd::compress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &CompressedBuffer, int Level) {
|
||||
unsigned long CompressedBufferSize = ::ZSTD_compressBound(Input.size());
|
||||
CompressedBuffer.resize_for_overwrite(CompressedBufferSize);
|
||||
unsigned long CompressedSize =
|
||||
::ZSTD_compress((char *)CompressedBuffer.data(), CompressedBufferSize,
|
||||
(const char *)Input.data(), Input.size(), Level);
|
||||
if (ZSTD_isError(CompressedSize))
|
||||
report_bad_alloc_error("Allocation failed");
|
||||
// Tell MemorySanitizer that zstd output buffer is fully initialized.
|
||||
// This avoids a false report when running LLVM with uninstrumented ZLib.
|
||||
__msan_unpoison(CompressedBuffer.data(), CompressedSize);
|
||||
if (CompressedSize < CompressedBuffer.size())
|
||||
CompressedBuffer.truncate(CompressedSize);
|
||||
}
|
||||
|
||||
Error zstd::uncompress(ArrayRef<uint8_t> Input, uint8_t *UncompressedBuffer,
|
||||
size_t &UncompressedSize) {
|
||||
const size_t Res =
|
||||
::ZSTD_decompress(UncompressedBuffer, UncompressedSize,
|
||||
(const uint8_t *)Input.data(), Input.size());
|
||||
UncompressedSize = Res;
|
||||
// Tell MemorySanitizer that zstd output buffer is fully initialized.
|
||||
// This avoids a false report when running LLVM with uninstrumented ZLib.
|
||||
__msan_unpoison(UncompressedBuffer, UncompressedSize);
|
||||
return ZSTD_isError(Res) ? make_error<StringError>(ZSTD_getErrorName(Res),
|
||||
inconvertibleErrorCode())
|
||||
: Error::success();
|
||||
}
|
||||
|
||||
Error zstd::uncompress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &UncompressedBuffer,
|
||||
size_t UncompressedSize) {
|
||||
UncompressedBuffer.resize_for_overwrite(UncompressedSize);
|
||||
Error E =
|
||||
zstd::uncompress(Input, UncompressedBuffer.data(), UncompressedSize);
|
||||
if (UncompressedSize < UncompressedBuffer.size())
|
||||
UncompressedBuffer.truncate(UncompressedSize);
|
||||
return E;
|
||||
}
|
||||
|
||||
#else
|
||||
bool zstd::isAvailable() { return false; }
|
||||
void zstd::compress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &CompressedBuffer, int Level) {
|
||||
llvm_unreachable("zstd::compress is unavailable");
|
||||
}
|
||||
Error zstd::uncompress(ArrayRef<uint8_t> Input, uint8_t *UncompressedBuffer,
|
||||
size_t &UncompressedSize) {
|
||||
llvm_unreachable("zstd::uncompress is unavailable");
|
||||
}
|
||||
Error zstd::uncompress(ArrayRef<uint8_t> Input,
|
||||
SmallVectorImpl<uint8_t> &UncompressedBuffer,
|
||||
size_t UncompressedSize) {
|
||||
llvm_unreachable("zstd::uncompress is unavailable");
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -37,7 +37,6 @@ config.host_ldflags = '@HOST_LDFLAGS@'
|
|||
config.llvm_use_intel_jitevents = @LLVM_USE_INTEL_JITEVENTS@
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.have_zstd = @LLVM_ENABLE_ZSTD@
|
||||
config.have_libxar = @LLVM_HAVE_LIBXAR@
|
||||
config.have_libxml2 = @LLVM_ENABLE_LIBXML2@
|
||||
config.have_curl = @LLVM_ENABLE_CURL@
|
||||
|
|
|
@ -61,42 +61,4 @@ TEST(CompressionTest, Zlib) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if LLVM_ENABLE_ZSTD
|
||||
static void testZstdCompression(StringRef Input, int Level) {
|
||||
SmallVector<uint8_t, 0> Compressed;
|
||||
SmallVector<uint8_t, 0> Uncompressed;
|
||||
zstd::compress(arrayRefFromStringRef(Input), Compressed, Level);
|
||||
|
||||
// Check that uncompressed buffer is the same as original.
|
||||
Error E = zstd::uncompress(Compressed, Uncompressed, Input.size());
|
||||
consumeError(std::move(E));
|
||||
|
||||
EXPECT_EQ(Input, toStringRef(Uncompressed));
|
||||
if (Input.size() > 0) {
|
||||
// Uncompression fails if expected length is too short.
|
||||
E = zstd::uncompress(Compressed, Uncompressed, Input.size() - 1);
|
||||
EXPECT_EQ("Destination buffer is too small", llvm::toString(std::move(E)));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(CompressionTest, Zstd) {
|
||||
testZstdCompression("", zstd::DefaultCompression);
|
||||
|
||||
testZstdCompression("hello, world!", zstd::NoCompression);
|
||||
testZstdCompression("hello, world!", zstd::BestSizeCompression);
|
||||
testZstdCompression("hello, world!", zstd::BestSpeedCompression);
|
||||
testZstdCompression("hello, world!", zstd::DefaultCompression);
|
||||
|
||||
const size_t kSize = 1024;
|
||||
char BinaryData[kSize];
|
||||
for (size_t i = 0; i < kSize; ++i)
|
||||
BinaryData[i] = i & 255;
|
||||
StringRef BinaryDataStr(BinaryData, kSize);
|
||||
|
||||
testZstdCompression(BinaryDataStr, zstd::NoCompression);
|
||||
testZstdCompression(BinaryDataStr, zstd::BestSizeCompression);
|
||||
testZstdCompression(BinaryDataStr, zstd::BestSpeedCompression);
|
||||
testZstdCompression(BinaryDataStr, zstd::DefaultCompression);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -95,9 +95,6 @@
|
|||
/* Define if zlib compression is available */
|
||||
#cmakedefine01 LLVM_ENABLE_ZLIB
|
||||
|
||||
/* Define if zstd compression is available */
|
||||
#cmakedefine01 LLVM_ENABLE_ZSTD
|
||||
|
||||
/* Define if LLVM was built with a dependency to the libtensorflow dynamic library */
|
||||
#cmakedefine LLVM_HAVE_TF_API
|
||||
|
||||
|
|
Loading…
Reference in New Issue