Skip to content

Commit f07caf2

Browse files
committed
[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
1 parent 269d5c1 commit f07caf2

File tree

20 files changed

+85
-0
lines changed

20 files changed

+85
-0
lines changed

clang-tools-extra/clangd/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ llvm_canonicalize_cmake_booleans(
2929
CLANGD_MALLOC_TRIM
3030
CLANGD_TIDY_CHECKS
3131
LLVM_ENABLE_ZLIB
32+
LLVM_ENABLE_ZSTD
3233
)
3334

3435
configure_file(

clang-tools-extra/clangd/test/lit.cfg.py

+3
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ def calculate_arch_features(arch_string):
3636

3737
if config.have_zlib:
3838
config.available_features.add('zlib')
39+
40+
if config.have_zstd:
41+
config.available_features.add('zstd')

clang-tools-extra/clangd/test/lit.site.cfg.py.in

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ config.clangd_build_xpc = @CLANGD_BUILD_XPC@
1717
config.clangd_enable_remote = @CLANGD_ENABLE_REMOTE@
1818
config.clangd_tidy_checks = @CLANGD_TIDY_CHECKS@
1919
config.have_zlib = @LLVM_ENABLE_ZLIB@
20+
config.have_zstd = @LLVM_ENABLE_ZSTD@
2021

2122
# Delegate logic to lit.cfg.py.
2223
lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")

clang/test/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ llvm_canonicalize_cmake_booleans(
1111
CLANG_SPAWN_CC1
1212
ENABLE_BACKTRACES
1313
LLVM_ENABLE_ZLIB
14+
LLVM_ENABLE_ZSTD
1415
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
1516
LLVM_ENABLE_THREADS
1617
LLVM_WITH_Z3

clang/test/lit.site.cfg.py.in

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ config.host_cc = "@CMAKE_C_COMPILER@"
2121
config.host_cxx = "@CMAKE_CXX_COMPILER@"
2222
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
2323
config.have_zlib = @LLVM_ENABLE_ZLIB@
24+
config.have_zstd = @LLVM_ENABLE_ZSTD@
2425
config.clang_arcmt = @CLANG_ENABLE_ARCMT@
2526
config.clang_default_pie_on_linux = @CLANG_DEFAULT_PIE_ON_LINUX@
2627
config.clang_enable_opaque_pointers = @CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL@

compiler-rt/lib/sanitizer_common/symbolizer/scripts/build_symbolizer.sh

+1
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ if [[ ! -d ${LLVM_BUILD} ]]; then
140140
-DLLVM_TABLEGEN=$TBLGEN \
141141
-DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET_TRIPLE}" \
142142
-DLLVM_ENABLE_ZLIB=ON \
143+
-DLLVM_ENABLE_ZSTD=ON \
143144
-DLLVM_ENABLE_TERMINFO=OFF \
144145
-DLLVM_ENABLE_THREADS=OFF \
145146
$LLVM_SRC

compiler-rt/test/lit.common.cfg.py

+3
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ def get_path_from_clang(args, allow_failure):
217217

218218
if config.have_zlib == "1":
219219
config.available_features.add("zlib")
220+
221+
if config.have_zstd == "1":
222+
config.available_features.add("zstd")
220223

221224
# Use ugly construction to explicitly prohibit "clang", "clang++" etc.
222225
# in RUN lines.

compiler-rt/test/lit.common.configured.in

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ else:
6565
set_default("target_suffix", "-%s" % config.target_arch)
6666

6767
set_default("have_zlib", "@LLVM_ENABLE_ZLIB@")
68+
set_default("have_zstd", "@LLVM_ENABLE_ZSTD@")
6869
set_default("libcxx_used", "@LLVM_LIBCXX_USED@")
6970

7071
# LLVM tools dir can be passed in lit parameters, so try to

flang/CMakeLists.txt

+6
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,12 @@ if (FLANG_STANDALONE_BUILD)
7070
if(LLVM_ENABLE_ZLIB)
7171
find_package(ZLIB REQUIRED)
7272
endif()
73+
74+
# If LLVM links to zstd we need the imported targets so we can too.
75+
if(LLVM_ENABLE_ZSTD)
76+
find_package(ZSTD REQUIRED)
77+
endif()
78+
7379
option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
7480
if(CMAKE_COMPILER_IS_GNUCXX)
7581
set(USE_NO_MAYBE_UNINITIALIZED 1)

lld/ELF/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ if(LLVM_ENABLE_ZLIB)
66
set(imported_libs ZLIB::ZLIB)
77
endif()
88

9+
if(LLVM_ENABLE_ZSTD)
10+
list(APPEND imported_libs zstd)
11+
endif()
12+
913
add_lld_library(lldELF
1014
AArch64ErrataFix.cpp
1115
Arch/AArch64.cpp

lld/test/lit.site.cfg.py.in

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ config.lld_tools_dir = lit_config.substitute("@CURRENT_TOOLS_DIR@")
1818
config.target_triple = "@LLVM_TARGET_TRIPLE@"
1919
config.python_executable = "@Python3_EXECUTABLE@"
2020
config.have_zlib = @LLVM_ENABLE_ZLIB@
21+
config.have_zstd = @LLVM_ENABLE_ZSTD@
2122
config.have_libxar = @LLVM_HAVE_LIBXAR@
2223
config.have_libxml2 = @LLVM_ENABLE_LIBXML2@
2324
config.sizeof_void_p = @CMAKE_SIZEOF_VOID_P@

lldb/source/Plugins/Process/gdb-remote/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ if(LLVM_ENABLE_ZLIB)
1818
list(APPEND LLDB_SYSTEM_LIBS ZLIB::ZLIB)
1919
endif()
2020

21+
if(LLVM_ENABLE_ZSTD)
22+
list(APPEND LLDB_SYSTEM_LIBS zstd)
23+
endif()
24+
2125
add_lldb_library(lldbPluginProcessGDBRemote PLUGIN
2226
GDBRemoteClientBase.cpp
2327
GDBRemoteCommunication.cpp

lldb/test/Shell/lit.site.cfg.py.in

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ config.lldb_lit_tools_dir = lit_config.substitute(r"@LLDB_LIT_TOOLS_DIR@")
1616
config.target_triple = "@LLVM_TARGET_TRIPLE@"
1717
config.python_executable = "@Python3_EXECUTABLE@"
1818
config.have_zlib = @LLVM_ENABLE_ZLIB@
19+
config.have_zstd = @LLVM_ENABLE_ZSTD@
1920
config.lldb_enable_lzma = @LLDB_ENABLE_LZMA@
2021
config.host_triple = "@LLVM_HOST_TRIPLE@"
2122
config.lldb_bitness = 64 if @LLDB_IS_64_BITS@ else 32

llvm/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,8 @@ endif()
438438

439439
set(LLVM_ENABLE_ZLIB "ON" CACHE STRING "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON")
440440

441+
set(LLVM_ENABLE_ZSTD "ON" CACHE STRING "Use zstd for compression/decompression if available. Can be ON, OFF, or FORCE_ON")
442+
441443
set(LLVM_ENABLE_CURL "OFF" CACHE STRING "Use libcurl for the HTTP client if available. Can be ON, OFF, or FORCE_ON")
442444

443445
set(LLVM_ENABLE_HTTPLIB "OFF" CACHE STRING "Use cpp-httplib HTTP server library if available. Can be ON, OFF, or FORCE_ON")

llvm/cmake/config-ix.cmake

+21
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,27 @@ if(LLVM_ENABLE_ZLIB)
136136
set(LLVM_ENABLE_ZLIB "${HAVE_ZLIB}")
137137
endif()
138138

139+
if(LLVM_ENABLE_ZSTD)
140+
if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON)
141+
find_package(ZSTD REQUIRED)
142+
elseif(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
143+
find_package(ZSTD)
144+
endif()
145+
if(ZSTD_FOUND)
146+
# Check if zstd we found is usable; for example, we may have found a 32-bit
147+
# library on a 64-bit system which would result in a link-time failure.
148+
cmake_push_check_state()
149+
list(APPEND CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
150+
list(APPEND CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
151+
check_symbol_exists(ZSTD_compress zstd.h HAVE_ZSTD)
152+
cmake_pop_check_state()
153+
if(LLVM_ENABLE_ZSTD STREQUAL FORCE_ON AND NOT HAVE_ZSTD)
154+
message(FATAL_ERROR "Failed to configure zstd")
155+
endif()
156+
endif()
157+
set(LLVM_ENABLE_ZSTD "${HAVE_ZSTD}")
158+
endif()
159+
139160
if(LLVM_ENABLE_LIBXML2)
140161
if(LLVM_ENABLE_LIBXML2 STREQUAL FORCE_ON)
141162
find_package(LibXml2 REQUIRED)

llvm/cmake/modules/FindZSTD.cmake

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
find_path(ZSTD_INCLUDE_DIR
2+
NAMES zstd.h
3+
HINTS ${ZSTD_ROOT_DIR}/include)
4+
5+
find_library(ZSTD_LIBRARY
6+
NAMES zstd
7+
HINTS ${ZSTD_ROOT_DIR}/lib)
8+
9+
include(FindPackageHandleStandardArgs)
10+
find_package_handle_standard_args(
11+
ZSTD DEFAULT_MSG
12+
ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
13+
14+
if(ZSTD_FOUND)
15+
set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
16+
set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
17+
endif()
18+
19+
mark_as_advanced(
20+
ZSTD_INCLUDE_DIR
21+
ZSTD_LIBRARY)

llvm/cmake/modules/LLVMConfig.cmake.in

+6
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ if(LLVM_ENABLE_ZLIB)
7373
find_package(ZLIB)
7474
endif()
7575

76+
set(LLVM_ENABLE_ZSTD @LLVM_ENABLE_ZSTD@)
77+
if(LLVM_ENABLE_ZSTD)
78+
set(ZSTD_ROOT @ZSTD_ROOT@)
79+
find_package(ZSTD)
80+
endif()
81+
7682
set(LLVM_ENABLE_LIBXML2 @LLVM_ENABLE_LIBXML2@)
7783
if(LLVM_ENABLE_LIBXML2)
7884
find_package(LibXml2)

llvm/include/llvm/Config/llvm-config.h.cmake

+3
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@
9595
/* Define if zlib compression is available */
9696
#cmakedefine01 LLVM_ENABLE_ZLIB
9797

98+
/* Define if zstd compression is available */
99+
#cmakedefine01 LLVM_ENABLE_ZSTD
100+
98101
/* Define if LLVM was built with a dependency to the libtensorflow dynamic library */
99102
#cmakedefine LLVM_HAVE_TF_API
100103

llvm/test/lit.site.cfg.py.in

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ config.host_ldflags = '@HOST_LDFLAGS@'
3737
config.llvm_use_intel_jitevents = @LLVM_USE_INTEL_JITEVENTS@
3838
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
3939
config.have_zlib = @LLVM_ENABLE_ZLIB@
40+
config.have_zstd = @LLVM_ENABLE_ZSTD@
4041
config.have_libxar = @LLVM_HAVE_LIBXAR@
4142
config.have_libxml2 = @LLVM_ENABLE_LIBXML2@
4243
config.have_curl = @LLVM_ENABLE_CURL@

utils/bazel/llvm_configs/llvm-config.h.cmake

+3
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@
9595
/* Define if zlib compression is available */
9696
#cmakedefine01 LLVM_ENABLE_ZLIB
9797

98+
/* Define if zstd compression is available */
99+
#cmakedefine01 LLVM_ENABLE_ZSTD
100+
98101
/* Define if LLVM was built with a dependency to the libtensorflow dynamic library */
99102
#cmakedefine LLVM_HAVE_TF_API
100103

0 commit comments

Comments
 (0)