build: reduce CMake handling for zlib
Rather than handling zlib handling manually, use `find_package` from CMake to find zlib properly. Use this to normalize the `LLVM_ENABLE_ZLIB`, `HAVE_ZLIB`, `HAVE_ZLIB_H`. Furthermore, require zlib if `LLVM_ENABLE_ZLIB` is set to `YES`, which requires the distributor to explicitly select whether zlib is enabled or not. This simplifies the CMake handling and usage in the rest of the tooling. This restores68a235d07f,e6c7ed6d21. The problem with the windows bot is a need for clearing the cache.
This commit is contained in:
committed by
Saleem Abdulrasool
parent
aa17d31edb
commit
abb0075306
@@ -9,22 +9,13 @@ endif ()
|
||||
|
||||
string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
|
||||
|
||||
if(CLANG_BUILT_STANDALONE)
|
||||
# Set HAVE_LIBZ according to recorded LLVM_ENABLE_ZLIB value. This
|
||||
# value is forced to 0 if zlib was not found, so it is fine to use it
|
||||
# instead of HAVE_LIBZ (not recorded).
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
set(HAVE_LIBZ 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
CLANG_BUILD_EXAMPLES
|
||||
CLANG_ENABLE_ARCMT
|
||||
CLANG_ENABLE_STATIC_ANALYZER
|
||||
ENABLE_BACKTRACES
|
||||
ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER
|
||||
HAVE_LIBZ
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_ENABLE_PER_TARGET_RUNTIME_DIR
|
||||
LLVM_ENABLE_PLUGINS
|
||||
LLVM_ENABLE_THREADS)
|
||||
|
||||
@@ -16,7 +16,7 @@ config.host_triple = "@LLVM_HOST_TRIPLE@"
|
||||
config.target_triple = "@TARGET_TRIPLE@"
|
||||
config.host_cxx = "@CMAKE_CXX_COMPILER@"
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = @HAVE_LIBZ@
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.clang_arcmt = @CLANG_ENABLE_ARCMT@
|
||||
config.clang_default_cxx_stdlib = "@CLANG_DEFAULT_CXX_STDLIB@"
|
||||
config.clang_staticanalyzer = @CLANG_ENABLE_STATIC_ANALYZER@
|
||||
|
||||
@@ -50,7 +50,7 @@ if config.enable_per_target_runtime_dir:
|
||||
else:
|
||||
set_default("target_suffix", "-%s" % config.target_arch)
|
||||
|
||||
set_default("have_zlib", "@HAVE_LIBZ@")
|
||||
set_default("have_zlib", "@LLVM_ENABLE_ZLIB@")
|
||||
set_default("libcxx_used", "@LLVM_LIBCXX_USED@")
|
||||
|
||||
# LLVM tools dir can be passed in lit parameters, so try to
|
||||
|
||||
@@ -4,17 +4,8 @@ set(LLVM_BUILD_MODE "%(build_mode)s")
|
||||
set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}/%(build_config)s")
|
||||
set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/%(build_config)s")
|
||||
|
||||
if(LLD_BUILT_STANDALONE)
|
||||
# Set HAVE_LIBZ according to recorded LLVM_ENABLE_ZLIB value. This
|
||||
# value is forced to 0 if zlib was not found, so it is fine to use it
|
||||
# instead of HAVE_LIBZ (not recorded).
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
set(HAVE_LIBZ 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
HAVE_LIBZ
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_LIBXML2_ENABLED
|
||||
)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ config.lld_libs_dir = "@LLVM_LIBRARY_OUTPUT_INTDIR@"
|
||||
config.lld_tools_dir = "@LLVM_RUNTIME_OUTPUT_INTDIR@"
|
||||
config.target_triple = "@TARGET_TRIPLE@"
|
||||
config.python_executable = "@PYTHON_EXECUTABLE@"
|
||||
config.have_zlib = @HAVE_LIBZ@
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.sizeof_void_p = @CMAKE_SIZEOF_VOID_P@
|
||||
|
||||
# Support substitution of the tools and libs dirs with user parameters. This is
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
#include <compression.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBZ)
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
#include <zlib.h>
|
||||
#endif
|
||||
|
||||
@@ -582,7 +582,7 @@ bool GDBRemoteCommunication::DecompressPacket() {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBZ)
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
if (decompressed_bytes == 0 && decompressed_bufsize != ULONG_MAX &&
|
||||
decompressed_buffer != nullptr &&
|
||||
m_compression_type == CompressionType::ZlibDeflate) {
|
||||
|
||||
@@ -1045,7 +1045,7 @@ void GDBRemoteCommunicationClient::MaybeEnableCompression(
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBZ)
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
if (avail_type == CompressionType::None) {
|
||||
for (auto compression : supported_compressions) {
|
||||
if (compression == "zlib-deflate") {
|
||||
|
||||
@@ -347,7 +347,7 @@ option(LLVM_ENABLE_LIBPFM "Use libpfm for performance counters if available." ON
|
||||
|
||||
option(LLVM_ENABLE_THREADS "Use threads if available." ON)
|
||||
|
||||
option(LLVM_ENABLE_ZLIB "Use zlib for compression/decompression if available." ON)
|
||||
set(LLVM_ENABLE_ZLIB "ON" CACHE STRING "Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON")
|
||||
|
||||
set(LLVM_Z3_INSTALL_DIR "" CACHE STRING "Install directory of the Z3 solver.")
|
||||
|
||||
|
||||
@@ -56,7 +56,6 @@ check_include_file(sys/types.h HAVE_SYS_TYPES_H)
|
||||
check_include_file(termios.h HAVE_TERMIOS_H)
|
||||
check_include_file(unistd.h HAVE_UNISTD_H)
|
||||
check_include_file(valgrind/valgrind.h HAVE_VALGRIND_VALGRIND_H)
|
||||
check_include_file(zlib.h HAVE_ZLIB_H)
|
||||
check_include_file(fenv.h HAVE_FENV_H)
|
||||
check_symbol_exists(FE_ALL_EXCEPT "fenv.h" HAVE_DECL_FE_ALL_EXCEPT)
|
||||
check_symbol_exists(FE_INEXACT "fenv.h" HAVE_DECL_FE_INEXACT)
|
||||
@@ -118,19 +117,6 @@ endif()
|
||||
# Don't look for these libraries if we're using MSan, since uninstrumented third
|
||||
# party code may call MSan interceptors like strlen, leading to false positives.
|
||||
if(NOT LLVM_USE_SANITIZER MATCHES "Memory.*")
|
||||
set(HAVE_LIBZ 0)
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
foreach(library z zlib_static zlib)
|
||||
string(TOUPPER ${library} library_suffix)
|
||||
check_library_exists(${library} compress2 "" HAVE_LIBZ_${library_suffix})
|
||||
if(HAVE_LIBZ_${library_suffix})
|
||||
set(HAVE_LIBZ 1)
|
||||
set(ZLIB_LIBRARIES "${library}")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Don't look for these libraries on Windows.
|
||||
if (NOT PURE_WINDOWS)
|
||||
# Skip libedit if using ASan as it contains memory leaks.
|
||||
@@ -515,10 +501,21 @@ else( LLVM_ENABLE_THREADS )
|
||||
message(STATUS "Threads disabled.")
|
||||
endif()
|
||||
|
||||
if (LLVM_ENABLE_ZLIB )
|
||||
# Check if zlib is available in the system.
|
||||
if ( NOT HAVE_ZLIB_H OR NOT HAVE_LIBZ )
|
||||
set(LLVM_ENABLE_ZLIB 0)
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
if(LLVM_ENABLE_ZLIB STREQUAL FORCE_ON)
|
||||
find_package(ZLIB REQUIRED)
|
||||
else()
|
||||
find_package(ZLIB)
|
||||
endif()
|
||||
|
||||
if(ZLIB_FOUND)
|
||||
set(LLVM_ENABLE_ZLIB "YES" CACHE STRING
|
||||
"Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON"
|
||||
FORCE)
|
||||
else()
|
||||
set(LLVM_ENABLE_ZLIB "NO" CACHE STRING
|
||||
"Use zlib for compression/decompression if available. Can be ON, OFF, or FORCE_ON"
|
||||
FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -109,9 +109,6 @@
|
||||
/* Define to 1 if you have the `pthread_setname_np' function. */
|
||||
#cmakedefine HAVE_PTHREAD_SETNAME_NP ${HAVE_PTHREAD_SETNAME_NP}
|
||||
|
||||
/* Define to 1 if you have the `z' library (-lz). */
|
||||
#cmakedefine HAVE_LIBZ ${HAVE_LIBZ}
|
||||
|
||||
/* Define to 1 if you have the <link.h> header file. */
|
||||
#cmakedefine HAVE_LINK_H ${HAVE_LINK_H}
|
||||
|
||||
@@ -226,9 +223,6 @@
|
||||
/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
|
||||
#cmakedefine HAVE_VALGRIND_VALGRIND_H ${HAVE_VALGRIND_VALGRIND_H}
|
||||
|
||||
/* Define to 1 if you have the <zlib.h> header file. */
|
||||
#cmakedefine HAVE_ZLIB_H ${HAVE_ZLIB_H}
|
||||
|
||||
/* Have host's _alloca */
|
||||
#cmakedefine HAVE__ALLOCA ${HAVE__ALLOCA}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
set(system_libs)
|
||||
if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
|
||||
set(system_libs ${system_libs} ${ZLIB_LIBRARIES})
|
||||
if(LLVM_ENABLE_ZLIB)
|
||||
set(system_libs ${ZLIB_LIBRARY})
|
||||
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.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#if LLVM_ENABLE_ZLIB == 0 || !HAVE_ZLIB_H
|
||||
#if !LLVM_ENABLE_ZLIB
|
||||
|
||||
static const uint32_t CRCTable[256] = {
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#if LLVM_ENABLE_ZLIB == 1 && HAVE_ZLIB_H
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
#include <zlib.h>
|
||||
#endif
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#if LLVM_ENABLE_ZLIB == 1 && HAVE_LIBZ
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
static Error createError(StringRef Err) {
|
||||
return make_error<StringError>(Err, inconvertibleErrorCode());
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
llvm_canonicalize_cmake_booleans(
|
||||
BUILD_SHARED_LIBS
|
||||
HAVE_LIBXAR
|
||||
HAVE_LIBZ
|
||||
HAVE_OCAMLOPT
|
||||
HAVE_OCAML_OUNIT
|
||||
LLVM_ENABLE_DIA_SDK
|
||||
LLVM_ENABLE_FFI
|
||||
LLVM_ENABLE_THREADS
|
||||
LLVM_ENABLE_ZLIB
|
||||
LLVM_INCLUDE_GO_TESTS
|
||||
LLVM_LIBXML2_ENABLED
|
||||
LLVM_LINK_LLVM_DYLIB
|
||||
|
||||
@@ -36,7 +36,7 @@ config.host_cxx = "@HOST_CXX@"
|
||||
config.host_ldflags = '@HOST_LDFLAGS@'
|
||||
config.llvm_use_intel_jitevents = @LLVM_USE_INTEL_JITEVENTS@
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = @HAVE_LIBZ@
|
||||
config.have_zlib = @LLVM_ENABLE_ZLIB@
|
||||
config.have_libxar = @HAVE_LIBXAR@
|
||||
config.have_dia_sdk = @LLVM_ENABLE_DIA_SDK@
|
||||
config.enable_ffi = @LLVM_ENABLE_FFI@
|
||||
|
||||
@@ -21,7 +21,7 @@ using namespace llvm;
|
||||
|
||||
namespace {
|
||||
|
||||
#if LLVM_ENABLE_ZLIB == 1 && HAVE_LIBZ
|
||||
#if LLVM_ENABLE_ZLIB
|
||||
|
||||
void TestZlibCompression(StringRef Input, int Level) {
|
||||
SmallString<32> Compressed;
|
||||
|
||||
Reference in New Issue
Block a user