[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:
Cole Kissane 2022-07-08 11:46:51 -07:00
parent 269d5c16bc
commit f07caf20b9
20 changed files with 85 additions and 0 deletions

View file

@ -29,6 +29,7 @@ llvm_canonicalize_cmake_booleans(
CLANGD_MALLOC_TRIM
CLANGD_TIDY_CHECKS
LLVM_ENABLE_ZLIB
LLVM_ENABLE_ZSTD
)
configure_file(

View 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')

View file

@ -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")

View file

@ -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

View file

@ -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@

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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@

View file

@ -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

View file

@ -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

View file

@ -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")

View file

@ -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)

View 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)

View file

@ -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)

View file

@ -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

View file

@ -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@

View file

@ -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