[llvm] cmake config groundwork to have ZSTD in LLVM
- added `FindZSTD.cmake` - added a CMake option `LLVM_ENABLE_ZSTD` with behavior mirroring that of `LLVM_ENABLE_ZLIB` - likewise added have_zstd to compiler-rt/test/lit.common.cfg.py, clang-tools-extra/clangd/test/lit.cfg.py, and several lit.site.cfg.py.in files mirroring have_zlib behavior Reviewed By: leonardchan, MaskRay Differential Revision: https://reviews.llvm.org/D128465
This commit is contained in:
parent
269d5c16bc
commit
f07caf20b9
|
@ -29,6 +29,7 @@ llvm_canonicalize_cmake_booleans(
|
|||
CLANGD_MALLOC_TRIM
|
||||
CLANGD_TIDY_CHECKS
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_ENABLE_ZSTD
|
||||
)
|
||||
|
||||
configure_file(
|
||||
|
|
|
@ -36,3 +36,6 @@ if config.clangd_tidy_checks:
|
|||
|
||||
if config.have_zlib:
|
||||
config.available_features.add('zlib')
|
||||
|
||||
if config.have_zstd:
|
||||
config.available_features.add('zstd')
|
||||
|
|
|
@ -17,6 +17,7 @@ config.clangd_build_xpc = @CLANGD_BUILD_XPC@
|
|||
config.clangd_enable_remote = @CLANGD_ENABLE_REMOTE@
|
||||
config.clangd_tidy_checks = @CLANGD_TIDY_CHECKS@
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.have_zstd = @LLVM_ENABLE_ZSTD@
|
||||
|
||||
# Delegate logic to lit.cfg.py.
|
||||
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")
|
||||
|
|
|
@ -11,6 +11,7 @@ llvm_canonicalize_cmake_booleans(
|
|||
CLANG_SPAWN_CC1
|
||||
ENABLE_BACKTRACES
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_ENABLE_ZSTD
|
||||
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
|
||||
LLVM_ENABLE_THREADS
|
||||
LLVM_WITH_Z3
|
||||
|
|
|
@ -21,6 +21,7 @@ config.host_cc = "@CMAKE_C_COMPILER@"
|
|||
config.host_cxx = "@CMAKE_CXX_COMPILER@"
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.have_zstd = @LLVM_ENABLE_ZSTD@
|
||||
config.clang_arcmt = @CLANG_ENABLE_ARCMT@
|
||||
config.clang_default_pie_on_linux = @CLANG_DEFAULT_PIE_ON_LINUX@
|
||||
config.clang_enable_opaque_pointers = @CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL@
|
||||
|
|
|
@ -140,6 +140,7 @@ if [[ ! -d ${LLVM_BUILD} ]]; then
|
|||
-DLLVM_TABLEGEN=$TBLGEN \
|
||||
-DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET_TRIPLE}" \
|
||||
-DLLVM_ENABLE_ZLIB=ON \
|
||||
-DLLVM_ENABLE_ZSTD=ON \
|
||||
-DLLVM_ENABLE_TERMINFO=OFF \
|
||||
-DLLVM_ENABLE_THREADS=OFF \
|
||||
$LLVM_SRC
|
||||
|
|
|
@ -217,6 +217,9 @@ config.available_features.add("host-byteorder-" + sys.byteorder + "-endian")
|
|||
|
||||
if config.have_zlib == "1":
|
||||
config.available_features.add("zlib")
|
||||
|
||||
if config.have_zstd == "1":
|
||||
config.available_features.add("zstd")
|
||||
|
||||
# Use ugly construction to explicitly prohibit "clang", "clang++" etc.
|
||||
# in RUN lines.
|
||||
|
|
|
@ -65,6 +65,7 @@ else:
|
|||
set_default("target_suffix", "-%s" % config.target_arch)
|
||||
|
||||
set_default("have_zlib", "@LLVM_ENABLE_ZLIB@")
|
||||
set_default("have_zstd", "@LLVM_ENABLE_ZSTD@")
|
||||
set_default("libcxx_used", "@LLVM_LIBCXX_USED@")
|
||||
|
||||
# LLVM tools dir can be passed in lit parameters, so try to
|
||||
|
|
|
@ -70,6 +70,12 @@ if (FLANG_STANDALONE_BUILD)
|
|||
if(LLVM_ENABLE_ZLIB)
|
||||
find_package(ZLIB REQUIRED)
|
||||
endif()
|
||||
|
||||
# If LLVM links to zstd we need the imported targets so we can too.
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
find_package(ZSTD REQUIRED)
|
||||
endif()
|
||||
|
||||
option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(USE_NO_MAYBE_UNINITIALIZED 1)
|
||||
|
|
|
@ -6,6 +6,10 @@ if(LLVM_ENABLE_ZLIB)
|
|||
set(imported_libs ZLIB::ZLIB)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
list(APPEND imported_libs zstd)
|
||||
endif()
|
||||
|
||||
add_lld_library(lldELF
|
||||
AArch64ErrataFix.cpp
|
||||
Arch/AArch64.cpp
|
||||
|
|
|
@ -18,6 +18,7 @@ config.lld_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
|
|||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
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.sizeof_void_p = @CMAKE_SIZEOF_VOID_P@
|
||||
|
|
|
@ -18,6 +18,10 @@ if(LLVM_ENABLE_ZLIB)
|
|||
list(APPEND LLDB_SYSTEM_LIBS ZLIB::ZLIB)
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_ZSTD)
|
||||
list(APPEND LLDB_SYSTEM_LIBS zstd)
|
||||
endif()
|
||||
|
||||
add_lldb_library(lldbPluginProcessGDBRemote PLUGIN
|
||||
GDBRemoteClientBase.cpp
|
||||
GDBRemoteCommunication.cpp
|
||||
|
|
|
@ -16,6 +16,7 @@ config.lldb_lit_tools_dir = lit_config.substitute(r"@LLDB_LIT_TOOLS_DIR@")
|
|||
config.target_triple = "@LLVM_TARGET_TRIPLE@"
|
||||
config.python_executable = "@Python3_EXECUTABLE@"
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.have_zstd = @LLVM_ENABLE_ZSTD@
|
||||
config.lldb_enable_lzma = @LLDB_ENABLE_LZMA@
|
||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.lldb_bitness = 64 if @LLDB_IS_64_BITS@ else 32
|
||||
|
|
|
@ -438,6 +438,8 @@ 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")
|
||||
|
|
|
@ -136,6 +136,27 @@ if(LLVM_ENABLE_ZLIB)
|
|||
set(LLVM_ENABLE_ZLIB "${HAVE_ZLIB}")
|
||||
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()
|
||||
if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON AND NOT HAVE_ZSTD)
|
||||
message(FATAL_ERROR "Failed to configure zstd")
|
||||
endif()
|
||||
endif()
|
||||
set(LLVM_ENABLE_ZSTD "${HAVE_ZSTD}")
|
||||
endif()
|
||||
|
||||
if(LLVM_ENABLE_LIBXML2)
|
||||
if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
|
||||
find_package(LibXml2 REQUIRED)
|
||||
|
|
21
llvm/cmake/modules/FindZSTD.cmake
Normal file
21
llvm/cmake/modules/FindZSTD.cmake
Normal file
|
@ -0,0 +1,21 @@
|
|||
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,6 +73,12 @@ 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,6 +95,9 @@
|
|||
/* 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
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ 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@
|
||||
|
|
|
@ -95,6 +95,9 @@
|
|||
/* 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 a new issue